传统的 Sun 和 Cray 并行化指令现已过时,将被忽略。在 Solaris SPARC 和 x86 平台上,最好使用 OpenMP API 进行并行化。有关将传统应用程序迁移到 OpenMP 的信息,请参见《OpenMP API 用户指南》。
OpenMP 并行化对于 Fortran 是首选并行化模型。此处针对传统应用程序对 Sun 样式并行化指令进行了说明。
表 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* 禁用对后面的循环嵌套进行并行化处理。 |