From e5e38773a5c6d4c4ba215be87439420b88c9fd2b Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 01:35:43 +0300 Subject: [PATCH 01/12] cudatoolkit: 10.2 -> 11.4 also downgrade cudatoolkit_11: 11.5 -> 11.4 --- .../compilers/cudatoolkit/default.nix | 2 +- pkgs/top-level/all-packages.nix | 6 +++--- pkgs/top-level/python-packages.nix | 18 ------------------ 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix index 4fa99f80c8e3..dec0756bdab7 100644 --- a/pkgs/development/compilers/cudatoolkit/default.nix +++ b/pkgs/development/compilers/cudatoolkit/default.nix @@ -90,5 +90,5 @@ rec { # latest cudnn, nccl, cutensor, etc! It sometimes happens that CUDA versions # are released prior to compatibility with the rest of the ecosystem. And # don't forget to request a review from @NixOS/cuda-maintainers! - cudatoolkit_11 = cudatoolkit_11_5; + cudatoolkit_11 = cudatoolkit_11_4; # update to 11.5 or 11.6 when pytorch reaches 1.11 } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 21345ef8d88a..10f279a55b07 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4625,7 +4625,7 @@ with pkgs; cudatoolkit_11_5 cudatoolkit_11_6; - cudatoolkit = cudatoolkit_10; + cudatoolkit = cudatoolkit_11; cudnnPackages = callPackages ../development/libraries/science/math/cudnn { }; inherit (cudnnPackages) @@ -4648,7 +4648,7 @@ with pkgs; cudnn_8_3_cudatoolkit_11; # Make sure to keep this in sync with the `cudatoolkit` version! - cudnn = cudnn_8_3_cudatoolkit_10; + cudnn = cudnn_8_3_cudatoolkit_11; cutensorPackages = callPackages ../development/libraries/science/math/cutensor { }; inherit (cutensorPackages) @@ -4662,7 +4662,7 @@ with pkgs; cutensor_cudatoolkit_11_3 cutensor_cudatoolkit_11_4; - cutensor = cutensor_cudatoolkit_10; + cutensor = cutensor_cudatoolkit_11; curie = callPackage ../data/fonts/curie { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 80d02059aed3..1e798b5b1bf2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8375,24 +8375,6 @@ in { pytorch = callPackage ../development/python-modules/pytorch { cudaSupport = pkgs.config.cudaSupport or false; - - # TODO: next time pytorch is updated (to 1.11.0, currently in staging as of - # 2022-03-31), make the following changes: - - # -> cudatoolk_11 - cudatoolkit = pkgs.cudatoolkit_10; - - # -> cudnn_8_3_cudatoolkit_11 - cudnn = pkgs.cudnn_8_1_cudatoolkit_10; - - # -> cutensor_cudatoolkit_11 (cutensor is a new dependency in v1.11.0) - # cutensor = pkgs.cutensor_cudatoolkit_11; - - # -> setting a custom magma should be unnecessary with v1.11.0 - magma = pkgs.magma.override { cudatoolkit = pkgs.cudatoolkit_10; }; - - # -> nccl_cudatoolkit_11 - nccl = pkgs.nccl.override { cudatoolkit = pkgs.cudatoolkit_10; }; }; pytorch-bin = callPackage ../development/python-modules/pytorch/bin.nix { }; From 226fabb1a6ef81a4b089d4879cf1c46bfd6add4f Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 02:32:19 +0300 Subject: [PATCH 02/12] python3Packages.mxnet: pass explicit cuda gencodes --- pkgs/applications/science/math/mxnet/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/applications/science/math/mxnet/default.nix b/pkgs/applications/science/math/mxnet/default.nix index c9ffb8ed5cb3..45b655f9f4a2 100644 --- a/pkgs/applications/science/math/mxnet/default.nix +++ b/pkgs/applications/science/math/mxnet/default.nix @@ -2,6 +2,7 @@ , opencv3, gtest, blas, gomp, llvmPackages, perl , cudaSupport ? config.cudaSupport or false, cudatoolkit, nvidia_x11 , cudnnSupport ? cudaSupport, cudnn +, cudaCapabilities ? [ "3.7" "5.0" "6.0" "7.0" "7.5" "8.0" "8.6" ] }: assert cudnnSupport -> cudaSupport; @@ -44,6 +45,7 @@ stdenv.mkDerivation rec { "-DUSE_OLDCMAKECUDA=ON" # see https://github.com/apache/incubator-mxnet/issues/10743 "-DCUDA_ARCH_NAME=All" "-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/cc" + "-DMXNET_CUDA_ARCH=${lib.concatStringsSep ";" cudaCapabilities}" ] else [ "-DUSE_CUDA=OFF" ]) ++ lib.optional (!cudnnSupport) "-DUSE_CUDNN=OFF"; From be32f3d54bc79eb408cd4561c40e80c0c8134605 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 04:55:44 +0300 Subject: [PATCH 03/12] ethminer: fix cuda11 support cuda11 removes support for compute_30 cosmetic changes: move postPatch and patches closer to src --- pkgs/tools/misc/ethminer/default.nix | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/pkgs/tools/misc/ethminer/default.nix b/pkgs/tools/misc/ethminer/default.nix index ce68e9f82098..32d1c5500b80 100644 --- a/pkgs/tools/misc/ethminer/default.nix +++ b/pkgs/tools/misc/ethminer/default.nix @@ -1,6 +1,7 @@ { lib, stdenv, + fetchpatch, fetchFromGitHub, opencl-headers, cmake, @@ -31,6 +32,21 @@ stdenv.mkDerivation rec { fetchSubmodules = true; }; + patches = [ + # global context library is separated from libethash + ./add-global-context.patch + + # CUDA 11 no longer support SM30 + (fetchpatch { + url = "https://github.com/ethereum-mining/ethminer/commit/dae359dff28f376d4ce7ddfbd651dcd34d6dad8f.patch"; + hash = "sha256-CJGKc0rXOcKDX1u5VBzc8gyBi1Me9CNATfQzKViqtAA="; + }) + ]; + + postPatch = '' + sed -i 's/_lib_static//' libpoolprotocols/CMakeLists.txt + ''; + # NOTE: dbus is broken cmakeFlags = [ "-DHUNTER_ENABLED=OFF" @@ -64,15 +80,6 @@ stdenv.mkDerivation rec { cudatoolkit ]; - patches = [ - # global context library is separated from libethash - ./add-global-context.patch - ]; - - preConfigure = '' - sed -i 's/_lib_static//' libpoolprotocols/CMakeLists.txt - ''; - postInstall = '' wrapProgram $out/bin/ethminer --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib ''; From 3655e56e5832c447adfc40d13b180912f5957a79 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 05:01:21 +0300 Subject: [PATCH 04/12] gpu-screen-recorder{,-gtk}: only build with cuda10 --- pkgs/top-level/all-packages.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 10f279a55b07..5d0aa0d6533b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -26406,7 +26406,10 @@ with pkgs; gpsprune = callPackage ../applications/misc/gpsprune { }; - gpu-screen-recorder = callPackage ../applications/video/gpu-screen-recorder { }; + gpu-screen-recorder = callPackage ../applications/video/gpu-screen-recorder { + # rm me as soon as this package gains the support for cuda 11 + cudatoolkit = cudatoolkit_10; + }; gpu-screen-recorder-gtk = callPackage ../applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix { }; From b1674bf9a5f4996348267d02bd25bcfc5d4bc284 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 05:03:53 +0300 Subject: [PATCH 05/12] truecrack: doesn't build with cudaSupport --- pkgs/tools/security/truecrack/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/tools/security/truecrack/default.nix b/pkgs/tools/security/truecrack/default.nix index cf64b234c66f..40d0ba213fb9 100644 --- a/pkgs/tools/security/truecrack/default.nix +++ b/pkgs/tools/security/truecrack/default.nix @@ -33,6 +33,7 @@ gccStdenv.mkDerivation rec { meta = with lib; { description = "TrueCrack is a brute-force password cracker for TrueCrypt volumes. It works on Linux and it is optimized for Nvidia Cuda technology."; homepage = "https://gitlab.com/kalilinux/packages/truecrack"; + broken = cudaSupport; license = licenses.gpl3Plus; platforms = platforms.unix; maintainers = with maintainers; [ ethancedwards8 ]; From 565201d7696221c3110ea54f6767437808a60f9d Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 19:02:03 +0300 Subject: [PATCH 06/12] python310Packages.mxnet: mark cudaSupport broken --- pkgs/applications/science/math/mxnet/default.nix | 6 ++++++ pkgs/development/python-modules/mxnet/default.nix | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/science/math/mxnet/default.nix b/pkgs/applications/science/math/mxnet/default.nix index 45b655f9f4a2..8e5e1ebd7e80 100644 --- a/pkgs/applications/science/math/mxnet/default.nix +++ b/pkgs/applications/science/math/mxnet/default.nix @@ -62,6 +62,12 @@ stdenv.mkDerivation rec { rm "$out"/lib/*.a ''; + # used to mark cudaSupport in python310Packages.mxnet as broken; + # other attributes exposed for consistency + passthru = { + inherit cudaSupport cudnnSupport cudatoolkit cudnn; + }; + meta = with lib; { description = "Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler"; homepage = "https://mxnet.incubator.apache.org/"; diff --git a/pkgs/development/python-modules/mxnet/default.nix b/pkgs/development/python-modules/mxnet/default.nix index 47f4d80ad927..a9e778bdd8c6 100644 --- a/pkgs/development/python-modules/mxnet/default.nix +++ b/pkgs/development/python-modules/mxnet/default.nix @@ -6,10 +6,11 @@ , graphviz , python , isPy3k +, isPy310 }: buildPythonPackage { - inherit (pkgs.mxnet) pname version src meta; + inherit (pkgs.mxnet) pname version src; buildInputs = [ pkgs.mxnet ]; propagatedBuildInputs = [ requests numpy graphviz ]; @@ -32,4 +33,7 @@ buildPythonPackage { ln -s ${pkgs.mxnet}/lib/libmxnet.so $out/${python.sitePackages}/mxnet ''; + meta = pkgs.mxnet.meta // { + broken = (pkgs.mxnet.broken or false) || (isPy310 && pkgs.mxnet.cudaSupport); + }; } From c007910a44024451b02d45ba0bb1f7bb7059cc68 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 19:26:32 +0300 Subject: [PATCH 07/12] opensubdiv: disable opencl when building cuda --- pkgs/development/libraries/opensubdiv/default.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/opensubdiv/default.nix b/pkgs/development/libraries/opensubdiv/default.nix index 83eb77b603c5..026465c97ae8 100644 --- a/pkgs/development/libraries/opensubdiv/default.nix +++ b/pkgs/development/libraries/opensubdiv/default.nix @@ -1,6 +1,10 @@ { config, lib, stdenv, fetchFromGitHub, cmake, pkg-config, xorg, libGLU , libGL, glew, ocl-icd, python3 , cudaSupport ? config.cudaSupport or false, cudatoolkit + # For visibility mostly. The whole approach to cuda architectures and capabilities + # will be reworked soon. +, cudaArch ? "compute_37" +, openclSupport ? !cudaSupport , darwin }: @@ -24,7 +28,7 @@ stdenv.mkDerivation rec { glew xorg.libX11 xorg.libXrandr xorg.libXxf86vm xorg.libXcursor xorg.libXinerama xorg.libXi ] - ++ lib.optional (!stdenv.isDarwin) ocl-icd + ++ lib.optional (openclSupport && !stdenv.isDarwin) ocl-icd ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [OpenCL Cocoa CoreVideo IOKit AppKit AGL ]) ++ lib.optional cudaSupport cudatoolkit; @@ -37,8 +41,10 @@ stdenv.mkDerivation rec { "-DGLEW_INCLUDE_DIR=${glew.dev}/include" "-DGLEW_LIBRARY=${glew.dev}/lib" ] ++ lib.optionals cudaSupport [ - "-DOSD_CUDA_NVCC_FLAGS=--gpu-architecture=compute_30" + "-DOSD_CUDA_NVCC_FLAGS=--gpu-architecture=${cudaArch}" "-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/cc" + ] ++ lib.optionals (!openclSupport) [ + "-DNO_OPENCL=1" ]; postInstall = "rm $out/lib/*.a"; @@ -46,6 +52,7 @@ stdenv.mkDerivation rec { meta = { description = "An Open-Source subdivision surface library"; homepage = "http://graphics.pixar.com/opensubdiv"; + broken = openclSupport && cudaSupport; platforms = lib.platforms.unix; maintainers = [ lib.maintainers.eelco ]; license = lib.licenses.asl20; From 42e8edcfc69bd728aa920f41aacdce4b8e2003a7 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 19:31:15 +0300 Subject: [PATCH 08/12] python3Packages.chainer: mark cudaSupport broken --- pkgs/development/python-modules/chainer/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/chainer/default.nix b/pkgs/development/python-modules/chainer/default.nix index b7dbfca70e8a..1b40d506abc1 100644 --- a/pkgs/development/python-modules/chainer/default.nix +++ b/pkgs/development/python-modules/chainer/default.nix @@ -1,6 +1,6 @@ -{ lib, buildPythonPackage, fetchFromGitHub, isPy3k +{ config, lib, buildPythonPackage, fetchFromGitHub, isPy3k , filelock, protobuf, numpy, pytestCheckHook, mock, typing-extensions -, cupy, cudaSupport ? false +, cupy, cudaSupport ? config.cudaSupport or false }: buildPythonPackage rec { @@ -39,6 +39,8 @@ buildPythonPackage rec { meta = with lib; { description = "A flexible framework of neural networks for deep learning"; homepage = "https://chainer.org/"; + # Un-break me when updating chainer next time! + broken = cudaSupport && (lib.versionAtLeast cupy.version "8.0.0"); license = licenses.mit; maintainers = with maintainers; [ hyphon81 ]; }; From 1b74f75b599493ad41118de40df9a2afeabdf98b Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 19:52:49 +0300 Subject: [PATCH 09/12] python310Packages.caffe: mark as broken --- pkgs/applications/science/math/caffe/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/science/math/caffe/default.nix b/pkgs/applications/science/math/caffe/default.nix index 74b89ed98c55..db2e74f24523 100644 --- a/pkgs/applications/science/math/caffe/default.nix +++ b/pkgs/applications/science/math/caffe/default.nix @@ -138,6 +138,7 @@ stdenv.mkDerivation rec { ''; homepage = "http://caffe.berkeleyvision.org/"; maintainers = with maintainers; [ ]; + broken = pythonSupport && (python.isPy310); license = licenses.bsd2; platforms = platforms.linux ++ platforms.darwin; }; From 7e780e73121c4faf01b91a23ee91cad6e0811d0e Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Tue, 5 Apr 2022 23:50:46 +0300 Subject: [PATCH 10/12] cudatoolkit_11: 11.4 -> 11.6 --- pkgs/development/compilers/cudatoolkit/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix index dec0756bdab7..b02926f7e119 100644 --- a/pkgs/development/compilers/cudatoolkit/default.nix +++ b/pkgs/development/compilers/cudatoolkit/default.nix @@ -90,5 +90,5 @@ rec { # latest cudnn, nccl, cutensor, etc! It sometimes happens that CUDA versions # are released prior to compatibility with the rest of the ecosystem. And # don't forget to request a review from @NixOS/cuda-maintainers! - cudatoolkit_11 = cudatoolkit_11_4; # update to 11.5 or 11.6 when pytorch reaches 1.11 + cudatoolkit_11 = cudatoolkit_11_6; } From 4eda7cf9e877d08daf4f26e87097354ec2a1df00 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Wed, 6 Apr 2022 00:50:25 +0300 Subject: [PATCH 11/12] cudnn 8.3.2: unbreak for cuda 11.6 It has been added to the official support matrix: https://docs.nvidia.com/deeplearning/cudnn/support-matrix/#cudnn-cuda-hardware-versions --- pkgs/development/libraries/science/math/cudnn/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/science/math/cudnn/default.nix b/pkgs/development/libraries/science/math/cudnn/default.nix index a3f785c5b38f..d07f7e6c0b2e 100644 --- a/pkgs/development/libraries/science/math/cudnn/default.nix +++ b/pkgs/development/libraries/science/math/cudnn/default.nix @@ -15,6 +15,7 @@ , cudatoolkit_11_3 , cudatoolkit_11_4 , cudatoolkit_11_5 +, cudatoolkit_11_6 , fetchurl , lib }: @@ -89,7 +90,7 @@ rec { cudatoolkit = cudatoolkit_10_2; # See https://docs.nvidia.com/deeplearning/cudnn/archives/cudnn-832/support-matrix/index.html#cudnn-cuda-hardware-versions. minCudaVersion = "10.2.00000"; - maxCudaVersion = "11.5.99999"; + maxCudaVersion = "11.6.00001"; mkSrc = cudatoolkit: let v = if lib.versions.majorMinor cudatoolkit.version == "10.2" then "10.2" else "11.5"; in fetchurl { @@ -108,6 +109,7 @@ rec { cudnn_8_3_cudatoolkit_11_3 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_3; }; cudnn_8_3_cudatoolkit_11_4 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_4; }; cudnn_8_3_cudatoolkit_11_5 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_5; }; + cudnn_8_3_cudatoolkit_11_6 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_6; }; cudnn_8_3_cudatoolkit_10 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_10; }; cudnn_8_3_cudatoolkit_11 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11; }; From 386fb0c3cf119a3bb4b83d2379aa9c3f9cbdd009 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Wed, 6 Apr 2022 01:11:46 +0300 Subject: [PATCH 12/12] cudatoolkit: 11.6 -> 11.5 --- pkgs/development/compilers/cudatoolkit/default.nix | 2 +- pkgs/development/libraries/science/math/cudnn/default.nix | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix index b02926f7e119..d7fa6ee59f0a 100644 --- a/pkgs/development/compilers/cudatoolkit/default.nix +++ b/pkgs/development/compilers/cudatoolkit/default.nix @@ -90,5 +90,5 @@ rec { # latest cudnn, nccl, cutensor, etc! It sometimes happens that CUDA versions # are released prior to compatibility with the rest of the ecosystem. And # don't forget to request a review from @NixOS/cuda-maintainers! - cudatoolkit_11 = cudatoolkit_11_6; + cudatoolkit_11 = cudatoolkit_11_5; # update me to 11_6 when cudnn>=8.3.3 } diff --git a/pkgs/development/libraries/science/math/cudnn/default.nix b/pkgs/development/libraries/science/math/cudnn/default.nix index d07f7e6c0b2e..a3f785c5b38f 100644 --- a/pkgs/development/libraries/science/math/cudnn/default.nix +++ b/pkgs/development/libraries/science/math/cudnn/default.nix @@ -15,7 +15,6 @@ , cudatoolkit_11_3 , cudatoolkit_11_4 , cudatoolkit_11_5 -, cudatoolkit_11_6 , fetchurl , lib }: @@ -90,7 +89,7 @@ rec { cudatoolkit = cudatoolkit_10_2; # See https://docs.nvidia.com/deeplearning/cudnn/archives/cudnn-832/support-matrix/index.html#cudnn-cuda-hardware-versions. minCudaVersion = "10.2.00000"; - maxCudaVersion = "11.6.00001"; + maxCudaVersion = "11.5.99999"; mkSrc = cudatoolkit: let v = if lib.versions.majorMinor cudatoolkit.version == "10.2" then "10.2" else "11.5"; in fetchurl { @@ -109,7 +108,6 @@ rec { cudnn_8_3_cudatoolkit_11_3 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_3; }; cudnn_8_3_cudatoolkit_11_4 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_4; }; cudnn_8_3_cudatoolkit_11_5 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_5; }; - cudnn_8_3_cudatoolkit_11_6 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_6; }; cudnn_8_3_cudatoolkit_10 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_10; }; cudnn_8_3_cudatoolkit_11 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11; };