2012-02-04 11 views
10

Si verificano problemi con questo errore: "Set di istruzioni SSE non abilitato". Come posso capirlo?Set di istruzioni SSE non abilitato

Ho ACER i7, Ubuntu 11.10, per favore qualcuno può aiutarmi?

Qualsiasi aiuto sarà apprezzato!


esecuzione anche:

sudo cat /proc/cpuinfo | grep flags 

Dà:

flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clfl 
ush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfm 
on pebs bts xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl 
vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt xsave avx lahf_lm 
ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid 

In realtà stavo cercando di installare gazebo-1.0.0-RC2-x86_64, e ottenere questo errore.

/usr/lib/gcc/i686-linux-gnu/4.6.1/include/emmintrin.h:32:3: error: #error "SSE2 
instruction set not enabled" 
In file included from /home/bkhelifa/Downloads/software/gazebo-1.0.0-RC2-x86_64/ 
deps/opende/src/quickstep.cpp:39:0: 
/usr/lib/gcc/i686-linux-gnu/4.6.1/include/xmmintrin.h:32:3: error: #error "SSE i 
nstruction set not enabled" 
/home/bkhelifa/Downloads/software/gazebo-1.0.0-RC2-x86_64/deps/opende/src/quicks 
tep.cpp: In function ‘dReal dot6(dRealPtr, dRealPtr)’: 
/home/bkhelifa/Downloads/software/gazebo-1.0.0-RC2-x86_64/deps/opende/src/quicks 
tep.cpp:537:3: error: ‘__m128d’ was not declared in this scope 
... 

Ho già questa opzione nel mio cmakefile

if (SSE3_FOUND) 
    set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -msse3") 
endif() 
if (SSSE3_FOUND) 
    set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -mssse3") 
endif() 
if (SSE4_1_FOUND) 
    set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -msse4.1") 
endif() 
if (SSE4_2_FOUND) 
    set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -msse4.2") 
endif() 
+3

Hai dimenticato di dire cosa stavi cercando di fare quando hai ricevuto il messaggio di errore. –

+7

Prova a passare '-msse' a GCC. '-msse2',' -msse3', o qualsiasi cosa tu abbia bisogno. – Mysticial

+2

Hai provato gcc flags -march = nativo o -msse2/-msse3/-mssse3/-msse4.1? – Krystian

risposta

6

Uno dei file di intestazione controlli per garantire che SSE è abilitato. Sembra che le tue dichiarazioni if ​​non funzionino.

Se si aggiunge -march=native si deve scegliere il migliore arco CPU e le bandiere a compilare per base il processore, oppure è possibile utilizzare in modo esplicito -march=corei7 -mavx -mpclmul, che è utile per distcc. Inoltre, -mfpmath=sse/-mfpmath=387 indicherà al compilatore di generare istruzioni SSE/x87 per la matematica in virgola mobile. A seconda del processore, potrebbe essere più veloce, ma penso che i processori Intel siano di solito migliori in SSE.

Se si desidera verificare l'abilitazione di gcc utilizzando la flag nativa avviata gcc -march=native -Q --help=target -v.

1

Ho appena costruito questo su FreeBSD aggiungendo questo al "Makefile" in /usr/ports/audio/soundtouch:

CC=    gcc46 
CXX=   g++46 
CPP=   cpp46 
CFLAGS+=  -msse 

spero che il resto del "phonon-gstreamer" plugins compilare con questo.

2

Ho ricevuto lo stesso errore e penso di aver trovato la soluzione giusta!

Il problema è che si è incluso emmintrin.h. Ho fatto lo stesso. Per di più, se ho definito SSE2, SSE e MMX prima di includere questo file ho ricevuto il seguente messaggio: avvertimento: "SSE2" ridefinito [attivata per impostazione predefinita]

così ho cercato di indagare dove SSE2 è definito e/o utilizzato Ho trovato che questo file è incluso da x86intrin.h. Quindi includi questo file e in base ai flag -msse * i file * intrin.h corretti verranno inclusi automaticamente!

Funziona bene per me (g ++ 4.7.2-5).

Spero di poter aiutare!

+0

funziona come un incanto grazie –

Problemi correlati