From c564ed2a6395c2f2edebe5ff0efa368c751b4626 Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Sun, 27 Sep 2015 09:53:16 +0200 Subject: [PATCH] Native: update linux build for MKL 11.3 --- MathNet.Numerics.NativeProviders.sln | 5 +++++ src/NativeProviders/Common/lapack.cpp | 1 + src/NativeProviders/Common/lapack_common.h | 2 ++ src/NativeProviders/Linux/mkl_build.sh | 6 +++--- src/NativeProviders/Linux/readme.txt | 10 ++++++++++ src/Numerics/Control.cs | 2 -- 6 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 src/NativeProviders/Linux/readme.txt diff --git a/MathNet.Numerics.NativeProviders.sln b/MathNet.Numerics.NativeProviders.sln index 9a265ad5..ae11b13c 100644 --- a/MathNet.Numerics.NativeProviders.sln +++ b/MathNet.Numerics.NativeProviders.sln @@ -48,6 +48,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{9275D8F1-8 docs\content\Packages.md = docs\content\Packages.md EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{97C9717A-68C7-4C86-B30E-E4FC54C43A13}" + ProjectSection(SolutionItems) = preProject + build.fsx = build.fsx + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/src/NativeProviders/Common/lapack.cpp b/src/NativeProviders/Common/lapack.cpp index b0955923..4375f1ef 100644 --- a/src/NativeProviders/Common/lapack.cpp +++ b/src/NativeProviders/Common/lapack.cpp @@ -3,6 +3,7 @@ #include "lapack.h" #include "lapack_common.h" #include +#include template inline lapack_int lu_factor(lapack_int m, T a[], lapack_int ipiv[], GETRF getrf) diff --git a/src/NativeProviders/Common/lapack_common.h b/src/NativeProviders/Common/lapack_common.h index e3c596b7..6865f9b4 100644 --- a/src/NativeProviders/Common/lapack_common.h +++ b/src/NativeProviders/Common/lapack_common.h @@ -1,5 +1,7 @@ #pragma once +#include + const int INSUFFICIENT_MEMORY = -999999; #ifndef LAPACK_MEMORY diff --git a/src/NativeProviders/Linux/mkl_build.sh b/src/NativeProviders/Linux/mkl_build.sh index b2ae5c36..b485a4db 100644 --- a/src/NativeProviders/Linux/mkl_build.sh +++ b/src/NativeProviders/Linux/mkl_build.sh @@ -1,16 +1,16 @@ #Note: g++ multilib must be installed export INTEL=/opt/intel export MKL=$INTEL/mkl -export OPENMP=$INTEL/composerxe/lib +export OPENMP=$INTEL/lib export OUT=../../../out/MKL/Linux mkdir -p $OUT/x64 mkdir -p $OUT/x86 -g++ -std=c++11 -D_M_X64 -DGCC -m64 --shared -fPIC -o $OUT/x64/MathNet.Numerics.MKL.dll -I$MKL/include -I../Common ../MKL/memory.c ../MKL/capabilities.cpp ../MKL/vector_functions.c ../MKL/blas.c ../MKL/lapack.cpp -Wl,--start-group $MKL/lib/intel64/libmkl_intel_lp64.a $MKL/lib/intel64/libmkl_intel_thread.a $MKL/lib/intel64/libmkl_core.a -Wl,--end-group -L$OPENMP/intel64 -liomp5 -lpthread -lm +g++ -std=c++11 -D_M_X64 -DGCC -m64 --shared -fPIC -o $OUT/x64/MathNet.Numerics.MKL.dll -I$MKL/include -I../Common -I../MKL ../MKL/memory.c ../MKL/capabilities.cpp ../MKL/vector_functions.c ../Common/blas.c ../Common/lapack.cpp -Wl,--start-group $MKL/lib/intel64/libmkl_intel_lp64.a $MKL/lib/intel64/libmkl_intel_thread.a $MKL/lib/intel64/libmkl_core.a -Wl,--end-group -L$OPENMP/intel64 -liomp5 -lpthread -lm cp $OPENMP/intel64/libiomp5.so $OUT/x64/ -g++ -std=c++11 -D_M_IX86 -DGCC -m32 --shared -fPIC -o $OUT/x86/MathNet.Numerics.MKL.dll -I$MKL/include -I../Common ../MKL/memory.c ../MKL/capabilities.cpp ../MKL/vector_functions.c ../MKL/blas.c ../MKL/lapack.cpp -Wl,--start-group $MKL/lib/ia32/libmkl_intel.a $MKL/lib/ia32/libmkl_intel_thread.a $MKL/lib/ia32/libmkl_core.a -Wl,--end-group -L$OPENMP/ia32 -liomp5 -lpthread -lm +g++ -std=c++11 -D_M_IX86 -DGCC -m32 --shared -fPIC -o $OUT/x86/MathNet.Numerics.MKL.dll -I$MKL/include -I../Common -I../MKL ../MKL/memory.c ../MKL/capabilities.cpp ../MKL/vector_functions.c ../Common/blas.c ../Common/lapack.cpp -Wl,--start-group $MKL/lib/ia32/libmkl_intel.a $MKL/lib/ia32/libmkl_intel_thread.a $MKL/lib/ia32/libmkl_core.a -Wl,--end-group -L$OPENMP/ia32 -liomp5 -lpthread -lm cp $OPENMP/ia32/libiomp5.so $OUT/x86/ diff --git a/src/NativeProviders/Linux/readme.txt b/src/NativeProviders/Linux/readme.txt new file mode 100644 index 00000000..1bd4b22c --- /dev/null +++ b/src/NativeProviders/Linux/readme.txt @@ -0,0 +1,10 @@ +Install MKL: +tar -zxvf l_mkl_11.3.0.109.tgz +sudo ./install.sh +Make sure to include IA32 as well + +Install g++: +sudo apt-get install g++ g++-multilib libc6-dev-i386 + +Build: +./mkl_build.sh diff --git a/src/Numerics/Control.cs b/src/Numerics/Control.cs index 825f1463..4fd3fee5 100644 --- a/src/Numerics/Control.cs +++ b/src/Numerics/Control.cs @@ -88,9 +88,7 @@ namespace MathNet.Numerics break; default: -#if NATIVE if (!TryUseNative()) -#endif { UseManaged(); }