OpenMP* モードでインテル® Fortran コンパイラを起動するには、-openmp オプションでインテル・コンパイラを起動する必要があります。
ifort -openmp input_file(s)
マルチスレッド・コードを起動する前に、OpenMP 環境変数 OMP_NUM_THREADS で使用するスレッドの数を設定できます。詳細は、「OpenMP の環境変数」のセクションを参照してください。「インテル拡張ルーチン」では、インテル Fortran コンパイラの仕様に追加された OpenMP 拡張機能について説明します。
-openmp オプションは、パラレライザが OpenMP ディレクティブに基づいてマルチスレッド・コードを生成できるようにします。このコードは、単一プロセッサ・システムとマルチプロセッサ・システムのいずれでも並列実行が可能です。
-openmp オプションは、-O0 (最適化なし) と -O1、-O2 (デフォルト) および -O3 の最適化レベルで動作します。-openmp と -O0 を指定すると、OpenMP アプリケーションのデバッグに役立ちます。
-openmp オプションを使用すると、コマンドラインで他のオプションを指定しない限り、-auto オプションが設定されます (すべての変数を、ローカル静的記憶域ではなく、スタックに割り当てます)。
OpenMP ディレクティブの形式は次のとおりです:
<prefix> <directive> [<clause> [[,] <clause> ...]]
上記のカッコの意味は次のとおりです:
<xxx>: プリフィックスとディレクティブが必要です。
[<xxx>]: ディレクティブ が 1 つ以上の節を使用する場合、節が必要です。
[,]: <clause> 間のカンマはオプションです。
固定形式のソース入力の場合、プリフィックスは !$omp または c$omp です。
自由形式のソース入力の場合、プリフィックスは !$omp のみです。
プリフィックスの後には、ディレクティブがきます。次に例を示します:
!$omp parallel
OpenMP ディレクティブは感嘆符で始まるため、-openmp オプションを省くと、ディレクティブはコメント形式になります。
並列領域を定義している OpenMP 構造の構文形式は、次のいずれかです。
!$omp <directive>
<structured block of code>
!$omp end <directive>
または
!$omp <directive>
<structured block of code>
または
!$omp <directive>
<directive> は、特定の OpenMP ディレクティブの名前です。
-openmp_report{0|1|2} オプションは、OpenMP パラレライザの診断レベル 0、1、2 を次のように制御します:
-openmp_report0 = 診断情報を表示しません。
-openmp_report1 = 正常に並列化されたループ、領域、およびセクションを示す診断を表示します。
-openmp_report2 = -openmp_report1 の診断に加えて、正常に処理された MASTER 構造、SINGLE 構造、CRITICAL 構造、ORDERED 構造、ATOMIC ディレクティブなどを示す診断を表示します。
デフォルトは -openmp_report1 です。