チュートリアルのこのステップでは、プラットフォームに適したベクトルレジスターの使用を有効にし、ベクトル化の効率を確認します。
ベクトル化を詳細に調査するには、インテル® Advisor (英語) を使用して、ベクトル化の可能性、ベクトル化の効率、依存関係に関する情報を取得します。
このセクションでは、-xHost オプションを使用して、コンパイルを実行するプロセッサーがサポートする命令セットから最適な命令セット拡張でアプリケーションをコンパイルします。ソフトウェアをさまざまなマイクロアーキテクチャーで実行できるように複数のコードパスを生成するには、インテル® oneAPI DPC++/C++ コンパイラーの ax、Qax (英語) オプションを参照してください。
プラットフォームに適したベクトル命令セットを使用できるようにする方法の 1 つは、コンパイルを実行するプロセッサーがサポートするベクトル拡張と同じベクトル拡張を使用するようにコンパイラーに指示することです。
プラットフォームに適したベクトル化を有効にするには、次の手順に従います。
‘../matrix/linux’ フォルダーにある Makefile をテキストエディターで開きます。
43 行目を以下のように変更します。
OPTFLAGS =
変更後:
OPTFLAGS = -xHost
このオプションは、コンパイルを実行するプロセッサーがサポートする最適な命令セット拡張を使用するようにコンパイラーに指示します。
Makefile を保存して閉じ、次のコマンドでアプリケーションを再コンパイルします。
make icc
パフォーマンス・スナップショット解析を実行して、アプリケーションが適切にベクトル化されていることを確認します。
アプリケーションが終了すると、インテル® VTune™ プロファイラーは Performance Snapshot の [Summary] ウィンドウを開きます。
以下の主なメトリックを観察してください:
アプリケーションの Elapsed Time がわずかに短縮されました。
Vectorization メトリックは 99.9% であり、コードは完全にベクトル化されました。
Packed DP FLOP 命令の合計 100.0% が 256 ビットレジスターを使用して実行されました。つまり、HPC パフォーマンス特性解析を実行しなくても、AVX2 ベクトル拡張が十分に活用されたということが分かりました。
インテル® VTune™ プロファイラーは、Microarchitecture Usage メトリックをハイライト表示し、Microarchitecture Exploration 解析を使用して、アプリケーションがマイクロアーキテクチャーをどの程度活用していないかを正確に把握することを提案します。
次のステップ: マイクロアーキテクチャー使用の解析を行います。