SSE instruction set not enabled

ksolid picture ksolid · Feb 4, 2012 · Viewed 24.3k times · Source

I am getting trouble with this error: "SSE instruction set not enabled". How I can figure this out?

I have ACER i7, Ubuntu 11.10, please any one can help me?

Any help will be appreciated!


Also running:

 sudo cat /proc/cpuinfo | grep flags

Gives:

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

Actually i was trying to install gazebo-1.0.0-RC2-x86_64, and getting this error.

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

I already have this option in my 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()

Answer

jbo5112 picture jbo5112 · Feb 13, 2013

One of your header files checks to ensure that SSE is enabled. It appears that your if statements aren't working.

If you add -march=native it should pick the best CPU arch and flags to compile for based on your processor, or you can explicitly use -march=corei7 -mavx -mpclmul, which is useful for distcc. Also, -mfpmath=sse/-mfpmath=387 will tell the compiler to generate SSE/x87 instructions for floating point math. Depending on your processor, either could be faster, but I think Intel processors are usually better at SSE.

If you want to check what gcc is enabling using the native flag run gcc -march=native -Q --help=target -v.