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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 17a1c1d855dd..8e6e52cb3114 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15945,6 +15945,15 @@ in blas = callPackage ../development/libraries/science/math/blas { }; + clblas-cuda = callPackage ../development/libraries/science/math/clblas/cuda { + cudatoolkit = pkgs.cudatoolkit75; + inherit (linuxPackages) nvidia_x11; + python = pkgs.python34Packages.python; + boost = pkgs.boost159.override { + inherit python; + }; + }; + jags = callPackage ../applications/science/math/jags { };