2012-02-04 11 views
10

Mam problem z tym błędem: "Zestaw instrukcji SSE nie jest włączony". Jak mogę to rozgryźć?Zestaw instrukcji SSE nie jest włączony

Mam ACER i7, Ubuntu 11.10, proszę, ktoś może mi pomóc?

Każda pomoc zostanie doceniona!


działa również:

sudo cat /proc/cpuinfo | grep flags 

Daje:

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 

Właściwie starałem się zainstalować altanka-1.0.0-RC2-x86_64 oraz uzyskiwanie ten błąd.

/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 
... 

mam już tę opcję w moim 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

Zapomniałeś wspomnieć o tym, co próbujesz zrobić, gdy pojawi się komunikat o błędzie. –

+7

Spróbuj przekazać '-msse' do GCC. '-msse2',' -msse3' lub cokolwiek, czego potrzebujesz. – Mysticial

+2

Czy wypróbowałeś flagi gcc -march = native lub -msse2/-msse3/-mssse3/-msse4.1? – Krystian

Odpowiedz

6

jednego z Twoich plików header kontrole w celu zapewnienia, że ​​SSE jest włączony. Wygląda na to, że twoje instrukcje if nie działają.

Jeśli dodasz -march=native, powinieneś wybrać najlepszy łuk procesora i flagi do kompilacji na podstawie twojego procesora, lub możesz jawnie użyć -march=corei7 -mavx -mpclmul, co jest przydatne dla distcc. Ponadto, -mfpmath=sse/-mfpmath=387 powie kompilatorowi generowanie instrukcji SSE/x87 dla matematyki zmiennoprzecinkowej. W zależności od twojego procesora, albo może być szybciej, ale myślę, że procesory Intela są zazwyczaj lepsze w SSE.

Jeśli chcesz sprawdzić, co jest włączane przez gcc, użyj flagi rodzimej gcc -march=native -Q --help=target -v.

1

Właśnie zbudował na FreeBSD dodając to do "Makefile" w /usr/ports/audio/soundtouch:

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

Mam nadzieję, że reszta "phonon-GStreamer" plugins skompilować z tym.

2

Wystąpił ten sam błąd i myślę, że znalazłem właściwe rozwiązanie!

Problem polega na tym, że dołączono emmintrin.h. Zrobiłem to samo. Co więcej, jeśli zdefiniowano SSE2, SSE i MMX przed tym ten plik mam następujący komunikat: ostrzeżenie: „SSE2” nowo [domyślnie włączona]

Więc starałem się zbadać gdzie SSE2 jest zdefiniowany i/lub używany Znalazłem, że ten plik jest dołączony przez x86intrin.h. Dołącz ten plik i zgodnie z opcjami -msse * odpowiednie pliki * intrin.h zostaną dołączone automatycznie!

To działa dla mnie ładnie (g ++ 4.7.2-5).

Mam nadzieję, że mogę pomóc!

+0

działa jak wdzięk dzięki –

Powiązane problemy