【发布时间】:2018-06-27 14:47:28
【问题描述】:
我最近对 SIMD 优化产生了兴趣,因为在一段时间没有这样做之后,我想再次使用 C++ 进行编程。请进行描述,因为我还是 SIMD 指令的初学者。
我的问题是:是否有可能在 C++ 中编译一个跨平台的可执行文件,它支持各种 SIMD 指令集并实时选择最佳指令集来使用?在性能方面最好,通常最新的指令集更好。
示例:我在 Windows 10 上使用 i7-7700K 编译了一个游戏并将其放到 Steam 上。不同的用户很可能拥有支持不同 SIMD 指令集的不同 CPU。启动游戏时,会检测并使用最佳 SIMD 指令集。
当然,我必须调整我的代码并支持一些手动选择的 SIMD 指令集。
【问题讨论】:
-
如果可能的话,你知道一个处理包装和使用透明不同的 SIMD 指令集的优秀且高效的库吗?
-
这不仅是可能的,英特尔和 AMD 都销售可以执行此操作的数学库(并且选择每个实现的确切条件已由 people interested in questions like "Is the Intel math library slow on AMD processors because the AMD chips don't run the code as fast, or because Intel's code selection logic is broken?" 反向工程)