インテル® C++ コンパイラー 15.0 ユーザー・リファレンス・ガイド
このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーにのみ適用されます。
KNC クラス・ライブラリーには次のものがあります。
整数ベクトルクラス
浮動小数点ベクトルクラス
これらのクラスの定義は、ヘッダーファイル micvec.h に記述されています。
SIMD 演算用のクラス・ライブラリーは、「クラス・ライブラリーを使用するプロセッサーの必要条件」に示す各種プロセッサー用の基本命令を利用するための便利なインターフェイスです。プロセッサー命令のこのような拡張機能によって、SIMD (single instruction-multiple data) 手法を用いた並列処理が可能になります。次の図は、SIMD のデータフローを示しています。
この命令では、命令 1 つで演算が 16 回実行できるため、効率が 16 倍改善されます。
このような新しいプロセッサー命令には、インライン・アセンブリー、組込み関数、またはインテル® MIC アーキテクチャー向け SIMD クラスを使用してアクセスできます。この 3 種類のインターフェイスについて、32 ビット浮動小数点値を 16 個加算するのに必要なコーディングを比較してみてください。
次の表は、単精度浮動小数点値を 2 つ加算するコードについて、インライン・アセンブリー、組込み関数、および SIMD クラス・ライブラリーを用いた場合をそれぞれ示したものです。
インライン・アセンブリー | 組込み関数 | SIMD クラス・ライブラリー |
---|---|---|
__m512 a,b,c; __asm{ vloadd v0,b vloadd v1,c vaddps v0,v1 vstored a, v0 } |
#include <immintrin.h> ... __M512 a,b,c; a = _mm512_add_ps(b,c); ... |
#include <micvec.h> ... F32vec16 a,b,c; a = b + c; ... |