Skip to content

[https://nvbugs/6919405][fix] Cherry-pick #20252 to release/1.3: keep the 26.08 CUDA forward-compat driver on the 26.09 image - #20397

Merged
chenfeiz0326 merged 3 commits into
NVIDIA:release/1.3from
chenfeiz0326:fix/6919405-pin-cuda-compat-driver-release-1.3
Oct 17, 2026
Merged

chenfeiz0326 merged 3 commits into
NVIDIA:release/1.3from
chenfeiz0326:fix/6919405-pin-cuda-compat-driver-release-1.3

Conversation

@chenfeiz0326

@chenfeiz0326 chenfeiz0326 commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Cherry-pick #20252 (commit 8085e85) to release/1.3.

Description

#20146 brought the NGC PyTorch 26.09 base image to release/1.3. That image bundles CUDA forward-compatibility driver libcuda.so.615.71.09 (26.08 had 615.65.02), and every process in the container loads it ahead of the host driver. Under 615.71.09 the trtllm-gen context FMHA cubin, which is unchanged, runs 7–13% slower per call on GB200 (https://nvbugs/6919405).

release/1.3 now shows the same step as main. ctx_only-gb200_deepseek-r1-fp4_128k8k_con1_ctx1_pp8_gen1_tep8_eplb0_mtp3_ccb-NIXL, post-merge Total Token Throughput:

branch before the 26.09 image after
release/1.3 5624.8–5731.8 (builds 21–29) 5346.7 (build 31, cd4cc1778f, first build with #20146; flagged as a regression)
main 5596.5–5829.6 5308.9–5399.2 (builds 3012–3019)

The change keeps the 26.09 base image and its CUDA 13.4 toolkit, and swaps only the compat driver libraries for the 26.08 ones:

  • docker/Dockerfile.multi: new CUDA_COMPAT_TAG build arg (default 26.08-py3) and a cuda_compat stage from ${BASE_IMAGE}:${CUDA_COMPAT_TAG}. The devel stage runs install_cuda_compat.sh from that stage's /usr/local, unless CUDA_COMPAT_TAG == BASE_TAG.
  • docker/common/install_cuda_compat.sh (new): replaces lib.real (and lib.real-nvgpu where present) under /usr/local/cuda-<ver>/compat, drops the per-host .checked markers recorded against the old driver, then runs ldconfig and checks the result. It refuses to run if the source image does not ship the same CUDA major.minor.
  • docker/Makefile: passes CUDA_COMPAT_TAG. The rockylinux8 / ubuntu22 / ubuntu24 targets, which build on nvcr.io/nvidia/cuda, set it to their own BASE_TAG and so keep their compat driver.
  • jenkins/current_image_tags.properties: points CI at the images built from this change (see Test Coverage).

The cherry-pick applied cleanly. The release/1.3-only edits in these files (NCCL_GIN_GPUNETIO_PATH, the urm.nvidia.com pip mirror, CONAN_DIR) don't overlap it.

Test Coverage

Measured on main's CI wheels on GB200 (oci-hsg); full evidence is in #20252 and on the NVBug. The decisive arm ran the regressed commit's wheel in the 26.09 container with only /usr/local/cuda-13.4/compat taken from 26.08. Workers were verified to map libcuda.so.615.65.02, and the run measured 5703.03 / 5704.28 tok/s against 5346.08 as shipped. That fully recovers the pre-regression 5682.42.

I ran install_cuda_compat.sh inside the published 26.09 TRT-LLM image: the NGC shell-init compat check reported CUDA Driver OK and torch mapped libcuda.so.615.65.02. release/1.3 runs the same 26.09 base (pytorch-26.09-py3-…-202610130623-20146), same CUDA 13.4.1, same host driver.

Images for this branch, built from commit 8e14707 and retagged into sw-tensorrt-llm-docker-local/tensorrt-llm as …-202610150955-20397:

  • The retag used release/1.3's scripts/rename_docker_images.py, run against release/1.3's copy of jenkins/current_image_tags.properties. No tensorrt-llm-staging tags are in the PR.
  • Each of the two Build-Docker-Images runs pushed only part of the CI image set; the missing images hit docker login timeouts to artifactory. So the SBSA tritondevel image comes from L0 Performance differs on different V100 #246, and the x86_64 tritondevel, SBSA ubuntu24 py312 and both Rocky 8 images come from L0 How can I use flan-t5-base? #251.
  • The 26.09-based images (x86_64 and SBSA tritondevel) have the install_cuda_compat.sh layer (BASE_TAG=26.09-py3 CUDA_COMPAT_TAG=26.08-py3). The nvcr.io/nvidia/cuda-based images keep their own driver.
  • L0 How can I use flan-t5-base? #251's run did not apply the BOLT profile overlay, so only the SBSA tritondevel image has /opt/tensorrt_llm/bolt/profiles. No CI stage reads that directory.

Still to do: CI on these images, then re-measure the case above on release/1.3.

PR Checklist

Please review the following before submitting your PR:

  • PR description clearly explains what and why. If using CodeRabbit's summary, please make sure it makes sense.

  • PR Follows TRT-LLM CODING GUIDELINES to the best of your knowledge.

  • Test cases are provided for new code paths (see test instructions)

  • If PR introduces API changes, an appropriate PR label is added - either api-compatible or api-breaking. For api-breaking, include BREAKING in the PR title.

  • Any new dependencies have been scanned for license and vulnerabilities

  • CODEOWNERS updated if ownership changes

  • Documentation updated as needed

  • Update tava architecture diagram if there is a significant design change in PR.

  • The reviewers assigned automatically/manually are appropriate for the PR.

  • Please check this after reviewing the above items as appropriate for this PR.

GitHub Bot Help

To see a list of available CI bot commands, please comment /bot help.

🤖 Generated with Claude Code

Dev Engineer Review

  • CUDA_COMPAT_TAG defaults to 26.08-py3. The devel stage installs compatibility-driver libraries from that image when the tag differs from BASE_TAG; it skips installation when the tags match.
  • The Docker Makefile passes CUDA_COMPAT_TAG to builds. Rocky Linux 8 and Ubuntu 22/24 targets set it to BASE_TAG, preserving their configured compatibility drivers.
  • install_cuda_compat.sh replaces compatibility-driver directories from the source /usr/local tree. It checks for driver libraries, updates linker configuration, and checks for expected libraries.
  • The author reports restored throughput with the 26.08 compatibility libraries. No current review findings or test results were supplied. The change summary initially listed release/1.3 image builds, CI, and release-branch performance measurements as pending; later image-tag updates reference CI images built from this change, but do not establish completion of all validation.

QA Engineer Review

No test changes.

Per-File QA Perspective

  • docker/Dockerfile.multi: Verify that differing tags install compatibility-driver libraries and matching tags skip installation.
  • docker/Makefile: Verify that the intended Rocky Linux 8 and Ubuntu targets pass their BASE_TAG, and that other Docker builds remain unaffected.
  • docker/common/install_cuda_compat.sh: Verify missing-library error paths, handling of optional lib.real-nvgpu, and linker updates in supported target images.
  • jenkins/current_image_tags.properties: Verify that the updated image tags resolve to the intended CI-built images for each listed platform.

…er on the 26.09 image

The NGC PyTorch 26.09 base ships CUDA forward-compatibility driver 615.71.09
(26.08 shipped 615.65.02). Under it the unchanged trtllm-gen context FMHA cubin
runs 7-13% slower per call on GB200, which costs
aggr-ctx_only-gb200_deepseek-r1-fp4_128k8k_con1_ctx1_pp8_gen1_tep8_eplb0_mtp3_ccb-NIXL
~6% Total Token Throughput since NVIDIA#19679.

Add a CUDA_COMPAT_TAG build arg (default 26.08-py3) and replace the base
image's /usr/local/cuda-13.4/compat driver libraries with that tag's during the
devel stage. The CUDA toolkit is untouched, and the base image's shell init still
validates and selects the compat driver at container start. Targets built on
nvcr.io/nvidia/cuda keep their own compat driver.

Signed-off-by: chenfeiz0326 <203214996+chenfeiz0326@users.noreply.github.com>
(cherry picked from commit 8085e85)
@chenfeiz0326

Copy link
Copy Markdown
Collaborator Author

/bot run --stage-list "Build-Docker-Images" --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78050 [ run ] triggered by Bot. Commit: 8e14707 Link to invocation

@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/TensorRT-LLM/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: d643217d-21fd-4062-bff5-858e55965507
📥 Commits

Reviewing files that changed from the base of the PR and between a6de6f6 and 96132fc.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/TensorRT-LLM/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 39608ef8-89fd-44e4-b482-60e8825c9250
📥 Commits

Reviewing files that changed from the base of the PR and between 8e14707 and a6de6f6.

📒 Files selected for processing: 1
  • jenkins/current_image_tags.properties

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 8 remain after this review.

Walkthrough

The Docker build can use compatibility-driver directories from a selected CUDA image. It skips installation when the compatibility image tag matches the base image tag. Make targets set and pass the compatibility image tag. Five Docker image tag suffixes are also updated.

Changes

CUDA compatibility driver installation

Layer / File(s) Summary
Validate and replace compatibility-driver directories
docker/common/install_cuda_compat.sh
The script checks for required driver libraries, replaces compatibility-driver directories when present in the source, removes check markers, runs ldconfig, and checks the resulting libraries.
Select and wire the compatibility image
docker/Dockerfile.multi, docker/Makefile, jenkins/current_image_tags.properties
The Docker build accepts CUDA_COMPAT_TAG and runs the installer when it differs from BASE_TAG. Make targets pass the tag and set it to BASE_TAG for the listed Rocky Linux and Ubuntu targets. Five image tag suffixes change to 202610150955-20397.

Priority: ⬆️ High

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant DockerBuild
  participant CompatImage
  participant InstallScript
  DockerBuild->>CompatImage: Mount /usr/local when tags differ
  DockerBuild->>InstallScript: Pass mounted /usr/local
  InstallScript->>DockerBuild: Replace compatibility-driver directories
Loading

Suggested reviewers: emmaqiaoch

Merge Risk: ⚪ Minimal · up to a6de6

The Docker build can use compatibility-driver libraries from a separate image while Rocky Linux and Ubuntu targets retain their own drivers. The compared changes establish no concrete failure or additional merge-blocking risk.

Pre-merge checks: Passed 5
Passed Passed checks: 5 passed
Check name Status Explanation
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title follows the required ticket and type format and clearly identifies the CUDA compatibility-driver fix for the 26.09 image.
Description check Passed The description includes the required Description, Test Coverage, and PR Checklist sections. It explains the problem, solution, affected files, validation results, image provenance, and remaining CI w…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@chenfeiz0326

Copy link
Copy Markdown
Collaborator Author

/bot run --stage-list "Build-Docker-Images" --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78077 [ run ] triggered by Bot. Commit: 8e14707 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78050 [ run ] completed with state ABORTED. Commit: 8e14707

Link to invocation

…8 compat driver

Point jenkins/current_image_tags.properties at the CI images built from
this branch's Dockerfile change (commit 8e14707), retagged into the
tensorrt-llm repository with scripts/rename_docker_images.py run against
release/1.3's copy of the tags file. The SBSA tritondevel image comes from
L0 build 246 and the other four from L0 build 251; each run pushed only
part of the set.

Signed-off-by: chenfeiz0326 <203214996+chenfeiz0326@users.noreply.github.com>
@chenfeiz0326

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78109 [ run ] triggered by Bot. Commit: a6de6f6 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78077 [ run ] completed with state ABORTED. Commit: 8e14707

Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78109 [ run ] completed with state SUCCESS. Commit: a6de6f6
/LLM/release-1.3/L0_MergeRequest_PR pipeline #252 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@github-actions

Copy link
Copy Markdown

Automatically added "ci: full pre-merge approved" because this PR has satisfied the required GitHub review approvals. Unresolved review conversations and other required checks remain independent merge requirements.

@chenfeiz0326
chenfeiz0326 enabled auto-merge (squash) October 17, 2026 09:11
…lease-1.3

Signed-off-by: chenfeiz0326 <203214996+chenfeiz0326@users.noreply.github.com>
@chenfeiz0326

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78629 [ run ] triggered by Bot. Commit: 96132fc Link to invocation

@chenfeiz0326

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78629 [ run ] completed with state SUCCESS. Commit: 96132fc
/LLM/release-1.3/L0_MergeRequest_PR pipeline #315 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78645 [ run ] triggered by Bot. Commit: 96132fc Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78645 [ run ] completed with state SUCCESS. Commit: 96132fc
/LLM/release-1.3/L0_MergeRequest_PR pipeline #316 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@chenfeiz0326

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78650 [ run ] triggered by Bot. Commit: 96132fc Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78650 [ run ] completed with state SUCCESS. Commit: 96132fc
/LLM/release-1.3/L0_MergeRequest_PR pipeline #317 completed with status: 'SUCCESS'

CI Report

Link to invocation

@chenfeiz0326
chenfeiz0326 merged commit a0d8a61 into NVIDIA:release/1.3 Oct 17, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants