Sono su macchine SUSE Linux Enterprise 10/11. Lancio le mie regressioni in una farm di macchine che eseguono processori Intel. Alcuni dei miei test falliscono perché i miei strumenti sono costruiti usando una libreria che richiede il supporto delle istruzioni AVX/AVX2. Ottengo un errore Illegal exception
. In Linux, c'è qualche comando che posso usare per determinare quale è il codice/nome della famiglia della CPU? Credo che AVX e AVX2 siano disponibili in poi dalla famiglia Intel SandyBridge e Haswell, rispettivamente.Linux: come stabilire se una macchina supporta le istruzioni AVX/AVX2?
risposta
su Linux (o macchine unix) le informazioni sulla tua CPU è in /proc/cpuinfo
. È possibile estrarre le informazioni da lì a mano o con un comando grep (grep flags /proc/cpuinfo
).
Inoltre, la maggior parte dei compilatori definirà automaticamente __AVX2__
in modo da poter controllare anche quello.
eseguire questo comando:
grep avx /proc/cpuinfo
O
grep avx2 /proc/cpuinfo
Questo vi darà:
bandiere: FPU VME de PSE TSC MSR pae MCE CX8 apic sep mtrr PGE mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse 4_2 X2apic POPCNT tsc_deadline_timer AES xsave avx AVX2 hypervisor lahf_lm Arat tsc_adjust xsaveopt
È possibile verificare la disponibilità di insiemi di istruzioni SIMD ed altre caratteristiche della CPU esaminando /proc/cpuinfo
, ad esempio
$ grep avx2 /proc/cpuinfo
flags : fpu vme ... sse4_1 sse4_2 ... bmi1 avx2 ... bmi2 ...