Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
8afadd4
Update dependencies for a internal dlfw 26.08 image
EmmaQiaoCh Aug 24, 2026
fff15c5
Switch to another internal image
EmmaQiaoCh Aug 24, 2026
50c0e25
Update for devel images base on dlfw
EmmaQiaoCh Aug 25, 2026
c113609
Fix for build error for the newer torch headers which use c++20
EmmaQiaoCh Aug 26, 2026
d71f5fa
Apply the changes for switch to openmpi4
EmmaQiaoCh Aug 26, 2026
41c774d
Force NVRTC_DYNAMIC_LINKING=ON for the x86_64 Debug build variant
EmmaQiaoCh Aug 26, 2026
bd16d79
Add some openmpi envs and install flashinfer
EmmaQiaoCh Aug 27, 2026
4497719
Set Open MPI 5 as default
EmmaQiaoCh Aug 28, 2026
f23913b
Add some debug info
EmmaQiaoCh Aug 28, 2026
2e80420
Create the node-local MPI communicator lazily instead of at import time
EmmaQiaoCh Aug 28, 2026
b044489
Remove the run_mypy MPI probe and correct the local_mpi_comm comment
EmmaQiaoCh Aug 30, 2026
ee6dfcf
Match __restrict__ in the MHC and compressor kernel explicit instanti…
EmmaQiaoCh Aug 30, 2026
8188902
Brace the cudaMemLocation id when advising the managed fallback alloc…
EmmaQiaoCh Aug 30, 2026
3587e6a
Change to use formal released PyTorch 26.08
EmmaQiaoCh Aug 31, 2026
83a5617
https://nvbugs/6632610 : disagg single-GPU tests: pass the MPI port n…
BowenFu Aug 25, 2026
26e7871
[https://nvbugs/6556918][fix] Fix residual add norm torch compile inp…
yifeizhang-c Aug 4, 2026
0d3a5b5
[https://nvbugs/6474888][fix] Support PyTorch 2.14 compilation metadata
BoyueZ Aug 7, 2026
e1f8631
[None][fix] Unify the fix for torch compile input index error
yifeizhang-c Aug 10, 2026
9ce8470
[None][fix] Link NVRTC dynamically in the cpp test-time build
EmmaQiaoCh Aug 31, 2026
0cd10e8
[None][chore] TEMP: dump the MPI stack and probe spawn in every test …
EmmaQiaoCh Aug 31, 2026
4851fa3
[None][chore] TEMP: raise the MPI spawn probe to psec/server verbosity
EmmaQiaoCh Sep 1, 2026
54cf5db
[None][chore] Finish the 26.08 dependency bump: polygraphy, Triton, C…
EmmaQiaoCh Sep 1, 2026
8bb6540
[None][chore] Stop pinning Open MPI 5 on the linker path, fix the spa…
EmmaQiaoCh Sep 1, 2026
ef30cb5
[None][chore] Give PRRTE its install prefix, drop switch_to_ompi5.sh
EmmaQiaoCh Sep 2, 2026
89e4edb
[None][chore] Remove the temporary MPI spawn diagnostics
EmmaQiaoCh Sep 2, 2026
6c28230
[None][fix] Give the test pods a short hostname so singleton spawn works
EmmaQiaoCh Sep 2, 2026
189971d
[None][fix] Create the Ray workers when LLM() is built inside an even…
EmmaQiaoCh Sep 3, 2026
82c402d
[None][fix] Redo the MPI spawn prerequisites in the pip sanity stage
EmmaQiaoCh Sep 3, 2026
f705e21
[None][chore] Tighten the MPI pod hostname comments
EmmaQiaoCh Sep 3, 2026
f90ed10
[None][fix] Ask Open MPI 5 to exclude osc/ucx instead of naming osc/p…
EmmaQiaoCh Sep 3, 2026
f8db8ed
[None][chore] Add an on-demand probe for the MPI hostname failure
EmmaQiaoCh Sep 3, 2026
2d68e9d
[None][chore] Run the MPI hostname probe on a pod that can be renamed
EmmaQiaoCh Sep 3, 2026
7b6e435
[None][fix] Give PMIx a short hostname instead of renaming the test pod
EmmaQiaoCh Sep 4, 2026
b6e6f26
[None][chore] Drop the unused internal pip index and CUTE_DSL_LIBS
EmmaQiaoCh Sep 4, 2026
56a74b8
[None][fix] Link NVRTC dynamically in the kv-cache-compression cpp build
EmmaQiaoCh Sep 5, 2026
97648bd
[None][fix] Let PRRTE fork its DVM as root in the K8s test stages
EmmaQiaoCh Sep 5, 2026
8e41fc9
[None][fix] Point the ModelExpress stage at the NIXL built into the i…
EmmaQiaoCh Sep 6, 2026
b10f118
[None][fix] Name the Open MPI 5 shared-memory BTL sm, not vader
EmmaQiaoCh Sep 6, 2026
5e176bf
[None][fix] Drop the mamba wheels when they do not match the torch ABI
EmmaQiaoCh Sep 6, 2026
b259fb1
[None][fix] Stop installing the mamba wheels instead of undoing the i…
EmmaQiaoCh Sep 6, 2026
b0db1e9
[None][chore] Record the MPI environment the nested spawn inherits
EmmaQiaoCh Sep 8, 2026
57533f6
[None][fix] Forward the root and hostname env to the nested MPI spawn
EmmaQiaoCh Sep 8, 2026
fa27985
[None][fix] Link NVRTC dynamically when building the wheel image
EmmaQiaoCh Sep 8, 2026
e14bbec
[None][chore] Disable the RockyLinux8 and Ubuntu 24.04 CI images for now
EmmaQiaoCh Sep 8, 2026
6d737d9
[None][chore] Temporarily honor --post-merge in the multi-GPU gating
EmmaQiaoCh Sep 9, 2026
b1a404a
[None][fix] Stop the wheel install from downgrading the container's t…
EmmaQiaoCh Sep 9, 2026
99dc6a3
[None][fix] Install the CUDA packages the public repos now publish
EmmaQiaoCh Sep 10, 2026
892d949
[None][chore] Re-enable the RockyLinux8 CI images
EmmaQiaoCh Sep 10, 2026
3ee47ce
[None][chore] Drop the redundant NVRTC comment from the cpp build
EmmaQiaoCh Sep 10, 2026
9f1ad64
[None][test] Close the gaps in the tests this branch added
EmmaQiaoCh Sep 10, 2026
6c0fdf8
[None][chore] Install CUDA 13.4 on the bare-metal sanity-check stages
EmmaQiaoCh Sep 10, 2026
2b86beb
Update base image tags
EmmaQiaoCh Sep 10, 2026
3082fa5
[None][fix] Align the bare-metal sanity PyTorch with the one the whee…
EmmaQiaoCh Sep 11, 2026
dd95ee7
[None][test] Waive the failures the 26.08 upgrade surfaced
EmmaQiaoCh Sep 11, 2026
ffdd5b5
[None][test] Disable the Verl post-merge stage until nvbugs/6759612 i…
EmmaQiaoCh Sep 11, 2026
5e7785b
[None][test] Waive three more failures reproduced in two CI rounds
EmmaQiaoCh Sep 12, 2026
3c28aa1
[None][test] Waive three more failures the 26.08 upgrade surfaced
EmmaQiaoCh Sep 13, 2026
f22bd25
[None][test] Waive two more disaggregated single-GPU failures
EmmaQiaoCh Sep 13, 2026
c9e148c
[None][chore] Revert the temporary --post-merge multi-GPU gating
EmmaQiaoCh Sep 13, 2026
bc18f90
[None][chore] Describe the MPI hostname limit without a hard-coded le…
EmmaQiaoCh Sep 13, 2026
e9c8eb9
[None][chore] Address review nits in the docker files
EmmaQiaoCh Sep 14, 2026
d92a5f9
[None][test] Skip the disaggregated single-GPU tests instead of rewor…
EmmaQiaoCh Sep 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ATTRIBUTIONS-Python.md
Original file line number Diff line number Diff line change
Expand Up @@ -48450,7 +48450,7 @@ SOFTWARE.



## polygraphy (0.49.26)
## polygraphy (0.53.4)

### Licenses
License: `Apache 2.0`
Expand Down
29 changes: 20 additions & 9 deletions cpp/tensorrt_llm/kernels/compressorKernels/compressorKernels.cu
Original file line number Diff line number Diff line change
Expand Up @@ -674,10 +674,16 @@ __global__ void pagedKvCompressKernel(void const* __restrict__ kv_score_raw, flo
// clang-format on

// Generate explicit template instantiations.
//
// The parameter lists must repeat the definition's spelling verbatim, including `__restrict__` and any top-level
// `const`. cudafe1 rewrites every kernel parameter into a reference when it emits `__wrapper__device_stub_*`, which
// turns those otherwise-ignored qualifiers into part of the function type. Clang then rejects the instantiation;
// GCC does not diagnose it.
#define INST_DECODE(HD, KV_EB, STATE_EB, CR, NRW) \
template __global__ void pagedKvCompressKernel<HD, KV_EB, STATE_EB, CR, NRW>(void const*, float const*, void*, \
void*, int32_t const*, int32_t const*, void*, int32_t const*, int32_t const*, int32_t const*, int, int, int, \
int);
template __global__ void pagedKvCompressKernel<HD, KV_EB, STATE_EB, CR, NRW>(void const* __restrict__, \
float const* __restrict__, void* __restrict__, void* __restrict__, int32_t const* __restrict__, \
int32_t const* __restrict__, void* __restrict__, int32_t const* __restrict__, int32_t const* __restrict__, \
int32_t const* __restrict__, int, int, int, int);
FOREACH_DECODE_CONFIG(INST_DECODE)
#undef INST_DECODE

Expand Down Expand Up @@ -1185,10 +1191,12 @@ __global__ void prefillReductionKernel(void const* __restrict__ kv_score_raw, fl
// Explicit instantiations. CR=128 uses four reduction groups to split the long
// token loop; CR=4 stays single-warp because the reduction is too small to amortize
// the merge overhead.
// See the note above INST_DECODE: the parameter spelling must match the definition, `__restrict__` included.
#define INST_PREFILL(HD, KV_EB, STATE_EB, CR, NRW) \
template __global__ void prefillReductionKernel<HD, KV_EB, STATE_EB, CR, NRW>(void const*, float const*, void*, \
void*, int32_t const*, int32_t const*, void*, int32_t const*, int32_t const*, int32_t const*, int32_t const*, \
int, int, int, int);
template __global__ void prefillReductionKernel<HD, KV_EB, STATE_EB, CR, NRW>(void const* __restrict__, \
float const* __restrict__, void* __restrict__, void* __restrict__, int32_t const* __restrict__, \
int32_t const* __restrict__, void* __restrict__, int32_t const* __restrict__, int32_t const* __restrict__, \
int32_t const* __restrict__, int32_t const* __restrict__, int, int, int, int);

#define INST_PREFILL_DTYPES(HD, CR, NRW) \
INST_PREFILL(HD, 2, 2, CR, NRW) \
Expand Down Expand Up @@ -1756,10 +1764,13 @@ __global__ void postProcessScatterKernel(void const* __restrict__ kv_comp, // [t
// kNone supports bf16 (EB=2) and fp32 (EB=4) input types; the quantized
// scale types only support bf16 input since the compressor output is bf16.
// Each combination is instantiated with ROTATE_ACTIVATION=true and false.
// See the note above INST_DECODE: the parameter spelling must match the definition, `__restrict__` included.
#define INST_PPS(HD, EB, CST, AR) \
template __global__ void postProcessScatterKernel<HD, EB, CST, AR>(void const*, void*, void const*, float, \
float const*, int32_t const*, int, int, void*, int32_t const*, int32_t const*, int32_t const*, int32_t const*, \
bool const*, int, int, int, int, int, int, void*, void*);
template __global__ void postProcessScatterKernel<HD, EB, CST, AR>(void const* __restrict__, void* __restrict__, \
void const* __restrict__, float, float const* __restrict__, int32_t const* __restrict__, int, int, \
void* __restrict__, int32_t const* __restrict__, int32_t const* __restrict__, int32_t const* __restrict__, \
int32_t const* __restrict__, bool const* __restrict__, int, int, int, int, int, int, void* __restrict__, \
void* __restrict__);

#define INST_PPS_AR(HD, EB, CST) \
INST_PPS(HD, EB, CST, true) \
Expand Down
23 changes: 15 additions & 8 deletions cpp/tensorrt_llm/kernels/mhcKernels/mhcKernels.cu
Original file line number Diff line number Diff line change
Expand Up @@ -322,13 +322,19 @@ __launch_bounds__(BLOCK_SIZE) __global__ void mhcBigFuseKernel(float const* __re
#endif
}

// The parameter list below must repeat the definition's spelling verbatim, including `__restrict__` and any top-level
// `const`. cudafe1 rewrites every kernel parameter into a reference when it emits `__wrapper__device_stub_*`, which
// turns those otherwise-ignored qualifiers into part of the function type. Clang then rejects the instantiation;
// GCC does not diagnose it.
#define INST_BIGFUSE(NS, BS) \
template __global__ void mhcBigFuseKernel<NS, BS, /*kFuseNorm=*/false>(float const*, float const*, \
__nv_bfloat16 const*, float const*, float const*, float*, float*, __nv_bfloat16*, int, int, int, float, float, \
float, float, int, __nv_bfloat16 const*, float); \
template __global__ void mhcBigFuseKernel<NS, BS, /*kFuseNorm=*/true>(float const*, float const*, \
__nv_bfloat16 const*, float const*, float const*, float*, float*, __nv_bfloat16*, int, int, int, float, float, \
float, float, int, __nv_bfloat16 const*, float);
template __global__ void mhcBigFuseKernel<NS, BS, /*kFuseNorm=*/false>(float const* __restrict__, \
float const* __restrict__, __nv_bfloat16 const* __restrict__, float const* __restrict__, \
float const* __restrict__, float* __restrict__, float* __restrict__, __nv_bfloat16* __restrict__, int, int, \
int, float, float, float, float, int, __nv_bfloat16 const* __restrict__, float); \
template __global__ void mhcBigFuseKernel<NS, BS, /*kFuseNorm=*/true>(float const* __restrict__, \
float const* __restrict__, __nv_bfloat16 const* __restrict__, float const* __restrict__, \
float const* __restrict__, float* __restrict__, float* __restrict__, __nv_bfloat16* __restrict__, int, int, \
int, float, float, float, float, int, __nv_bfloat16 const* __restrict__, float);

INST_BIGFUSE(1, 128)
INST_BIGFUSE(1, 256)
Expand Down Expand Up @@ -535,9 +541,10 @@ __launch_bounds__(256) __global__ void mhcGemmSqrsumFmaKernel(__nv_bfloat16 cons
}
}

// See the note above INST_BIGFUSE: the parameter spelling must match the definition, `__restrict__` included.
#define INST_FMA(NPB) \
template __global__ void mhcGemmSqrsumFmaKernel<NPB>( \
__nv_bfloat16 const*, float const*, float*, float*, int, int, int);
template __global__ void mhcGemmSqrsumFmaKernel<NPB>(__nv_bfloat16 const* __restrict__, float const* __restrict__, \
float* __restrict__, float* __restrict__, int, int, int);

INST_FMA(1)
INST_FMA(2)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -375,8 +375,8 @@ void* HostAccessibleDeviceAllocator::allocate(size_t memorySize)
TLLM_CHECK_WITH_INFO(
mAllowManagedFallback, "HostAccessibleDeviceAllocator is not supported on the current system.");
TLLM_CUDA_CHECK(cudaMallocManaged(&devPtr, memorySize));
TLLM_CUDA_CHECK(cudaMemAdvise(
devPtr, memorySize, cudaMemAdviseSetPreferredLocation, {cudaMemLocationTypeDevice, currentDevId}));
TLLM_CUDA_CHECK(cudaMemAdvise(devPtr, memorySize, cudaMemAdviseSetPreferredLocation,
cudaMemLocation{cudaMemLocationTypeDevice, {currentDevId}}));
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
hostPtr = devPtr;
}
recordAllocation(devPtr, memorySize, hostPtr, memDesc);
Expand Down
9 changes: 9 additions & 0 deletions cpp/tensorrt_llm/thop/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,13 @@ endif()
add_library(th_utils STATIC thUtils.cpp)
set_property(TARGET th_utils PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET th_utils PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
# Newer Torch headers (e.g. ATen/native/cuda/Resize.h) compare ArrayRef against
# OptionalArrayRef in the reverse order, relying on C++20's automatic generation
# of the reversed comparison operator. th_utils/th_common only contain host .cpp
# sources, so scope the bump to these targets instead of the repo-wide C++17
# standard.
set_target_properties(th_utils PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED
Comment thread
EmmaQiaoCh marked this conversation as resolved.
Resolved
ON)
# Declare the dependency on the main shared library explicitly so consumers
# (e.g. thUtilsTest) place it after th_utils on the link line; this was
# previously satisfied transitively via the removed TensorRT plugin target.
Expand Down Expand Up @@ -146,6 +153,8 @@ add_library(
mhcOp.cpp
compressorOp.cpp)
set_property(TARGET th_common PROPERTY POSITION_INDEPENDENT_CODE ON)
set_target_properties(th_common PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED
ON)
target_link_libraries(
th_common PRIVATE ${TORCH_LIBRARIES} th_utils ${Python3_LIBRARIES}
${SHARED_TARGET} pg_utils)
Expand Down
10 changes: 8 additions & 2 deletions docker/Dockerfile.multi
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
# Multi-stage Dockerfile
ARG BASE_IMAGE=nvcr.io/nvidia/pytorch
ARG TRITON_IMAGE=nvcr.io/nvidia/tritonserver
ARG BASE_TAG=26.05-py3
ARG TRITON_BASE_TAG=26.05-py3
ARG BASE_TAG=26.08-py3
Comment thread
EmmaQiaoCh marked this conversation as resolved.
Resolved
ARG TRITON_BASE_TAG=26.08-py3
ARG DEVEL_IMAGE=devel

FROM ${BASE_IMAGE}:${BASE_TAG} AS base
Expand Down Expand Up @@ -131,6 +131,12 @@ RUN --mount=type=bind,source=docker/common,target=/opt/docker/common \
fi && \
bash /opt/docker/common/install_ci.sh

# Allow MPI/PRTE to run as root inside the container
ENV OMPI_ALLOW_RUN_AS_ROOT=1 \
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 \
PRTE_ALLOW_RUN_AS_ROOT=1 \
PRTE_ALLOW_RUN_AS_ROOT_CONFIRM=1

FROM ${DEVEL_IMAGE} AS wheel
WORKDIR /src/tensorrt_llm
COPY cpp cpp
Expand Down
16 changes: 11 additions & 5 deletions docker/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,13 @@ DOCKER_PROGRESS ?= auto
PLATFORM ?= $(shell uname -m | grep -q 'aarch64' && echo "arm64" || echo "amd64")
CUDA_ARCHS ?= $(if $(filter arm64,$(PLATFORM)),'90-real;100-real;120-real',)
BUILD_WHEEL_OPTS ?=
BUILD_WHEEL_ARGS ?= $(shell grep '^ARG BUILD_WHEEL_ARGS=' Dockerfile.multi | grep -o '=.*' | tr -d '="')$(if $(CUDA_ARCHS), --cuda_architectures $(CUDA_ARCHS))$(if $(BUILD_WHEEL_OPTS), $(BUILD_WHEEL_OPTS))
# The DLFW base image ships no libnvrtc_static.a, so cmake fails on a missing
# CUDA::nvrtc_static target unless NVRTC is linked dynamically. Only the wheel and
# release stages read BUILD_WHEEL_ARGS, and those always build FROM the DLFW devel
# image; the rockylinux8/ubuntu24 targets stop at tritondevel and never see it, so
# this needs no condition. Kept out of Dockerfile.multi's ARG default because the
# `tr -d '="'` below would strip the '=' out of NVRTC_DYNAMIC_LINKING=ON.
BUILD_WHEEL_ARGS ?= $(shell grep '^ARG BUILD_WHEEL_ARGS=' Dockerfile.multi | grep -o '=.*' | tr -d '="') --extra-cmake-vars NVRTC_DYNAMIC_LINKING=ON$(if $(CUDA_ARCHS), --cuda_architectures $(CUDA_ARCHS))$(if $(BUILD_WHEEL_OPTS), $(BUILD_WHEEL_OPTS))
Comment thread
EmmaQiaoCh marked this conversation as resolved.
Resolved
BUILD_WHEEL_SCRIPT ?=
TORCH_INSTALL_TYPE ?= skip
CUDA_VERSION ?=
Expand Down Expand Up @@ -208,21 +214,21 @@ jenkins-rockylinux8_%: PYTHON_VERSION_TAG_ID = $(if $(findstring 3.12,${PYTHON_V
jenkins-rockylinux8_%: IMAGE_WITH_TAG = $(shell . ../jenkins/current_image_tags.properties && echo $$LLM_ROCKYLINUX8_${PYTHON_VERSION_TAG_ID}_DOCKER_IMAGE)
jenkins-rockylinux8_%: STAGE = tritondevel
jenkins-rockylinux8_%: BASE_IMAGE = nvcr.io/nvidia/cuda
jenkins-rockylinux8_%: BASE_TAG = 13.2.1-devel-rockylinux8
jenkins-rockylinux8_%: BASE_TAG = 13.3.1-devel-rockylinux8

rockylinux8_%: STAGE = tritondevel
rockylinux8_%: BASE_IMAGE = nvcr.io/nvidia/cuda
rockylinux8_%: BASE_TAG = 13.2.1-devel-rockylinux8
rockylinux8_%: BASE_TAG = 13.3.1-devel-rockylinux8

# For x86_64
ubuntu22_%: STAGE = tritondevel
ubuntu22_%: BASE_IMAGE = nvcr.io/nvidia/cuda
ubuntu22_%: BASE_TAG = 13.2.1-devel-ubuntu22.04
ubuntu22_%: BASE_TAG = 13.3.1-devel-ubuntu22.04

# For x86_64 and aarch64
ubuntu24_%: STAGE = tritondevel
ubuntu24_%: BASE_IMAGE = nvcr.io/nvidia/cuda
ubuntu24_%: BASE_TAG = 13.2.1-devel-ubuntu24.04
ubuntu24_%: BASE_TAG = 13.3.1-devel-ubuntu24.04

trtllm_%: STAGE = release
trtllm_%: PUSH_TO_STAGING := 0
Expand Down
11 changes: 11 additions & 0 deletions docker/common/install_base.sh
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,17 @@ init_ubuntu() {
# the apt packages leaves pip3 functional.

echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> "${ENV}"

# PRRTE cannot derive its install dirs on its own: the HPC-X Open MPI 5 in the
# NGC PyTorch base image is relocated away from the prefix it was built with,
# so prte_info resolves to /build-result/hpcx-*, a build-machine path absent
# from the container, and `prte --version` cannot find its help files. Open
# MPI itself is fine -- the base image already exports OPAL_PREFIX and puts
# /usr/local/mpi/bin on PATH. Only the DLFW base images carry /opt/hpcx.
if [ -d /opt/hpcx/ompi5 ]; then
echo 'export PRTE_PREFIX=/opt/hpcx/ompi5' >> "${ENV}"
Comment thread
EmmaQiaoCh marked this conversation as resolved.
Resolved
fi

# Remove previous TRT installation
if [[ $(apt list --installed | grep libnvinfer) ]]; then
apt-get remove --purge -y libnvinfer*
Expand Down
Loading
Loading