40

I'm on SUSE Linux Enterprise 10/11 machines. I launch my regressions to a farm of machines running Intel processors. Some of my tests fail because my tools are built using a library which requires AVX/AVX2 instruction support. I get an Illegal exception error.

In Linux, is there any commands I can use to determine what is the CPU code/family name?

I believe AVX and AVX2 are available onward from Intel SandyBridge and Haswell family, respectively.

Rodrigo de Azevedo
  • 1,035
  • 9
  • 17
user4979733
  • 2,871
  • 4
  • 24
  • 37

4 Answers4

54

Run this command:

grep avx /proc/cpuinfo

Or

grep avx2 /proc/cpuinfo

This will give you:

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

khrm
  • 4,893
  • 1
  • 19
  • 26
  • 1
    `grep -o 'avx[^ ]*' /proc/cpuinfo` will print avx avx2 (repeated for each core) on a Skylake-desktop CPU. (`grep -o` only prints the matching text, not the whole line). Another option would be `tr ' ' '\n' < /proc/cpuinfo | grep avx`. – Peter Cordes Jun 29 '18 at 18:34
  • 1
    It doesn't print anything. What does that mean? – CGFoX Jan 06 '21 at 11:40
  • 2
    @CGFoX No output means it's not supported. – audun Jan 27 '21 at 10:07
39

On linux (or unix machines) the information about your cpu is in /proc/cpuinfo. You can extract information from there by hand, or with a grep command (grep flags /proc/cpuinfo).

Also most compilers will automatically define __AVX2__ so you can check for that too.

hr0m
  • 2,493
  • 2
  • 22
  • 36
  • FWIW fails for me with g++ 10.3 and clang++ 12 on a cpu that has it. Unless I add `-mavx2` which, sadly, makes is circular. `march=native` also shows it. Using it with `-march=native` on an old CPU does not indeed the the 'not defined' state. So yes, good answer, _but one needs to trigger it correctly_ too. – Dirk Eddelbuettel Nov 20 '21 at 16:40
10

You can also run lscpu and check the list of instructions at the end.

Ibrahim A
  • 121
  • 1
  • 4
2

You can test for availability of SIMD instruction sets and other CPU features by examining /proc/cpuinfo, e.g.

$ grep avx2 /proc/cpuinfo
flags       : fpu vme ... sse4_1 sse4_2 ... bmi1 avx2 ... bmi2 ...
Paul R
  • 202,568
  • 34
  • 375
  • 539