自動パラレライザを有効にするには、-parallel オプションを使用します。-parallel オプションは、並列で安全に実行できる並列ループを検出し、自動的にこれらのループのマルチ・スレッドコードを生成します。自動並列化を使用するコマンド例は、次のとおりです。
ifort -c -parallel myprog.f
-O2 (または -O3) 最適化オプションがオン (デフォルトは -O2) の場合、 -parallel オプションは自動並列化を有効にします。-parallel オプションは、並列で安全に実行できる並列ループを検出し、自動的にこれらのループのマルチ・スレッドコードを生成します。
-parallel |
自動パラレライザを有効にします。 |
-par_threshold{0-100} |
自動並列化に必要な作業しきい値を制御します。 |
-par_report{1|2|3} |
自動並列化の診断メッセージを制御します。詳細は、後のサブセクションを参照してください。 |
自動並列化では、2 つの特定のディレクティブ !DEC$ PARALLEL と !DEC$ NOPARALLEL が使用されます。
インテル® Fortran 自動並列化コンパイラ・ディレクティブの形式は次のとおりです:
<prefix> <directive>
上記のカッコの意味は次のとおりです:
<xxx>: プリフィックスとディレクティブが必要
固定形式のソース出力の場合、プリフィックスは !DEC$ または CDEC$ です。
自由形式のソース出力の場合、プリフィックスは !DEC$ のみです。
プリフィックスの後には、ディレクティブがきます。次に例を示します:
!DEC$ PARALLEL
自動並列化ディレクティブは感嘆符で始まるため、-parallel オプションを省略した場合は、ディレクティブはコメントの形式をとります。
例
!DEC$PARALLEL ディレクティブは、すぐ後のループで存在していると想定され、正常な自動並列化を妨げる依存を無視するようにコンパイラに指示します。しかし、依存が証明されると無視されません。
!DEC$ NOPARALLEL ディレクティブは、すぐ後のループの自動並列化を無効にします。
program main
parameter (n=100)
integer x(n),a(n)
!DEC$ NOPARALLEL
do i=1,n
x(i) = i
enddo
!DEC$ PARALLEL
do i=1,n
a( x(i) ) = i
enddo
end
オプション |
説明 |
デフォルト |
OMP_NUM_THREADS |
使用されるスレッド数を制御します。 |
実行ファイルを生成する際にシステムに現在搭載されているプロセッサ数 |
OMP_SCHEDULE |
ランタイム・スケジューリングのタイプを指定します。 |
スタティック |