cudnn: refactor to use shared derivation

Also return 8.0-6.0 version for TensorFlow.
This commit is contained in:
Nikolay Amiantov 2017-10-15 14:44:54 +03:00
parent ce9059a120
commit 6309e5fa01
6 changed files with 65 additions and 150 deletions

View File

@ -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 <FILE>.
'';
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;
};
}

View File

@ -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" ];
};
}

View File

@ -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 ];
};
}

View File

@ -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";
};
}

View File

@ -1,25 +1,28 @@
{ version
, srcName
, sha256
}:
{ stdenv { stdenv
, lib , lib
, requireFile , requireFile
, cudatoolkit , cudatoolkit
, fetchurl
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "7.0"; name = "cudatoolkit-${cudatoolkit.majorVersion}-cudnn-${version}";
cudatoolkit_version = "8.0";
name = "cudatoolkit-${cudatoolkit_version}-cudnn-${version}"; inherit version;
src = requireFile rec { src = requireFile rec {
name = "cudnn-${cudatoolkit_version}-linux-x64-v7.tgz"; name = srcName;
inherit sha256;
message = '' message = ''
This nix expression requires that ${name} is already part of the store. This nix expression requires that ${name} is already part of the store.
Register yourself to NVIDIA Accelerated Computing Developer Program, retrieve the cuDNN library 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: at https://developer.nvidia.com/cudnn, and run the following command in the download directory:
nix-prefetch-url file://${name} nix-prefetch-url file://${name}
''; '';
sha256 = "19yjdslrslwv5ic4vgpzb0fa0mqbgi6a66b7gc66vdc9n9589398";
}; };
installPhase = '' installPhase = ''
@ -38,6 +41,11 @@ stdenv.mkDerivation rec {
cudatoolkit cudatoolkit
]; ];
passthru = {
inherit cudatoolkit;
majorVersion = lib.head (lib.splitString "." version);
};
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "NVIDIA CUDA Deep Neural Network library (cuDNN)"; description = "NVIDIA CUDA Deep Neural Network library (cuDNN)";
homepage = "https://developer.nvidia.com/cudnn"; homepage = "https://developer.nvidia.com/cudnn";

View File

@ -1582,21 +1582,12 @@ with pkgs;
cudatoolkit = cudatoolkit9; cudatoolkit = cudatoolkit9;
cudnn_cudatoolkit7 = callPackage ../development/libraries/science/math/cudnn/7.0-4.0 { inherit (callPackages ../development/libraries/science/math/cudnn { })
cudatoolkit = cudatoolkit7; cudnn_cudatoolkit7
}; cudnn_cudatoolkit75
cudnn6_cudatoolkit8
cudnn_cudatoolkit75 = callPackage ../development/libraries/science/math/cudnn/7.5-6.0 { cudnn_cudatoolkit8
cudatoolkit = cudatoolkit75; cudnn_cudatoolkit9;
};
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;
};
cudnn = cudnn_cudatoolkit9; cudnn = cudnn_cudatoolkit9;