並列化レポート

-par-report (Linux* および Mac OS* X) または /Qpar-report (Windows*) オプションは、自動パラレライザーの診断レベル 0、1、2、または 3 を制御します。値に 3 を指定して、詳細な診断レポートを生成します。

次のようなコマンドを入力して、診断レポートを実行します。

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

コマンド

Linux および Mac OS X

ifort -c -parallel -par-report 3 sample.f90

Windows

ifort /c /Qparallel /Qpar-report:3 sample.f90

-c (Linux および Mac OS X) または /c (Windows) は、実行ファイルを生成しないでサンプルコードをコンパイルするようにコンパイラーに指示します。

Note icon

Linux および Mac OS X: オプションとフェーズの間のスペースはオプションです。

Windows: オプションとフェーズの間のコロンはオプションです。

例えば、次のコード例についての完全な診断レポートが必要であるとします。

subroutine no_par(a, MAX)

   integer :: i, a(MAX)

   do i = 1, MAX

     a(i) = mod((i * 2), i) * 1 + sqrt(3.0)

     a(i) = a(i-1) + i

   end do

end subroutine no_par

次の例は、コンパイラーが上記のコード例に対して生成した診断レポートを示しています。たいていの場合、行の隣にリストされているコメントは説明です。

レポート出力例

procedure: NO_PAR

sample.f90(7):(4) remark #15049: ループは並列化されませんでした。: ループは並列化候補ではありません。

sample.f90(7):(4) remark #15050: ループは並列化されませんでした。: ループは並列化候補ではありません。

sample.f90(13):(6) remark #15051: 並列依存関係: FLOW の依存関係が A 行 13 と A 行 13 の間に証明されました。

対応方法

-par-threshold{n} (Linux および Mac OS X) または /Qpar-threshold[:n] (Windows) オプションは、並列ループ実行の有効性に基づいて、ループの自動並列化のしきい値を設定します。n の値は 0 から 100 までを設定できます。計算量にかかわらずループを自動並列化するには、-par-threshold0 (Linux および Mac OS X) または /Qpar-threshold:0 (Windows) を使用します。

推定される関数呼び出しへの副作用を回避するには、-ipo[value] (Linux および Mac OS X) または /Qipo (Windows) を使用します。

想定されたデータ依存を排除するには、!DEC$ PARALLEL 宣言子を使用します。