传统的 Sun 和 Cray 并行化指令现已过时。在 Solaris SPARC 和 x86 平台上,最好使用 OpenMP API 进行并行化。有关将传统应用程序迁移到 OpenMP 的信息,请参见《OpenMP API 用户指南》。
OpenMP 并行化是 Fortran 95 首选的并行化模型。此处描述了适用于传统应用程序的 Sun 风格的并行化指令,《Fortran 编程指南》的“并行化”一章对此进行了详细介绍。
表 D–3 Sun 风格并行化指令摘要
格式 |
C$PAR directive [optional_qualifiers]:初始行C$PAR& [more_qualifiers]:续行 固定格式,指令指示符可以是 C(如此处所示)、 c、* 或 !。使用逗号分隔多个限定符。除非指定了 -e 编译器选项,否则将忽略第 72 列后面的字符。 |
TASKCOMMON 指令 |
C$PAR TASKCOMMON block_name 将通用块 block_name 中的变量声明为线程专用:线程专用,但线程内为全局。在声明通用块 TASKCOMMON 时,要求此指令出现在该块的每个公共声明的后面。 |
DOALL 指令 |
C$PAR DOALL [qualifiers] 并行化处理后面的 DO 循环。限定符为: PRIVATE(list) 将列表上的名称声明为 PRIVATE SHARED(list) 将列表上的名称声明为 SHARED MAXCPUS(n) 使用不多于 n 个线程 READONLY(list) 在循环中没有修改列出的变量 SAVELAST 保存所有专用变量的最后一个值 STOREBACK(list) 保存列出变量的最后一个值 REDUCTION(list) 列出变量是约简变量 SCHEDTYPE(type) 使用调度类型:(缺省设置为 STATIC) STATIC SELF(nchunk) FACTORING[(m)] GSS[(m)] |
DOSERIAL 指令 |
C$PAR DOSERIAL 禁用并行化处理后面的循环。 |
DOSERIAL* 指令 |
C$PAR DOSERIAL* 禁用并行化处理后面的循环嵌套。 |