OpenMP* モードでインテル(R) コンパイラーを起動するには、次のように -openmp オプション (Linux*) または /Qopenmp オプション (Windows*) を指定して、コンパイラーを起動します。
プラットフォーム |
説明 |
---|---|
Linux |
icpc -openmp input_file |
Windows |
icl /Qopenmp input_file |
マルチスレッド・コードを起動する前に、OpenMP 環境変数 OMP_NUM_THREADS で使用するスレッドの数を設定できます。詳細は、「OpenMP* の環境変数」のセクションを参照してください。「インテル拡張ルーチン/関数」では、インテル・コンパイラーの仕様に追加された OpenMP 拡張機能について説明します。
-openmp オプション (Linux) または /Qopenmp オプション (Windows) は、パラレライザーが OpenMP 宣言子に基づいてマルチスレッド・コードを生成できるようにします。このコードは、単一プロセッサー・システム、マルチプロセッサー・システム、およびデュアルコア・プロセッサー・システムで並列実行が可能です。
-openmp オプション (Linux) または /Qopenmp オプション (Windows) は、-O0 (Linux) と /Od (Windows)、あるいは -O1、-O2、-O3 (Linux) または /O1、/O2、/O3 (Windows) の最適化レベルで動作します。OpenMP オプションと -O0 (Linux) または /Od (Windows) を指定すると、OpenMP アプリケーションのデバッグに役立ちます。
Itanium(R) ベース・システム: このオプションを指定することは、-opt-mem-bandwith1 (Linux) または /Qopt-mem-bandwidth1 (Windows) を意味します。
openmp オプションを使用すると、コマンドラインで他のオプションを指定しない限り、-auto オプション (Linux) または /Qauto オプション (Windows) が設定されます (すべての変数を、ローカル静的記憶域ではなく、スタックに割り当てます)。
OpenMP プラグマは、特定の形式と構文を使用します。次の構文および例では、ソースでプラグマを使用する方法を説明します。
構文 |
---|
#pragma omp directive-name [clause, ...] newline |
各アイテムの意味は次のとおりです。
#pragma omp - すべての OpenMP 宣言子に必須。
directive-name - 有効な OpenMP 宣言子。pragma の後および節の前に出力する必要があります。
clause - オプション。clause は順番に関係なく指定でき、制限されていない限り必要に応じて繰り返すことができます。
newline - 必須。この宣言子に囲まれた構造ブロックを続行します。
次の例では、OpenMP プラグマを使用して並列領域内のループを並列化する 1 つの方法を説明します。
例 |
---|
int i; void simple_omp(int *a){ #pragma omp parallel for for (i=0; i<1024; i++) a[i] = i*2; } |
次のようなコマンドを使用して、上記の例をコンパイルすると仮定します。-c (Linux) または /c (Windows) は、実行ファイルを生成しないでコードをコンパイルするようにコンパイラーに指示します。
プラットフォーム |
説明 |
---|---|
Linux |
icpc -openmp -c parallel.c |
Windows |
icl /Qopenmp /c parallel.c |
コンパイラーは、次のようなメッセージを表示します。
parallel.c(20) : (col. 3) remark: OpenMP DEFINED LOOP WAS PARALLELIZED.
-openmp-report オプション (Linux) または /Qopenmp-report オプション (Windows) は、OpenMP パラレライザーの診断レベル 0、1、2 を次のように制御します。
Windows |
Linux |
説明 |
---|---|---|
/Qopenmp-report0 |
-openmp-report0 |
診断情報を表示しません。 |
/Qopenmp-report1 |
-openmp-report1 |
正常に並列化されたループ、領域、およびセクションを示す診断を表示します。 |
/Qopenmp-report2 |
-openmp-report2 |
1 に加えて、正常に処理された MASTER、SINGLE、CRITICAL、ORDERED、ATOMIC 宣言子などの構造を示す診断を指定するのと同じです。 |
上記のオプションの動作に関する詳細は、「コンパイラー・オプション」で次のトピックを参照してください。