diff options
author | Frederik Rietdijk <fridh@fridh.nl> | 2020-01-06 12:01:12 +0100 |
---|---|---|
committer | Frederik Rietdijk <fridh@fridh.nl> | 2020-01-06 12:01:12 +0100 |
commit | 4a91444aa81c6c5b002facf453ff5fbc524177e1 (patch) | |
tree | 7fce9f6c10b0ab59317583a59ddf70cc24a7d02a /pkgs/development/libraries | |
parent | 8fff915659d3aafec55f07be2b0e2f500e96109d (diff) | |
parent | 17ab5f9d88b3b4e8442421bc4bf4eb1e913bcc6a (diff) | |
download | nixpkgs-4a91444aa81c6c5b002facf453ff5fbc524177e1.tar nixpkgs-4a91444aa81c6c5b002facf453ff5fbc524177e1.tar.gz nixpkgs-4a91444aa81c6c5b002facf453ff5fbc524177e1.tar.bz2 nixpkgs-4a91444aa81c6c5b002facf453ff5fbc524177e1.tar.lz nixpkgs-4a91444aa81c6c5b002facf453ff5fbc524177e1.tar.xz nixpkgs-4a91444aa81c6c5b002facf453ff5fbc524177e1.tar.zst nixpkgs-4a91444aa81c6c5b002facf453ff5fbc524177e1.zip |
Merge staging-next into staging
Diffstat (limited to 'pkgs/development/libraries')
-rw-r--r-- | pkgs/development/libraries/science/math/clmagma/default.nix | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/pkgs/development/libraries/science/math/clmagma/default.nix b/pkgs/development/libraries/science/math/clmagma/default.nix new file mode 100644 index 00000000000..b5c59a83277 --- /dev/null +++ b/pkgs/development/libraries/science/math/clmagma/default.nix @@ -0,0 +1,75 @@ +{ stdenv, fetchurl, gfortran, opencl-headers, clblas, ocl-icd, mkl, intel-ocl }: + +with stdenv.lib; + +let + version = "1.3.0"; + incfile = builtins.toFile "make.inc.custom" '' + CC = g++ + FORT = gfortran + + ARCH = ar + ARCHFLAGS = cr + RANLIB = ranlib + + OPTS = -fPIC -O3 -DADD_ -Wall + FOPTS = -fPIC -O3 -DADD_ -Wall -x f95-cpp-input + F77OPTS = -fPIC -O3 -DADD_ -Wall + LDOPTS = -fPIC + + -include make.check-mkl + -include make.check-clblas + + # Gnu mkl is not available I guess? + #LIB = -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lpthread -lm -fopenmp + LIB = -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lm -fopenmp + LIB += -lclBLAS -lOpenCL + + LIBDIR = -L$(MKLROOT)/lib/intel64 \ + -L$(MKLROOT)/../compiler/lib/intel64 \ + -L$(clBLAS)/lib64 + + INC = -I$(clBLAS)/include + #-I$(AMDAPP)/include + ''; +in stdenv.mkDerivation { + name = "clmagma-${version}"; + src = fetchurl { + url = "http://icl.cs.utk.edu/projectsfiles/magma/cl/clmagma-${version}.tar.gz"; + sha256 = "1n27ny0xhwirw2ydn46pfcwy53gzia9zbam4irx44fd4d7f9ydv7"; + name = "clmagma-${version}.tar.gz"; + }; + + buildInputs = [ + gfortran + clblas + opencl-headers + ocl-icd + mkl + intel-ocl + ]; + + enableParallelBuilding=true; + + MKLROOT = "${mkl}"; + clBLAS = "${clblas}"; + + # Otherwise build looks for it in /run/opengl-driver/etc/OpenCL/vendors, + # which is not available. + OPENCL_VENDOR_PATH="${intel-ocl}/etc/OpenCL/vendors"; + + preBuild = '' + # By default it tries to use GPU, and thus fails for CPUs + sed -i "s/CL_DEVICE_TYPE_GPU/CL_DEVICE_TYPE_DEFAULT/" interface_opencl/clmagma_runtime.cpp + sed -i "s%/usr/local/clmagma%/$out%" Makefile.internal + cp ${incfile} make.inc + ''; + + meta = with stdenv.lib; { + description = "Matrix Algebra on GPU and Multicore Architectures, OpenCL port"; + license = licenses.bsd3; + homepage = http://icl.cs.utk.edu/magma/index.html; + platforms = platforms.linux; + maintainers = with maintainers; [ volhovm ]; + }; +} |