0
我正在使用SIMD指令(SSE和AVX)进行多项操作。据我所知,SSE指令最适合16字节对齐的内存,而AVX指令最适合32字节对齐的内存。在16字节和32字节的边界上对齐内存
为了与SSE和AVX最佳使用,始终分配对齐到32字节边界的内存是否安全?
是否有任何32字节对齐的内存不是16字节对齐的情况?
我正在使用SIMD指令(SSE和AVX)进行多项操作。据我所知,SSE指令最适合16字节对齐的内存,而AVX指令最适合32字节对齐的内存。在16字节和32字节的边界上对齐内存
为了与SSE和AVX最佳使用,始终分配对齐到32字节边界的内存是否安全?
是否有任何32字节对齐的内存不是16字节对齐的情况?
是否有任何情况下32字节对齐的内存不是也是16字节对齐?
对齐只是意味着该地址是32的倍数的32的任何倍数也是16.
第一谷歌命中为“对准”的倍数是维基百科,并且可以按照链接到https://en.wikipedia.org/wiki/Data_structure_alignment#Definitions,这在很多细节上解释了这一点。
@jbapple:re:你的编辑。我故意失礼,劝阻这些微不足道的问题。下一步是什么? 100是10的倍数吗?我也不希望任何人加入这个答案,所以这个问题可以被删除。我知道我可以回滚你的修改,但我不会这么做,因为这是屈服于礼貌的压力。 –
彼得,我不想在这个答案的评论中与你进行辩论,用你的话说,对于不知道“对齐”意味着什么的人来说,“故意粗暴”计算机内存的上下文。 – jbapple
如果/当你去使用至强phi时,建议使用64位对齐方式,所以我倾向于将它用于所有需要速度的阵列。那么为什么不使用64位对齐? – Holmz