biome: 1.9.2 -> 1.9.3 (#349335)
[NixPkgs.git] / pkgs / development / cuda-modules / modules / README.md
blobab56463eea5955b2a1a4ff351de165285891b992
1 # Modules
3 Modules as they are used in `modules` exist primarily to check the shape and
4 content of CUDA redistributable and feature manifests. They are ultimately meant
5 to reduce the repetitive nature of repackaging CUDA redistributables.
7 Building most redistributables follows a pattern of a manifest indicating which
8 packages are available at a location, their versions, and their hashes. To avoid
9 creating builders for each and every derivation, modules serve as a way for us
10 to use a single `genericManifestBuilder` to build all redistributables.
12 ## `generic`
14 The modules in `generic` are reusable components meant to check the shape and
15 content of NVIDIA's CUDA redistributable manifests, our feature manifests (which
16 are derived from NVIDIA's manifests), or hand-crafted Nix expressions describing
17 available packages. They are used by the `genericManifestBuilder` to build CUDA
18 redistributables.
20 Generally, each package which relies on manifests or Nix release expressions
21 will create an alias to the relevant generic module. For example, the [module
22 for CUDNN](./cudnn/default.nix) aliases the generic module for release
23 expressions, while the [module for CUDA redistributables](./cuda/default.nix)
24 aliases the generic module for manifests.
26 Alternatively, additional fields or values may need to be configured to account
27 for the particulars of a package. For example, while the release expressions for
28 [CUDNN](../cudnn/releases.nix) and [TensorRT](../tensorrt/releases.nix) are very
29 close, they differ slightly in the fields they have. The [module for
30 CUDNN](./cudnn/default.nix) is able to use the generic module for
31 release expressions, while the [module for
32 TensorRT](./tensorrt/default.nix) must add additional fields to the
33 generic module.
35 ### `manifests`
37 The modules in `generic/manifests` define the structure of NVIDIA's CUDA
38 redistributable manifests and our feature manifests.
40 NVIDIA's redistributable manifests are retrieved from their web server, while
41 the feature manifests are produced by
42 [`cuda-redist-find-features`](https://github.com/connorbaker/cuda-redist-find-features).
44 ### `releases`
46 The modules in `generic/releases` define the structure of our hand-crafted Nix
47 expressions containing information necessary to download and repackage CUDA
48 redistributables. These expressions are created when NVIDIA-provided manifests
49 are unavailable or otherwise unusable. For example, though CUDNN has manifests,
50 a bug in NVIDIA's CI/CD causes manifests for different versions of CUDA to use
51 the same name, which leads to the manifests overwriting each other.
53 ### `types`
55 The modules in `generic/types` define reusable types used in both
56 `generic/manifests` and `generic/releases`.