Sun Studio 12 Update 1:Fortran 用户指南

D.5 Cray 并行化指令


注 –

传统的 Sun 和 Cray 并行化指令现已过时,将被忽略。在 Solaris SPARC 和 x86 平台上,最好使用 OpenMP API 进行并行化。有关将传统应用程序迁移到 OpenMP 的信息,请参见《OpenMP API 用户指南》。


Fortran 编程指南》的“并行化”一章中详细介绍了 Cray 风格的并行化指令。要求使用 -mp=cray 编译器选项。

表 D–4 Cray 并行化指令摘要

格式

CMIC$ directive qualifiers: 初始行

CMIC$& [more_qualifiers]: 续行

固定格式。指令指示符可以是 C(如此处所示)、c*!。对于 f95 自由格式,可以在 !MIC$ 前面出现前导空格。

DOALL 指令

CMIC$ DOALL SHARED(list), PRIVATE(list) [, more_qualifiers ]

并行化处理后面的循环。限定符为: 

要求使用作用域限定符(除非 list 为空)-循环中的所有变量必须出现在 PRIVATESHARED 子句中:

PRIVATE(list) 将列表上的名称声明为 PRIVATE

SHARED(list) 将列表上的名称声明为 SHARED

AUTOSCOPE 自动确定变量的范围

以下限定符是可选的: 

MAXCPUS(n) 使用不多于 n 个线程

SAVELAST 保存所有专用变量的最后一个值只能出现一个调度限定符:

GUIDED 等效于 Sun 风格的GSS(64)

SINGLE 等效于 Sun 风格的 SELF(1)

CHUNKSIZE(n) 等效于 Sun 风格的 SELF(n)

NUMCHUNKS(m) 等效于 Sun 风格的 SELF(n/m)

缺省调度为 Sun 风格的 STATIC,它没有等价的 Cray 风格限定符。对于这些 Sun 和 Cray 风格的调度限定符,它们的解释是不同的。有关详细信息,请参见《Fortran 编程指南》。

TASKCOMMON 指令

CMIC$ TASKCOMMON block_name

将命名通用块中的变量声明为线程专用-线程专用,但线程内为全局。在声明通用块 TASKCOMMON 时,要求此指令紧跟在该块的每个公共声明的后面。

DOSERIAL 指令

CMIC$ DOSERIAL

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

DOSERIAL* 指令

CMIC$ DOSERIAL*

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