在面向多平台和OS的应用程序中使用SIMD指令

时间:2016-01-19 22:15:36

标签: operating-system simd computer-architecture cpu-architecture

所以,无论我阅读了多少关于SIMD指令的内容,我都有一些基本的东西,我仍然无法正确理解,因此,我希望能有一些(概念性的)解释或建议。

据我所知,许多SIMD实现因CPU架构而异(MMX,SSE,SSE2等)。然而,考虑到自2000年代中期以来,英特尔和AMD之间的SIMD指令集之间似乎有了更大的融合(而Apple已经开始使用英特尔),我没有得到以下内容。

简单地说,如果应用程序具有特定的SIMD代码(例如,用于矢量化数学库),它是否同样适用于英特尔和AMD(因此在Windows和Linux计算机中)以及在iOS中没有任何修改?

或者是否需要为应用程序所针对的每个CPU架构/操作系统实现特定代码,以便为每种用户类型提供不同的应用程序编译?

1 个答案:

答案 0 :(得分:2)

对于英特尔/ AMD,可能会有一些融合,这取决于您想要提高性能范围的难度。 iOS设备是基于ARM的,并且使用Neon SIMD而不是Intel / AMD的SSE / AVX,因此没有二进制兼容性,只有源级别的最小兼容性(例如通过宏或模板库)。有关某些跨平台解决方案,请参阅this question