Unverified Commit 953e37fd authored by Gaétan Lepage's avatar Gaétan Lepage Committed by GitHub
Browse files

[Backport release-25.11] cudaPackages.tensorrt: 10.9.0 -> 10.14.1 (for...

[Backport release-25.11] cudaPackages.tensorrt: 10.9.0 -> 10.14.1 (for non-Jetson and Thor) (#465955)
parents 83537eca ff6ae0d0
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -61,6 +61,17 @@ stdenv'.mkDerivation rec {
    makeWrapper
  ];

  # Included from release 1.16.2:
  # https://github.com/lightvector/KataGo/commit/9030f72d152da42c1dd03590aa5116993ea842f6
  # Doesn't apply cleanly as a patch so doing a quick replacement to the same effect.
  prePatch = lib.optionalString (backend == "tensorrt") ''
    nixLog "patching $PWD/cpp/CMakeLists.txt to work around outdated TensorRT version detection"
    substituteInPlace "$PWD/cpp/CMakeLists.txt" \
      --replace-fail \
        'if(TENSORRT_VERSION VERSION_LESS 8.5)' \
        'if(NOT TENSORRT_VERSION STREQUAL ".." AND TENSORRT_VERSION VERSION_LESS 8.5)'
  '';

  buildInputs = [
    libzip
    boost
+36 −0
Original line number Diff line number Diff line
{
    "release_date": "2025-11-04",
    "release_label": "10.14.1",
    "release_product": "tensorrt",
    "tensorrt": {
        "name": "NVIDIA TensorRT",
        "license": "TensorRT",
        "version": "10.14.1.48",
        "cuda_variant": [
            "12",
            "13"
        ],
        "linux-sbsa": {
             "cuda13": {
                "md5": "f31d534daa41f517c8c5db8e0478119f",
                "relative_path": "tensorrt/10.14.1/tars/TensorRT-10.14.1.48.Linux.aarch64-gnu.cuda-13.0.tar.gz",
                "sha256": "3d3e438b49196a9b9ed5c5bc37ec24be9aa74d67d41db0f8fa54b4894aad748a",
                "size": "5554126761"
            }
        },
        "linux-x86_64": {
            "cuda12": {
                "md5": "d21dd1cb62518f81173150f7bda77311",
                "relative_path": "tensorrt/10.14.1/tars/TensorRT-10.14.1.48.Linux.x86_64-gnu.cuda-12.9.tar.gz",
                "sha256": "0daa7d5929c78edfbe86b474064d0f82d2064c475cc6be747c5101f1ccc37105",
                "size": "7905642926"
            },
            "cuda13": {
                "md5": "8ef547b7811197572294494551478214",
                "relative_path": "tensorrt/10.14.1/tars/TensorRT-10.14.1.48.Linux.x86_64-gnu.cuda-13.0.tar.gz",
                "sha256": "c74af67db57f1a0d7e66bb01ab93f1ecda5facac491ca76e680d832f1e035ce6",
                "size": "7004299092"
            }
        }
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
        "license": "TensorRT",
        "version": "10.7.0.23",
        "cuda_variant": [
            "11",
            "12"
        ],
        "linux-aarch64": {
@@ -26,6 +27,12 @@
            }
        },
        "linux-x86_64": {
            "cuda11": {
                "md5": "6adf7d02aae9105abb6bf3b4c1ce89f4",
                "relative_path": "tensorrt/10.7.0/tars/TensorRT-10.7.0.23.Linux.x86_64-gnu.cuda-11.8.tar.gz",
                "sha256": "958e1c32b48e41d1c48bdc94363450e14f996ca9de0e205ccee65af319eea2c0",
                "size": "4341092411"
            },
            "cuda12": {
                "md5": "925c98fbe9abe82058814159727732a2",
                "relative_path": "tensorrt/10.7.0/tars/TensorRT-10.7.0.23.Linux.x86_64-gnu.cuda-12.6.tar.gz",
+0 −29
Original line number Diff line number Diff line
{
    "release_date": "2025-03-11",
    "release_label": "10.9.0",
    "release_product": "tensorrt",
    "tensorrt": {
        "name": "NVIDIA TensorRT",
        "license": "TensorRT",
        "version": "10.9.0.34",
        "cuda_variant": [
            "12"
        ],
        "linux-sbsa": {
            "cuda12": {
                "md5": "e56a9f9d7327c65d9b95996d3008ed44",
                "relative_path": "tensorrt/10.9.0/tars/TensorRT-10.9.0.34.Linux.aarch64-gnu.cuda-12.8.tar.gz",
                "sha256": "b81ec2a067f67f082c13caec2dcef54385b42a9de6a4ecae6f318aa2d41964f2",
                "size": "4123115318"
            }
        },
        "linux-x86_64": {
            "cuda12": {
                "md5": "ee49e3e6e00b21274907956216b6769f",
                "relative_path": "tensorrt/10.9.0/tars/TensorRT-10.9.0.34.Linux.x86_64-gnu.cuda-12.8.tar.gz",
                "sha256": "33be0e61e3bf177bbbcabb4892bf013f0c8ac71d2be73f2803848a382cb14272",
                "size": "6917032417"
            }
        }
    }
}
+73 −28
Original line number Diff line number Diff line
@@ -3,24 +3,33 @@
  backendStdenv,
  buildRedist,
  cuda_cudart,
  cudnn,
  cuda_nvrtc,
  cudaAtLeast,
  cudaMajorMinorVersion,
  lib,
  libcudla, # only for Jetson
  patchelf,
}:
let
  inherit (_cuda.lib) majorMinorPatch;
  inherit (backendStdenv) hasJetsonCudaCapability;
  inherit (lib.attrsets) getLib;
  inherit (backendStdenv) cudaCapabilities hostRedistSystem;
  inherit (lib.lists) optionals;
  inherit (lib.strings) concatStringsSep;
in
buildRedist (
  finalAttrs:
  let
    majorMinorPatchVersion = majorMinorPatch finalAttrs.version;
    majorVersion = lib.versions.major finalAttrs.version;

    tensorrtAtLeast = lib.versionAtLeast finalAttrs.version;
    tensorrtOlder = lib.versionOlder finalAttrs.version;

    # Create variables and use logical OR to allow short-circuiting.
    tensorrtAtLeast105 = tensorrtAtLeast "10.5.0";
    tensorrtAtLeast100 = tensorrtAtLeast105 || tensorrtAtLeast "10.0.0";

    allCCNewerThan75 = lib.all (lib.flip lib.versionAtLeast "7.5") cudaCapabilities;
    allCCNewerThan70 = allCCNewerThan75 || lib.all (lib.flip lib.versionAtLeast "7.0") cudaCapabilities;

    cudaCapabilitiesJSON = builtins.toJSON cudaCapabilities;
  in
  {
    redistName = "tensorrt";
@@ -32,7 +41,12 @@ buildRedist (
      "dev"
      "include"
      "lib"
    ]
    # From 10.14.1, TensorRT samples are distributed through the TensorRT GitHub repository.
    ++ optionals (tensorrtOlder "10.14.1") [
      "samples"
    ]
    ++ [
      "static"
      # "stubs" removed in postInstall
    ];
@@ -42,8 +56,6 @@ buildRedist (
    nativeBuildInputs = [ patchelf ];

    buildInputs = [
      (getLib cudnn)
      (getLib cuda_nvrtc)
      cuda_cudart
    ]
    ++ optionals libcudla.meta.available [ libcudla ];
@@ -62,38 +74,44 @@ buildRedist (
      ''
        for dir in bin lib; do
          [[ -L "$dir" ]] || continue
          nixLog "replacing symlink $NIX_BUILD_TOP/$sourceRoot/$dir with $NIX_BUILD_TOP/$sourceRoot/targets/${targetString}/$dir"
          rm --verbose "$NIX_BUILD_TOP/$sourceRoot/$dir"
          mv --verbose --no-clobber "$NIX_BUILD_TOP/$sourceRoot/targets/${targetString}/$dir" "$NIX_BUILD_TOP/$sourceRoot/$dir"
          nixLog "replacing symlink $PWD/$dir with $PWD/targets/${targetString}/$dir"
          rm --verbose "$PWD/$dir"
          mv --verbose --no-clobber "$PWD/targets/${targetString}/$dir" "$PWD/$dir"
        done
        unset -v dir
      ''
      # Remove symlinks if they exist
      + ''
        for dir in include samples; do
          if [[ -L "$NIX_BUILD_TOP/$sourceRoot/targets/${targetString}/$dir" ]]; then
            nixLog "removing symlink $NIX_BUILD_TOP/$sourceRoot/targets/${targetString}/$dir"
            rm --verbose "$NIX_BUILD_TOP/$sourceRoot/targets/${targetString}/$dir"
          if [[ -L "$PWD/targets/${targetString}/$dir" ]]; then
            nixLog "removing symlink $PWD/targets/${targetString}/$dir"
            rm --verbose "$PWD/targets/${targetString}/$dir"
          fi
        done
        unset -v dir

        if [[ -d "$NIX_BUILD_TOP/$sourceRoot/targets" ]]; then
        if [[ -d "$PWD/targets" ]]; then
          nixLog "removing targets directory"
          rm --recursive --verbose "$NIX_BUILD_TOP/$sourceRoot/targets" || {
            nixErrorLog "could not delete $NIX_BUILD_TOP/$sourceRoot/targets: $(ls -laR "$NIX_BUILD_TOP/$sourceRoot/targets")"
          rm --recursive --verbose "$PWD/targets" || {
            nixErrorLog "could not delete $PWD/targets: $(ls -laR "$PWD/targets")"
            exit 1
          }
        fi
      '';

    autoPatchelfIgnoreMissingDeps = optionals hasJetsonCudaCapability [
    autoPatchelfIgnoreMissingDeps =
      optionals (hostRedistSystem == "linux-aarch64") [
        "libnvdla_compiler.so"
      ]
      ++ optionals (tensorrtAtLeast "10.13.3") [
        "libcuda.so.1"
      ];

    # Create a symlink for the Onnx header files in include/onnx
    # NOTE(@connorbaker): This is shared with the tensorrt-oss package, with the `out` output swapped with `include`.
    # When updating one, check if the other should be updated.
    # TODO(@connorbaker): It seems like recent versions of TensorRT have separate libs for separate capabilities;
    # we should remove libraries older than those necessary to support requested capabilities.
    postInstall = ''
      mkdir "''${!outputInclude:?}/include/onnx"
      pushd "''${!outputInclude:?}/include" >/dev/null
@@ -102,6 +120,7 @@ buildRedist (
      popd >/dev/null
    ''
    # Move the python directory, which contains header files, to the include output.
    # NOTE: Python wheels should be built from source using the TensorRT GitHub repo.
    + ''
      nixLog "moving python directory to include output"
      moveToOutput python "''${!outputInclude:?}"
@@ -115,10 +134,11 @@ buildRedist (
    ''
    # Remove the Windows library used for cross-compilation if it exists.
    + ''
      if [[ -e "''${!outputLib:?}/lib/libnvinfer_builder_resource_win.so.${majorMinorPatchVersion}" ]]; then
        nixLog "removing Windows library"
        rm --verbose "''${!outputLib:?}/lib/libnvinfer_builder_resource_win.so.${majorMinorPatchVersion}"
      fi
      nixLog "removing any Windows libraries"
      for winLib in "''${!outputLib:?}/lib/"*_win*; do
        rm --verbose "$winLib"
      done
      unset -v winLib
    ''
    # Remove the stub libraries.
    + ''
@@ -137,10 +157,35 @@ buildRedist (
        --add-needed libnvinfer_plugin.so.${majorVersion}
    '';

    passthru = {
      # The CUDNN used with TensorRT.
      inherit cudnn;
    };
    # NOTE: Like cuDNN, NVIDIA offers forward compatibility within a major releases of CUDA.
    platformAssertions = [
      {
        message =
          "tensorrt releases since 10.0.0 (found ${finalAttrs.version})"
          + " support CUDA compute capabilities 7.0 and newer (found ${cudaCapabilitiesJSON})";
        assertion = tensorrtAtLeast100 -> allCCNewerThan70;
      }
      {
        message =
          "tensorrt releases since 10.0.0 (found ${finalAttrs.version})"
          + " support only CUDA compute capability 8.7 (Jetson Orin) for pre-Thor Jetson devices"
          + " (found ${cudaCapabilitiesJSON})";
        assertion =
          tensorrtAtLeast100 && hostRedistSystem == "linux-aarch64" -> cudaCapabilities == [ "8.7" ];
      }
      {
        message =
          "tensorrt releases since 10.0.0 (found ${finalAttrs.version})"
          + " support CUDA 12.4 and newer for pre-Thor Jetson devices (found ${cudaMajorMinorVersion})";
        assertion = tensorrtAtLeast100 && hostRedistSystem == "linux-aarch64" -> cudaAtLeast "12.4";
      }
      {
        message =
          "tensorrt releases since 10.5.0 (found ${finalAttrs.version})"
          + " support CUDA compute capabilities 7.5 and newer (found ${cudaCapabilitiesJSON})";
        assertion = tensorrtAtLeast105 -> allCCNewerThan75;
      }
    ];

    meta = {
      description = "SDK that facilitates high-performance machine learning inference";
Loading