Browse Source

Native: update linux build for MKL 11.3

pull/342/head
Christoph Ruegg 11 years ago
parent
commit
c564ed2a63
  1. 5
      MathNet.Numerics.NativeProviders.sln
  2. 1
      src/NativeProviders/Common/lapack.cpp
  3. 2
      src/NativeProviders/Common/lapack_common.h
  4. 6
      src/NativeProviders/Linux/mkl_build.sh
  5. 10
      src/NativeProviders/Linux/readme.txt
  6. 2
      src/Numerics/Control.cs

5
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

1
src/NativeProviders/Common/lapack.cpp

@ -3,6 +3,7 @@
#include "lapack.h"
#include "lapack_common.h"
#include <algorithm>
#include <cstring>
template<typename T, typename GETRF>
inline lapack_int lu_factor(lapack_int m, T a[], lapack_int ipiv[], GETRF getrf)

2
src/NativeProviders/Common/lapack_common.h

@ -1,5 +1,7 @@
#pragma once
#include <cstring>
const int INSUFFICIENT_MEMORY = -999999;
#ifndef LAPACK_MEMORY

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

10
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

2
src/Numerics/Control.cs

@ -88,9 +88,7 @@ namespace MathNet.Numerics
break;
default:
#if NATIVE
if (!TryUseNative())
#endif
{
UseManaged();
}

Loading…
Cancel
Save