Как узнать, поддерживает ли 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 и проверить список инструкций в конце.