Sun Studio 12:Fortran 用户指南

2.3.2 并行化指令

并行化指令显式地请求编译器尝试并行处理该指令后面的 DO 循环或代码区域。其语法与一般指令不同。只有在使用 -openmp-parallel-explicitpar 编译选项时,才能识别并行化指令。有关 Fortran 并行化的详细信息,请参见《OpenMP API 用户指南》和《Fortran 编程指南》。

Fortran 编译器支持 OpenMP 2.5 共享内存并行化模型。传统的 Sun 和 Cray 并行化指令现已过时,不应再使用它们。

2.3.2.1 OpenMP 并行化指令

Fortran 95 编译器将 OpenMP Fortran 共享内存多处理 API 识别为首选的并行编程模型。该 API 是由 OpenMP 体系结构审查委员会 (http://www.openmp.org) 指定的。

要启用 OpenMP 指令,您必须使用命令行选项 -xopenmp 进行编译。(请参见3.4.155 –xopenmp[={ parallel|noopt|none}]。)

有关 f95 接受的 OpenMP 指令的更多信息,请参见《OpenMP API 用户指南》。

2.3.2.2 传统的 Sun/Cray 并行化指令


注 –

传统的 Sun 和 Cray 风格的并行化指令现已过时。编译器仍能识别这些指令,但在以后的 Sun Studio 发行版中可能会有所变化。首选使用 OpenMP 并行化 API。有关如何从传统的 Sun/Cray 指令迁移到 OpenMP 模型的信息,请参见《OpenMP API 用户指南》。


Sun 风格的并行化指令是 -parallel-explicitpar 的缺省设置。Sun 指令具有指令标记 $PAR

Cray 风格的并行化指令具有标记 MIC$,这些指令可使用 -mp=cray 编译器选项启用。 Sun 风格和 Cray 风格的类似指令,其解释是不同的。有关详细信息,请参见《Fortran 编程指南》中有关并行化的一章。有关将传统的 Sun/Cray 并行化指令转换为 OpenMP 指令的指导原则,另请参见《OpenMP API 用户指南》。

请注意,在 x86 Solaris 和 Linux 平台上只有 OpenMP 指令可用于并行化。

Sun/Cray 并行化指令使用以下语法:

每个并行化指令都有自己的一组可选限定符(跟在关键字后面)。

示例:使用共享变量指定一个循环:


C$PAR DOALL SHARED(yvalue)    Sun 风格
CMIC$ DOALL SHARED(yvalue)    Cray 风格