Как определить, поддерживает ли машина Linux инструкции AVX/AVX2?
Я на компьютерах SUSE Linux Enterprise 10/11. Я запускаю свои регрессии на ферму машин с процессорами Intel. Некоторые из моих тестов не пройдены, потому что мои инструменты построены с использованием библиотеки, которая требует поддержки инструкций AVX/AVX2. Я получаю Illegal exception
ошибка.
В Linux, есть ли какие-либо команды, которые я могу использовать, чтобы определить, какой код процессора / фамилия?
Я полагаю, что AVX и AVX2 доступны от Intel SandyBridge и семейства Haswell, соответственно.
5 ответов
На Linux (или Unix-машинах) информация о вашем процессоре находится в /proc/cpuinfo
, Вы можете извлечь информацию оттуда вручную или с помощью команды grep (grep flags /proc/cpuinfo
).
Также большинство компиляторов будут автоматически определять __AVX2__
так что вы можете проверить это тоже.
Запустите эту команду:
grep avx /proc/cpuinfo
Или же
grep avx2 /proc/cpuinfo
Это даст вам:
флаги: FPU VME-де-псевдоэфедрин TSC MSR пае MCE CX8 APIC SEP MTRR PGE MCA CMOV погладить pse36 clflush MMX fxsr ссе sse2 сс Системный вызов пх pdpe1gb rdtscp лм constant_tsc arch_perfmon rep_good nopl eagerfpu ПНИ PCLMULQDQ VMX SSSE3 CX16 PCID sse4_1 sse4_2 x2APIC POPCNT tsc_deadline_timer АЕС XSAVE AVX AVX2 гипервизор lahf_lm arat tsc_adjust xsaveopt
Вы также можете запустить lscpu
и проверьте список инструкций в конце.
Мне нравится использовать эту команду: lscpu
Тогда конкретно: lscpu | grep avx
Вы можете проверить доступность наборов команд SIMD и других функций ЦП, изучив /proc/cpuinfo
например,
$ grep avx2 /proc/cpuinfo
flags : fpu vme ... sse4_1 sse4_2 ... bmi1 avx2 ... bmi2 ...