自動並列化: 有効、オプション、ディレクティブ、および環境変数

自動パラレライザを有効にするには、-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>

上記のカッコの意味は次のとおりです:

固定形式のソース出力の場合、プリフィックスは !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

ランタイム・スケジューリングのタイプを指定します。

スタティック