小编Rou*_*lan的帖子

使用 __m512 (AVX512) 水平添加

如何使用 512 位 AVX 寄存器中的浮点数有效地执行水平加法(即将单个向量中的项加在一起)?对于 128 和 256 位寄存器,这可以使用 _mm_hadd_ps 和 _mm256_hadd_ps 来完成,但没有 _mm512_hadd_ps。Intel 内在函数指南文档 _mm512_reduce_add_ps。它实际上并不对应于单个指令,但它的存在表明存在一种最佳方法,但它似乎没有在 GCC 最新快照附带的头文件中定义,我找不到它与谷歌。

我认为可以使用 _mm512_shuffle_ps 和 _mm512_add_ps 模拟“hadd”,或者我可以使用 _mm512_extractf32x4_ps 将 512 位寄存器分解为四个 128 位寄存器,但我想确保我不会错过更好的东西。

simd intrinsics avx512

6
推荐指数
1
解决办法
5471
查看次数

标签 统计

avx512 ×1

intrinsics ×1

simd ×1