Oracle Solaris Studio 12.2: C ユーザーガイド

B.2.123 -xopenmp[= i]

OpenMP 指令で明示的な並列化を有効にするには、-xopenmp オプションを使用します。並列化されたプログラムをマルチスレッド環境で実行するには、実行前に OMP_NUM_THREADS 環境変数を設定しておく必要があります。

入れ子並列を有効にするには、OMP_NESTED 環境変数を TRUE に設定する必要があります。入れ子並列は、デフォルトでは無効です。

次の表に i の値を示します。

表 B–35 -xopenmp のフラグ

値 

意味  

parallel

OpenMP プラグマの認識を有効にします。-xopenmp=parallel の最適化レベルは -x03 です。コンパイラは必要に応じて最適化レベルを -x03 に変更し、警告メッセージを表示します。

このフラグは、プロセッサのトークン _OPENMP も定義します。

noopt

OpenMP プラグマの認識を有効にします。最適化レベルが -O3 より低い場合は、最適化レベルは上げられません。 

cc -O2 -xopenmp=noopt のように -O3 より低い最適化レベルを明示的に設定すると、エラーが表示されます。-xopenmp=noopt で最適化レベルを指定しなかった場合、OpenMP プラグマが認識され、その結果プログラムが並列化されますが、最適化は行われません。

このフラグは、プロセッサのトークン _OPENMP も定義します。

none

このフラグはデフォルトで、OpenMP プラグマの認識が有効化、プログラムの最適化レベルの変更、およびプリプロセッサトークンの事前定義を実行しません。 

-xopenmp を指定しても値を設定しない場合、コンパイラは -xopenmp=parallel を仮定します。-xopenmp を指定しない場合、コンパイラは -xopenmp=none を仮定します。

dbx を指定して OpenMP プログラムをデバッグする場合、-g-xopenmp=noopt を指定してコンパイルすれば、並列化部分にブレークポイントを設定して変数の内容を表示することができます。

-xopenmp のデフォルトは、将来変更される可能性があります。警告メッセージを出力しないようにするには、適切な最適化を明示的に指定します。

いずれかの .so を構築するときに -xopenmp を使用している場合は、実行可能ファイルをリンクするときに -xopenmp を使用する必要があります。また、実行可能ファイルに関して使用するコンパイラは、-xopenmp を指定して .so を構築するときに使用したコンパイラより古いものであってはいけません。これは、OpenMP 指令を含むライブラリをコンパイルする場合に特に重要です。表 A–2 に、コンパイル時とリンク時の両方に指定する必要があるコンパイラオプションの全一覧をまとめています。

最良のパフォーマンスを得るには、OpenMP 実行時ライブラリ libmtsk.so の最新パッチが、システムにインストールされていることを確認してください。

OpenMP の C の実装に固有の情報については、「3.2 OpenMP に対する並列化」を参照してください。

OpenMP の詳細は、『Solaris Studio OpenMP API ユーザーズガイド』を参照してください。