基本上是标题。例如,我正在尝试运行如下指令:
_mm256_load_pd
、_mm256_add_pd
、_mm256_stream_pd
以及处理器上的 128 位版本:Intel Xeon、E5630、2.53 GHz、IBM HS22。但是我Illegal instruction
对一个可以查看该处理器可用哪些功能的站点有所了解?
检查您/proc/cpuinfo
的操作系统是否具有该操作系统。
或者使用 clang 或 gcc -march=native
- 他们将拒绝编译您的 CPU 不支持的任何内在函数。(与 MSVC 或 ICC 不同,它可以让您使用内在函数,而无需告诉它目标机器支持它们。)
要按 CPU 型号查找它,请谷歌该型号,例如Xeon, E5630
-> https://ark.intel.com/content/www/us/en/ark/products/47924/intel-xeon-processor-e5630-12m-cache -2-53-ghz-5-86-gt-s-intel-qpi.html
所以根本没有 AVX,因为它是 2010 年(在 Sandybridge 之前)的 Westmere-EP 微架构。
有关 CPU 的更多详细信息,您还可以检查http://instlatx64.atw.hu/并检查该模型(或相同微体系结构之一)的 CPUID 转储(如果可以找到的话)。例如在 Westmere-EX 上运行的 Aida64 CPUID 的屏幕截图,以及指令延迟/吞吐量基准输出,文本文件顶部的信息包括解码的 CPUID 信息,显示它具有哪些 ISA 扩展。还有原始 CPUID 转储,您可以通过您感兴趣的任何扩展(例如英特尔方舟页面将获得的 FSGSBASE )与所需的 CPUID 功能位(https://sandpile.org/x86/cpuid.htm)进行交叉引用cmpxchg16b
不提。)
相关:https : //software.intel.com/sites/landingpage/IntrinsicsGuide/告诉您每个内在函数的相应 asm 指令需要什么 ISA 扩展。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句