基本上就是标题。例如,我正在尝试运行以下指令:
处理器上的_mm256_load_pd
、_mm256_add_pd
、_mm256_stream_pd
和128位版本:Intel Xeon、E5630、2.53 GHz、IBM HS22。但我正在获得Illegal instruction
,有没有什么想法可以让我看到这个处理器有哪些功能?
如果您所在的操作系统有/proc/cpuinfo
,请检查您的CCD_5。
或者使用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
- 指令集扩展:英特尔®;SSE4.2
所以根本没有AVX,因为它是2010年的Westmere EP微架构(在Sandybridge之前(
有关更多详细的CPU,您也可以查看http://instlatx64.atw.hu/并检查该模型(或相同微体系结构之一(的CPUID转储(如果可以找到的话(。例如,在Westmere EX上运行的Aida64 CPUID的屏幕截图,以及指令延迟/吞吐量基准输出,文本文件顶部的信息包括显示其具有哪些ISA扩展名的解码CPUID信息。还有原始CPUID转储,您可以将其与所需的CPUID功能位进行交叉引用(https://sandpile.org/x86/cpuid.htm)
相关:https://software.intel.com/sites/landingpage/IntrinsicsGuide/告诉每个内在的相应asm指令需要什么ISA扩展。