如何判断Linux机器是否支持AVX / AVX2指令?

时间:2016-05-27 09:40:45

标签: linux unix avx suse avx2

我在使用SUSE Linux Enterprise 10/11计算机。我将回归发送到运行英特尔处理器的计算机的农场。我的一些测试失败是因为我的工具是使用需要AVX / AVX2指令支持的库构建的。我收到Illegal exception错误。

在Linux中,是否有任何命令可用于确定CPU代码/系列名称是什么?

我相信AVX和AVX2分别可以从英特尔SandyBridge和Haswell系列开始使用。

4 个答案:

答案 0 :(得分:25)

运行此命令:

grep avx /proc/cpuinfo

grep avx2 /proc/cpuinfo

这会给你:

  

flags:fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx avx2 hypervisor lahf_lm arat tsc_adjust xsaveopt

答案 1 :(得分:15)

在linux(或unix机器)上,有关cpu的信息位于/proc/cpuinfo。您可以手动或使用grep命令(grep flags /proc/cpuinfo)从中提取信息。

大多数编译器也会自动定义__AVX2__,因此您也可以检查它。

答案 2 :(得分:3)

您还可以运行lscpu并检查末尾的指令列表。

答案 3 :(得分:2)

您可以通过检查/proc/cpuinfo来测试SIMD指令集和其他CPU功能的可用性,例如

$ grep avx2 /proc/cpuinfo
flags       : fpu vme ... sse4_1 sse4_2 ... bmi1 avx2 ... bmi2 ...