tunabrain / tungsten

High performance physically based renderer in C++11

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

error "FMA instruction set not enabled"

ivanceras opened this issue · comments

I issue the make command

./setup_builds.sh 
cd build/release
make

throws out this error

...
 from /home/lee/playground/tungsten/src/core/renderer/TraceableScene.hpp:7,
                 from /home/lee/playground/tungsten/src/core/integrators/PathTraceIntegrator.hpp:14,
                 from /home/lee/playground/tungsten/src/core/integrators/PathTraceIntegrator.cpp:1:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/fmaintrin.h:32:3: error: #error "FMA instruction set not enabled"
 # error "FMA instruction set not enabled"
   ^
make[2]: *** [CMakeFiles/core.dir/src/core/integrators/PathTraceIntegrator.cpp.o] Error 1
make[1]: *** [CMakeFiles/core.dir/all] Error 2
make: *** [all] Error 2

In the latest commit, AVX is now disabled by default, since it was causing compilation errors on multiple platforms and does not provide much performance benefit.

Does this fix it for you?

Same error, but coming from another file

make
Scanning dependencies of target core
[  0%] Building CXX object CMakeFiles/core.dir/src/core/materials/ConstantTexture.cpp.o
[  1%] Building CXX object CMakeFiles/core.dir/src/core/materials/DiskTexture.cpp.o
[  2%] Building CXX object CMakeFiles/core.dir/src/core/materials/Texture.cpp.o
[  3%] Building CXX object CMakeFiles/core.dir/src/core/materials/BladeTexture.cpp.o
[  4%] Building CXX object CMakeFiles/core.dir/src/core/materials/CheckerTexture.cpp.o
[  4%] Building CXX object CMakeFiles/core.dir/src/core/materials/BitmapTexture.cpp.o
[  5%] Building CXX object CMakeFiles/core.dir/src/core/renderer/Renderer.cpp.o
In file included from /media/disk3/playground/tungsten/src/thirdparty/embree/simd/avx.h:24:0,
                 from /media/disk3/playground/tungsten/src/thirdparty/embree/simd/simd.h:33,
                 from /media/disk3/playground/tungsten/src/thirdparty/embree/math/linearspace3.h:22,
                 from /media/disk3/playground/tungsten/src/thirdparty/embree/math/affinespace.h:20,
                 from /media/disk3/playground/tungsten/src/thirdparty/embree/common/../common/default.h:33,
                 from /media/disk3/playground/tungsten/src/thirdparty/embree/common/ray.h:24,
                 from /media/disk3/playground/tungsten/src/core/primitives/EmbreeUtil.hpp:8,
                 from /media/disk3/playground/tungsten/src/core/renderer/TraceableScene.hpp:7,
                 from /media/disk3/playground/tungsten/src/core/renderer/Renderer.cpp:2:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/fmaintrin.h:32:3: error: #error "FMA instruction set not enabled"
 # error "FMA instruction set not enabled"
   ^
make[2]: *** [CMakeFiles/core.dir/src/core/renderer/Renderer.cpp.o] Error 1
make[1]: *** [CMakeFiles/core.dir/all] Error 2
make: *** [all] Error 2

That's strange, it looks like the AVX define is still set. Did you start from a clean build, i.e. completely remove the build folder and rerun CMake before running make?

I even did removing the whole repo and made a checkout again.

It's difficult to figure out what's going on from this end, but replacing Embree with a custom solution has been on the timeline for a while now.

Apart from removing a fairly large dependency, it should also resolve the compilation errors various people have been getting. Sorry for the wait while I finish work on this.

Fortunately, I met another person with the same compilation error and was able to track down the cause. I just pushed another CMake tweak that fixed it for that person - if you're still willing to test this, can you confirm that this fixes it on your system as well?

Yep, compilation now succeded.