ガイド付き自動並列化の推奨内容を実装する

このサンプルの GAP レポートは、並列化を有効にするために /Qparallel オプションを使用することを推奨しています。次の手順に従ってこのオプションを有効にしてください。

  1. GAP-c プロジェクトを右クリックして、[プロパティ] を選択します。

  2. [プロパティ ページ)] ダイアログで [C/C++] ヘッダーを展開して、[Optimization (最適化)] を選択します。

  3. 右のペインの [Intel Specific (インテル固有)] 以下で [Parallelization (並列化)][並列化を有効にする (/Qparallel)] を選択して [OK] をクリックします。


これで、GAP 解析を再度実行し、GAP レポートを確認します。

リマーク #30521 は、変数 b が条件付きで割り当てられるため、行番号 50 のループが並列化できないことを示しています。リマーク #30525 は、コンパイラーがループを並列化するには、ループのトリップカウントが 188 以上でなければならないことを示しています。

GAP の推奨内容が適切であるこを確認したら、必要な変更を行います。プログラムのセマンティクスは変更しないでください。

このループについては、GAP が推奨するように、条件付きコンパイルがループの並列化とベクトル化を有効にします。

#ifdef TEST_GAP
#pragma loop count min (188)
  for (i=0; i<n; i++) {
        b = A[i];
    if (A[i] > 0) {A[i] = 1 / A[i];}
    if (A[i] > 1) {A[i] += b;}
  }

#else

for (i=0; i<n; i++) {
    if (A[i] > 0) {b=A[i]; A[i] = 1 / A[i]; }
    if (A[i] > 1) {A[i] += b;}
  }
#endif

}

ループが並列化/ベクトル化されたことを確認するには:

  1. [Linker (リンカ)] > [Command Line (コマンドライン)] > [Additional Options (追加のオプション)]/Qvec-report1 /Qpar-report1 オプションを追加します。

  2. 適切なコードパスがコンパイルされるようにプリプロセッサー定義 TEST_GAP を追加します。

  3. GAP-c プロジェクトをリビルドして、[出力] ウィンドウのレポートを確認してください。

-guide-vec-report、および -par-report コンパイラー・オプションの使用に関する詳細は、ユーザー・リファレンス・ガイドの「コンパイラー・オプション」を参照してください。

このチュートリアルでは、コンパイラーが自動並列化を通じてどのように最適化ソリューションをガイドするかを見てきました。以上で、ガイド付き自動並列処理のチュートリアルは終了です。

戻る: ガイド付き自動並列処理レポートを解析する


このヘルプについてのフィードバックを送信

© 2010 Intel Corporation. 無断での引用、転載を禁じます。