Armadillo 向量的内存对齐 vec/fvec

Memory alignment of Armadillo vectors vec/fvec

我想使用 .memptr() 直接从 Armadillo 矢量数据加载 __m256。 Armadillo 是否确保数据内存是 256 位对齐的?如果是,那么我只是将 .memptr() 返回的 float/double 指针转换为 __m256 指针并跳过 _mm256_load_ps(),如果它在性能方面有意义的话。

Armadillo 似乎没有在文档中谈论这一点,因此未指定。因此,矢量数据可能无法确保 32 字节对齐。

但是,您不需要对齐矢量数据即可将它们加载到 AVX 寄存器中:您可以使用未对齐加载内部函数 _mm256_loadu_ps。据我所知,_mm256_load_ps_mm256_loadu_ps 在相对较新的 x86 处理器上的性能大致相同。