2012-02-04 2 views
10

У меня возникают проблемы с этой ошибкой: «Набор инструкций SSE не включен». Как я могу это понять?Набор инструкций SSE не включен

У меня есть ACER i7, Ubuntu 11.10, пожалуйста, любой может мне помочь?

Любая помощь будет оценена!


Также работает:

sudo cat /proc/cpuinfo | grep flags 

Дает:

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 

На самом деле я пытался установить беседку-1.0.0-RC2-x86_64, и получаю эту ошибку.

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

У меня уже есть этот вариант в моем 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

Вы забыли упомянуть, что вы пытались сделать, когда получили сообщение об ошибке. –

+7

Попробуйте передать '-msse' в GCC. '-msse2',' -msse3' или что вам нужно. – Mysticial

+2

Вы пробовали gcc flags -march = native или -msse2/-msse3/-mssse3/-msse4.1? – Krystian

ответ

6

Один из ваших заголовочных файлов проверки, чтобы гарантировать, что SSE включен. Похоже, что ваши операторы if не работают.

Если добавить -march=native он должен выбрать лучший арку центрального процессора и флаги компиляции для основан на процессоре, или вы можете явно использовать -march=corei7 -mavx -mpclmul, что полезно для distcc. Кроме того, -mfpmath=sse/-mfpmath=387 расскажет компилятору для генерации инструкций SSE/x87 для математики с плавающей запятой. В зависимости от вашего процессора, это может быть быстрее, но я думаю, что процессоры Intel обычно лучше подходят для SSE.

Если вы хотите проверить, что gcc разрешает использовать собственный флаг flag gcc -march=native -Q --help=target -v.

1

Я только что построил это на FreeBSD, добавив это в «Makefile» в /usr/ports/audio/soundtouch:

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

Я надеюсь, что остальная часть «фонон-GStreamer» плагины компилировать с этим.

2

У меня такая же ошибка, и я думаю, что нашел подходящее решение!

Проблема в том, что вы включили emmintrin.h. Я сделал то же самое. Более того, если я определил SSE2, SSE и MMX перед включением этого файла я получил следующее сообщение: предупреждение: «SSE2» переопределены [по умолчанию включено]

Так что я пытался исследовать, где Определяется и/или используется SSE2. Я обнаружил, что этот файл включен в x86intrin.h. Так что включите этот файл и в соответствии с -msse * флажками правильные * файлы intrin.h будут включены автоматически!

Это хорошо работает для меня (g ++ 4.7.2-5).

Я надеюсь, что смогу помочь!

+0

работает как очарование –