Oracle® Solaris Studio 12.4: Fortran ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

3.4.157 –xopenmp[={parallel|noopt|none}]

OpenMP 指令による明示的な並列化を有効にします。

このフラグは、次のサブオプションキーワードを受け入れます。

parallel

OpenMP プラグマの認識を有効にします。-xopenmp=parallel での最適化レベルは -xO3 です。コンパイラは必要に応じて最適化レベルを -xO3 に引き上げ、警告を発行します。

このフラグは、プリプロセッサマクロ _OPENMP も定義します。_OPENMP マクロは、10 進値 yyyymm が含まれるように定義します。ここで、yyyymm は、この実装がサポートする OpenMP API のバージョンの年と月を示します。特定のリリースの _OPENMP マクロの値については、『Oracle Solaris Studio OpenMP API ユーザーガイド』を参照してください。

noopt

OpenMP プラグマの認識を有効にします。最適化のレベルが -xO3 より低い場合でも、コンパイラは最適化のレベルを上げません。f95 -xO2 -xopenmp=noopt のように -xO3 より低い最適化レベルを明示的に設定すると、エラーが表示されます。-xopenmp=noopt で最適化レベルを指定しなかった場合、OpenMP プラグマが認識され、その結果プログラムが並列化されますが、最適化は行われません。このサブオプションは、プリプロセッサマクロ _OPENMP も定義します。

none

OpenMP プラグマの認識を有効にせず、プログラムの最適化レベルへの変更は行わず、プリプロセッサマクロを定義しません。-xopenmp が指定されない場合は、これがデフォルトになります。

-xopenmp を指定するけれどもサブオプションキーワードを指定しない場合、コンパイラは -xopenmp=parallel であると見なします。-xopenmp を一切指定しない場合、コンパイラは -xopenmp=none であると見なします。

parallel および noopt のサブオプションは、自動的に -stackvar を呼び出します。

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

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

OpenMP プログラムを実行するときに使用するスレッドの数を指定するには、OMP_NUM_THREADS 環境変数を使用します。OMP_NUM_THREADS が設定されていない場合、並列領域の実行に使用されるスレッドのデフォルトの数は、マシンで利用できるコアの数になりますが、上限は 32 です。別のスレッド数を指定するには、OMP_NUM_THREADS 環境変数を設定するか、omp_set_num_threads() OpenMP 実行時ルーチンを呼び出すか、並列領域ディレクティブの num_threads 節を使用します。最高のパフォーマンスを得るため、並列領域の実行に使用するスレッドの数が、マシン上で使用できるハードウェアスレッド (仮想プロセッサ) の数を超えないようにしてください。Oracle Solaris システムでは、psrinfo(1M) コマンドを使用すると、この数を特定できます。Linux システムでは、ファイル /proc/cpuinfo を調べることでこの数を特定できます。詳細は、『OpenMP API ユーザーズガイド』を参照してください。

入れ子並列は、デフォルトでは無効です。入れ子並列を有効にするには、OMP_NESTED 環境変数を TRUE に設定する必要があります。『OpenMP API ユーザーガイド』を参照してください。

コンパイルとリンクを別々に実行する場合は、コンパイル手順とリンク手順の両方に -xopenmp を指定してください。リンク手順とともに使用した場合、-xopenmp オプションは、OpenMP 実行時サポートライブラリ libmtsk.so とリンクします。

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

マルチスレッド対応アプリケーションを構築するための OpenMP Fortran 95、C および C++ アプリケーションプログラムインタフェース (API) の詳細は、『Oracle Solaris Studio OpenMP ユーザーガイド』を参照してください。