Single Instruction Multiple Data(SIMD)はOpenCLに特有のものではなくベクトル型の要素での並列演算処理を可能とします。SIMD命令は複数のデータ要素を1サイクルで処理させます。
IntelやAMDのCPUが実装したSIMDはSSEと呼びます。Intelの最新のチップはAVXというSIMDのアーキテクチャをサポートしています。
Intelのマイクロプロセッサーではベクトルを並列で処理する機構である以下3つの規格(いずれか一つ)が採用されています。
各規格の詳細についてはIntelがネットで公開しているドキュメントやマニュアルを参照ください。SSEにはSSE2、SSE3といったようにバージョンがついており、各ハードウェアでサポートしているSIMD拡張が異なります。
検証環境で使うIntel Core I5のマイクロアーキテクチャーIvyBridgeはAVXをサポートしているので、OpenCLの実装もAVXに適したパラメーターを設定するようにします。
IntelはAVXの推奨設定として下記のものをあげています。
CPU/GPUでの推奨ワークグループサイズは64または128です。
Copyright 2018-2019, by Masaki Komatsu