Sun Studio 12 Update 1: Fortran ユーザーズガイド

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

Fortran の OpenMP Version 3.0 の指令で明示的な並列化を有効にします。

フラグには、次のキーワードサブオプションを使用できます。

parallel
  • OpenMP プラグマの認識を有効にし、そのプラグマに基づいてプログラムが並列化されます。

  • -xopenmp=parallel の最小限の最適化レベルは -xO3 です。コンパイラは、必要に応じて最適化のレベルを低いレベルから -xO3 に上げ、警告を出力します。

  • プリプロセッサトークン _OPENMP を定義します。

  • -stackvar を自動的に呼び出します。

noopt
  • OpenMP プラグマの認識を有効にし、そのプラグマに基づいてプログラムが並列化されます。

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

  • プリプロセッサトークン _OPENMP を定義します。

  • -stackvar を自動的に呼び出します。

none

OpenMP プラグマの認識を無効にし、最適化レベルを変更しませんコンパイラのデフォルトです。

サブオプションキーワードなしで指定した -xopenmp は、-xopenmp=parallel と同義です。このデフォルトは将来のリリースで変更される可能性があります。

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

OpenMP 指令の概要については、『OpenMP API ユーザーズガイド』を参照してください。

並列化されたプログラムをマルチスレッド環境で実行するには、実行前に PARALLEL (または OMP_NUM_THREADS) 環境変数を設定しておく必要があります。これにより、プログラムで作成できる最大スレッド数を実行時システムに設定します。デフォルトは 1 です。一般的に、PARALLEL 変数または OMP_NUM_THREADS 変数には、ターゲットプラットフォームで利用可能な仮想プロセッサ数を設定します。

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

OpenMP では、プリプロセッサ記号 _OPENMP の定義に 10 進数 YYYYMM を含める必要があります。ここで、YYYY と MM は、この実装がサポートする OpenMP Fortran API のバージョンの年と月を示します。現在の Sun Studio リリースでは、この値は OpenMP Version 3.0 を表す 200830 です。

コンパイルとリンクを分けて行う場合は、リンク時にも -xopenmp を指定する必要があります。これは、OpenMP 指令を含むライブラリをコンパイルする場合、特に重要です。