web-dev-qa-db-de.com

Wie kann man feststellen, ob ein Linux-Computer AVX / AVX2-Anweisungen unterstützt?

Ich arbeite auf SUSE Linux Enterprise 10/11-Computern. Ich starte meine Regressionen für eine Farm von Computern mit Intel-Prozessoren. Einige meiner Tests schlagen fehl, weil meine Tools mit einer Bibliothek erstellt wurden, die die Unterstützung von AVX/AVX2-Befehlen erfordert. Ich bekomme ein Illegal exception Error.

Gibt es unter Linux Befehle, mit denen ich feststellen kann, wie der CPU-Code/Familienname lautet?

Ich glaube, AVX und AVX2 sind ab Intel SandyBridge bzw. Haswell erhältlich.

19
user4979733

Unter Linux (oder Unix-Rechnern) befinden sich die Informationen zu Ihrer CPU in /proc/cpuinfo. Sie können Informationen von dort manuell oder mit einem grep-Befehl (grep flags /proc/cpuinfo).

Außerdem definieren die meisten Compiler automatisch __AVX2__ so können Sie auch das überprüfen.

17
hr0m

Führen Sie diesen Befehl aus:

grep avx /proc/cpuinfo

Oder

grep avx2 /proc/cpuinfo

Dies gibt Ihnen:

fahnen: FPU vme de pse tsc msr PAE mce CX8 APIC September mtrr PGE mca CMOV pat PSE36 CLFLUSH MMX fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm CONSTANT_TSC Arch_perfmon rep_good NOPlat 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

27
khrm

Sie können auch lscpu ausführen und die Anweisungsliste am Ende überprüfen.

4
Ibrahim A

Sie können die Verfügbarkeit von SIMD-Befehlssätzen und anderen CPU-Funktionen testen, indem Sie /proc/cpuinfo, z.B.

$ grep avx2 /proc/cpuinfo
flags       : fpu vme ... sse4_1 sse4_2 ... bmi1 avx2 ... bmi2 ...
2
Paul R