Набор инструкций 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
На самом деле я пытался установить gazebo-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 ответа
Один из ваших файлов заголовков проверяет, включен ли SSE. Похоже, что ваши заявления if не работают.
Если вы добавите -march=native
он должен выбрать лучшую арку процессора и флаги для компиляции на основе вашего процессора, или вы можете явно использовать -march=corei7 -mavx -mpclmul
, что полезно для distcc
, Также, -mfpmath=sse/-mfpmath=387
скажет компилятору генерировать инструкции SSE/x87 для математики с плавающей запятой. В зависимости от вашего процессора, любой из них может быть быстрее, но я думаю, что процессоры Intel обычно лучше в SSE.
Если вы хотите проверить, что gcc включает, используйте собственный флаг run gcc -march=native -Q --help=target -v
,
Я получил ту же ошибку, и я думаю, что нашел правильное решение!
Проблема в том, что вы включили emmintrin.h. Я сделал то же самое. Более того, если я определил SSE2, SSE и MMX перед тем, как включить этот файл, я получил следующее сообщение: предупреждение: "SSE2" переопределено [включено по умолчанию]
Поэтому я попытался выяснить, где определяется и / или используется SSE2, и обнаружил, что этот файл включен в файл x86intrin.h. Поэтому включите этот файл, и в соответствии с флагами -msse* соответствующие файлы *intrin.h будут включены автоматически!
У меня это хорошо работает (g++ 4.7.2-5).
Я надеюсь, что смогу помочь!
Я только что построил это на FreeBSD, добавив это в "Makefile" в /usr/ports/audio/soundtouch
:
CC= gcc46
CXX= g++46
CPP= cpp46
CFLAGS+= -msse
Я надеюсь, что остальные плагины "phonon-gstreamer" скомпилируют это.