(SPARC) 旧式。使わないでください。この代わりに -xopenmp を使用してください。
-xexplicitpar は、OpenMP の並列化命令を受け付けません。ただし、Sun 固有の MP プラグマは推奨されず、サポートされません。代わりに、OpenMP 2.5 規格で規定された API をサポートします。標準命令への移植については、『Sun Studio 12: OpenMP API ユーザーズガイド』を参照してください。
(SPARC) #pragma MP 指令の指定に基づいて並列化コードを生成します。ユーザー自身が、依存性の解析を行い、ループの繰り返し内部でのデータの依存性を解析および指定します。ソフトウェアは指定されたループを並列化します。最適化が -xO3 以上でない場合、-xO3 に上げられ、警告が出されます。独自のスレッド管理を行なっている場合には、-xexplicitpar を使用しないでください。
コードの実行速度を高めたければ、このオプションにはマルチプロセッサシステムが必要です。シングルプロセッサシステムでは、通常、生成されたコードの実行速度は低下します。
ユーザーが指定したループに依存関係が含まれていると、正しい結果が得られないことがあります。しかも、結果が実行するごとに異なることがあります。なお、警告は出力されません。縮約ループには、明示的な並列プラグマは適用しないでください。明示された並列化は行われますが、ループの縮約は適用されないため、誤った結果が生じる場合があります。
要約すると、明示的な並列化には次の操作を実行します。
ループを解析して、安全に並列化できるループを見つける。
#pragma MPを挿入してループを並列化する。詳細は、「3.8.3 明示的な並列化およびプラグマ」を参照してください。
-xexplicitpar オプションを使用します。
ループの直前に並列プラグマを挿入する例を示します。
#pragma MP taskloop for (j=0; j<1000; j++){ ... } |
-xexplicitpar を使用してコンパイルとリンクを 1 度に実行する場合、リンクには自動的にマイクロタスキング・ライブラリおよびスレッドに対して安全な C 実行時ライブラリが含まれます。-xexplicitpar を使用してコンパイルとリンクを別々に実行する場合、リンクにも -xexplicitpar を指定しなければいけません。表 A–2 に、コンパイル時とリンク時の両方に指定する必要があるコンパイラオプションの全一覧をまとめています。
-xexplicitpar と -xopenmp を一緒に使用しないでください。