···8`cudaPackages_11_6`. Within each set is a matching version of the above listed
9packages. Additionally, other versions of the packages that are packaged and
10compatible are available as well. For example, there can be a
11-`cudaPackages.cudnn_8_3_2` package.
1213To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
14```nix
···28```nix
29mypkg = let
30 cudaPackages = cudaPackages_11_5.overrideScope' (final: prev: {
31- cudnn = prev.cudnn_8_3_2;
32 }});
33in callPackage { inherit cudaPackages; };
34```
···8`cudaPackages_11_6`. Within each set is a matching version of the above listed
9packages. Additionally, other versions of the packages that are packaged and
10compatible are available as well. For example, there can be a
11+`cudaPackages.cudnn_8_3` package.
1213To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
14```nix
···28```nix
29mypkg = let
30 cudaPackages = cudaPackages_11_5.overrideScope' (final: prev: {
31+ cudnn = prev.cudnn_8_3;
32 }});
33in callPackage { inherit cudaPackages; };
34```
+1-1
pkgs/applications/science/math/caffe/default.nix
···27 # Earlier versions of cudatoolkit use pre-8.x CUDNN, so we use the default.
28 cudnn = if lib.versionOlder cudatoolkit.version "10.1"
29 then cudaPackages.cudnn
30- else cudaPackages.cudnn_7_6_5;
31in
3233assert leveldbSupport -> (leveldb != null && snappy != null);
···27 # Earlier versions of cudatoolkit use pre-8.x CUDNN, so we use the default.
28 cudnn = if lib.versionOlder cudatoolkit.version "10.1"
29 then cudaPackages.cudnn
30+ else cudaPackages.cudnn_7_6;
31in
3233assert leveldbSupport -> (leveldb != null && snappy != null);
···11final: prev: let
12 inherit (final) callPackage;
13 inherit (prev) cudaVersion;
14- inherit (prev.lib) attrsets lists versions strings trivial;
15-16- # Utilities
17- # majorMinorPatch :: String -> String
18- majorMinorPatch = (trivial.flip trivial.pipe) [
19- (versions.splitVersion)
20- (lists.take 3)
21- (strings.concatStringsSep ".")
22- ];
2324 # Compute versioned attribute name to be used in this package set
025 # computeName :: String -> String
26- computeName = version: "cudnn_${strings.replaceStrings ["."] ["_"] (majorMinorPatch version)}";
2728 # Check whether a CUDNN release supports our CUDA version
29 # Thankfully we're able to do lexicographic comparison on the version strings
30 # isSupported :: Release -> Bool
31 isSupported = release:
32- strings.versionAtLeast cudaVersion release.minCudaVersion
33- && strings.versionAtLeast release.maxCudaVersion cudaVersion;
3435 # useCudatoolkitRunfile :: Bool
36- useCudatoolkitRunfile = strings.versionOlder cudaVersion "11.3.999";
3738 # buildCuDnnPackage :: Release -> Derivation
39 buildCuDnnPackage = callPackage ./generic.nix {inherit useCudatoolkitRunfile;};
···11final: prev: let
12 inherit (final) callPackage;
13 inherit (prev) cudaVersion;
14+ inherit (prev.lib) attrsets lists versions;
15+ inherit (prev.lib.strings) replaceStrings versionAtLeast versionOlder;
00000001617 # Compute versioned attribute name to be used in this package set
18+ # Patch version changes should not break the build, so we only use major and minor
19 # computeName :: String -> String
20+ computeName = version: "cudnn_${replaceStrings ["."] ["_"] (versions.majorMinor version)}";
2122 # Check whether a CUDNN release supports our CUDA version
23 # Thankfully we're able to do lexicographic comparison on the version strings
24 # isSupported :: Release -> Bool
25 isSupported = release:
26+ versionAtLeast cudaVersion release.minCudaVersion
27+ && versionAtLeast release.maxCudaVersion cudaVersion;
2829 # useCudatoolkitRunfile :: Bool
30+ useCudatoolkitRunfile = versionOlder cudaVersion "11.3.999";
3132 # buildCuDnnPackage :: Release -> Derivation
33 buildCuDnnPackage = callPackage ./generic.nix {inherit useCudatoolkitRunfile;};