4つの64ビット浮動小数点値のパックされたベクトルがあります。
ベクトルの要素の合計を取得したいと思います。
SSEを使用すると(および32ビットフロートを使用して)、次のことができます。
v_sum = _mm_hadd_ps(v_sum, v_sum);
v_sum = _mm_hadd_ps(v_sum, v_sum);
残念ながら、AVXは_mm256_hadd_pd命令を備えていますが、SSEバージョンとは結果が異なります。これは、ほとんどのAVX命令が、128ビットの境界を越えることなく、128ビットの下位および上位ごとに別々にSSE命令として機能するためだと思います。
理想的には、私が探しているソリューションは次のガイドラインに従う必要があります
。1)AVX/AVX2命令のみを使用します。(SSEなし)
2)2〜3回以内の指示でそれを行います。
ただし、(上記のガイドラインに従わなくても)効率的でエレガントな方法は常に受け入れられています。
助けてくれてありがとう。
-ルイジカステッリ