summary refs log tree commit diff
path: root/pkgs/development/libraries
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2020-01-06 12:01:12 +0100
committerFrederik Rietdijk <fridh@fridh.nl>2020-01-06 12:01:12 +0100
commit4a91444aa81c6c5b002facf453ff5fbc524177e1 (patch)
tree7fce9f6c10b0ab59317583a59ddf70cc24a7d02a /pkgs/development/libraries
parent8fff915659d3aafec55f07be2b0e2f500e96109d (diff)
parent17ab5f9d88b3b4e8442421bc4bf4eb1e913bcc6a (diff)
downloadnixpkgs-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.nix75
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 ];
+  };
+}