Sun Studio 12:Fortran 用户指南

D.4 Sun 并行化指令


注 –

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

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