···8686 gcc = gcc10; # can bump to 11 along with stdenv.cc
8787 };
88888989+ # Make sure to only ever update this to a version that is compatible with the
9090+ # latest cudnn, nccl, cutensor, etc! It sometimes happens that CUDA versions
9191+ # are released prior to compatibility with the rest of the ecosystem. And
9292+ # don't forget to request a review from @NixOS/cuda-maintainers!
8993 cudatoolkit_11 = cudatoolkit_11_5;
9094}
···38383939 enableParallelBuilding = true;
40404141+ passthru = {
4242+ inherit cudatoolkit;
4343+ };
4444+4145 meta = with lib; {
4246 description = "Multi-GPU and multi-node collective communication primitives for NVIDIA GPUs";
4347 homepage = "https://developer.nvidia.com/nccl";
+11
pkgs/development/python-modules/cupy/default.nix
···55, addOpenGLRunpath
66}:
7788+assert cudnn.cudatoolkit == cudatoolkit;
99+assert cutensor.cudatoolkit == cudatoolkit;
1010+assert nccl.cudatoolkit == cudatoolkit;
1111+812buildPythonPackage rec {
913 pname = "cupy";
1014 version = "10.2.0";
···1519 sha256 = "sha256-5ovvA76QGOsOnVztMfDgLerks5nJrKR08rLc+ArmWA8=";
1620 };
17212222+ # See https://docs.cupy.dev/en/v10.2.0/reference/environment.html. Seting both
2323+ # CUPY_NUM_BUILD_JOBS and CUPY_NUM_NVCC_THREADS to NIX_BUILD_CORES results in
2424+ # a small amount of thrashing but it turns out there are a large number of
2525+ # very short builds and a few extremely long ones, so setting both ends up
2626+ # working nicely in practice.
1827 preConfigure = ''
1928 export CUDA_PATH=${cudatoolkit}
2929+ export CUPY_NUM_BUILD_JOBS="$NIX_BUILD_CORES"
3030+ export CUPY_NUM_NVCC_THREADS="$NIX_BUILD_CORES"
2031 '';
21322233 nativeBuildInputs = [
+7-3
pkgs/top-level/all-packages.nix
···46474647 cudnn_8_1_cudatoolkit_11_1
46484648 cudnn_8_1_cudatoolkit_11_2
46494649 cudnn_8_1_cudatoolkit_10
46504650- cudnn_8_1_cudatoolkit_11
46514650 cudnn_8_3_cudatoolkit_10_2
46524651 cudnn_8_3_cudatoolkit_11_0
46534652 cudnn_8_3_cudatoolkit_11_1
···46584657 cudnn_8_3_cudatoolkit_10
46594658 cudnn_8_3_cudatoolkit_11;
4660465946614661- # TODO(samuela): This is old and should be upgraded to 8.3 at some point.
46624662- cudnn = cudnn_7_6_cudatoolkit_10_1;
46604660+ # Make sure to keep this in sync with the `cudatoolkit` version!
46614661+ cudnn = cudnn_8_3_cudatoolkit_10;
4663466246644663 cutensorPackages = callPackages ../development/libraries/science/math/cutensor { };
46654664 inherit (cutensorPackages)
···3296232961 ### SCIENCE / MATH
32963329623296432963 caffe = callPackage ../applications/science/math/caffe ({
3296432964+ cudaSupport = config.cudaSupport or false;
3296532965+ cudatoolkit = cudatoolkit_10_1;
3296632966+ cudnn = cudnn_7_6_cudatoolkit_10_1;
3296532967 opencv3 = opencv3WithoutCuda; # Used only for image loading.
3296632968 blas = openblas;
3296732969 inherit (darwin.apple_sdk.frameworks) Accelerate CoreGraphics CoreVideo;
3296832970 } // (config.caffe or {}));
3297132971+3297232972+ caffeWithCuda = caffe.override { cudaSupport = true; };
32969329733297032974 caffe2 = callPackage ../development/libraries/science/math/caffe2 (rec {
3297132975 inherit (python3Packages) python future six numpy pydot;
+24-1
pkgs/top-level/python-packages.nix
···14591459 inherit (self) python numpy boost;
14601460 });
1461146114621462+ caffeWithCuda = toPythonModule (pkgs.caffeWithCuda.override {
14631463+ pythonSupport = true;
14641464+ inherit (self) python numpy boost;
14651465+ });
14661466+14621467 cairocffi = callPackage ../development/python-modules/cairocffi { };
1463146814641469 cairosvg = callPackage ../development/python-modules/cairosvg { };
···1961196619621967 cupy = callPackage ../development/python-modules/cupy {
19631968 cudatoolkit = pkgs.cudatoolkit_11;
19641964- cudnn = pkgs.cudnn_8_1_cudatoolkit_11;
19691969+ cudnn = pkgs.cudnn_8_3_cudatoolkit_11;
19651970 nccl = pkgs.nccl_cudatoolkit_11;
19661971 cutensor = pkgs.cutensor_cudatoolkit_11;
19671972 };
···8366837183678372 pytorch = callPackage ../development/python-modules/pytorch {
83688373 cudaSupport = pkgs.config.cudaSupport or false;
83748374+83758375+ # TODO: next time pytorch is updated (to 1.11.0, currently in staging as of
83768376+ # 2022-03-31), make the following changes:
83778377+83788378+ # -> cudatoolk_11
83798379+ cudatoolkit = pkgs.cudatoolkit_10;
83808380+83818381+ # -> cudnn_8_3_cudatoolkit_11
83828382+ cudnn = pkgs.cudnn_8_1_cudatoolkit_10;
83838383+83848384+ # -> cutensor_cudatoolkit_11 (cutensor is a new dependency in v1.11.0)
83858385+ # cutensor = pkgs.cutensor_cudatoolkit_11;
83868386+83878387+ # -> setting a custom magma should be unnecessary with v1.11.0
83888388+ magma = pkgs.magma.override { cudatoolkit = pkgs.cudatoolkit_10; };
83898389+83908390+ # -> nccl_cudatoolkit_11
83918391+ nccl = pkgs.nccl.override { cudatoolkit = pkgs.cudatoolkit_10; };
83698392 };
8370839383718394 pytorch-bin = callPackage ../development/python-modules/pytorch/bin.nix { };