Unverified Commit c7badf89 authored by Connor Baker's avatar Connor Baker Committed by GitHub
Browse files

cudaPackages: remove 11.0-11.7 (#430797)

parents d14eb31e b21e0a58
Loading
Loading
Loading
Loading
+0 −105
Original line number Diff line number Diff line
@@ -28,111 +28,6 @@
      ```
  */
  nvccCompatibilities = {
    # Our baseline
    # https://docs.nvidia.com/cuda/archive/11.0/cuda-toolkit-release-notes/index.html#cuda-compiler-new-features
    "11.0" = {
      clang = {
        maxMajorVersion = "9";
        minMajorVersion = "7";
      };
      gcc = {
        maxMajorVersion = "9";
        minMajorVersion = "6";
      };
    };

    # Added support for Clang 10 and GCC 10
    # https://docs.nvidia.com/cuda/archive/11.1.1/cuda-toolkit-release-notes/index.html#cuda-compiler-new-features
    "11.1" = {
      clang = {
        maxMajorVersion = "10";
        minMajorVersion = "7";
      };
      gcc = {
        maxMajorVersion = "10";
        minMajorVersion = "6";
      };
    };

    # Added support for Clang 11
    # https://docs.nvidia.com/cuda/archive/11.2.2/cuda-installation-guide-linux/index.html#system-requirements
    "11.2" = {
      clang = {
        maxMajorVersion = "11";
        minMajorVersion = "7";
      };
      gcc = {
        maxMajorVersion = "10";
        minMajorVersion = "6";
      };
    };

    # No changes from 11.2 to 11.3
    "11.3" = {
      clang = {
        maxMajorVersion = "11";
        minMajorVersion = "7";
      };
      gcc = {
        maxMajorVersion = "10";
        minMajorVersion = "6";
      };
    };

    # Added support for Clang 12 and GCC 11
    # https://docs.nvidia.com/cuda/archive/11.4.4/cuda-toolkit-release-notes/index.html#cuda-general-new-features
    # NOTE: There is a bug in the version of GLIBC that GCC 11 uses which causes it to fail to compile some CUDA
    # code. As such, we skip it for this release, and do the bump in 11.6 (skipping 11.5).
    # https://forums.developer.nvidia.com/t/cuda-11-5-samples-throw-multiple-error-attribute-malloc-does-not-take-arguments/192750/15
    "11.4" = {
      clang = {
        maxMajorVersion = "12";
        minMajorVersion = "7";
      };
      gcc = {
        maxMajorVersion = "10";
        minMajorVersion = "6";
      };
    };

    # No changes from 11.4 to 11.5
    "11.5" = {
      clang = {
        maxMajorVersion = "12";
        minMajorVersion = "7";
      };
      gcc = {
        maxMajorVersion = "10";
        minMajorVersion = "6";
      };
    };

    # No changes from 11.5 to 11.6
    # However, as mentioned above, we add GCC 11 this release.
    "11.6" = {
      clang = {
        maxMajorVersion = "12";
        minMajorVersion = "7";
      };
      gcc = {
        maxMajorVersion = "11";
        minMajorVersion = "6";
      };
    };

    # Added support for Clang 13
    # https://docs.nvidia.com/cuda/archive/11.7.1/cuda-toolkit-release-notes/index.html#cuda-compiler-new-features
    "11.7" = {
      clang = {
        maxMajorVersion = "13";
        minMajorVersion = "7";
      };
      gcc = {
        maxMajorVersion = "11";
        minMajorVersion = "6";
      };
    };

    # Added support for Clang 14
    # https://docs.nvidia.com/cuda/archive/11.8.0/cuda-installation-guide-linux/index.html#system-requirements
    "11.8" = {
+6 −15
Original line number Diff line number Diff line
{
  cudaOlder,
  cudatoolkit,
  cudaMajorMinorVersion,
  fetchurl,
  lib,
  libcublas ? null, # cuDNN uses CUDA Toolkit on old releases, where libcublas is not available.
  libcublas,
  patchelf,
  zlib,
}:
let
  inherit (lib)
    lists
    attrsets
    maintainers
    meta
    strings
@@ -33,11 +32,10 @@ finalAttrs: prevAttrs: {
      "CUDA version is too new" = cudaTooNew;
    };

  buildInputs =
    prevAttrs.buildInputs or [ ]
    ++ [ zlib ]
    ++ lists.optionals finalAttrs.passthru.useCudatoolkitRunfile [ cudatoolkit ]
    ++ lists.optionals (!finalAttrs.passthru.useCudatoolkitRunfile) [ (libcublas.lib or null) ];
  buildInputs = prevAttrs.buildInputs or [ ] ++ [
    zlib
    (attrsets.getLib libcublas)
  ];

  # Tell autoPatchelf about runtime dependencies. *_infer* libraries only
  # exist in CuDNN 8.
@@ -55,10 +53,6 @@ finalAttrs: prevAttrs: {
          ${meta.getExe patchelf} $lib/lib/libcudnn_ops_infer.so --add-needed libcublas.so --add-needed libcublasLt.so
        '';

  passthru = prevAttrs.passthru or { } // {
    useCudatoolkitRunfile = cudaOlder "11.3.999";
  };

  meta = prevAttrs.meta or { } // {
    homepage = "https://developer.nvidia.com/cudnn";
    maintainers =
@@ -70,15 +64,12 @@ finalAttrs: prevAttrs: {
      ]);
    # TODO(@connorbaker): Temporary workaround to avoid changing the derivation hash since introducing more
    # brokenConditions would change the derivation as they're top-level and __structuredAttrs is set.
    broken =
      prevAttrs.meta.broken or false || (finalAttrs.passthru.useCudatoolkitRunfile && libcublas == null);
    teams = prevAttrs.meta.teams or [ ];
    license = {
      shortName = "cuDNN EULA";
      fullName = "NVIDIA cuDNN Software License Agreement (EULA)";
      url = "https://docs.nvidia.com/deeplearning/sdk/cudnn-sla/index.html#supplement";
      free = false;
      redistributable = !finalAttrs.passthru.useCudatoolkitRunfile;
    };
  };
}
+0 −6
Original line number Diff line number Diff line
{
  cudaOlder,
  lib,
  libcublas,
  numactl,
  rdma-core,
@@ -11,8 +9,4 @@ prevAttrs: {
    numactl
    rdma-core
  ];
  # Before 11.7 libcufile depends on itself for some reason.
  autoPatchelfIgnoreMissingDeps =
    prevAttrs.autoPatchelfIgnoreMissingDeps or [ ]
    ++ lib.lists.optionals (cudaOlder "11.7") [ "libcufile.so.0" ];
}
+5 −19
Original line number Diff line number Diff line
{
  cuda_cudart ? null,
  cudaAtLeast,
  cudaOlder,
  cudatoolkit,
  cuda_cudart,
  lib,
  libcublas ? null,
  libcublas,
}:
finalAttrs: prevAttrs: {
  buildInputs =
    prevAttrs.buildInputs or [ ]
    ++ lib.optionals (cudaOlder "11.4") [ cudatoolkit ]
    ++ lib.optionals (cudaAtLeast "11.4") (
      [ (libcublas.lib or null) ]
    ++ [ (lib.getLib libcublas) ]
    # For some reason, the 1.4.x release of cusparselt requires the cudart library.
      ++ lib.optionals (lib.hasPrefix "1.4" finalAttrs.version) [ (cuda_cudart.lib or null) ]
    );
    ++ lib.optionals (lib.hasPrefix "1.4" finalAttrs.version) [ (lib.getLib cuda_cudart) ];
  meta = prevAttrs.meta or { } // {
    description = "cuSPARSELt: A High-Performance CUDA Library for Sparse Matrix-Matrix Multiplication";
    homepage = "https://developer.nvidia.com/cusparselt-downloads";
    # TODO(@connorbaker): Temporary workaround to avoid changing the derivation hash since introducing more
    # brokenConditions would change the derivation as they're top-level and __structuredAttrs is set.
    broken =
      prevAttrs.meta.broken or false
      || (
        cudaAtLeast "11.4"
        && (libcublas == null || (lib.hasPrefix "1.4" finalAttrs.version && cuda_cudart == null))
      );
    maintainers = prevAttrs.meta.maintainers or [ ] ++ [ lib.maintainers.sepiabrown ];
    teams = prevAttrs.meta.teams or [ ];
    license = lib.licenses.unfreeRedistributable // {
+5 −19
Original line number Diff line number Diff line
{
  cuda_cudart ? null,
  cudaAtLeast,
  cudaOlder,
  cudatoolkit,
  cuda_cudart,
  lib,
  libcublas ? null,
  libcublas,
}:
finalAttrs: prevAttrs: {
  buildInputs =
    prevAttrs.buildInputs or [ ]
    ++ lib.optionals (cudaOlder "11.4") [ cudatoolkit ]
    ++ lib.optionals (cudaAtLeast "11.4") (
      [ (libcublas.lib or null) ]
    ++ [ (lib.getLib libcublas) ]
    # For some reason, the 1.4.x release of cuTENSOR requires the cudart library.
      ++ lib.optionals (lib.hasPrefix "1.4" finalAttrs.version) [ (cuda_cudart.lib or null) ]
    );
    ++ lib.optionals (lib.hasPrefix "1.4" finalAttrs.version) [ (lib.getLib cuda_cudart) ];
  meta = prevAttrs.meta or { } // {
    description = "cuTENSOR: A High-Performance CUDA Library For Tensor Primitives";
    homepage = "https://developer.nvidia.com/cutensor";
    # TODO(@connorbaker): Temporary workaround to avoid changing the derivation hash since introducing more
    # brokenConditions would change the derivation as they're top-level and __structuredAttrs is set.
    broken =
      prevAttrs.meta.broken or false
      || (
        cudaAtLeast "11.4"
        && (libcublas == null || (lib.hasPrefix "1.4" finalAttrs.version && cuda_cudart == null))
      );
    maintainers = prevAttrs.meta.maintainers or [ ] ++ [ lib.maintainers.obsidian-systems-maintenance ];
    teams = prevAttrs.meta.teams;
    license = lib.licenses.unfreeRedistributable // {
Loading