summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorFrederik Rietdijk <freddyrietdijk@fridh.nl>2016-06-16 10:43:24 +0200
committerGitHub <noreply@github.com>2016-06-16 10:43:24 +0200
commitf4a4af9a9d544e38352dacc81b9f5f8d204b5c30 (patch)
tree1a3efcdec6c1199120059926fb4133a28fe633bb /pkgs/development
parent6bd54c8b93faea330b113b5e917a8c581fa9e401 (diff)
parentbc41a7d55139c12acc9fc9005183963bfedf145d (diff)
downloadnixlib-f4a4af9a9d544e38352dacc81b9f5f8d204b5c30.tar
nixlib-f4a4af9a9d544e38352dacc81b9f5f8d204b5c30.tar.gz
nixlib-f4a4af9a9d544e38352dacc81b9f5f8d204b5c30.tar.bz2
nixlib-f4a4af9a9d544e38352dacc81b9f5f8d204b5c30.tar.lz
nixlib-f4a4af9a9d544e38352dacc81b9f5f8d204b5c30.tar.xz
nixlib-f4a4af9a9d544e38352dacc81b9f5f8d204b5c30.tar.zst
nixlib-f4a4af9a9d544e38352dacc81b9f5f8d204b5c30.zip
Merge pull request #15997 from artuuge/theano_gpu
libgpuarray-cuda: init at -9998.0
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/libraries/science/math/clblas/cuda/default.nix68
-rw-r--r--pkgs/development/libraries/science/math/clblas/cuda/platform.patch34
-rw-r--r--pkgs/development/python-modules/libgpuarray/cuda/default.nix129
3 files changed, 231 insertions, 0 deletions
diff --git a/pkgs/development/libraries/science/math/clblas/cuda/default.nix b/pkgs/development/libraries/science/math/clblas/cuda/default.nix
new file mode 100644
index 000000000000..8691009acae7
--- /dev/null
+++ b/pkgs/development/libraries/science/math/clblas/cuda/default.nix
@@ -0,0 +1,68 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, gfortran
+, blas
+, boost
+, python
+, cudatoolkit
+, nvidia_x11
+}:
+
+stdenv.mkDerivation rec {
+  name = "clblas-cuda-${version}"; 
+  version = "git-20160505"; 
+
+  src = fetchFromGitHub {
+    owner = "clMathLibraries"; 
+    repo = "clBLAS";
+    rev = "d20977ec4389c6b3751e318779410007c5e272f8";
+    sha256 = "1jna176cxznv7iz43svd6cjrbbf0fc2lrbpfpg4s08vc7xnwp0n4";
+  }; 
+
+  patches = [ ./platform.patch ]; 
+
+  postPatch = ''
+    sed -i -re 's/(set\(\s*Boost_USE_STATIC_LIBS\s+).*/\1OFF\ \)/g' src/CMakeLists.txt
+  '';
+
+  configurePhase = ''    
+    findInputs ${boost} boost_dirs propagated-native-build-inputs
+
+    export BOOST_INCLUDEDIR=$(echo $boost_dirs | sed -e s/\ /\\n/g - | grep '\-dev')/include
+    export BOOST_LIBRARYDIR=$(echo $boost_dirs | sed -e s/\ /\\n/g - | grep -v '\-dev')/lib
+
+    mkdir -p Build
+    pushd Build
+
+    export LD_LIBRARY_PATH="${blas}/lib:${nvidia_x11}/lib"
+
+    cmake ../src -DCMAKE_INSTALL_PREFIX=$out \
+                 -DCMAKE_BUILD_TYPE=Release \
+                 -DOPENCL_ROOT=${cudatoolkit} \
+  '';
+
+  dontStrip = true; 
+
+  buildInputs = [
+    cmake
+    gfortran
+    blas
+    python
+    cudatoolkit
+    nvidia_x11
+  ]; 
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/clMathLibraries/clBLAS;
+    description = "A software library containing BLAS functions written in OpenCL";
+    longDescription = ''
+      This package contains a library of BLAS functions on top of OpenCL. 
+      The current version is linked to the NVIDIA OpenCL implementation provided by the CUDA toolkit. 
+    '';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ artuuge ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/libraries/science/math/clblas/cuda/platform.patch b/pkgs/development/libraries/science/math/clblas/cuda/platform.patch
new file mode 100644
index 000000000000..87404a426a4b
--- /dev/null
+++ b/pkgs/development/libraries/science/math/clblas/cuda/platform.patch
@@ -0,0 +1,34 @@
+diff --git a/src/library/tools/ktest/config.cpp b/src/library/tools/ktest/config.cpp
+index 8b20128..faf9bde 100644
+--- a/src/library/tools/ktest/config.cpp
++++ b/src/library/tools/ktest/config.cpp
+@@ -24,8 +24,6 @@
+ 
+ using namespace clMath;
+ 
+-static const char DEFAULT_PLATFORM_NAME[] = "AMD Accelerated Parallel Processing";
+-
+ Config::Config() :
+     defaultConfig_(""),
+     cpp_("ktest.cpp"),
+@@ -35,7 +33,10 @@ Config::Config() :
+     hasFuncID_(false), hasSubdims_(false),
+     skipAccuracy_(false)
+ {
+-    setPlatform(DEFAULT_PLATFORM_NAME);
++    platform_ = NULL;
++    setPlatform("");
++
++    device_ = NULL;
+     setDevice("");
+ 
+     memset(&kargs_, 0, sizeof(kargs_));
+@@ -262,7 +263,7 @@ Config::setPlatform(const std::string& name)
+             continue;
+         }
+         if (name.empty()) {
+-            found = (strcmp(pname, DEFAULT_PLATFORM_NAME) == 0);
++	    found = true;
+         }
+         else {
+             found = (strcmp(pname, name.c_str()) == 0);
diff --git a/pkgs/development/python-modules/libgpuarray/cuda/default.nix b/pkgs/development/python-modules/libgpuarray/cuda/default.nix
new file mode 100644
index 000000000000..91dfb9b625b9
--- /dev/null
+++ b/pkgs/development/python-modules/libgpuarray/cuda/default.nix
@@ -0,0 +1,129 @@
+{ stdenv 
+, buildPythonPackage
+, fetchFromGitHub
+, cmake
+, cython
+, numpy
+, Mako
+, six
+, nose
+, beaker
+, memcached
+, pkgconfig
+, glibc
+, clblas
+, Babel
+, pygments
+, scipy
+, python
+, cudatoolkit
+, nvidia_x11
+}: 
+buildPythonPackage rec {
+  name = "libgpuarray-cuda-${version}";
+  version = "-9998.0"; 
+
+  src = fetchFromGitHub {
+    owner = "Theano"; 
+    repo = "libgpuarray";
+    rev = "fc36a40526c0a8303ace6c574ffdefba7feafe17"; 
+    sha256 = "1kb0k42addqjxiahlcbv6v6271yhsmz71j12186fpy60870i7zm7"; 
+  }; 
+
+  doCheck = true;
+
+  configurePhase = ''
+    mkdir -p Build/Install
+    pushd Build
+
+    cmake .. -DCMAKE_BUILD_TYPE=Release \
+             -DCMAKE_INSTALL_PREFIX=./Install \
+             -DCLBLAS_ROOT_DIR=${clblas}
+
+    popd
+  ''; 
+
+  preBuild = ''
+    pushd Build
+    make 
+    make install
+
+    function fixRunPath {
+      p=$(patchelf --print-rpath $1)
+      patchelf --set-rpath "$p:${cudatoolkit}/lib:${clblas}/lib:${nvidia_x11}/lib" $1
+    }
+
+    fixRunPath Install/lib/libgpuarray.so
+
+    popd
+  ''; 
+
+  setupPyBuildFlags = [ "-L $(pwd)/Build/Install/lib" "-I $(pwd)/Build/Install/include" ];
+
+  preInstall = ''
+    cp -r Build/Install $out
+  '';
+
+  postInstall = ''
+    pushd $out/${python.sitePackages}/pygpu
+    for f in $(find $out/pygpu -name "*.h"); do
+      ln -s $f $(basename $f)
+    done
+    popd
+  ''; 
+  checkPhase = ''
+    mkdir -p my_bin
+    pushd my_bin
+
+    cat > libgpuarray_run_tests << EOF
+#!/bin/sh
+if [ \$# -eq 0 ]; then 
+  echo "No argument provided."
+  echo "Available tests:"
+  ls $out/${python.sitePackages}/pygpu/tests | grep "test_"
+  exit 1
+else
+  nosetests -v "$out/${python.sitePackages}/pygpu/tests/\$@"
+fi
+EOF
+
+    chmod +x libgpuarray_run_tests
+    popd
+
+    cp -r my_bin $out/bin
+  '';
+
+  dontStrip = true; 
+
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    nose
+    six
+    Mako
+  ];
+
+  buildInputs = [ 
+    cmake 
+    cython 
+    beaker 
+    memcached 
+    pkgconfig 
+    glibc 
+    Babel 
+    pygments 
+    numpy.blas 
+    cudatoolkit
+    nvidia_x11
+    clblas
+  ]; 
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/Theano/libgpuarray;
+    description = "Library to manipulate tensors on GPU.";
+    license = licenses.free;
+    maintainers = with maintainers; [ artuuge ];
+    platforms = platforms.linux;
+  };
+
+}