···86 gcc = gcc10; # can bump to 11 along with stdenv.cc
87 };
88000089 cudatoolkit_11 = cudatoolkit_11_5;
90}
···86 gcc = gcc10; # can bump to 11 along with stdenv.cc
87 };
8889+ # Make sure to only ever update this to a version that is compatible with the
90+ # latest cudnn, nccl, cutensor, etc! It sometimes happens that CUDA versions
91+ # are released prior to compatibility with the rest of the ecosystem. And
92+ # don't forget to request a review from @NixOS/cuda-maintainers!
93 cudatoolkit_11 = cudatoolkit_11_5;
94}
···5, addOpenGLRunpath
6}:
78+assert cudnn.cudatoolkit == cudatoolkit;
9+assert cutensor.cudatoolkit == cudatoolkit;
10+assert nccl.cudatoolkit == cudatoolkit;
11+12buildPythonPackage rec {
13 pname = "cupy";
14 version = "10.2.0";
···19 sha256 = "sha256-5ovvA76QGOsOnVztMfDgLerks5nJrKR08rLc+ArmWA8=";
20 };
2122+ # See https://docs.cupy.dev/en/v10.2.0/reference/environment.html. Seting both
23+ # CUPY_NUM_BUILD_JOBS and CUPY_NUM_NVCC_THREADS to NIX_BUILD_CORES results in
24+ # a small amount of thrashing but it turns out there are a large number of
25+ # very short builds and a few extremely long ones, so setting both ends up
26+ # working nicely in practice.
27 preConfigure = ''
28 export CUDA_PATH=${cudatoolkit}
29+ export CUPY_NUM_BUILD_JOBS="$NIX_BUILD_CORES"
30+ export CUPY_NUM_NVCC_THREADS="$NIX_BUILD_CORES"
31 '';
3233 nativeBuildInputs = [
+7-3
pkgs/top-level/all-packages.nix
···4647 cudnn_8_1_cudatoolkit_11_1
4648 cudnn_8_1_cudatoolkit_11_2
4649 cudnn_8_1_cudatoolkit_10
4650- cudnn_8_1_cudatoolkit_11
4651 cudnn_8_3_cudatoolkit_10_2
4652 cudnn_8_3_cudatoolkit_11_0
4653 cudnn_8_3_cudatoolkit_11_1
···4658 cudnn_8_3_cudatoolkit_10
4659 cudnn_8_3_cudatoolkit_11;
46604661- # TODO(samuela): This is old and should be upgraded to 8.3 at some point.
4662- cudnn = cudnn_7_6_cudatoolkit_10_1;
46634664 cutensorPackages = callPackages ../development/libraries/science/math/cutensor { };
4665 inherit (cutensorPackages)
···32962 ### SCIENCE / MATH
3296332964 caffe = callPackage ../applications/science/math/caffe ({
00032965 opencv3 = opencv3WithoutCuda; # Used only for image loading.
32966 blas = openblas;
32967 inherit (darwin.apple_sdk.frameworks) Accelerate CoreGraphics CoreVideo;
32968 } // (config.caffe or {}));
003296932970 caffe2 = callPackage ../development/libraries/science/math/caffe2 (rec {
32971 inherit (python3Packages) python future six numpy pydot;
···4647 cudnn_8_1_cudatoolkit_11_1
4648 cudnn_8_1_cudatoolkit_11_2
4649 cudnn_8_1_cudatoolkit_10
04650 cudnn_8_3_cudatoolkit_10_2
4651 cudnn_8_3_cudatoolkit_11_0
4652 cudnn_8_3_cudatoolkit_11_1
···4657 cudnn_8_3_cudatoolkit_10
4658 cudnn_8_3_cudatoolkit_11;
46594660+ # Make sure to keep this in sync with the `cudatoolkit` version!
4661+ cudnn = cudnn_8_3_cudatoolkit_10;
46624663 cutensorPackages = callPackages ../development/libraries/science/math/cutensor { };
4664 inherit (cutensorPackages)
···32961 ### SCIENCE / MATH
3296232963 caffe = callPackage ../applications/science/math/caffe ({
32964+ cudaSupport = config.cudaSupport or false;
32965+ cudatoolkit = cudatoolkit_10_1;
32966+ cudnn = cudnn_7_6_cudatoolkit_10_1;
32967 opencv3 = opencv3WithoutCuda; # Used only for image loading.
32968 blas = openblas;
32969 inherit (darwin.apple_sdk.frameworks) Accelerate CoreGraphics CoreVideo;
32970 } // (config.caffe or {}));
32971+32972+ caffeWithCuda = caffe.override { cudaSupport = true; };
3297332974 caffe2 = callPackage ../development/libraries/science/math/caffe2 (rec {
32975 inherit (python3Packages) python future six numpy pydot;