Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .claude/skills/exec-local-compile/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ git checkout main && git pull
Run the build command (**incremental by default** — omit `-c`/`--clean` unless explicitly requested or the incremental build fails):

```bash
./scripts/build_wheel.py --use_ccache -a "<arch>" -f --nvtx
./scripts/build_wheel.py --trt_root /usr/local/tensorrt --use_ccache -a "<arch>" -f --nvtx
```

Replace `<arch>` with the target GPU architecture (see Architecture Reference below). If not specified by the user, auto-detect from `nvidia-smi`.
Expand All @@ -66,6 +66,7 @@ python3 -c "import tensorrt_llm; print(tensorrt_llm.__version__)"

| Flag | Description |
|------|-------------|
| `--trt_root /usr/local/tensorrt` | TensorRT installation path (standard in NVIDIA containers) |
| `-a "<arch>"` | Target GPU architecture(s) |
| `--nvtx` | Enable NVTX markers for profiling |
| `--use_ccache` | Use ccache for faster recompilation |
Expand Down
2 changes: 2 additions & 0 deletions .claude/skills/exec-slurm-compile/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ A successful build ends with a message like `Successfully built tensorrt_llm` or

| Flag | Description |
|------|-------------|
| `--trt_root /usr/local/tensorrt` | TensorRT installation path (standard in NVIDIA containers) |
| `-a "100-real"` | Target architecture — `100` for Blackwell, `90` for Hopper, etc. |
| `--nvtx` | Enable NVTX markers for profiling |
| `--no-venv` | Skip virtual environment creation |
Expand All @@ -226,6 +227,7 @@ Common architecture values:
| `sbatch: error: invalid partition` | Verify partition name with `sinfo -s` |
| `sbatch: error: invalid account` | Check available accounts with `sacctmgr show assoc user=$USER` |
| Container image not found | Verify the `.sqsh` path exists and is readable |
| Build fails with missing TensorRT | Ensure `--trt_root` points to the correct path inside the container |
| Build OOM (out of memory) | Reduce parallelism with `-j <N>` flag to `build_wheel.py` |
| `srun: error: Unable to create step` | The node may lack enroot/pyxis — check with cluster admin |
| Job stuck in `PD` state | Check `squeue -j <id> -o %R` for the reason (e.g., resource limits, priority) |
Expand Down
3 changes: 2 additions & 1 deletion .claude/skills/exec-slurm-compile/scripts/compile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
# Usage: compile.sh <repo_dir> [build_wheel_args...]
#
# Default build_wheel.py flags:
# -a "100-real" --nvtx --no-venv
# --trt_root /usr/local/tensorrt -a "100-real" --nvtx --no-venv
# Any extra arguments after repo_dir are forwarded to build_wheel.py,
# overriding the defaults above.

Expand All @@ -36,6 +36,7 @@ if [[ $# -gt 0 ]]; then
else
echo "[compile.sh] Running default build command"
python3 ./scripts/build_wheel.py \
--trt_root /usr/local/tensorrt \
-a "100-real" \
--nvtx
fi
39 changes: 4 additions & 35 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,26 +22,7 @@ reviews:
auto_title_placeholder: '@coderabbitai title'
auto_title_instructions: 'Format: "[<category>] <title>". Category must be one of: fix, feat, doc, infra, style, refactor, perf, test, chore, revert. Enclose the category in square brackets. Title should be concise (<= 60 chars). Example: "[feat] Add logit_bias support".'
commit_status: false
high_level_summary_instructions: |
Always produce two review sections in the summary:

**Dev Engineer Review**
Review all changes for correctness and consistency, including:
- Code changes: correctness, performance, API consistency (CODING_GUIDELINES.md), error handling, regressions.
- Config files: valid values, no typos, consistency with related configs, no unintended scope changes.
- Test list files (test-db/, qa/, waives.txt): correct format, valid test paths, appropriate bug references, no duplicates.

**QA Engineer Review**
Always include this section when any files under tests/ are touched.
For test-list-only changes (only tests/integration/test_lists/ files):
- List which test-db/ or qa/ files were modified and what entries were added or removed.
- Verdict: "needs follow-up" if CBTS coverage data is unavailable, otherwise "sufficient" or "insufficient".
For test-code changes (files outside tests/integration/test_lists/):
- List test functions added, modified, or removed.
- State whether each is covered in tests/integration/test_lists/ (test-db/ for CI, qa/ for manual QA).
- Verdict: sufficient, insufficient, or needs follow-up.
If no test files are touched, write "No test changes."
collapse_walkthrough: false
collapse_walkthrough: true
assess_linked_issues: true
related_issues: true
related_prs: true
Expand All @@ -50,27 +31,15 @@ reviews:
poem: false
review_status: false
auto_review:
auto_incremental_review: true
auto_incremental_review: false
drafts: false
base_branches: ["main", "release/.+"]
path_instructions:
- path: "tests/**"
instructions: |
Act as a QA engineer reviewing test changes and coverage for TensorRT-LLM.
Always produce a test coverage summary, even if no issues are found.

If the change touches ONLY files under tests/integration/test_lists/ (no test-code changes):
- Report which test-db/ or qa/ list files were modified and what entries were added or removed.
- Do NOT require changed test functions for this path.
- Use verdict "needs follow-up" when cbts_touchmap.sqlite or a CBTS coverage report is unavailable
to confirm the impacted test scope; otherwise use "sufficient" or "insufficient".

If the change includes test-code files (outside tests/integration/test_lists/), the summary must include:
1. Which test functions were added, modified, or removed.
2. Whether each changed test is listed in the appropriate test list files under
tests/integration/test_lists/ (test-db/ for CI, qa/ for manual QA).
3. A coverage verdict: sufficient, insufficient, or needs follow-up.
Keep feedback actionable: reference concrete list file names when suggesting additions.
Keep feedback actionable: suggest concrete list file names and whether
coverage is sufficient, insufficient, or needs follow-up outside the PR.
- path: "tests/integration/test_lists/qa/**"
instructions: |
Files here are manually-triggered QA perf/regression lists, maintained
Expand Down
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@ docs/source/blogs/media/tech_blog10_full_strategy_performance.png filter=lfs dif
docs/source/blogs/media/tech_blog10_context_wait_performance.png filter=lfs diff=lfs merge=lfs -text
cpp/tensorrt_llm/kernels/trtllmGenKernels/fmha/cubin/kernelMetaInfo_cubin.cpp filter=lfs diff=lfs merge=lfs -text
cpp/tensorrt_llm/kernels/decoderMaskedMultiheadAttention/cubin/xqa_kernel_cubin.cpp filter=lfs diff=lfs merge=lfs -text
tensorrt_llm/_torch/visual_gen/cute_dsl_kernels/blackwell/attention/cubins/*/*/*.so filter=lfs diff=lfs merge=lfs -text
docs/source/blogs/media/tech_blog26_deepseek_v4_hybrid_attention.png filter=lfs diff=lfs merge=lfs -text
docs/source/blogs/media/tech_blog26_deepseek_v4_mhc_moe.png filter=lfs diff=lfs merge=lfs -text
1 change: 0 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,6 @@
/cpp/tensorrt_llm/batch_manager/allocateKvCache.cpp @NVIDIA/trt-llm-kv-cache-manager-devs
/cpp/tests/unit_tests/batch_manager/kvCacheManagerTest.cpp @NVIDIA/trt-llm-kv-cache-manager-devs
/cpp/tests/unit_tests/batch_manager/kvCacheUtilsTest.cpp @NVIDIA/trt-llm-kv-cache-manager-devs
/tensorrt_llm/_torch/attention_backend/sparse/*/cache_manager.py @NVIDIA/trt-llm-kv-cache-manager-devs
/tensorrt_llm/_torch/pyexecutor/kv_cache_manager_v2.py @NVIDIA/trt-llm-kv-cache-manager-devs
/tensorrt_llm/_torch/pyexecutor/resource_manager.py @NVIDIA/trt-llm-kv-cache-manager-devs
/cpp/tensorrt_llm/nanobind/batch_manager/kvCacheManager.h @NVIDIA/trt-llm-kv-cache-manager-devs
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/bot-command.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ jobs:
"`--disable-reuse-test ` *(OPTIONAL)* : Explicitly prevent the pipeline from reusing build artifacts and skipping successful test stages from a previous pipeline. Ensure that all builds and tests are run regardless of previous successes.\n\n" +
"`--disable-fail-fast ` *(OPTIONAL)* : Disable fail fast on build/tests/infra failures.\n\n" +
"`--skip-test ` *(OPTIONAL)* : Skip all test stages, but still run build stages, package stages and sanity check stages. Note: Does **NOT** update GitHub check status.\n\n" +
"`--stage-list \"A10-PyTorch-1, xxx\"` *(OPTIONAL)* : Only run the specified test stages. Supports wildcard `*` for pattern matching (e.g., `\"*PerfSanity*\"` matches all stages containing PerfSanity). Examples: \"A10-PyTorch-1, xxx\", \"*PerfSanity*\". The patterns `\"*\"`, `\"*Post-Merge*\"`, and `\"*PerfSanity*\"`, including equivalent escaped or repeated-star forms and their use in comma-separated lists, require the `ci: post-merge approved` PR label. Note: Does **NOT** update GitHub check status.\n\n" +
"`--stage-list \"A10-PyTorch-1, xxx\"` *(OPTIONAL)* : Only run the specified test stages. Supports wildcard `*` for pattern matching (e.g., `\"*PerfSanity*\"` matches all stages containing PerfSanity). Examples: \"A10-PyTorch-1, xxx\", \"*PerfSanity*\". The broad patterns `\"*\"` and `\"*Post-Merge*\"`, including equivalent escaped or repeated-star forms and their use in comma-separated lists, require the `ci: post-merge approved` PR label. Note: Does **NOT** update GitHub check status.\n\n" +
"`--gpu-type \"A30, H100_PCIe\"` *(OPTIONAL)* : Only run the test stages on the specified GPU types. Examples: \"A30, H100_PCIe\". Note: Does **NOT** update GitHub check status.\n\n" +
"`--test-backend \"pytorch, cpp\"` *(OPTIONAL)* : Skip test stages which don't match the specified backends. Only support [pytorch, cpp, tensorrt, triton]. Examples: \"pytorch, cpp\" (does not run test stages with tensorrt or triton backend). Note: Does **NOT** update GitHub pipeline status.\n\n" +
"`--only-multi-gpu-test ` *(OPTIONAL)* : Only run the multi-GPU tests. Note: Does **NOT** update GitHub check status.\n\n" +
"`--disable-multi-gpu-test ` *(OPTIONAL)* : Disable the multi-GPU tests. Note: Does **NOT** update GitHub check status.\n\n" +
"`--add-multi-gpu-test ` *(OPTIONAL)* : Force run the multi-GPU tests in addition to running L0 pre-merge pipeline.\n\n" +
"`--post-merge ` *(OPTIONAL)* : Run the L0 post-merge pipeline instead of the ordinary L0 pre-merge pipeline. Requires the `ci: post-merge approved` PR label applied by an active member of `NVIDIA/trt-llm-ci-approvers`. The approval label remains in place when new commits are pushed.\n\n" +
"`--extra-stage \"H100_PCIe-TensorRT-Post-Merge-1, xxx\"` *(OPTIONAL)* : Run the ordinary L0 pre-merge pipeline and specified test stages. Supports wildcard `*` for pattern matching. Examples: --extra-stage \"H100_PCIe-TensorRT-Post-Merge-1, xxx\", --extra-stage \"*Post-Merge*\". The patterns `\"*\"`, `\"*Post-Merge*\"`, and `\"*PerfSanity*\"`, including equivalent escaped or repeated-star forms and their use in comma-separated lists, require the `ci: post-merge approved` PR label.\n\n" +
"`--extra-stage \"H100_PCIe-TensorRT-Post-Merge-1, xxx\"` *(OPTIONAL)* : Run the ordinary L0 pre-merge pipeline and specified test stages. Supports wildcard `*` for pattern matching. Examples: --extra-stage \"H100_PCIe-TensorRT-Post-Merge-1, xxx\", --extra-stage \"*Post-Merge*\". The broad patterns `\"*\"` and `\"*Post-Merge*\"`, including equivalent escaped or repeated-star forms and their use in comma-separated lists, require the `ci: post-merge approved` PR label.\n\n" +
"`--detailed-log ` *(OPTIONAL)* : Enable flushing out all logs to the Jenkins console. This will significantly increase the log volume and may slow down the job.\n\n" +
"`--debug ` *(OPTIONAL)* : **Experimental feature**. Enable access to the CI container for debugging purpose. Note: Specify exactly one stage in the `stage-list` parameter to access the appropriate container environment. Note: Does **NOT** update GitHub check status.\n\n" +
"`--high-priority ` *(OPTIONAL)* : Run the pipeline with high priority. This option is restricted to authorized users only and will route the job to a high-priority queue.\n\n" +
Expand Down
11 changes: 4 additions & 7 deletions .github/workflows/lfs-sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,9 @@ jobs:

steps:
- name: Checkout merge commit without LFS smudge
uses: actions/checkout@v6
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.merge_commit_sha }}
# This job only handles merged PRs and does not execute code from the
# checked-out tree, so explicitly allow the required merge checkout.
allow-unsafe-pr-checkout: true
lfs: false
fetch-depth: 2
token: ${{ secrets.GITHUB_TOKEN }}
Expand Down Expand Up @@ -203,7 +200,7 @@ jobs:

- name: Comment on PR — already in storage
if: steps.detect-lfs.outputs.lfs_status == 'present'
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
script: |
const files = require('fs').readFileSync('/tmp/lfs_files.txt', 'utf8').trim().split('\n');
Expand All @@ -224,7 +221,7 @@ jobs:

- name: Comment on PR — sync succeeded
if: steps.detect-lfs.outputs.lfs_status == 'pending' && steps.verify.outcome == 'success'
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
script: |
const files = require('fs').readFileSync('/tmp/lfs_files.txt', 'utf8').trim().split('\n');
Expand All @@ -245,7 +242,7 @@ jobs:

- name: Comment on PR — sync failed
if: always() && steps.detect-lfs.outputs.lfs_status == 'pending' && (steps.fetch-lfs.outcome != 'success' || steps.push-lfs.outcome != 'success' || steps.verify.outcome != 'success')
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
script: |
const forkRepo = context.payload.pull_request.head.repo.full_name;
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ tensorrt_llm/flash_mla/
tensorrt_llm/flash_mla_cpp_tllm.*.so
tensorrt_llm/flash_mla_cpp_tllm.pyi
tensorrt_llm/runtime/kv_cache_manager_v2/**/*.so
!tensorrt_llm/_torch/visual_gen/cute_dsl_kernels/blackwell/attention/cubins/**/*.so
**/*__mypyc*.so
tensorrt_llm/scripts
*docs/cpp_docs*
Expand Down
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
[submodule "3rdparty/MSA"]
path = 3rdparty/MSA
url = https://gitlab.com/nvidia/tensorrt-llm/oss-components/msa.git
1 change: 0 additions & 1 deletion 3rdparty/MSA
Submodule MSA deleted from e2ebe7
2 changes: 1 addition & 1 deletion ATTRIBUTIONS-Python.md
Original file line number Diff line number Diff line change
Expand Up @@ -5261,7 +5261,7 @@ For more information, please refer to <http://unlicense.org>
- `Tracker`: https://github.com/tox-dev/py-filelock/issues


## flashinfer-python (0.6.15)
## flashinfer-python (0.6.14)

### Licenses
License: `Apache-2.0`
Expand Down
23 changes: 0 additions & 23 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,6 @@ Original Source: https://github.com/Dao-AILab/causal-conv1d
Copyright (c) 2024, Tri Dao.
Licensed under the BSD 3-Clause License

--------------------------------------------------------------------------------
CUTLASS
--------------------------------------------------------------------------------
Original Source: https://github.com/NVIDIA/cutlass
Copyright (c) 2017 - 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
Licensed under the BSD 3-Clause License

--------------------------------------------------------------------------------
flash-attention
--------------------------------------------------------------------------------
Expand All @@ -41,14 +34,6 @@ Original Source: https://github.com/fla-org/flash-linear-attention
Copyright (c) 2023-2025 Songlin Yang
Licensed under the MIT License

--------------------------------------------------------------------------------
FlashInfer
--------------------------------------------------------------------------------
Original Source: https://github.com/flashinfer-ai/flashinfer
Copyright 2025-2026 NVIDIA
Copyright 2023-2026 FlashInfer community (https://flashinfer.ai/)
Licensed under the Apache License 2.0

--------------------------------------------------------------------------------
InstructEval
--------------------------------------------------------------------------------
Expand All @@ -74,14 +59,6 @@ Original Source: https://github.com/state-spaces/mamba
Copyright 2023 Tri Dao, Albert Gu
Licensed under the Apache License 2.0

--------------------------------------------------------------------------------
MSA (MiniMax Sparse Attention)
--------------------------------------------------------------------------------
Original Source: https://github.com/MiniMax-AI/MSA
Copyright (c) 2026 MiniMax
Licensed under the MIT License


--------------------------------------------------------------------------------
Quack
--------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ TensorRT LLM
[![python](https://img.shields.io/badge/python-3.10-green)](https://www.python.org/downloads/release/python-31012/)
[![cuda](https://img.shields.io/badge/cuda-13.2.1-green)](https://developer.nvidia.com/cuda-downloads)
[![torch](https://img.shields.io/badge/torch-2.11.0-green)](https://pytorch.org)
[![version](https://img.shields.io/badge/release-1.3.0rc23-green)](https://github.com/NVIDIA/TensorRT-LLM/blob/main/tensorrt_llm/version.py)
[![version](https://img.shields.io/badge/release-1.3.0rc21-green)](https://github.com/NVIDIA/TensorRT-LLM/blob/main/tensorrt_llm/version.py)
[![license](https://img.shields.io/badge/license-Apache%202-blue)](https://github.com/NVIDIA/TensorRT-LLM/blob/main/LICENSE)

[Architecture](https://nvidia.github.io/TensorRT-LLM/developer-guide/overview.html)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Performance](https://nvidia.github.io/TensorRT-LLM/developer-guide/perf-overview.html)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Examples](https://nvidia.github.io/TensorRT-LLM/quick-start-guide.html)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Documentation](https://nvidia.github.io/TensorRT-LLM/)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Roadmap](https://github.com/NVIDIA/TensorRT-LLM/issues?q=is%3Aissue%20state%3Aopen%20label%3Aroadmap)
Expand Down
22 changes: 22 additions & 0 deletions cpp/include/tensorrt_llm/batch_manager/cacheTransceiver.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "tensorrt_llm/executor/dataTransceiverState.h"
#include "tensorrt_llm/runtime/utils/mpiUtils.h"
#include "tensorrt_llm/runtime/utils/pgUtils.h"
#include <cstddef>
#include <future>
#include <memory>
#include <mutex>
Expand Down Expand Up @@ -55,6 +56,7 @@ class BaseKVCacheManager;

class CacheSender;
class CacheReceiver;
class ContextTransferCoordinator;

class CacheTransceiverComm
{
Expand Down Expand Up @@ -149,6 +151,25 @@ class CacheTransceiverComm
TLLM_THROW("Input arguments only supported in mpi");
}

[[nodiscard]] std::unique_ptr<mpi::MpiRequest> sendAsync(
void const* buffer, std::size_t size, mpi::MpiType dtype, int dest, mpi::MpiTag tag) const
{
TLLM_CHECK_WITH_INFO(isMpi(), "Point-to-point cache-transceiver status messages require MPI.");
return mMpiComm->sendAsync(buffer, size, dtype, dest, tag);
}

[[nodiscard]] bool iprobe(int source, mpi::MpiTag tag, MPI_Status* status) const
{
TLLM_CHECK_WITH_INFO(isMpi(), "Point-to-point cache-transceiver status messages require MPI.");
return mMpiComm->iprobe(source, tag, status);
}

void recv(void* buffer, std::size_t size, mpi::MpiType dtype, int source, mpi::MpiTag tag) const
{
TLLM_CHECK_WITH_INFO(isMpi(), "Point-to-point cache-transceiver status messages require MPI.");
static_cast<void>(mMpiComm->recv(buffer, size, dtype, source, tag));
}

CacheTransceiverComm split(int color, int key)
{
if (isMpi())
Expand Down Expand Up @@ -307,6 +328,7 @@ class CacheTransceiver : public BaseCacheTransceiver

std::shared_ptr<CacheTransceiverComm> mGroupComm;
std::shared_ptr<CacheTransceiverComm> mGroupTensorParaComm, mGroupPipeParaComm, mGroupDataComm, mGroupTPInDPComm;
std::unique_ptr<ContextTransferCoordinator> mContextTransferCoordinator;

executor::kv_cache::CommState const* mCommState;
std::unique_ptr<executor::kv_cache::CacheState> mCacheState;
Expand Down
Loading
Loading