Sun Studio 12:Fortran 用户指南

3.4.23 –explicitpar

已过时,SPARC)对 Sun 或 Cray 指令标记的循环进行显式并行化。


注 –

此选项会启用传统的 Sun 或 Cray 并行化指令。这些指令和并行化模型已过时,不再受支持。OpenMP API 是所支持的首选并行化模型。有关将 Sun/Cray 指令转换为 OpenMP 的详细信息,请参见 -xopenmp 选项以及《OpenMP API 用户指南》。


即使 DO 循环中存在数据依赖性(当循环并行运行时,这些依赖性将使循环生成错误结果),编译器也会生成并行代码。对于显式并行化,用户应该在用并行化指令标记循环之前,正确地分析循环以了解数据依赖性问题。

并行化仅适合于多处理器系统。

此选项启用 Sun 和/或 Cray 显式并行化指令。紧跟在并行化指令之后的 DO 循环将为这些并行化指令生成线程代码。

要启用 OpenMP 显式并行化指令,请不要使用 -explicitpar,而改用 -xopenmp。请参见3.4.155 –xopenmp[={ parallel|noopt|none}]

对于已通过调用 libthread 库执行了自己的多线程处理的程序,不得使用 -explicitpar 进行编译。

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

如果使用 -explicitpar 并在同一步骤中编译和链接,则链接将自动包括多线程库和线程安全的 Fortran 运行时库。如果使用 -explicitpar 并在不同的步骤中编译和链接,则还必须使用 -explicitpar 进行链接

为了提高性能,在使用任何并行化选项(包括 -explicitpar)时还要指定 -stackvar 选项。

使用 -mp 选项(3.4.59 –mp={%none|sun|cray})可选择已启用的并行化指令的风格。缺省情况下,-explicitpar 启用的是 Sun 指令。使用 -explicitpar -mp=cray 可启用 Cray 指令。

如果优化级别不是 -O3 或更高,则会自动将它提升到 -O3

有关详细信息,请参见《Fortran 编程指南》中的“并行化”一章。