この手順では、パフォーマンス・スナップショット解析を再度実行して、ループ交換を有効にしたアプリケーションをプロファイルします。
ループ交換手法によって得られる改善を確認するには、パフォーマンス・スナップショット解析を再度実行します。
コンパイラーと IDE によっては、解析を構成するときに、前の手順で再コンパイル中に生成された別の実行可能ファイルを参照する場合があります。
サンプル・アプリケーションが終了すると、パフォーマンス・スナップショットの [Summary] ウィンドウが開きます。
以下の主なメトリックを観察してください:
アプリケーションの Elapsed Time が大幅に短縮されます。この改善は主に、プロセッサーが頻繁にキャッシュをミスして DRAM からデータを要求する、レイテンシーの面で非常にコストがかかるメモリーアクセスのボトルネックが解消された結果です。
Vectorization メトリックは 0.0% であり、コードがベクトル化されていないことを示しています。そのため、パフォーマンス・スナップショットでは、HPC パフォーマンス特性解析が次のステップとしてハイライトされています。
この場合、インテル® oneAPI DPC++/C++ コンパイラーはバイナリーサイズ優先 (/O1) でコンパイルしたことでベクトル化を適用しないため、コードはベクトル化されていません。
コンパイラーによる自動ベクトル化を有効にするには、次の手順に従います。
‘../matrix/linux’ フォルダーにある Makefile をテキストエディターで開きます。
42 行目を以下のように変更します。
CFLAGS = -g -O1
変更後:
CFLAGS = -g -O2
次のコマンドを実行してアプリケーションを再コンパイルします。
make icc
次のステップ: ベクトル化効率を解決します。