処理速度向上のための並列処理アルゴリズムを見ています。 Agner Fog's vector class library, VCLをテストしたいです。処理速度のベクトルクラスライブラリ
Vec16c
(SSE2命令セット)とVec32c
(AVX命令セット)のように、異なるベクタークラスを選択する方法が不思議です。
私はIntel®Atom™x5-Z8350プロセッサを使用しており、仕様に応じてSSE4.2命令セットをサポートしています。
ハードウェアのサポートに関して、どのように効果的にベクタークラスを選択できますか? 私のプロセッサについて言えば、AVX命令セットに推奨されるVec32cを使用できますか?
あなたのような、命令セットは、あなたがのためにコンパイルしているターゲットに対して有効になっているものを検出するためのコンパイラ定義されたマクロを使用することができます
あなたが実際にあればVec32cを使用したいと思います'__AVX2__'が定義されていなければ、常に' Vec16c'を使用します(有用なところでは、vectorclassヘッダがSSE4.1/4.2/SSSE3を使うようにしてください)。 AVX512を確認し、 'Vec64c'を使用してください。ベクトルクラスライブラリの主要な目標の1つは、さまざまなターゲットオプションの可用性に基づいて異なるイントリンシックの選択を抽象化することです。 –
私はそれをupvoteする前にこれはかなり大きな編集を取ったが、私はかなり正しいと確信しています。私は実際にVCL(および[貢献した変更](https://github.com/pcordes/vectorclass)を使用しています(AFAIKはまだ統合されていないので、Agnerに含めることができます) –