Sun Studio 12:C 用户指南

B.2.87 -xexplicitpar

(SPARC) 已废弃,请不要使用。应改用 -xopenmp


注 –

-xexplicitpar 不接受 OpenMP 并行化指令。但是,Sun 特定的 MP pragma 已被废弃,不再受支持。但是,编译器改为支持 OpenMP 2.5 标准指定的 API。有关标准的指令的迁移信息,请参见《Sun Studio 12: OpenMP API User’s Guide》


(SPARC) 根据 #pragma MP 指令的规范生成并行化的代码。您可以进行依赖性分析:分析和指定循环以了解迭代间数据依赖性。该软件会使指定的循环并行化。如果优化级别不是 -xO3 或更高级别,则将优化级别提高到 -xO3 并发出警告。如果执行自己的线程管理,则不要使用 -xexplicitpar

要使代码的运行速度更快,则该选项需要多处理器系统。在单处理器系统中,生成的代码通常运行得较慢。

如果指定某个要并行化的循环且该循环具有依赖性,您可能会得到错误的结果,有可能每次运行的结果都不相同且不发出警告。请勿将显式并行 pragma 应用于约简循环。执行显式并行化,但不执行循环的约简,因此结果可能不正确。

总之,要显式并行化,请执行以下步骤:

以下是一个紧挨循环之前插入并行 pragma 的示例:


#pragma MP taskloop
  for (j=0; j<1000; j++){
  ...
  }

如果使用 -xexplicitpar,而且在同一步骤中进行编译和链接,则链接将自动包括微任务化库和线程安全的 C 运行时库。如果使用 -xexplicitpar,而且在不同的步骤中进行编译和链接,则还必须使用 -xexplicitpar 进行链接。有关在编译时和链接时都必须指定的所有编译器选项的完整列表,请参见表 A–2


注 –

请勿同时指定 -xexplicitpar-xopenmp