Набор инструкций SSE не включен - PullRequest
11 голосов
/ 05 февраля 2012

У меня проблема с этой ошибкой: "Набор инструкций 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 ]

6 голосов
/ 14 февраля 2013

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

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

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

2 голосов
/ 24 мая 2014

Я получил ту же ошибку и думаю, что нашел правильное решение!

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

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

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

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

1 голос
/ 13 февраля 2014

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

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

Я надеюсь, что остальные плагины «phonon-gstreamer» скомпилируют это.

...