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.
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.
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
Sie können auch lscpu
ausführen und die Anweisungsliste am Ende überprüfen.
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 ...