并行化指令显式地请求编译器尝试并行处理该指令后面的 DO 循环或代码区域。其语法与一般指令不同。只有在使用 -openmp、-parallel 或 -explicitpar 编译选项时,才能识别并行化指令。有关 Fortran 并行化的详细信息,请参见《OpenMP API 用户指南》和《Fortran 编程指南》。
Fortran 编译器支持 OpenMP 2.5 共享内存并行化模型。传统的 Sun 和 Cray 并行化指令现已过时,不应再使用它们。
Fortran 95 编译器将 OpenMP Fortran 共享内存多处理 API 识别为首选的并行编程模型。该 API 是由 OpenMP 体系结构审查委员会 (http://www.openmp.org) 指定的。
要启用 OpenMP 指令,您必须使用命令行选项 -xopenmp 进行编译。(请参见3.4.155 –xopenmp[={ parallel|noopt|none}]。)
有关 f95 接受的 OpenMP 指令的更多信息,请参见《OpenMP API 用户指南》。
传统的 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、C、* 或 !。
后四个字符可以是大写或小写的 $PAR(Sun 风格)或 MIC$(Cray 风格),字符之间没有空格。
然后是指令关键字和限定符,它们之间用空格分隔。显式并行化指令关键字有:
TASKCOMMON、DOALL、DOSERIAL 和 DOSERIAL*
每个并行化指令都有自己的一组可选限定符(跟在关键字后面)。
示例:使用共享变量指定一个循环:
C$PAR DOALL SHARED(yvalue) Sun 风格 CMIC$ DOALL SHARED(yvalue) Cray 风格 |