From c3826c2220a15fb91b12782405d178e18e13f809 Mon Sep 17 00:00:00 2001 From: Conroy Cheers Date: Tue, 22 Oct 2024 13:19:39 +1100 Subject: [PATCH 1/5] python3Packages.cupy: remove pin to cudaPackages_11 --- pkgs/top-level/python-packages.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e06c9c267787..d366c45cd051 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2832,8 +2832,7 @@ self: super: with self; { cufflinks = callPackage ../development/python-modules/cufflinks { }; cupy = callPackage ../development/python-modules/cupy { - # cupy 12.2.0 possibly incompatible with cutensor 2.0 that comes with cudaPackages_12 - cudaPackages = pkgs.cudaPackages_11.overrideScope (cu-fi: _: { + cudaPackages = pkgs.cudaPackages.overrideScope (cu-fi: _: { # CuDNN 9 is not supported: # https://github.com/cupy/cupy/issues/8215 cudnn = cu-fi.cudnn_8_9; From 253e4ff72a460db714683bfa43f12b4c8bfb370c Mon Sep 17 00:00:00 2001 From: Conroy Cheers Date: Tue, 22 Oct 2024 15:31:23 +1100 Subject: [PATCH 2/5] python3Packages.cupy: update build toolchain --- pkgs/development/cuda-modules/cudnn/releases.nix | 6 +++--- pkgs/development/python-modules/cupy/default.nix | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/development/cuda-modules/cudnn/releases.nix b/pkgs/development/cuda-modules/cudnn/releases.nix index 586bdecf67c0..13b330f9490b 100644 --- a/pkgs/development/cuda-modules/cudnn/releases.nix +++ b/pkgs/development/cuda-modules/cudnn/releases.nix @@ -7,7 +7,7 @@ { version = "8.9.5.30"; minCudaVersion = "12.0"; - maxCudaVersion = "12.2"; + maxCudaVersion = "12.4"; url = "https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-aarch64/cudnn-linux-aarch64-8.9.5.30_cuda12-archive.tar.xz"; hash = "sha256-BJH3sC9VwiB362eL8xTB+RdSS9UHz1tlgjm/mKRyM6E="; } @@ -75,7 +75,7 @@ { version = "8.9.7.29"; minCudaVersion = "12.0"; - maxCudaVersion = "12.2"; + maxCudaVersion = "12.4"; url = "https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-sbsa/cudnn-linux-sbsa-8.9.7.29_cuda12-archive.tar.xz"; hash = "sha256-6Yt8gAEHheXVygHuTOm1sMjHNYfqb4ZIvjTT+NHUe9E="; } @@ -183,7 +183,7 @@ { version = "8.9.7.29"; minCudaVersion = "12.0"; - maxCudaVersion = "12.2"; + maxCudaVersion = "12.4"; url = "https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz"; hash = "sha256-R1MzYlx+QqevPKCy91BqEG4wyTsaoAgc2cE++24h47s="; } diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix index 83cde3be9a9a..525b593f23e5 100644 --- a/pkgs/development/python-modules/cupy/default.nix +++ b/pkgs/development/python-modules/cupy/default.nix @@ -47,6 +47,8 @@ buildPythonPackage rec { disabled = pythonOlder "3.7"; + stdenv = cudaPackages.backendStdenv; + src = fetchFromGitHub { owner = "cupy"; repo = "cupy"; @@ -118,7 +120,7 @@ buildPythonPackage rec { homepage = "https://cupy.chainer.org/"; changelog = "https://github.com/cupy/cupy/releases/tag/v${version}"; license = licenses.mit; - platforms = [ "x86_64-linux" ]; + platforms = [ "x86_64-linux" "aarch64-linux" ]; maintainers = with maintainers; [ hyphon81 ]; }; } From c26df0c165ac0340d030cae36d6f7de7315f776c Mon Sep 17 00:00:00 2001 From: Conroy Cheers Date: Fri, 25 Oct 2024 17:21:46 +1100 Subject: [PATCH 3/5] python3Packages.cupy: make cuda_nvprof, cutensor and nccl optional --- pkgs/development/python-modules/cupy/default.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix index 525b593f23e5..1d7cf072fbcc 100644 --- a/pkgs/development/python-modules/cupy/default.nix +++ b/pkgs/development/python-modules/cupy/default.nix @@ -1,5 +1,6 @@ { lib, + stdenv, buildPythonPackage, fetchFromGitHub, cython_0, @@ -17,7 +18,15 @@ }: let - inherit (cudaPackages) cudnn cutensor nccl; + inherit (cudaPackages) cudnn; + + shouldUsePkg = pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null; + + # some packages are not available on all platforms + cuda_nvprof = shouldUsePkg (cudaPackages.nvprof or null); + cutensor = shouldUsePkg (cudaPackages.cutensor or null); + nccl = shouldUsePkg (cudaPackages.nccl or null); + outpaths = with cudaPackages; [ cuda_cccl # cuda_cudart From f7f3f15f7f32356e0f8fd851ced90a3dc9a3543e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 2 Feb 2025 23:06:44 +0100 Subject: [PATCH 4/5] python3Packages.cupy: drop upstreamed patch --- pkgs/development/python-modules/cupy/default.nix | 8 -------- 1 file changed, 8 deletions(-) diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix index 1d7cf072fbcc..b9a1ba20b52a 100644 --- a/pkgs/development/python-modules/cupy/default.nix +++ b/pkgs/development/python-modules/cupy/default.nix @@ -66,14 +66,6 @@ buildPythonPackage rec { fetchSubmodules = true; }; - patches = [ - (fetchpatch { - url = - "https://github.com/cfhammill/cupy/commit/67526c756e4a0a70f0420bf0e7f081b8a35a8ee5.patch"; - hash = "sha256-WZgexBdM9J0ep5s+9CGZriVq0ZidCRccox+g0iDDywQ="; - }) - ]; - # See https://docs.cupy.dev/en/v10.2.0/reference/environment.html. Seting both # CUPY_NUM_BUILD_JOBS and CUPY_NUM_NVCC_THREADS to NIX_BUILD_CORES results in # a small amount of thrashing but it turns out there are a large number of From 23b117dda8db4824f0b6a9e9a5af9c4194aaca13 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 2 Feb 2025 23:24:19 +0100 Subject: [PATCH 5/5] python3Packages.cupy: format with nixfmt --- .../python-modules/cupy/default.nix | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix index b9a1ba20b52a..16e2b58c3fab 100644 --- a/pkgs/development/python-modules/cupy/default.nix +++ b/pkgs/development/python-modules/cupy/default.nix @@ -14,13 +14,13 @@ addDriverRunpath, pythonOlder, symlinkJoin, - fetchpatch }: let inherit (cudaPackages) cudnn; - shouldUsePkg = pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null; + shouldUsePkg = + pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null; # some packages are not available on all platforms cuda_nvprof = shouldUsePkg (cudaPackages.nvprof or null); @@ -28,25 +28,32 @@ let nccl = shouldUsePkg (cudaPackages.nccl or null); outpaths = with cudaPackages; [ - cuda_cccl # - cuda_cudart - cuda_nvcc # - cuda_nvprof - cuda_nvrtc - cuda_nvtx - cuda_profiler_api - libcublas - libcufft - libcurand - libcusolver - libcusparse + cuda_cccl # + cuda_cudart + cuda_nvcc # + cuda_nvprof + cuda_nvrtc + cuda_nvtx + cuda_profiler_api + libcublas + libcufft + libcurand + libcusolver + libcusparse - # Missing: - # cusparselt + # Missing: + # cusparselt ]; cudatoolkit-joined = symlinkJoin { name = "cudatoolkit-joined-${cudaPackages.cudaVersion}"; - paths = outpaths ++ lib.concatMap (f: lib.map f outpaths) [lib.getLib lib.getDev (lib.getOutput "static") (lib.getOutput "stubs")]; + paths = + outpaths + ++ lib.concatMap (f: lib.map f outpaths) [ + lib.getLib + lib.getDev + (lib.getOutput "static") + (lib.getOutput "stubs") + ]; }; in buildPythonPackage rec { @@ -121,7 +128,10 @@ buildPythonPackage rec { homepage = "https://cupy.chainer.org/"; changelog = "https://github.com/cupy/cupy/releases/tag/v${version}"; license = licenses.mit; - platforms = [ "x86_64-linux" "aarch64-linux" ]; + platforms = [ + "aarch64-linux" + "x86_64-linux" + ]; maintainers = with maintainers; [ hyphon81 ]; }; }