跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3:OpenMP API 用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
2.2.2 Oracle Solaris Studio 环境变量
2.2.2.5 SUNW_MP_MAX_POOL_THREADS
2.2.2.6 SUNW_MP_MAX_NESTED_LEVELS
要使用 OpenMP 指令实现显式并行化,请使用 cc、CC 或 f95 选项标志 -xopenmp 编译程序。(f95 编译器将 -xopenmp 和 -openmp 作为同义词接受。)
-xopenmp 标志接受下列关键字子选项。
|
附加说明:
为了在 Oracle Solaris 平台上获得最佳性能和功能,请确保正在运行的系统上已安装了最新的 OpenMP 运行时库 libmtsk.so。
如果未在命令行中指定 —xopenmp,则编译器会假定使用 —xopenmp=none(禁用对 OpenMP pragma 的识别)。
如果指定了 —xopenmp 但不带关键字子选项,则编译器会假定使用 —xopenmp=parallel。
指定 -xopenmp=parallel 或 noopt 时,会将 _OPENMP 预处理程序标记定义为 YYYYMM(具体地讲,对于 C/C++,将其定义为 201107L;对于 Fortran 95,将其定义为 201107)。
使用 dbx 调试 OpenMP 程序时,请使用 -xopenmp=noopt -g 进行编译。
-xopenmp 的缺省优化级别在以后的发行版中可能会更改。通过显式指定适当的优化级别,可避免出现编译警告消息。
对于 Fortran 95,-xopenmp、-xopenmp=parallel、-xopenmp=noopt 会自动添加 -stackvar。请参见2.4 堆栈和堆栈大小。
在分步编译并链接 OpenMP 程序时,请在各个编译及链接步骤中包含 -xopenmp。
使用带有 —xopenmp, —xopenmp=parallel 或 —xopenmp=noopt 的 —xvpara 选项,以显示有关 OpenMP 编程潜在问题的编译器警告,以及与自动确定作用域(请参见第 6 章)和作用域检查(请参见第 7 章)相关的消息。例如,如果编译器检测到以下列表中的情况,则将发出警告消息:
循环是使用 OpenMP 指令并行化的,而这些指令中的不同循环迭代之间存在数据依赖性
OpenMP 数据共享属性子句存在问题。例如,声明在 OpenMP 并行区域中的访问可能导致数据争用的变量 shared,或者声明其在并行区域中的值在并行区域之后使用的变量 private。