Skip to content

ConnorBaker/cuda-packages

Repository files navigation

cuda-packages

Out of tree (Nixpkgs) experiments with packaging CUDA in an extensible way.

Most code lives in Nixpkgs and is copied/modified here for ease of development.

Notes

  • Python wrappers which invoke CMake do not always pass their environment to the CMake process. That means a number of the environment variables we set so CMake's auto-detection functionality just works is broken.
  • autoAddDriverRunpath for CMake projects is a crutch -- the correct fix is to have the CMake project link against CUDA::cudart.
  • cudaStdenv sets strictDeps=true and __structuredAttrs=true by default. Packages must have a good reason to opt out (e.g., Python packaging has not been updated yet to support structured attributes: NixOS/nixpkgs#347194).
  • cudaStdenv uses a name prefix for more descriptive store path names.
    • Prefix is available as backendStdenv.cudaNamePrefix.
  • Manifests and overrides are versioned
    • This prevents conflicts when downstream consumers add their own manifests and overrides.
  • noBrokenSymlinksHook checks for broken or reflexive symlinks in your outputs, which are usually a sign of packaging gone wrong
  • 12.2.2 is kept around because it is the last version of CUDA 12 supported by Xavier through cuda_compat
    • DO NOT rely on it being around forever -- try to upgrade to newer hardware!
  • cuda_compat can be disabled by setting the package to null. This is useful in cases where the host OS has a recent enough CUDA driver that the compatibility library isn't needed.

Todo

About

A playground for Nix and CUDA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published