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

A.2.158 -xopenmp[= i]

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

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

A.2.158.1 値

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

表 A–41 -xopenmp の値

値 

意味  

parallel

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

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

noopt

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

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

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

none

このフラグはデフォルトであり、OpenMP プラグマを認識せず、プログラムの最適化レベルを変更せず、プリプロセッサトークンを事前定義しません。 

デフォルト

-xopenmp を指定しない場合は、コンパイラでは -xopenmp=none が指定されます。

-xopenmp は指定されているけれども引数は指定されていない場合、コンパイラはこのオプションを -xopenmp=parallel と設定します。

相互の関連性

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

警告

-xopenmp-xexplicitpar または -xparallel と同時に指定しないでください。

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

コンパイルとリンクを別々に実行する場合は、コンパイル手順とリンク手順の両方に -xopenmp を指定してください。共有オブジェクトを作成する場合、このことは重要です。実行可能ファイルのコンパイルに使用されたコンパイラが、-xopenmp を指定して .so を作成するコンパイラよりも古いものであってはいけません。これは、OpenMP 指令を含むライブラリをコンパイルする場合に特に重要です。コンパイル時とリンク時の両方に指定する必要があるオプションの全一覧については、「3.3.3 コンパイル時とリンク時のオプション」を参照してください。

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

関連項目

多重処理アプリケーションを構築するために使用する OpenMP Fortran 95、C、および C++ アプリケーションプログラミングインタフェース (API) の概要については、『Sun Studio: OpenMP API ユーザーズガイド』を参照してください。