cudaPackages.cudnn: remove patch version from name to conform with cudaPackages standard

This commit is contained in:
Connor Baker 2023-05-24 12:48:20 -04:00
parent 9d7f13350d
commit 222d966273
3 changed files with 10 additions and 16 deletions

View File

@ -8,7 +8,7 @@ A package set is available for each CUDA version, so for example
`cudaPackages_11_6`. Within each set is a matching version of the above listed
packages. Additionally, other versions of the packages that are packaged and
compatible are available as well. For example, there can be a
`cudaPackages.cudnn_8_3_2` package.
`cudaPackages.cudnn_8_3` package.
To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
```nix
@ -28,7 +28,7 @@ set.
```nix
mypkg = let
cudaPackages = cudaPackages_11_5.overrideScope' (final: prev: {
cudnn = prev.cudnn_8_3_2;
cudnn = prev.cudnn_8_3;
}});
in callPackage { inherit cudaPackages; };
```

View File

@ -27,7 +27,7 @@ let
# Earlier versions of cudatoolkit use pre-8.x CUDNN, so we use the default.
cudnn = if lib.versionOlder cudatoolkit.version "10.1"
then cudaPackages.cudnn
else cudaPackages.cudnn_7_6_5;
else cudaPackages.cudnn_7_6;
in
assert leveldbSupport -> (leveldb != null && snappy != null);

View File

@ -11,29 +11,23 @@
final: prev: let
inherit (final) callPackage;
inherit (prev) cudaVersion;
inherit (prev.lib) attrsets lists versions strings trivial;
# Utilities
# majorMinorPatch :: String -> String
majorMinorPatch = (trivial.flip trivial.pipe) [
(versions.splitVersion)
(lists.take 3)
(strings.concatStringsSep ".")
];
inherit (prev.lib) attrsets lists versions;
inherit (prev.lib.strings) replaceStrings versionAtLeast versionOlder;
# Compute versioned attribute name to be used in this package set
# Patch version changes should not break the build, so we only use major and minor
# computeName :: String -> String
computeName = version: "cudnn_${strings.replaceStrings ["."] ["_"] (majorMinorPatch version)}";
computeName = version: "cudnn_${replaceStrings ["."] ["_"] (versions.majorMinor version)}";
# Check whether a CUDNN release supports our CUDA version
# Thankfully we're able to do lexicographic comparison on the version strings
# isSupported :: Release -> Bool
isSupported = release:
strings.versionAtLeast cudaVersion release.minCudaVersion
&& strings.versionAtLeast release.maxCudaVersion cudaVersion;
versionAtLeast cudaVersion release.minCudaVersion
&& versionAtLeast release.maxCudaVersion cudaVersion;
# useCudatoolkitRunfile :: Bool
useCudatoolkitRunfile = strings.versionOlder cudaVersion "11.3.999";
useCudatoolkitRunfile = versionOlder cudaVersion "11.3.999";
# buildCuDnnPackage :: Release -> Derivation
buildCuDnnPackage = callPackage ./generic.nix {inherit useCudatoolkitRunfile;};