treewide: use blas and lapack
This makes packages use lapack and blas, which can wrap different BLAS/LAPACK implementations. treewide: cleanup from blas/lapack changes A few issues in the original treewide: - can’t assume blas64 is a bool - unused commented code
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{ stdenv, fetchFromGitHub, cmake
|
||||
, gfortran, openblas, eigen }:
|
||||
, gfortran, blas, lapack, eigen }:
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
@@ -18,15 +18,16 @@ stdenv.mkDerivation {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ gfortran openblas eigen ];
|
||||
buildInputs = [ gfortran blas lapack eigen ];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
BLAS_LIBS = "-L${openblas}/lib -lopenblas";
|
||||
BLAS_LIBS = "-L${blas}/lib -lblas";
|
||||
LAPACK_LIBS = "-L${lapack}/lib -llapack";
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_SHARED_LIBS=ON"
|
||||
"-DINTERFACE64=${optionalString openblas.blas64 "1"}"
|
||||
"-DINTERFACE64=${optionalString blas.is64bit "1"}"
|
||||
];
|
||||
|
||||
preCheck = if stdenv.isDarwin then ''
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
{ stdenv, fetchFromGitHub, gfortran, suitesparse, openblas }:
|
||||
let
|
||||
suitesparse_ = suitesparse;
|
||||
in let
|
||||
# SuiteSparse must use the same openblas
|
||||
suitesparse = suitesparse_.override { inherit openblas; };
|
||||
in stdenv.mkDerivation rec {
|
||||
{ stdenv, fetchFromGitHub, gfortran, suitesparse, blas, lapack }:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cholmod-extra";
|
||||
version = "1.2.0";
|
||||
|
||||
@@ -15,10 +10,10 @@ in stdenv.mkDerivation rec {
|
||||
sha256 = "0hz1lfp0zaarvl0dv0zgp337hyd8np41kmdpz5rr3fc6yzw7vmkg";
|
||||
};
|
||||
|
||||
buildInputs = [ suitesparse gfortran openblas ];
|
||||
buildInputs = [ suitesparse gfortran blas lapack ];
|
||||
|
||||
buildFlags = [
|
||||
"BLAS=-lopenblas"
|
||||
makeFlags = [
|
||||
"BLAS=-lcblas"
|
||||
];
|
||||
|
||||
installFlags = [
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
, suitesparse
|
||||
, swig
|
||||
, zlib
|
||||
, blas
|
||||
, lapack
|
||||
}:
|
||||
let
|
||||
version = "2019.1.0";
|
||||
@@ -176,13 +178,14 @@ let
|
||||
hdf5
|
||||
mpi
|
||||
numpy
|
||||
(numpy.blas)
|
||||
blas
|
||||
lapack
|
||||
ply
|
||||
python
|
||||
scotch
|
||||
six
|
||||
sphinx
|
||||
(suitesparse.override { openblas = numpy.blas; })
|
||||
suitesparse
|
||||
swig
|
||||
sympy
|
||||
ufl
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{ stdenv, fetchurl, unzip, openblas, gfortran }:
|
||||
{ stdenv, fetchurl, unzip, blas, lapack, gfortran }:
|
||||
|
||||
assert (!blas.is64bit) && (!lapack.is64bit);
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ipopt";
|
||||
@@ -12,13 +14,13 @@ stdenv.mkDerivation rec {
|
||||
CXXDEFS = [ "-DHAVE_RAND" "-DHAVE_CSTRING" "-DHAVE_CSTDIO" ];
|
||||
|
||||
configureFlags = [
|
||||
"--with-blas-lib=-lopenblas"
|
||||
"--with-lapack-lib=-lopenblas"
|
||||
"--with-blas-lib=-lblas"
|
||||
"--with-lapack-lib=-llapack"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
buildInputs = [ gfortran openblas ];
|
||||
buildInputs = [ gfortran blas lapack ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchurl, cmake, gfortran, cudatoolkit, libpthreadstubs, liblapack
|
||||
{ stdenv, fetchurl, cmake, gfortran, cudatoolkit, libpthreadstubs, lapack, blas
|
||||
, mklSupport ? false, mkl ? null
|
||||
}:
|
||||
|
||||
@@ -18,7 +18,7 @@ in stdenv.mkDerivation {
|
||||
};
|
||||
|
||||
buildInputs = [ gfortran cudatoolkit libpthreadstubs cmake ]
|
||||
++ (if mklSupport then [ mkl ] else [ liblapack ]);
|
||||
++ (if mklSupport then [ mkl ] else [ lapack blas ]);
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv , fetchurl , blas , gfortran , liblapack , python }:
|
||||
{ stdenv , fetchurl , blas , gfortran , lapack , python }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "petsc";
|
||||
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "0943bydmsq3sjwj3rxhb8hx58b1fm8vymny731557fs10g5zfbyz";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ blas gfortran.cc.lib liblapack python ];
|
||||
nativeBuildInputs = [ blas gfortran.cc.lib lapack python ];
|
||||
|
||||
prePatch = stdenv.lib.optionalString stdenv.isDarwin ''
|
||||
substituteInPlace config/install.py \
|
||||
@@ -24,8 +24,8 @@ stdenv.mkDerivation rec {
|
||||
"--with-cxx=$CXX"
|
||||
"--with-fc=0"
|
||||
"--with-mpi=0"
|
||||
"--with-blas-lib=[${blas}/lib/libblas.a,${gfortran.cc.lib}/lib/libgfortran.a]"
|
||||
"--with-lapack-lib=[${liblapack}/lib/liblapack.a,${gfortran.cc.lib}/lib/libgfortran.a]"
|
||||
"--with-blas-lib=[${blas}/lib/libblas.so,${gfortran.cc.lib}/lib/libgfortran.a]"
|
||||
"--with-lapack-lib=[${lapack}/lib/liblapack.so,${gfortran.cc.lib}/lib/libgfortran.a]"
|
||||
)
|
||||
'';
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{ stdenv, fetchFromGitHub, cmake, openssh
|
||||
, gfortran, mpi, openblasCompat
|
||||
, gfortran, mpi, blas, lapack
|
||||
} :
|
||||
|
||||
assert (!blas.is64bit) && (!lapack.is64bit);
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scalapack";
|
||||
@@ -15,7 +16,7 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake openssh ];
|
||||
buildInputs = [ mpi gfortran openblasCompat ];
|
||||
buildInputs = [ mpi gfortran blas lapack ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -24,8 +25,8 @@ stdenv.mkDerivation rec {
|
||||
preConfigure = ''
|
||||
cmakeFlagsArray+=(
|
||||
-DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF
|
||||
-DLAPACK_LIBRARIES="-lopenblas"
|
||||
-DBLAS_LIBRARIES="-lopenblas"
|
||||
-DLAPACK_LIBRARIES="-llapack"
|
||||
-DBLAS_LIBRARIES="-lblas"
|
||||
)
|
||||
'';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchFromGitHub, blas, liblapack, gfortran, fixDarwinDylibNames }:
|
||||
{ stdenv, fetchFromGitHub, blas, lapack, gfortran, fixDarwinDylibNames }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scs";
|
||||
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames;
|
||||
|
||||
buildInputs = [ blas liblapack gfortran.cc.lib ];
|
||||
buildInputs = [ blas lapack gfortran.cc.lib ];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ stdenv, fetchurl, gfortran, openblas }:
|
||||
{ stdenv, fetchurl, gfortran, blas, lapack }:
|
||||
|
||||
let
|
||||
int_t = if openblas.blas64 then "int64_t" else "int32_t";
|
||||
int_t = if blas.is64bit then "int64_t" else "int32_t";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
version = "4.2.1";
|
||||
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ gfortran ];
|
||||
buildInputs = [ openblas ];
|
||||
buildInputs = [ blas lapack ];
|
||||
|
||||
preConfigure = ''
|
||||
mkdir -p $out/lib
|
||||
@@ -29,8 +29,8 @@ stdenv.mkDerivation rec {
|
||||
"PREFIX=\"$(out)\""
|
||||
"INSTALL_LIB=$(out)/lib"
|
||||
"INSTALL_INCLUDE=$(out)/include"
|
||||
"BLAS=-lopenblas"
|
||||
"LAPACK="
|
||||
"BLAS=-lblas"
|
||||
"LAPACK=-llapack"
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{ stdenv, fetchurl, gfortran, openblas
|
||||
, enableCuda ? false, cudatoolkit
|
||||
{ stdenv, fetchurl, gfortran, blas, lapack
|
||||
, enableCuda ? false, cudatoolkit
|
||||
}:
|
||||
|
||||
let
|
||||
version = "4.4.4";
|
||||
name = "suitesparse-${version}";
|
||||
|
||||
int_t = if openblas.blas64 then "int64_t" else "int32_t";
|
||||
int_t = if blas.is64bit then "int64_t" else "int32_t";
|
||||
SHLIB_EXT = stdenv.hostPlatform.extensions.sharedLibrary;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
@@ -51,8 +51,8 @@ stdenv.mkDerivation {
|
||||
"PREFIX=\"$(out)\""
|
||||
"INSTALL_LIB=$(out)/lib"
|
||||
"INSTALL_INCLUDE=$(out)/include"
|
||||
"BLAS=-lopenblas"
|
||||
"LAPACK="
|
||||
"BLAS=-lblas"
|
||||
"LAPACK=-llapack"
|
||||
];
|
||||
|
||||
NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin " -DNTIMER";
|
||||
@@ -64,7 +64,7 @@ stdenv.mkDerivation {
|
||||
for i in "$out"/lib/lib*.a; do
|
||||
ar -x $i
|
||||
done
|
||||
${if enableCuda then cudatoolkit else stdenv.cc.outPath}/bin/${if enableCuda then "nvcc" else "cc"} *.o ${if stdenv.isDarwin then "-dynamiclib" else "--shared"} -o "$out/lib/libsuitesparse${SHLIB_EXT}" -lopenblas ${stdenv.lib.optionalString enableCuda "-lcublas"}
|
||||
${if enableCuda then cudatoolkit else stdenv.cc.outPath}/bin/${if enableCuda then "nvcc" else "cc"} *.o ${if stdenv.isDarwin then "-dynamiclib" else "--shared"} -o "$out/lib/libsuitesparse${SHLIB_EXT}" -lblas ${stdenv.lib.optionalString enableCuda "-lcublas"}
|
||||
)
|
||||
for i in umfpack cholmod amd camd colamd spqr; do
|
||||
ln -s libsuitesparse${SHLIB_EXT} "$out"/lib/lib$i${SHLIB_EXT}
|
||||
@@ -88,7 +88,7 @@ stdenv.mkDerivation {
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ gfortran ];
|
||||
buildInputs = [ openblas ];
|
||||
buildInputs = [ blas lapack ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "http://faculty.cse.tamu.edu/davis/suitesparse.html";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, gfortran
|
||||
, openblas
|
||||
, blas, lapack
|
||||
, metis
|
||||
, fixDarwinDylibNames
|
||||
, gnum4
|
||||
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
||||
] ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames;
|
||||
|
||||
buildInputs = [
|
||||
openblas
|
||||
blas lapack
|
||||
metis
|
||||
gfortran.cc.lib
|
||||
] ++ stdenv.lib.optional enableCuda cudatoolkit;
|
||||
@@ -41,10 +41,10 @@ stdenv.mkDerivation rec {
|
||||
"INSTALL=${placeholder "out"}"
|
||||
"INSTALL_INCLUDE=${placeholder "dev"}/include"
|
||||
"JOBS=$(NIX_BUILD_CORES)"
|
||||
"BLAS=-lopenblas"
|
||||
"BLAS=-lblas"
|
||||
"LAPACK=-llapack"
|
||||
"MY_METIS_LIB=-lmetis"
|
||||
"LAPACK="
|
||||
] ++ stdenv.lib.optionals openblas.blas64 [
|
||||
] ++ stdenv.lib.optionals blas.is64bit [
|
||||
"CFLAGS=-DBLAS64"
|
||||
] ++ stdenv.lib.optionals enableCuda [
|
||||
"CUDA_PATH=${cudatoolkit}"
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
{ stdenv, fetchurl, cmake,
|
||||
gfortran, openblasCompat}:
|
||||
gfortran, blas, lapack}:
|
||||
|
||||
assert (!blas.is64bit) && (!lapack.is64bit);
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "5.2.1";
|
||||
@@ -12,7 +14,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
buildInputs = [ cmake gfortran ];
|
||||
|
||||
propagatedBuildInputs = [ openblasCompat ];
|
||||
propagatedBuildInputs = [ blas ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_SHARED_LIBS=true"
|
||||
@@ -20,7 +22,6 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
patches = [
|
||||
./find-openblas-library.patch
|
||||
./add-superlu-lib-as-dependency-for-the-unit-tests.patch
|
||||
];
|
||||
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -75,6 +75,8 @@ set(CMAKE_C_FLAGS_RELEASE "-O3" CACHE STRING "")
|
||||
######################################################################
|
||||
#
|
||||
#--------------------- BLAS ---------------------
|
||||
+find_package(OpenBLAS)
|
||||
+set(TPL_BLAS_LIBRARIES ${OpenBLAS_LIBRARIES})
|
||||
if(NOT enable_blaslib)
|
||||
if (TPL_BLAS_LIBRARIES)
|
||||
set(BLAS_FOUND TRUE)
|
||||
Reference in New Issue
Block a user