このサンプルの GAP レポートは、並列化を有効にするために /Qparallel オプションを使用することを推奨しています。次の手順に従ってこのオプションを有効にしてください。
GAP-c プロジェクトを右クリックして、[プロパティ] を選択します。
[プロパティ ページ)] ダイアログで [C/C++] ヘッダーを展開して、[Optimization (最適化)] を選択します。
右のペインの [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 }
ループが並列化/ベクトル化されたことを確認するには:
[Linker (リンカ)] > [Command Line (コマンドライン)] > [Additional Options (追加のオプション)] に /Qvec-report1 /Qpar-report1 オプションを追加します。
適切なコードパスがコンパイルされるようにプリプロセッサー定義 TEST_GAP を追加します。
GAP-c プロジェクトをリビルドして、[出力] ウィンドウのレポートを確認してください。
-guide、-vec-report、および -par-report コンパイラー・オプションの使用に関する詳細は、ユーザー・リファレンス・ガイドの「コンパイラー・オプション」を参照してください。
このチュートリアルでは、コンパイラーが自動並列化を通じてどのように最適化ソリューションをガイドするかを見てきました。以上で、ガイド付き自動並列処理のチュートリアルは終了です。
© 2010 Intel Corporation. 無断での引用、転載を禁じます。