Sun Studio 12 Update 1:Fortran 用户指南

D.4 Sun 并行化指令


注 –

传统的 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*

禁用对后面的循环嵌套进行并行化处理。