OpenMP の指令を使用して明示的に並列化を有効にするには、cc、CC、または f95 のオプションフラグ -xopenmp を指定してプログラムをコンパイルします。このフラグには、キーワードの引数を 1 つ指定することができます。f95 コンパイラでは、-xopenmp と -openmp を同義語として使用することができます。
-xopenmp フラグには、次のキーワードサブオプションを指定することができます。
|
OpenMP プラグマの認識を有効にします。-xopenmp=parallel の最小限の最適化レベルは -xO3 です。コンパイラは、必要に応じて最適化のレベルを低いレベルから -xO3 に上げ、警告を出力します。 |
|
|
OpenMP プラグマの認識を有効にします。最適化のレベルが -xO3 より低い場合でも、コンパイラは最適化のレベルを上げません。-xO2 -openmp=noopt のように、最適化レベルを明示的に -xO3 よりも下げると、コンパイラはエラーを出力します。-openmp=noopt を使用して最適化レベルを指定しない場合、OpenMP プラグマが認識され、プログラムが並列化されますが、最適化は行われません。 |
|
|
このオプションはサポートされていません。OpenMP スタブライブラリは、ユーザーの便宜上の理由で提供されています。OpenMP ライブラリルーチンを呼び出しても OpenMP プラグマを無視するような OpenMP プログラムをコンパイルするには、-xopenmp オプションを指定しないでコンパイルします。その後、libompstubs.a ライブラリを使ってオブジェクトファイルをリンクします。次に例を示します。% cc omp_ignore.c -lompstubs libompstubs.a と OpenMP 実行時ライブラリの libmtsk.so 両方とのリンクはサポートされていません。両方とリンクすると、予期しない動作になることがあります。 |
|
|
OpenMP プラグマの認識を無効にし、最適化レベルを変更しません |
その他の注
コマンド行で -xopenmp を指定しない場合、コンパイラでは -xopenmp=none (OpenMP プラグマ の認識を無効にする) を指定したと見なされます。
-xopenmp をキーワードサブオプションなしで指定した場合、コンパイラでは -xopenmp=parallel を指定したと見なされます。
-xopenmp= に parallel または noopt を指定すると、_OPENMP プリプロセッサトークンが YYYYMM (C/C++ では 200505L、Fortran 95 では 200505) として定義されます。
dbx を使用して OpenMP プログラムをデバッグする場合、-xopenmp=noopt -g を使用してコンパイルします。
-xopenmp のデフォルトの最適化レベルは、将来のリリースで変更される可能性があります。適切な最適化レベルを明示的に指定することによって、コンパイル警告メッセージの表示を防止することができます。
Fortran 95 では、-xopenmp、-xopenmp=parallel、-xopenmp=noopt を指定すると、-stackvar が自動的に追加されます。
別々の手順で OpenMP プログラムをコンパイルしてリンクする場合は、コンパイル時およびリンク時にそれぞれ -xopenmp を含めます。
コンパイラの並列化メッセージを表示するには、-xvpara C オプションまたは -vpara Fortran 95 オプションを使用します。
最適なパフォーマンスおよび機能を得るために、最新の OpenMP 実行時ライブラリ libmtsk.so が実行中のシステムにインストールされていることを確認してください。