Sun Studio 12 Update 1:Fortran 用户指南

3.4.149 –xopenmp[={ parallel|noopt|none}]

启用通过 Fortran OpenMP 版本 3.0 指令进行的显式并行化。

此标志接受以下可选关键字子选项:

parallel
  • 启用对 OpenMP Pragma 的识别,并相应地并行化程序。

  • -xopenmp=parallel 的最低优化级别是 -xO3。如有必要,编译器将优化级别从较低级别更改为 -xO3,并发出警告。

  • 定义预处理程序标记 _OPENMP

  • 自动调用 -stackvar

noopt
  • 启用对 OpenMP Pragma 的识别,并相应地并行化程序。

  • 如果优化级别低于 -xO3,则编译器不提升它。如果将优化显式设置为低于 -xO3 的级别(如 -xO2 -xopenmp=noopt),则编译器将发出错误。如果没有使用 -xopenmp=noopt 指定优化级别,则会识别 OpenMP Pragma,并相应地对程序进行并行处理,但不进行优化。

  • 定义预处理程序标记 _OPENMP

  • 自动调用 -stackvar

none

禁用对 OpenMP Pragma 的识别,并且不更改优化级别。(这是编译器的缺省值。)

指定的无子选项关键字的 -xopenmp-xopenmp=parallel 等效。请注意,此缺省值在以后的发行版中可能会有所变化。

要使用 dbx 调试 OpenMP 程序,请使用 -g -xopenmp=noopt 进行编译,以便能够在并行区域内设置断点并显示变量的内容。

OpenMP API 用户指南》中对 OpenMP 指令进行了概述。

要在多线程环境中运行已并行化的程序,必须在执行之前设置 PARALLEL(或 OMP_NUM_THREADS)环境变量。这会将程序可以创建的最大线程数通知给运行时系统。缺省值为 1。通常会将 PARALLELOMP_NUM_THREADS 变量设置为目标平台上可用的虚拟处理器数。

要启用嵌套并行操作,必须将 OMP_NESTED 环境变量设置为 TRUE。缺省情况下,禁用嵌套并行操作。有关嵌套并行操作的详细信息,请参见 Sun Studio《OpenMP API 用户指南》。

OpenMP 要求预处理程序符号 _OPENMP 的定义中包含十进制值 YYYYMM,其中 YYYY 和 MM 是实现所支持的 OpenMP Fortran API 版本的年份和月份名称。对于当前 Sun Studio 发行版,该值是 200830(表示 OpenMP 3.0 版)。

如果是在不同的步骤中进行编译和链接,还要在链接步骤中指定 -xopenmp。在编译包含 OpenMP 指令的库时,这一点尤为重要。