首页 > 解决方案 > 何时使用英特尔的指令集扩展技术

问题描述

什么时候使用英特尔的指令集扩展技术才有意义?它到底有什么作用?

我的场景:我想尽可能快地进行约 500.000 次矩阵向量乘法。

矩阵大小:[4x4] | 向量大小:[1x4]

标签: c++intelssesimdavx

解决方案


如果你能保证你的客户有一定程度的 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 程序。


推荐阅读