问题描述
何时使用Intel的指令集扩展技术有意义?它到底有什么作用?
我的情况:我想尽快进行约500.000矩阵矢量乘法。
矩阵大小:[4x4] |向量大小:[1x4]
解决方法
如果您可以保证您的客户获得一定程度的SIMD支持,我看不到是什么使您退缩。
SIMD已经存在了很长时间,要求您的客户拥有它并不是没有道理的。
例如: https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86?view=vs-2019 https://docs.microsoft.com/en-us/cpp/build/reference/arch-x64?view=vs-2019
x86-64保证SSE2可用,因此编译器始终都将其用于64位构建。 (从某种意义上说,它不再是扩展,而只是x86-64 ISA的基线部分。)
编辑:
谢谢彼得·科德斯(Peter Cordes)的编辑!
但是我也想向用户指出,如果他们对SIMD感兴趣,他们可能希望研究OpenCL。
https://en.wikipedia.org/wiki/OpenCL
OpenCL帮助用户编写非常有效的SIMD程序。