Oracle® Solaris Studio 12.4:Fortran 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

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

启用通过OpenMP指令进行的显式并行化。

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

parallel

启用 OpenMP pragma 的识别。-xopenmp=parallel 时的优化级别为 -xO3。如有必要,编译器会将优化级别提高到 -xO3 并发出警告。

此标志还定义处理器宏 _OPENMP_OPENMP 宏定义为具有十进制值 yyyymm,其中 yyyymm 是实现所支持的 OpenMP API 版本的年份和月份标示。有关特定发行版的 _OPENMP 宏的值,请参阅《Oracle Solaris Studio OpenMP API 用户指南》

noopt

启用 OpenMP pragma 的识别。如果优化级别低于 -xO3,则编译器不提升它。如果将优化级别显式设置为低于 -xO3,如同在 f95 -xO2 -xopenmp=noopt 中一样,编译器会发出错误。如果没有使用 -xopenmp=noopt 指定优化级别,则会识别 OpenMP Pragma,并相应地对程序进行并行处理,但不进行优化。此子选项还定义预处理程序宏 _OPENMP

none

不启用对 OpenMP pragma 的识别,不更改程序的优化级别并且不定义任何预处理程序宏。在未指定 -xopenmp 时,这是缺省值。

如果指定了 -xopenmp 但未指定子选项关键字,编译器将假定 -xopenmp=parallel。如果根本未指定 -xopenmp,编译器将假定 -xopenmp=none

子选项 parallelnoopt 将自动调用 -stackvar

如果使用 dbx 调试 OpenMP 程序,那么编译时使用 -g -xopenmp=noopt 可以在并行区设置断点并显示变量内容。

在以后的发行版中,-xopenmp 的缺省值可能会更改。可以通过显式指定适当的优化级别来避免警告消息。

使用 OMP_NUM_THREADS 环境变量可指定在运行 OpenMP 程序时要使用的线程数。如果未设置 OMP_NUM_THREADS,用于执行并行区域的线程的缺省数量为计算机上的可用内核数,上限为 32。可以通过以下方法指定不同线程数:设置 OMP_NUM_THREADS 环境变量,或调用 omp_set_num_threads() OpenMP 运行时例程,或者在并行区域指令中使用 num_threads 子句。为了获得最佳性能,用于执行并行区域的线程数不应超出计算机上的可用硬件线程(或虚拟处理器)数量。在 Oracle Solaris 系统上,可以使用 psrinfo(1M) 命令确定此数量。在 Linux 系统上,可以检查 /proc/cpuinfo 文件来确定此数量。有关更多信息,请参见 OpenMP API 用户指南

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

如果在不同的步骤中进行编译和链接,请在编译步骤和链接步骤中都指定 -xopenmp。与链接步骤配合使用时,-xopenmp 选项将与 OpenMP 运行时支持库 libmtsk.so 链接。

为了获得最新功能和性能,请确保系统上安装了 OpenMP 运行时库 libmtsk.so 的最新修补程序。

有关用于生成多线程应用程序的 OpenMP Fortran 95、C 和 C++ 应用程序接口 (application program interface, API) 的更多信息,请参见《Oracle Solaris Studio OpenMP API 用户指南》。