Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions doc/languages-frameworks/cuda.section.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ All new projects should use the CUDA redistributables available in [`cudaPackage

### Updating supported compilers and GPUs {#updating-supported-compilers-and-gpus}

1. Update `nvcc-compatibilities.nix` in `pkgs/development/cuda-modules/` to include the newest release of NVCC, as well as any newly supported host compilers.
2. Update `gpus.nix` in `pkgs/development/cuda-modules/` to include any new GPUs supported by the new release of CUDA.
1. Update `nvccCompatibilities` in `pkgs/development/cuda-modules/lib/data.nix` to include the newest release of NVCC, as well as any newly supported host compilers.
2. Update `cudaCapabilityToInfo` in `pkgs/development/cuda-modules/lib/data.nix` to include any new GPUs supported by the new release of CUDA.

### Updating the CUDA Toolkit runfile installer {#updating-the-cuda-toolkit}

Expand Down
2 changes: 1 addition & 1 deletion pkgs/applications/science/misc/colmap/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ assert cudaSupport -> cudaPackages != { };

let
boost_static = boost.override { enableStatic = true; };
stdenv' = if cudaSupport then cudaPackages.backendStdenv else stdenv;
stdenv' = if cudaSupport then cudaPackages.cudaStdenv else stdenv;

# TODO: migrate to redist packages
inherit (cudaPackages) cudatoolkit;
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/bl/blender/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
}:

let
stdenv' = if cudaSupport then cudaPackages.backendStdenv else stdenv;
stdenv' = if cudaSupport then cudaPackages.cudaStdenv else stdenv;

embreeSupport =
(!stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux) || stdenv.hostPlatform.isDarwin;
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/ca/catboost/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
pythonSupport ? false,
}:
let
stdenv = if cudaSupport then cudaPackages.backendStdenv else llvmPackages.stdenv;
stdenv = if cudaSupport then cudaPackages.cudaStdenv else llvmPackages.stdenv;
in

stdenv.mkDerivation (finalAttrs: {
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/dl/dlib/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
cudaSupport ? config.cudaSupport,
cudaPackages,
}@inputs:
(if cudaSupport then cudaPackages.backendStdenv else inputs.stdenv).mkDerivation rec {
(if cudaSupport then cudaPackages.cudaStdenv else inputs.stdenv).mkDerivation rec {
pname = "dlib";
version = "19.24.8";

Expand Down
4 changes: 2 additions & 2 deletions pkgs/by-name/fa/faiss/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ let
pname = "faiss";
version = "1.11.0";

inherit (cudaPackages) flags backendStdenv;
inherit (cudaPackages) flags cudaStdenv;

stdenv = if cudaSupport then backendStdenv else inputs.stdenv;
stdenv = if cudaSupport then cudaStdenv else inputs.stdenv;

cudaComponents = with cudaPackages; [
cuda_cudart # cuda_runtime.h
Expand Down
4 changes: 2 additions & 2 deletions pkgs/by-name/gp/gpu-burn/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ let
inherit (lib.trivial) boolToString;
inherit (config) cudaSupport;
inherit (cudaPackages)
backendStdenv
cudaStdenv
cuda_cccl
cuda_cudart
cuda_nvcc
libcublas
;
inherit (cudaPackages.cudaFlags) cudaCapabilities dropDot isJetsonBuild;
in
backendStdenv.mkDerivation {
cudaStdenv.mkDerivation {
pname = "gpu-burn";
version = "unstable-2024-04-09";

Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/ka/katago/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ let
"tensorrt"
]
then
cudaPackages.backendStdenv
cudaPackages.cudaStdenv
else
stdenv;
in
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/ko/koboldcpp/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ let
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ addDriverRunpath.driverLink ]}"
'';

effectiveStdenv = if cublasSupport then cudaPackages.backendStdenv else stdenv;
effectiveStdenv = if cublasSupport then cudaPackages.cudaStdenv else stdenv;
in
effectiveStdenv.mkDerivation (finalAttrs: {
pname = "koboldcpp";
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/li/lightgbm/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ stdenv.mkDerivation (finalAttrs: {
]
++ lib.optionals cudaSupport [
(lib.cmakeBool "USE_CUDA" true)
(lib.cmakeFeature "CMAKE_CXX_COMPILER" (lib.getExe cudaPackages.backendStdenv.cc))
(lib.cmakeFeature "CMAKE_CXX_COMPILER" (lib.getExe cudaPackages.cudaStdenv.cc))
]
++ lib.optionals openclSupport [
(lib.cmakeBool "USE_GPU" true)
Expand Down
4 changes: 2 additions & 2 deletions pkgs/by-name/ll/llama-cpp/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@
}:

let
# It's necessary to consistently use backendStdenv when building with CUDA support,
# It's necessary to consistently use cudaStdenv when building with CUDA support,
# otherwise we get libstdc++ errors downstream.
# cuda imposes an upper bound on the gcc version, e.g. the latest gcc compatible with cudaPackages_11 is gcc11
effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv;
effectiveStdenv = if cudaSupport then cudaPackages.cudaStdenv else stdenv;
inherit (lib)
cmakeBool
cmakeFeature
Expand Down
4 changes: 2 additions & 2 deletions pkgs/by-name/lo/local-ai/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -329,9 +329,9 @@ let

effectiveStdenv =
if with_cublas then
# It's necessary to consistently use backendStdenv when building with CUDA support,
# It's necessary to consistently use cudaStdenv when building with CUDA support,
# otherwise we get libstdc++ errors downstream.
cudaPackages.backendStdenv
cudaPackages.cudaStdenv
else
stdenv;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
}@inputs:

let
effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else inputs.stdenv;
effectiveStdenv = if cudaSupport then cudaPackages.cudaStdenv else inputs.stdenv;
in
effectiveStdenv.mkDerivation (finalAttrs: {
pname = "fastdeploy-ppocr";
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/ol/ollama/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ let

goBuild =
if enableCuda then
buildGoModule.override { stdenv = cudaPackages.backendStdenv; }
buildGoModule.override { stdenv = cudaPackages.cudaStdenv; }
else if enableRocm then
buildGoModule.override { stdenv = rocmPackages.stdenv; }
else
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/on/onnxruntime/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ let
};

stdenv = throw "Use effectiveStdenv instead";
effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else inputs.stdenv;
effectiveStdenv = if cudaSupport then cudaPackages.cudaStdenv else inputs.stdenv;

cudaArchitecturesString = cudaPackages.flags.cmakeCudaArchitecturesString;

Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/op/opensplat/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ let
torch = python3.pkgs.torch.override { inherit cudaSupport; };
# Using a normal stdenv with cuda torch gives
# ld: /nix/store/k1l7y96gv0nc685cg7i3g43i4icmddzk-python3.11-torch-2.2.1-lib/lib/libc10.so: undefined reference to `std::ios_base_library_init()@GLIBCXX_3.4.32'
stdenv' = if cudaSupport then cudaPackages.backendStdenv else stdenv;
stdenv' = if cudaSupport then cudaPackages.cudaStdenv else stdenv;
in
stdenv'.mkDerivation {
pname = "opensplat";
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/su/sunshine/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
cudaPackages ? { },
}:
let
stdenv' = if cudaSupport then cudaPackages.backendStdenv else stdenv;
stdenv' = if cudaSupport then cudaPackages.cudaStdenv else stdenv;
in
stdenv'.mkDerivation rec {
pname = "sunshine";
Expand Down
6 changes: 3 additions & 3 deletions pkgs/by-name/ti/tiny-cuda-nn/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
}:
let
inherit (lib) lists strings;
inherit (cudaPackages) backendStdenv cudaAtLeast flags;
inherit (cudaPackages) cudaStdenv cudaAtLeast flags;

cuda-common-redist = with cudaPackages; [
(lib.getDev cuda_cudart) # cuda_runtime.h
Expand Down Expand Up @@ -112,8 +112,8 @@ stdenv.mkDerivation (finalAttrs: {
export TCNN_CUDA_ARCHITECTURES="${cudaArchitecturesString}"
export CUDA_HOME="${cuda-native-redist}"
export LIBRARY_PATH="${cuda-native-redist}/lib/stubs:$LIBRARY_PATH"
export CC="${backendStdenv.cc}/bin/cc"
export CXX="${backendStdenv.cc}/bin/c++"
export CC="${cudaStdenv.cc}/bin/cc"
export CXX="${cudaStdenv.cc}/bin/c++"
'';

# When building the python bindings, we cannot re-use the artifacts from the C++ build so we
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/tr/truecrack/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
}:

let
stdenv = if cudaSupport then cudaPackages.backendStdenv else gccStdenv;
stdenv = if cudaSupport then cudaPackages.cudaStdenv else gccStdenv;
in
stdenv.mkDerivation rec {
pname = "truecrack";
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/uc/ucc/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ let
;

stdenv = throw "Use effectiveStdenv instead";
effectiveStdenv = if enableCuda then cudaPackages.backendStdenv else inputs.stdenv;
effectiveStdenv = if enableCuda then cudaPackages.cudaStdenv else inputs.stdenv;
in
effectiveStdenv.mkDerivation (finalAttrs: {
__structuredAttrs = true;
Expand Down
4 changes: 2 additions & 2 deletions pkgs/by-name/wh/whisper-cpp/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ assert metalSupport -> stdenv.hostPlatform.isDarwin;
assert coreMLSupport -> stdenv.hostPlatform.isDarwin;

let
# It's necessary to consistently use backendStdenv when building with CUDA support,
# It's necessary to consistently use cudaStdenv when building with CUDA support,
# otherwise we get libstdc++ errors downstream.
# cuda imposes an upper bound on the gcc version, e.g. the latest gcc compatible with cudaPackages_11 is gcc11
effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv;
effectiveStdenv = if cudaSupport then cudaPackages.cudaStdenv else stdenv;
inherit (lib)
cmakeBool
cmakeFeature
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/xg/xgboost/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ let
# This ensures xgboost gets the correct libstdc++ when
# built with cuda support. This may be removed once
# #226165 rewrites cudaStdenv
effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else inputs.stdenv;
effectiveStdenv = if cudaSupport then cudaPackages.cudaStdenv else inputs.stdenv;
# Ensures we don't use the stdenv value by accident.
stdenv = builtins.throw "Use effectiveStdenv instead of stdenv in xgboost derivation.";
in
Expand Down
2 changes: 1 addition & 1 deletion pkgs/by-name/xp/xpra/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ buildPythonApplication rec {
pname = "xpra";
version = "6.3";

stdenv = if withNvenc then cudaPackages.backendStdenv else args.stdenv;
stdenv = if withNvenc then cudaPackages.cudaStdenv else args.stdenv;

src = fetchFromGitHub {
owner = "Xpra-org";
Expand Down
19 changes: 4 additions & 15 deletions pkgs/development/cuda-modules/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,6 @@
The files in this directory are added (in some way) to the `cudaPackages`
package set by [cuda-packages.nix](../../top-level/cuda-packages.nix).

## Top-level files

Top-level nix files are included in the initial creation of the `cudaPackages`
scope. These are typically required for the creation of the finalized
`cudaPackages` scope:

- `backend-stdenv.nix`: Standard environment for CUDA packages.
- `flags.nix`: Flags set, or consumed by, NVCC in order to build packages.
- `gpus.nix`: A list of supported NVIDIA GPUs.
- `nvcc-compatibilities.nix`: NVCC releases and the version range of GCC/Clang
they support.

## Top-level directories

- `cuda`: CUDA redistributables! Provides extension to `cudaPackages` scope.
Expand All @@ -41,16 +29,17 @@ scope. These are typically required for the creation of the finalized
short, the Multiplex builder adds multiple versions of a single package to
single instance of the CUDA Packages package set. It is used primarily for
packages like `cudnn` and `cutensor`.
- `lib`: A library of functions and data used by and for the CUDA package set.
This library is exposed at the top-level as `pkgs.cudaLib`.
- `modules`: Nixpkgs modules to check the shape and content of CUDA
redistributable and feature manifests. These modules additionally use shims
provided by some CUDA packages to allow them to re-use the
`genericManifestBuilder`, even if they don't have manifest files of their
own. `cudnn` and `tensorrt` are examples of packages which provide such
shims. These modules are further described in the
[Modules](./modules/README.md) documentation.
- `nccl`: NVIDIA NCCL library.
- `nccl-tests`: NVIDIA NCCL tests.
- `saxpy`: Example CMake project that uses CUDA.
- `packages`: Contains packages which exist in every instance of the CUDA
package set. These packages are built in a `by-name` fashion.
- `setup-hooks`: Nixpkgs setup hooks for CUDA.
- `tensorrt`: NVIDIA TensorRT library.

Expand Down
5 changes: 5 additions & 0 deletions pkgs/development/cuda-modules/aliases.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ in
builtins.mapAttrs mkRenamed {
# A comment to prevent empty { } from collapsing into a single line

backendStdenv = {
path = "cudaPackages.cudaStdenv";
package = final.cudaStdenv;
};

cudaVersion = {
path = "cudaPackages.cudaMajorMinorVersion";
package = final.cudaMajorMinorVersion;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
addDriverRunpath,
autoAddDriverRunpath,
autoPatchelfHook,
backendStdenv,
cudaStdenv,
cmake,
cuda_cccl ? null,
cuda_cudart ? null,
Expand All @@ -19,7 +19,7 @@
}:

let
base = backendStdenv.mkDerivation (finalAttrs: {
base = cudaStdenv.mkDerivation (finalAttrs: {
src = fetchFromGitHub {
owner = "NVIDIA";
repo = "CUDALibrarySamples";
Expand Down
4 changes: 2 additions & 2 deletions pkgs/development/cuda-modules/cuda-samples/generic.nix
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
autoAddDriverRunpath,
backendStdenv,
cudaStdenv,
cmake,
cudatoolkit,
cudaMajorMinorVersion,
Expand All @@ -16,7 +16,7 @@
let
inherit (lib) lists strings;
in
backendStdenv.mkDerivation (finalAttrs: {
cudaStdenv.mkDerivation (finalAttrs: {
strictDeps = true;

pname = "cuda-samples";
Expand Down
2 changes: 1 addition & 1 deletion pkgs/development/cuda-modules/cuda/extension.nix
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ let
};

# Generally we prefer to do things involving getting attribute names with feature_manifest instead
# of redistrib_manifest because the feature manifest will have *only* the redist architecture
# of redistrib_manifest because the feature manifest will have *only* the redist system
# names as the keys, whereas the redistrib manifest will also have things like version, name, license,
# and license_path.
featureManifest = evaluatedModules.config.cuda.manifests.feature;
Expand Down
8 changes: 4 additions & 4 deletions pkgs/development/cuda-modules/cudatoolkit/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
pulseaudio,
setupCudaHook,
stdenv,
backendStdenv, # E.g. gcc11Stdenv, set in extension.nix
cudaStdenv, # E.g. gcc11Stdenv, set in extension.nix
unixODBC,
wayland,
xorg,
Expand All @@ -57,7 +57,7 @@ let
release = releases.${cudaMajorMinorVersion};
in

backendStdenv.mkDerivation rec {
cudaStdenv.mkDerivation rec {
pname = "cudatoolkit";
inherit (release) version;
inherit runPatches;
Expand Down Expand Up @@ -164,7 +164,7 @@ backendStdenv.mkDerivation rec {
(placeholder "lib")
(placeholder "out")
"${placeholder "out"}/nvvm"
# NOTE: use the same libstdc++ as the rest of nixpkgs, not from backendStdenv
# NOTE: use the same libstdc++ as the rest of nixpkgs, not from cudaStdenv
"${lib.getLib stdenv.cc.cc}/lib64"
"${placeholder "out"}/jre/lib/amd64/jli"
"${placeholder "out"}/lib64"
Expand Down Expand Up @@ -346,7 +346,7 @@ backendStdenv.mkDerivation rec {
popd
'';
passthru = {
inherit (backendStdenv) cc;
inherit (cudaStdenv) cc;
majorMinorVersion = lib.versions.majorMinor version;
majorVersion = lib.versions.majorMinor version;
};
Expand Down
4 changes: 2 additions & 2 deletions pkgs/development/cuda-modules/cudatoolkit/redist-wrapper.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
lib,
symlinkJoin,
backendStdenv,
cudaStdenv,
cudaOlder,
cudatoolkit-legacy-runfile,
cudaMajorMinorVersion,
Expand Down Expand Up @@ -72,7 +72,7 @@ else
paths = builtins.concatMap getAllOutputs allPackages;

passthru = {
cc = lib.warn "cudaPackages.cudatoolkit is deprecated, refer to the manual and use splayed packages instead" backendStdenv.cc;
cc = lib.warn "cudaPackages.cudatoolkit is deprecated, refer to the manual and use splayed packages instead" cudaStdenv.cc;
lib = symlinkJoin {
inherit name;
paths = map (p: lib.getLib p) allPackages;
Expand Down
Loading