Как определить, поддерживает ли машина 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 ...
Другие вопросы по тегам