自動並列化: 有効、オプション、宣言子、および環境変数

自動パラレライザーを有効にするには、-parallel (Linux* および Mac OS* X) または /Qparallel (Windows*) オプションを使用します。このオプションは、安全に並列実行できる並列ループを検出して、これらのループのマルチスレッド・コードを自動的に生成します。

Note icon

このオプションを使用して、並列化を有効にするには、KMP_STACKSIZE 環境変数に十分なサイズを設定する必要があります。

自動並列化を使用するコマンド例は、次のとおりです。

オペレーティング・システム

説明

Linux および Mac OS X

ifort -c -parallel myprog.f

Windows

ifort -c /Qparallel myprog.f

自動並列化では、2 つの特定の宣言子 !DEC$ PARALLEL!DEC$ NOPARALLEL が使用されます。

自動並列化宣言子の形式と構文

自動並列化コンパイラー宣言子の形式は次のとおりです。

構文

<prefix> <directive>

上記の括弧の意味は次のとおりです。

プリフィックスの後には、宣言子がきます。次に例を示します。

構文

!DEC$ PARALLEL

自動並列化宣言子は感嘆符で始まるため、-parallel (Linux) または /Qparallel (Windows) オプションを省略した場合、宣言子はコメントの形式になります。

!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

自動並列化の環境変数

自動並列化は、次の OpenMP* 環境変数を使用します。

デフォルト設定とこれらの変数の使用方法についての詳細は、「OpenMP* の環境変数」を参照してください。