自動ベクトル化は、インテル® ストリーミング SIMD 拡張命令 (インテル® SSE、インテル® SSE2、インテル® SSE3 およびインテル® SSE4)、インテル® ストリーミング SIMD 拡張命令 3 補足命令 (インテル® SSSE3)、インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX、インテル® AVX2、インテル® AVX-512) 命令を自動的に使用するコンパイラーのコンポーネントです。ベクトル化機能は、並列に実行できるプログラム内の演算を検出し、並列化します。例えば、データ型によって、最大 16 までの要素を処理するシーケンシャルな SIMD 命令を 1 つの並列操作に変換します。
自動ベクトル化は、コンパイラーがループをアンロールするためにパックド SIMD 命令を生成する際に行われます。パックド命令は一度に複数のデータ要素の演算を行うため、ループをより効率良く実行できます。このプロセスは、コンパイラーが外部からの入力なしに適切なループを自動的に識別して最適化するため、自動ベクトル化と呼ばれます。場合によっては、コードに特定のキーワードやディレクティブを追加して、自動ベクトル化が行われるようにできます。
コンパイラーは、効率的なベクトル命令を生成する多様な自動ベクトル化ヒントをサポートしています。自動ベクトル化は、IA-32 アーキテクチャー (C++ のみ) とインテル® 64 アーキテクチャーでサポートされています。インテル® oneAPI ベースツールキットに含まれるインテル® Advisor は、コンパイラーの最適化レポートを解析して、ベクトル化を向上するためのアドバイスを生成する、ベクトル化アドバイザー機能を提供します。
このオプションを使用すると、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーの両方で、デフォルトの最適化レベルのベクトル化が有効になります。ベクトル化により呼び出されるライブラリー・ルーチンは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる可能性があります。