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
, lib
, requireFile
, cudatoolkit
, fetchurl
}:
stdenv.mkDerivation rec {
version = "7.0";
cudatoolkit_version = "8.0";
name = "cudatoolkit-${cudatoolkit.majorVersion}-cudnn-${version}";
name = "cudatoolkit-${cudatoolkit_version}-cudnn-${version}";
inherit version;
src = requireFile rec {
name = "cudnn-${cudatoolkit_version}-linux-x64-v7.tgz";
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}
'';
sha256 = "19yjdslrslwv5ic4vgpzb0fa0mqbgi6a66b7gc66vdc9n9589398";
};
installPhase = ''
@ -38,6 +41,11 @@ stdenv.mkDerivation rec {
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";

View File

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