Как узнать, поддерживает ли Linux-устройство инструкции AVX/AVX2?
Я на машинах SUSE Linux Enterprise 10/11. Я запускаю свои регрессии на ферму машин с процессорами Intel. Некоторые из моих тестов не работают, потому что мои инструменты создаются с использованием библиотеки, которая требует поддержки инструкций AVX/AVX2. Я получаю Illegal exception
ошибку Illegal exception
.
В Linux есть ли какие-либо команды, которые я могу использовать для определения того, что такое имя процессора/имя семейства?
Я считаю, что AVX и AVX2 теперь доступны от семейств Intel SandyBridge и Haswell, соответственно.
Ответы
Ответ 1
В Linux (или Unix-машинах) информация о вашем процессоре находится в /proc/cpuinfo
. Вы можете извлекать информацию оттуда вручную или с помощью команды grep flags/proc/cpuinfo
(grep flags/proc/cpuinfo
).
Также большинство компиляторов автоматически определит __AVX2__
чтобы вы могли это проверить.
Ответ 2
Запустите эту команду:
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
Ответ 3
Вы можете проверить наличие наборов инструкций SIMD и других функций ЦП путем изучения /proc/cpuinfo
, например
$ grep avx2 /proc/cpuinfo
flags : fpu vme ... sse4_1 sse4_2 ... bmi1 avx2 ... bmi2 ...
Ответ 4
Вы также можете запустить lscpu
и проверить список инструкций в конце.