Merge pull request #224068 from SomeoneSerge/respect-config-cudaSupport

Respect global config.cudaSupport
This commit is contained in:
Connor Baker 2023-07-25 14:18:14 -04:00 committed by GitHub
commit 495875182e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 96 additions and 63 deletions

View file

@ -12,8 +12,11 @@ compatible are available as well. For example, there can be a
To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
```nix
cudaSupport ? false
cudaPackages ? {}
{ config
, cudaSupport ? config.cudaSupport
, cudaPackages ? { }
, ...
}:
```
When using `callPackage`, you can choose to pass in a different variant, e.g.

View file

@ -54,7 +54,7 @@
, breeze-icons
, oxygen
, cudaSupport ? config.cudaSupport or false
, cudaSupport ? config.cudaSupport
, cudaPackages ? {}
}:

View file

@ -5,7 +5,7 @@
, openvdb, libXxf86vm, tbb, alembic
, zlib, zstd, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath
, jackaudioSupport ? false, libjack2
, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}
, cudaSupport ? config.cudaSupport, cudaPackages ? { }
, hipSupport ? false, hip # comes with a significantly larger closure size
, colladaSupport ? true, opencollada
, spaceNavSupport ? stdenv.isLinux, libspnav

View file

@ -13,7 +13,7 @@
, Accelerate, CoreGraphics, CoreVideo
, lmdbSupport ? true, lmdb
, leveldbSupport ? true, leveldb, snappy
, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}
, cudaSupport ? config.cudaSupport, cudaPackages ? { }
, cudnnSupport ? cudaSupport
, ncclSupport ? false
, pythonSupport ? false, python ? null, numpy ? null

View file

@ -2,7 +2,8 @@
, fetchpatch
, openblas, blas, lapack, opencv3, libzip, boost, protobuf, mpi
, onebitSGDSupport ? false
, cudaSupport ? false, cudaPackages ? {}, addOpenGLRunpath, cudatoolkit, nvidia_x11
, config
, cudaSupport ? config.cudaSupport, cudaPackages ? { }, addOpenGLRunpath, cudatoolkit, nvidia_x11
, cudnnSupport ? cudaSupport
}:

View file

@ -2,7 +2,7 @@
, config
, lib
, cudaPackages
, cudaSupport ? config.cudaSupport or false
, cudaSupport ? config.cudaSupport
, lang ? "en"
, webdoc ? false
, version ? null

View file

@ -1,6 +1,6 @@
{ config, stdenv, lib, fetchurl, fetchpatch, bash, cmake
, opencv3, gtest, blas, gomp, llvmPackages, perl
, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}, nvidia_x11
, cudaSupport ? config.cudaSupport, cudaPackages ? { }, nvidia_x11
, cudnnSupport ? cudaSupport
}:

View file

@ -1,6 +1,7 @@
{ mkDerivation, lib, fetchFromGitHub, cmake, boost179, ceres-solver, eigen,
freeimage, glog, libGLU, glew, qtbase,
cudaSupport ? false, cudaPackages }:
config,
cudaSupport ? config.cudaSupport, cudaPackages }:
assert cudaSupport -> cudaPackages != { };

View file

@ -1,7 +1,8 @@
{ lib, stdenv, fetchurl, cmake, hwloc, fftw, perl, blas, lapack, mpi, cudatoolkit
, singlePrec ? true
, config
, enableMpi ? false
, enableCuda ? false
, enableCuda ? config.cudaSupport
, cpuAcceleration ? null
}:

View file

@ -129,7 +129,7 @@ backendStdenv.mkDerivation rec {
(lib.getLib libtiff)
qt6Packages.qtwayland
rdma-core
ucx
(ucx.override { enableCuda = false; }) # Avoid infinite recursion
xorg.libxshmfence
xorg.libxkbfile
] ++ (lib.optionals (lib.versionAtLeast version "12.1") (map lib.getLib ([

View file

@ -19,7 +19,8 @@
, clblas
, doxygen
, buildDocs ? false
, cudaSupport ? false
, config
, cudaSupport ? config.cudaSupport
, cudatoolkit
, darwin
}:

View file

@ -4,10 +4,11 @@
, avxSupport ? stdenv.hostPlatform.avxSupport
, avx2Support ? stdenv.hostPlatform.avx2Support
, avx512Support ? stdenv.hostPlatform.avx512Support
, config
# Enable NIVIA GPU support
# Note, that this needs to be built on a system with a GPU
# present for the tests to succeed.
, enableCuda ? false
, enableCuda ? config.cudaSupport
# type of GPU architecture
, nvidiaArch ? "sm_60"
, cudatoolkit

View file

@ -7,7 +7,7 @@
, opencv
, pcre
, pkg-config
, cudaSupport ? config.cudaSupport or false
, cudaSupport ? config.cudaSupport
, cudaPackages
}:

View file

@ -2,7 +2,8 @@
, x11Support ? false
, libX11
, cairo
, enableCuda ? false
, config
, enableCuda ? config.cudaSupport
, cudaPackages
}:

View file

@ -13,7 +13,7 @@
, glfw
, libGLU
, curl
, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}
, cudaSupport ? config.cudaSupport, cudaPackages ? { }
, enablePython ? false, pythonPackages ? null
, enableGUI ? false,
}:

View file

@ -1,5 +1,5 @@
{ config, stdenv, lib, fetchFromGitHub, cmake, gtest, doCheck ? true
, cudaSupport ? config.cudaSupport or false, openclSupport ? false, mpiSupport ? false, javaWrapper ? false, hdfsSupport ? false
, cudaSupport ? config.cudaSupport, openclSupport ? false, mpiSupport ? false, javaWrapper ? false, hdfsSupport ? false
, rLibrary ? false, cudaPackages, opencl-headers, ocl-icd, boost, llvmPackages, openmpi, openjdk, swig, hadoop, R, rPackages }:
assert doCheck -> mpiSupport != true;

View file

@ -21,7 +21,7 @@
, sox
, vid-stab
, darwin
, cudaSupport ? config.cudaSupport or false
, cudaSupport ? config.cudaSupport
, cudaPackages ? { }
, enableJackrack ? stdenv.isLinux
, ladspa-sdk

View file

@ -8,7 +8,7 @@
, symlinkJoin
, tbb
, hostSystem ? "CPP"
, deviceSystem ? if config.cudaSupport or false then "CUDA" else "OMP"
, deviceSystem ? if config.cudaSupport then "CUDA" else "OMP"
}:
# Policy for device_vector<T>

View file

@ -14,7 +14,7 @@
, enableOpenblas ? true, openblas, blas, lapack
, enableContrib ? true
, enableCuda ? (config.cudaSupport or false) &&
, enableCuda ? config.cudaSupport &&
stdenv.hostPlatform.isx86_64
, cudaPackages ? { }
, enableUnfree ? false

View file

@ -37,7 +37,7 @@
, blas
, enableContrib ? true
, enableCuda ? (config.cudaSupport or false) && stdenv.hostPlatform.isx86_64
, enableCuda ? config.cudaSupport && stdenv.hostPlatform.isx86_64
, enableCublas ? enableCuda
, enableCudnn ? false # NOTE: CUDNN has a large impact on closure size so we disable it by default
, enableCufft ? enableCuda

View file

@ -1,9 +1,9 @@
{ lib, stdenv, fetchurl, gfortran, perl, libnl
, rdma-core, zlib, numactl, libevent, hwloc, targetPackages, symlinkJoin
, libpsm2, libfabric, pmix, ucx
, config
# Enable CUDA support
, cudaSupport ? false, cudatoolkit
, cudaSupport ? config.cudaSupport, cudatoolkit
# Enable the Sun Grid Engine bindings
, enableSGE ? false

View file

@ -1,6 +1,6 @@
{ config, lib, stdenv, fetchFromGitHub, cmake, pkg-config, xorg, libGLU
, libGL, glew, ocl-icd, python3
, cudaSupport ? config.cudaSupport or false, cudatoolkit
, cudaSupport ? config.cudaSupport, cudatoolkit
# For visibility mostly. The whole approach to cuda architectures and capabilities
# will be reworked soon.
, cudaArch ? "compute_37"

View file

@ -11,7 +11,8 @@
, enableOpencl ? true
, opencl-headers
, ocl-icd
, enableCuda ? false
, config
, enableCuda ? config.cudaSupport
, cudaPackages
, addOpenGLRunpath
}:

View file

@ -5,7 +5,7 @@
, stdenv
, cmake
, cudaPackages ? { }
, cudaSupport ? config.cudaSupport or false
, cudaSupport ? config.cudaSupport
, nvidia-thrust
, useThrustSourceBuild ? true
, pythonSupport ? true

View file

@ -1,5 +1,6 @@
{ lib, stdenv, fetchurl, gfortran, blas, lapack
, enableCuda ? false, cudatoolkit
, config
, enableCuda ? config.cudaSupport, cudatoolkit
}:
let

View file

@ -6,7 +6,8 @@
, fixDarwinDylibNames
, gmp
, mpfr
, enableCuda ? false
, config
, enableCuda ? config.cudaSupport
, cudatoolkit
}:

View file

@ -1,5 +1,6 @@
{ stdenv, lib, fetchFromGitHub, libtool, automake, autoconf, ucx
, enableCuda ? false
, config
, enableCuda ? config.cudaSupport
, cudatoolkit
, enableAvx ? stdenv.hostPlatform.avxSupport
, enableSse41 ? stdenv.hostPlatform.sse4_1Support

View file

@ -1,6 +1,7 @@
{ lib, stdenv, fetchFromGitHub, autoreconfHook, doxygen, numactl
, rdma-core, libbfd, libiberty, perl, zlib, symlinkJoin, pkg-config
, enableCuda ? false
, config
, enableCuda ? config.cudaSupport
, cudatoolkit
, enableRocm ? false
, rocm-core, rocm-runtime, rocm-device-libs, hip

View file

@ -5,7 +5,7 @@
, cmake
, gtest
, doCheck ? true
, cudaSupport ? config.cudaSupport or false
, cudaSupport ? config.cudaSupport
, ncclSupport ? false
, rLibrary ? false
, cudaPackages

View file

@ -1,7 +1,7 @@
{ lib
, buildPythonPackage
, config
, cudaSupport ? config.cudaSupport or false
, cudaSupport ? config.cudaSupport
, cupy
, fetchFromGitHub
, filelock

View file

@ -27,7 +27,7 @@
, scipy
, stdenv
# Options:
, cudaSupport ? config.cudaSupport or false
, cudaSupport ? config.cudaSupport
, cudaPackages ? {}
}:

View file

@ -40,8 +40,9 @@
, snappy
, zlib
, config
# CUDA flags:
, cudaSupport ? false
, cudaSupport ? config.cudaSupport
, cudaPackages ? {}
# MKL:

View file

@ -9,7 +9,9 @@
, six
, nose
, mako
, cudaSupport ? false, cudaPackages
, config
, cudaSupport ? config.cudaSupport
, cudaPackages ? { }
, openclSupport ? true, ocl-icd, clblas
}:

View file

@ -14,12 +14,14 @@
, runCommand
, fetchpatch
, config
# CUDA-only dependencies:
, addOpenGLRunpath ? null
, cudaPackages ? {}
# CUDA flags:
, cudaSupport ? false
, cudaSupport ? config.cudaSupport
}:
let

View file

@ -21,7 +21,8 @@
, backports_weakref
, tensorflow-estimator-bin
, tensorboard
, cudaSupport ? false
, config
, cudaSupport ? config.cudaSupport
, cudaPackages ? {}
, zlib
, python

View file

@ -17,7 +17,8 @@
# that in nix as well. It would make some things easier and less confusing, but
# it would also make the default tensorflow package unfree. See
# https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
, cudaSupport ? false
, config
, cudaSupport ? config.cudaSupport
, cudaPackages ? { }
, cudaCapabilities ? cudaPackages.cudaFlags.cudaCapabilities
, mklSupport ? false, mkl

View file

@ -11,8 +11,9 @@
, setuptools
, six
, libgpuarray
, cudaSupport ? false, cudaPackages ? {}
, cudnnSupport ? false
, config
, cudaSupport ? config.cudaSupport, cudaPackages ? { }
, cudnnSupport ? cudaSupport
}:
let

View file

@ -1,5 +1,5 @@
{ stdenv, lib, fetchFromGitHub, buildPythonPackage, python,
cudaSupport ? false, cudaPackages, magma,
config, cudaSupport ? config.cudaSupport, cudaPackages, magma,
useSystemNccl ? true,
MPISupport ? false, mpi,
buildDocs ? false,

View file

@ -1,6 +1,7 @@
{ stdenv
, boost
, cmake
, config
, cudaPackages
, eigen
, fetchFromGitHub
@ -14,7 +15,7 @@
, openssl
, writeShellScriptBin
, enableAVX2 ? stdenv.hostPlatform.avx2Support
, backend ? "opencl"
, backend ? if config.cudaSupport then "cuda" else "opencl"
, enableBigBoards ? false
, enableContrib ? false
, enableTcmalloc ? true

View file

@ -30,7 +30,8 @@
, svt-av1
, vulkan-loader
, libappindicator
, cudaSupport ? false
, config
, cudaSupport ? config.cudaSupport
, cudaPackages ? {}
}:
let

View file

@ -1,6 +1,7 @@
{ cmake, cudatoolkit, fetchFromGitHub, gfortran, lib, llvmPackages, python3Packages, stdenv
, config
, enableCfp ? true
, enableCuda ? false
, enableCuda ? config.cudaSupport
, enableFortran ? builtins.elem stdenv.targetPlatform.system gfortran.meta.platforms
, enableOpenMP ? true
, enablePython ? true

View file

@ -1,5 +1,6 @@
{ cmake, fetchFromGitHub, makeWrapper, opencv3, lib, stdenv, ocl-icd, opencl-headers, OpenCL
, cudaSupport ? false, cudatoolkit ? null
, config
, cudaSupport ? config.cudaSupport, cudatoolkit ? null
}:
stdenv.mkDerivation rec {

View file

@ -2,7 +2,7 @@
, addOpenGLRunpath
, config
, cudaPackages ? {}
, cudaSupport ? config.cudaSupport or false
, cudaSupport ? config.cudaSupport
, fetchurl
, makeWrapper
, opencl-headers

View file

@ -1,5 +1,6 @@
{ lib, gccStdenv, fetchFromGitLab, cudatoolkit
, cudaSupport ? false
, config
, cudaSupport ? config.cudaSupport
, pkg-config }:
gccStdenv.mkDerivation rec {

View file

@ -4207,7 +4207,7 @@ with pkgs;
libtensorflow = python3.pkgs.tensorflow.libtensorflow;
libtorch-bin = callPackage ../development/libraries/science/math/libtorch/bin.nix {
cudaSupport = config.cudaSupport or false;
inherit (config) cudaSupport;
};
tensorflow-lite = callPackage ../development/libraries/science/math/tensorflow-lite { };
@ -10904,7 +10904,7 @@ with pkgs;
nvidia-thrust-intel = callPackage ../development/libraries/nvidia-thrust {
hostSystem = "TBB";
deviceSystem = if config.cudaSupport or false then "CUDA" else "TBB";
deviceSystem = if config.cudaSupport then "CUDA" else "TBB";
};
nvidia-thrust-cuda = callPackage ../development/libraries/nvidia-thrust {
@ -15169,7 +15169,7 @@ with pkgs;
colm = callPackage ../development/compilers/colm { };
colmap = libsForQt5.callPackage ../applications/science/misc/colmap { cudaSupport = config.cudaSupport or false; };
colmap = libsForQt5.callPackage ../applications/science/misc/colmap { inherit (config) cudaSupport; };
colmapWithCuda = colmap.override { cudaSupport = true; };
chickenPackages_4 = callPackage ../development/compilers/chicken/4 { };
@ -39361,7 +39361,7 @@ with pkgs;
### SCIENCE / MATH
caffe = callPackage ../applications/science/math/caffe ({
cudaSupport = config.cudaSupport or false;
inherit (config) cudaSupport;
cudaPackages = cudaPackages_10_1;
opencv3 = opencv3WithoutCuda; # Used only for image loading.
blas = openblas;
@ -39376,7 +39376,7 @@ with pkgs;
stdenv = gcc7Stdenv;
inherit (linuxPackages) nvidia_x11;
opencv3 = opencv3WithoutCuda; # Used only for image loading.
cudaSupport = config.cudaSupport or false;
inherit (config) cudaSupport;
};
dap = callPackage ../applications/science/math/dap { };

View file

@ -117,6 +117,12 @@ let
'';
};
cudaSupport = mkMassRebuild {
type = types.bool;
default = false;
feature = "build packages with CUDA support by default";
};
showDerivationWarnings = mkOption {
type = types.listOf (types.enum [ "maintainerless" ]);
default = [];

View file

@ -1820,7 +1820,7 @@ self: super: with self; {
chai = callPackage ../development/python-modules/chai { };
chainer = callPackage ../development/python-modules/chainer {
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
};
chainmap = callPackage ../development/python-modules/chainmap { };
@ -5290,13 +5290,13 @@ self: super: with self; {
jax-jumpy = callPackage ../development/python-modules/jax-jumpy { };
jaxlib-bin = callPackage ../development/python-modules/jaxlib/bin.nix {
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
};
jaxlib-build = callPackage ../development/python-modules/jaxlib rec {
inherit (pkgs.darwin) cctools;
# Some platforms don't have `cudaSupport` defined, hence the need for 'or false'.
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
IOKit = pkgs.darwin.apple_sdk_11_0.IOKit;
protobuf = pkgs.protobuf3_20; # jaxlib-build 0.3.15 won't build with protobuf 3.21
};
@ -5841,7 +5841,7 @@ self: super: with self; {
libgpuarray = callPackage ../development/python-modules/libgpuarray {
clblas = pkgs.clblas.override { inherit (self) boost; };
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
};
libiio = (toPythonModule (pkgs.libiio.override { inherit python; })).python;
@ -7156,7 +7156,7 @@ self: super: with self; {
num2words = callPackage ../development/python-modules/num2words { };
numba = callPackage ../development/python-modules/numba {
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
};
numbaWithCuda = self.numba.override {
@ -7324,7 +7324,7 @@ self: super: with self; {
openai-triton-bin = callPackage ../development/python-modules/openai-triton/bin.nix { };
openai-whisper = callPackage ../development/python-modules/openai-whisper {
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
};
openant = callPackage ../development/python-modules/openant { };
@ -12371,12 +12371,12 @@ self: super: with self; {
tensorboardx = callPackage ../development/python-modules/tensorboardx { };
tensorflow-bin = callPackage ../development/python-modules/tensorflow/bin.nix {
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
};
tensorflow-build = callPackage ../development/python-modules/tensorflow {
inherit (pkgs.darwin) cctools;
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
inherit (self.tensorflow-bin) cudaPackages;
inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
flatbuffers-core = pkgs.flatbuffers;
@ -12495,7 +12495,7 @@ self: super: with self; {
theano-pymc = callPackage ../development/python-modules/theano-pymc { };
theano = callPackage ../development/python-modules/theano rec {
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
cudnnSupport = cudaSupport;
};
@ -12662,9 +12662,9 @@ self: super: with self; {
toposort = callPackage ../development/python-modules/toposort { };
torch = callPackage ../development/python-modules/torch {
cudaSupport = pkgs.config.cudaSupport or false;
inherit (pkgs.config) cudaSupport;
magma =
if pkgs.config.cudaSupport or false
if pkgs.config.cudaSupport
then pkgs.magma-cuda-static
else pkgs.magma;
inherit (pkgs.darwin.apple_sdk.frameworks) Accelerate CoreServices;