所以,无论我阅读了多少关于SIMD指令的内容,我都有一些基本的东西,我仍然无法正确理解,因此,我希望能有一些(概念性的)解释或建议。
据我所知,许多SIMD实现因CPU架构而异(MMX,SSE,SSE2等)。然而,考虑到自2000年代中期以来,英特尔和AMD之间的SIMD指令集之间似乎有了更大的融合(而Apple已经开始使用英特尔),我没有得到以下内容。
简单地说,如果应用程序具有特定的SIMD代码(例如,用于矢量化数学库),它是否同样适用于英特尔和AMD(因此在Windows和Linux计算机中)以及在iOS中没有任何修改?
或者是否需要为应用程序所针对的每个CPU架构/操作系统实现特定代码,以便为每种用户类型提供不同的应用程序编译?
答案 0 :(得分:2)
对于英特尔/ AMD,可能会有一些融合,这取决于您想要提高性能范围的难度。 iOS设备是基于ARM的,并且使用Neon SIMD而不是Intel / AMD的SSE / AVX,因此没有二进制兼容性,只有源级别的最小兼容性(例如通过宏或模板库)。有关某些跨平台解决方案,请参阅this question。