From 6309e5fa0139d1fee020e8d4ca18e5658c93ae3a Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Sun, 15 Oct 2017 14:44:54 +0300 Subject: cudnn: refactor to use shared derivation Also return 8.0-6.0 version for TensorFlow. --- .../science/math/cudnn/7.0-4.0/default.nix | 34 ------------- .../science/math/cudnn/7.5-6.0/default.nix | 47 ------------------ .../science/math/cudnn/8.0-7.0/default.nix | 48 ------------------- .../science/math/cudnn/9.0-7.0/default.nix | 48 ------------------- .../libraries/science/math/cudnn/default.nix | 45 +++++++++++++++++ .../libraries/science/math/cudnn/generic.nix | 56 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 21 +++----- 7 files changed, 107 insertions(+), 192 deletions(-) delete mode 100644 pkgs/development/libraries/science/math/cudnn/7.0-4.0/default.nix delete mode 100644 pkgs/development/libraries/science/math/cudnn/7.5-6.0/default.nix delete mode 100644 pkgs/development/libraries/science/math/cudnn/8.0-7.0/default.nix delete mode 100644 pkgs/development/libraries/science/math/cudnn/9.0-7.0/default.nix create mode 100644 pkgs/development/libraries/science/math/cudnn/default.nix create mode 100644 pkgs/development/libraries/science/math/cudnn/generic.nix (limited to 'pkgs') diff --git a/pkgs/development/libraries/science/math/cudnn/7.0-4.0/default.nix b/pkgs/development/libraries/science/math/cudnn/7.0-4.0/default.nix deleted file mode 100644 index 1e1a37af2f0e..000000000000 --- a/pkgs/development/libraries/science/math/cudnn/7.0-4.0/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ stdenv, requireFile, cudatoolkit }: - -stdenv.mkDerivation rec { - version = "4.0"; - - name = "cudnn-${version}"; - - src = requireFile rec { - name = "cudnn-7.0-linux-x64-v${version}-prod.tgz"; - message = '' - This nix expression requires that ${name} is - already part of the store. Register yourself to NVIDIA Accelerated Computing Developer Program - and download cuDNN library at https://developer.nvidia.com/cudnn, and store it to the nix store with nix-store --add-fixed sha256 . - ''; - sha256 = "0zgr6qdbc29qw6sikhrh6diwwz7150rqc8a49f2qf37j2rvyyr2f"; - - }; - - phases = "unpackPhase installPhase fixupPhase"; - - propagatedBuildInputs = [ cudatoolkit ]; - - installPhase = '' - mkdir -p $out - cp -a include $out/include - cp -a lib64 $out/lib64 - ''; - - meta = { - description = "NVIDIA CUDA Deep Neural Network library (cuDNN)"; - homepage = https://developer.nvidia.com/cudnn; - license = stdenv.lib.licenses.unfree; - }; -} diff --git a/pkgs/development/libraries/science/math/cudnn/7.5-6.0/default.nix b/pkgs/development/libraries/science/math/cudnn/7.5-6.0/default.nix deleted file mode 100644 index 90d130ff19de..000000000000 --- a/pkgs/development/libraries/science/math/cudnn/7.5-6.0/default.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ stdenv -, requireFile -, cudatoolkit -}: - -stdenv.mkDerivation rec { - version = "6.0"; - cudatoolkit_version = "7.5"; - - name = "cudatoolkit-${cudatoolkit_version}-cudnn-${version}"; - - src = requireFile rec { - name = "cudnn-${cudatoolkit_version}-linux-x64-v${version}.tgz"; - message = '' - This nix expression requires that ${name} is already part of the store. - Register yourself to NVIDIA Accelerated Computing Developer Program, retrieve the cuDNN library - at https://developer.nvidia.com/cudnn, and run the following command in the download directory: - nix-prefetch-url file://${name} - ''; - sha256 = "0b68hv8pqcvh7z8xlgm4cxr9rfbjs0yvg1xj2n5ap4az1h3lp3an"; - }; - - phases = "unpackPhase installPhase fixupPhase"; - - installPhase = '' - function fixRunPath { - p=$(patchelf --print-rpath $1) - patchelf --set-rpath "$p:${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]}" $1 - } - fixRunPath lib64/libcudnn.so - - mkdir -p $out - cp -a include $out/include - cp -a lib64 $out/lib - ''; - - propagatedBuildInputs = [ - cudatoolkit - ]; - - meta = with stdenv.lib; { - description = "NVIDIA CUDA Deep Neural Network library (cuDNN)"; - homepage = "https://developer.nvidia.com/cudnn"; - license = licenses.unfree; - platforms = [ "x86_64-linux" ]; - }; -} diff --git a/pkgs/development/libraries/science/math/cudnn/8.0-7.0/default.nix b/pkgs/development/libraries/science/math/cudnn/8.0-7.0/default.nix deleted file mode 100644 index e8306098039b..000000000000 --- a/pkgs/development/libraries/science/math/cudnn/8.0-7.0/default.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ stdenv -, lib -, requireFile -, cudatoolkit -, fetchurl -}: - -stdenv.mkDerivation rec { - version = "7.0"; - cudatoolkit_version = "8.0"; - - name = "cudatoolkit-${cudatoolkit_version}-cudnn-${version}"; - - src = requireFile rec { - name = "cudnn-${cudatoolkit_version}-linux-x64-v7.tgz"; - message = '' - This nix expression requires that ${name} is already part of the store. - Register yourself to NVIDIA Accelerated Computing Developer Program, retrieve the cuDNN library - at https://developer.nvidia.com/cudnn, and run the following command in the download directory: - nix-prefetch-url file://${name} - ''; - sha256 = "19yjdslrslwv5ic4vgpzb0fa0mqbgi6a66b7gc66vdc9n9589398"; - }; - - installPhase = '' - function fixRunPath { - p=$(patchelf --print-rpath $1) - patchelf --set-rpath "$p:${lib.makeLibraryPath [ stdenv.cc.cc ]}" $1 - } - fixRunPath lib64/libcudnn.so - - mkdir -p $out - cp -a include $out/include - cp -a lib64 $out/lib64 - ''; - - propagatedBuildInputs = [ - cudatoolkit - ]; - - meta = with stdenv.lib; { - description = "NVIDIA CUDA Deep Neural Network library (cuDNN)"; - homepage = "https://developer.nvidia.com/cudnn"; - license = licenses.unfree; - platforms = [ "x86_64-linux" ]; - maintainers = with maintainers; [ mdaiter ]; - }; -} diff --git a/pkgs/development/libraries/science/math/cudnn/9.0-7.0/default.nix b/pkgs/development/libraries/science/math/cudnn/9.0-7.0/default.nix deleted file mode 100644 index f5215ac3764e..000000000000 --- a/pkgs/development/libraries/science/math/cudnn/9.0-7.0/default.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ stdenv -, lib -, requireFile -, cudatoolkit -, fetchurl -}: - -stdenv.mkDerivation rec { - version = "7.0"; - cudatoolkit_version = "9.0"; - - name = "cudatoolkit-${cudatoolkit_version}-cudnn-${version}"; - - src = requireFile rec { - name = "cudnn-${cudatoolkit_version}-linux-x64-v7.tgz"; - message = '' - This nix expression requires that ${name} is already part of the store. - Register yourself to NVIDIA Accelerated Computing Developer Program, retrieve the cuDNN library - at https://developer.nvidia.com/cudnn, and run the following command in the download directory: - nix-prefetch-url file://${name} - ''; - sha256 = "1ld5x819vya6p2ppmr7i3lz9ac2y81kssgbzgd0lsign7r2qjapc"; - }; - - installPhase = '' - function fixRunPath { - p=$(patchelf --print-rpath $1) - patchelf --set-rpath "$p:${lib.makeLibraryPath [ stdenv.cc.cc ]}" $1 - } - fixRunPath lib64/libcudnn.so - - mkdir -p $out - cp -a include $out/include - cp -a lib64 $out/lib64 - ''; - - propagatedBuildInputs = [ - cudatoolkit - ]; - - meta = with stdenv.lib; { - description = "NVIDIA CUDA Deep Neural Network library (cuDNN)"; - homepage = "https://developer.nvidia.com/cudnn"; - license = licenses.unfree; - platforms = [ "x86_64-linux" ]; - maintainers = with maintainers; [ mdaiter ]; - }; -} diff --git a/pkgs/development/libraries/science/math/cudnn/default.nix b/pkgs/development/libraries/science/math/cudnn/default.nix new file mode 100644 index 000000000000..db66d8545883 --- /dev/null +++ b/pkgs/development/libraries/science/math/cudnn/default.nix @@ -0,0 +1,45 @@ +{ callPackage, cudatoolkit7, cudatoolkit75, cudatoolkit8, cudatoolkit9 }: + +let + generic = args: callPackage (import ./generic.nix (removeAttrs args ["cudatoolkit"])) { + inherit (args) cudatoolkit; + }; + +in + +{ + cudnn_cudatoolkit7 = generic rec { + version = "4.0"; + cudatoolkit = cudatoolkit7; + srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v${version}-prod.tgz"; + sha256 = "0zgr6qdbc29qw6sikhrh6diwwz7150rqc8a49f2qf37j2rvyyr2f"; + }; + + cudnn_cudatoolkit75 = generic rec { + version = "6.0"; + cudatoolkit = cudatoolkit75; + srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v${version}.tgz"; + sha256 = "0b68hv8pqcvh7z8xlgm4cxr9rfbjs0yvg1xj2n5ap4az1h3lp3an"; + }; + + cudnn6_cudatoolkit8 = generic rec { + version = "6.0"; + cudatoolkit = cudatoolkit8; + srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v${version}.tgz"; + sha256 = "173zpgrk55ri8if7s5yngsc89ajd6hz4pss4cdxlv6lcyh5122cv"; + }; + + cudnn_cudatoolkit8 = generic rec { + version = "7.0"; + cudatoolkit = cudatoolkit8; + srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v7.tgz"; + sha256 = "19yjdslrslwv5ic4vgpzb0fa0mqbgi6a66b7gc66vdc9n9589398"; + }; + + cudnn_cudatoolkit9 = generic rec { + version = "7.0"; + cudatoolkit = cudatoolkit9; + srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v7.tgz"; + sha256 = "1ld5x819vya6p2ppmr7i3lz9ac2y81kssgbzgd0lsign7r2qjapc"; + }; +} diff --git a/pkgs/development/libraries/science/math/cudnn/generic.nix b/pkgs/development/libraries/science/math/cudnn/generic.nix new file mode 100644 index 000000000000..663b741e4748 --- /dev/null +++ b/pkgs/development/libraries/science/math/cudnn/generic.nix @@ -0,0 +1,56 @@ +{ version +, srcName +, sha256 +}: + +{ stdenv +, lib +, requireFile +, cudatoolkit +}: + +stdenv.mkDerivation rec { + name = "cudatoolkit-${cudatoolkit.majorVersion}-cudnn-${version}"; + + inherit version; + + src = requireFile rec { + name = srcName; + inherit sha256; + message = '' + This nix expression requires that ${name} is already part of the store. + Register yourself to NVIDIA Accelerated Computing Developer Program, retrieve the cuDNN library + at https://developer.nvidia.com/cudnn, and run the following command in the download directory: + nix-prefetch-url file://${name} + ''; + }; + + installPhase = '' + function fixRunPath { + p=$(patchelf --print-rpath $1) + patchelf --set-rpath "$p:${lib.makeLibraryPath [ stdenv.cc.cc ]}" $1 + } + fixRunPath lib64/libcudnn.so + + mkdir -p $out + cp -a include $out/include + cp -a lib64 $out/lib64 + ''; + + propagatedBuildInputs = [ + cudatoolkit + ]; + + passthru = { + inherit cudatoolkit; + majorVersion = lib.head (lib.splitString "." version); + }; + + meta = with stdenv.lib; { + description = "NVIDIA CUDA Deep Neural Network library (cuDNN)"; + homepage = "https://developer.nvidia.com/cudnn"; + license = licenses.unfree; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ mdaiter ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e1adb0b5c3f0..d0be8c9a5476 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1582,21 +1582,12 @@ with pkgs; cudatoolkit = cudatoolkit9; - cudnn_cudatoolkit7 = callPackage ../development/libraries/science/math/cudnn/7.0-4.0 { - cudatoolkit = cudatoolkit7; - }; - - cudnn_cudatoolkit75 = callPackage ../development/libraries/science/math/cudnn/7.5-6.0 { - cudatoolkit = cudatoolkit75; - }; - - cudnn_cudatoolkit8 = callPackage ../development/libraries/science/math/cudnn/8.0-7.0 { - cudatoolkit = cudatoolkit8; - }; - - cudnn_cudatoolkit9 = callPackage ../development/libraries/science/math/cudnn/9.0-7.0 { - cudatoolkit = cudatoolkit9; - }; + inherit (callPackages ../development/libraries/science/math/cudnn { }) + cudnn_cudatoolkit7 + cudnn_cudatoolkit75 + cudnn6_cudatoolkit8 + cudnn_cudatoolkit8 + cudnn_cudatoolkit9; cudnn = cudnn_cudatoolkit9; -- cgit 1.4.1