(SPARC) #pragma MP 指令の指定にもとづいて並列化コードを生成します。ユーザー自身が、依存性の解析を行い、ループの繰り返し内部でのデータの依存性を解析および指定します。ソフトウェアは指定されたループを並列化します。最適化が -xO3 以上でない場合、-xO3 に上げられ、警告が出されます。独自のスレッド管理を行なっている場合には、-xexplicitpar を使用しないでください。
Sun WorkShop には、マルチプロセッサ用の C オプションを使用するのに必要なライセンスが含まれます。コードの実行速度を高めたければ、このオプションにはマルチプロセッサシステムが必要です。シングルプロセッサシステムでは、通常、生成されたコードの実行速度は低下します。
ユーザーが指定したループに依存関係が含まれていると、正しい結果が得られないことがあります。しかも、結果が実行するごとに異なることがあります。なお、警告は出力されません。縮約ループには、明示的な並列プラグマは適用しないでください。明示された並列化は行われますが、ループの縮約は適用されないため、誤った結果が生じる場合があります。
要約すると、明示的な並列化には次の操作を実行します。
ループを解析して、安全に並列化できるループを見つける。
#pragma MP を挿入してループを並列化する。詳細については、第 3 章「Sun ANSI C コンパイラに固有の情報」の 「明示的な並列化およびプラグマ」の項を参照してください。
-xexplicitpar オプションを使用する。
#pragma MP taskloop for (j=0; j<1000; j++){ ... }
-xexplicitpar を使用してコンパイルとリンクを一度に実行する場合、リンクには自動的にマイクロタスキング・ライブラリおよびスレッドに対して安全な C 実行時ライブラリが含まれます。-xexplicitpar を使用してコンパイルとリンクを別々に実行する場合、リンクにも -xexplicitpar を指定しなければなりません。