自動並列化: しきい値制御と診断

しきい値制御

-par-threshold{n} (Linux*) または /Qpar-threshold[:n] (Windows*) オプションは、並列ループ実行の有効性に基づいて、ループの自動並列化のしきい値を設定します。n の値は 0 から 100 までを設定できます。

診断

-par-report (Linux) または /Qpar-report (Windows) オプションは、自動パラレライザーの診断レベル 0、1、2、または 3 を制御します。最も詳細な情報を得るには、レベル 3 を指定します。

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

例 1: サンプルコード

void no_par(void)

{

  int i;

  int a[1000];

  for (i=1; i<1000; i++) {

    a[i] = (i * 2) % i * 1 + sqrt(i);

    a[i] = a[i-1] + i;

  }

}

次のようなコマンドを使用して、-par-report3 (Linux) または /Qpar-report3 (Windows) を使用します。

プラットフォーム

コマンド

Linux

icpc -parallel -par-report3 -c diag_prog.c

Windows

icl /Qparallel /Qpar-report3 /c diag_prog.c

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

次の例は、コンパイラーが上記のサンプルコードに対して生成した診断レポートを示しています。

例 2: サンプルコードのレポート出力

procedure: no_par

serial loop: line 29

  flow data dependence from line 30 to line 31, due to "a"

  flow data dependence from line 31 to line 31, due to "a"

トラブルシューティングのヒント