インテル® MKL におけるインテル® AVX2 向け最適化

同カテゴリーの次の記事

スレッド化されたインテル ® MKL をマルチスレッド・アプリケーションで使用する

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Intel® AVX2 optimization in Intel® MKL」の日本語参考訳です。


第 4 世代インテル® Core™ プロセッサー (開発コード名: Haswell) は、2013 年にリリースされた新しい世代の x86 プロセッサー・マイクロアーキテクチャー (tock) です。Haswell の新しい命令は、幅広いアプリケーションと使用モデルを高速化します。こちらから『Intel® Advanced Vector Extensions Programming Reference』 (英語) をダウンロードできます。新しい命令セットは、Ivy Bridge (開発コード名) マイクロアーキテクチャーの命令を基に構築されており、デジタル乱数ジェネレーター、半精度浮動小数点 (float16) アクセラレーター、インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) 命令の拡張セットが含まれています。
新しい命令は次のように分類できます。

インテル® AVX2 – 整数型を 256 ビットの SIMD へ拡張: インテル® AVX2 の整数型は、商用のイメージ/ビデオ処理ワークロードでよく使われる映像データ処理に特に役立ちます。Haswell では、インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) の浮動小数点型とインテル® AVX2 の整数型の両方を利用できます。
ビット操作命令: 圧縮データベース、ハッシュ、大数演算、およびさまざまな汎用コードで役立ちます。
ギャザー命令: 隣接しないデータ要素を利用するベクトル化されたコードで便利です。Haswell のギャザー命令は、(インテル® AVX の条件付きロード/ストアと同様に) 安全性を確保するためマスクを採用しています。値の丸め操作や境界のアライメント、または同様の条件付き操作に適しています。
Any-to-Any 並べ替え: シャッフル操作に便利です。Haswell では、DWORD と QWORD がサポートされ、256 ビットのレジスター全体にわたって並べ替えを行うことができます。
ベクトル-ベクトルシフト: 新しいベクトルのシフト操作が追加されました。シフト量はベクトルによって制御されます。これは、要素ごとにシフト量が異なるベクトル化されたループで重要です。
浮動小数点の乗累算: ピーク FLOPS を大幅に向上し、超越関数の精度をさらに高めます。ハイパフォーマンス・コンピューティング、プロ品質の画像、顔検出など幅広い分野で利用できます。スカラー、128 ビット/256 ビットのパックド単精度/倍精度データ型を処理します。(これらの命令は、初期のインテル® AVX の仕様書で説明されているとおりです。)

インテル® MKL 11.0 はインテル® AVX2 を完全にサポートしており、以下の関数はインテル® AVX2 向けに最適化されています。

Basic Linear Algebra Subprograms (BLAS)

  • xGEMM
  • xTRSM
  • xTRMM
  • xSYRK
  • xSYMM
  • xHERK
  • xHEMM
  • xHER2K

LAPACK

  • DGETRF
  • DPOTRF
  • DGEQRF

離散フーリエ変換 (DFT)

  • 1 次元、2 の累乗
  • 2 次元、2 の累乗
  • 3 次元、2 の累乗
  • 1 次元、2 の累乗ではないもの
  • 2 次元、2 の累乗ではないもの
  • 3 次元、2 の累乗ではないもの

スパース BLAS

  • dcsrmm
  • scsrmm
  • dcoomm
  • scoomm

ベクトル・スタティスティカル・ライブラリー (VSL)

  • MRG32k3a

参考文献

インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) の最適化

Haswell New Instruction Descriptions Now Available! (英語)

Intel® Advanced Vector Extensions Programming Reference (英語)

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事

  • HPL 向けアプリケーション・ノートHPL 向けアプリケーション・ノート この記事は、インテル® ソフトウェア・ネットワークに掲載されている「HPL application note」の日本語参考訳です。 ステップ 1 - 概要 このガイドは、現在 HPL を使用しているユーザーが、より優れたベンチマーク結果を得られるように、インテル® マス・カーネル・ライブラリー (インテル® MKL) の […]
  • インテル® MKL 10.3 で追加された新機能インテル® MKL 10.3 で追加された新機能 この記事は、インテル® ソフトウェア・ネットワークに掲載されている「What's new in Intel® MKL?」の日本語参考訳 (一部編集含む) です。 インテル® MKL 10.3 では主に次の機能が追加されました。 インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) […]
  • インテル® System Studio – インテル® Cilk™ Plus による信号処理向けマルチコア・プログラミングインテル® System Studio – インテル® Cilk™ Plus による信号処理向けマルチコア・プログラミング この記事は、インテル® デベロッパー・ゾーンに掲載されている「Intel® System Studio - Multicore Programming with Intel® Cilk™ Plus」の日本語参考訳です。 はじめに インテル® System Studio […]
  • 新しい最適化レポートを使用してインテル® コンパイラーをさらに活用する新しい最適化レポートを使用してインテル® コンパイラーをさらに活用する この記事は、インテル® デベロッパー・ゾーンに公開されている「Getting the Most out of your Intel® Compiler with the New Optimization […]
  • サマリー統計ライブラリーの概要サマリー統計ライブラリーの概要 この記事は、インテル® ソフトウェア・ネットワークに掲載されているブログ「Statistical Summary Library Overview」の日本語参考訳です。 統計的計算の精度とパフォーマンスが強化された最新のアルゴリズムを提供する、最適化された並列ライブラリーがインテル® MKL 10.3 […]