问题描述
我想用 __m256
直接从犰狳矢量数据加载 .memptr()
。
Armadillo 是否确保数据内存是 256 位对齐的?如果是,那么我会将 .memptr()
返回的浮点/双指针转换为 __m256
指针并跳过 _mm256_load_ps()
,如果它在性能方面有意义。
解决方法
犰狳似乎没有在文档中提到这一点,所以没有具体说明。因此,矢量数据可能无法确保 32 字节对齐。
但是,您不需要对齐矢量数据来将它们加载到 AVX 寄存器中:您可以使用未对齐的加载内在 _mm256_loadu_ps
。 AFAIK,_mm256_load_ps
和 _mm256_loadu_ps
的性能在相对较新的 x86 处理器上大致相同。