From 93a11d8b0f8d53cc8171e6b74db1f31f9a6d63b5 Mon Sep 17 00:00:00 2001 From: artuuge <artuuge@gmail.com> Date: Sun, 5 Jun 2016 14:49:45 +0200 Subject: [PATCH] libgpuarray-cuda: init at -9998.0 --- .../libgpuarray/cuda/default.nix | 130 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + pkgs/top-level/python-packages.nix | 14 ++ 3 files changed, 146 insertions(+) create mode 100644 pkgs/development/python-modules/libgpuarray/cuda/default.nix 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 00000000000..70a79b76ec1 --- /dev/null +++ b/pkgs/development/python-modules/libgpuarray/cuda/default.nix @@ -0,0 +1,130 @@ +{ 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; + }; + +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8e6e52cb311..ca53a536a46 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1550,6 +1550,8 @@ in libbladeRF = callPackage ../development/libraries/libbladeRF { }; + libgpuarray-cuda = python34Packages.libgpuarray-cuda; + lp_solve = callPackage ../applications/science/math/lp_solve { }; lprof = callPackage ../tools/graphics/lprof { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 7d7c4bc58aa..6956800c2d0 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11890,6 +11890,20 @@ in modules // { }; }); + libgpuarray-cuda = callPackage ../development/python-modules/libgpuarray/cuda/default.nix rec { + numpy = self.numpy_1_10; + scipy = self.buildScipyPackage rec { + version = "0.17.1"; + src = pkgs.fetchurl { + url = "mirror://pypi/s/scipy/scipy-${version}.tar.gz"; + sha256 = "1b1qpfz2j2rvmlplsjbnznnxnqr9ckbmis506110ii1w07wd4k4w"; + }; + inherit numpy; + }; + inherit (pkgs.linuxPackages) nvidia_x11; + cudatoolkit = pkgs.cudatoolkit75; + clblas = pkgs.clblas-cuda; + }; limnoria = buildPythonPackage rec { name = "limnoria-${version}";