Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
0ebe377
Changed version to 2.15.0
ptrendx Apr 20, 2026
f9de736
[PyTorch] Fix cuteDSL kernel incorrect numerics when K is 64 aligned …
ksivaman Apr 21, 2026
8e73f54
Add MXFP8 attention (#2719)
cyanguwa Apr 21, 2026
95edbd4
Fix flash attention version check. (#2910)
bbuschkaemper Apr 22, 2026
a506ec5
Make NS coefficients parameter 2D in Python API (#2904)
vcherepanov-nv Apr 22, 2026
45fb909
[PyTorch] Fix CP A2A F16 when NVTE_FP8_DPA_BWD=1 (#2917)
cyanguwa Apr 23, 2026
4b74684
[PyTorch] Fix FA4 selection when FA3 is unavailable. (#2909)
bbuschkaemper Apr 23, 2026
150525e
Fix the race in the dbias computation in MXFP8 quantization and group…
ptrendx Apr 24, 2026
c9ab18a
Remove uncessary ctype being passed to GroupedGEMMQuant kernel (#2922)
vthumbe1503 Apr 24, 2026
9250b77
[Common] Fix "0" literal for compilation (#2934)
cyanguwa Apr 28, 2026
94958be
[Common, PyTorch] Add triton mHC kernels & pytorch APIs (#2790)
kainzhong Apr 28, 2026
6075536
[PyTorch] Main_Grad buffer isnt overwritten when overwrite_main_grad=…
vthumbe1503 Apr 29, 2026
1460477
Correctly pad scaling factor inverses to satisfy cuteDSL requirements…
ksivaman Apr 29, 2026
a429716
[PyTorch] Fusible ops preserve usages in quantized weight tensors (#2…
timmoon10 May 1, 2026
df68421
[PyTorch] Add workaround for cuteDSL stride requirement for zero-toke…
ksivaman May 1, 2026
e688ae4
[JAX] Calculate seqlens and offsets in O(T) space instead of O(T*T) s…
KshitijLakhani May 1, 2026
10bdccc
[PyTorch] Cleanup `cudnn-frontend` requirements for fused grouped MLP…
ksivaman May 1, 2026
3378ef1
[JAX] Fix bf16 precision loss in TestGroupedDense reference dbias (#2…
tdophung Apr 30, 2026
42b8400
[PyTorch] Guard/document single parameter feature for grouped linear …
ksivaman May 4, 2026
2f9490a
auto-merge basis for release-sync-v2.15-260630 (raw, conflicts present)
VeeraRajasekhar Jun 30, 2026
8d83ffb
Resolve release-sync v2.15 conflicts + port ROCm fused-attn API
VeeraRajasekhar Jun 30, 2026
b20f014
ROCm build fixes for flash_attn TMA and swizzle dynamic smem
VeeraRajasekhar Jun 30, 2026
0853796
Guard new upstream FP8/MXFP8 fused-attn arch heuristics for ROCm
VeeraRajasekhar Jul 1, 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 3rdparty/cudnn-frontend
Submodule cudnn-frontend updated 278 files
2 changes: 1 addition & 1 deletion build_tools/VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.15.0.dev0
2.15.0
4 changes: 2 additions & 2 deletions ci/pytorch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ run_test_config(){
test $_fus_attn = auto -o $_fus_attn = ck -o $_fus_attn = aotriton && NVTE_FLASH_ATTN=0 NVTE_CPU_OFFLOAD_V1=1 run 3 test_cpu_offloading_v1.py
run_default_fa 1 test_fused_rope.py
run_default_fa 1 test_fused_router.py
run_default_fa 1 test_fusible_ops.py
NVTE_GROUPED_LINEAR_SINGLE_PARAM=1 run_default_fa 1 test_fusible_ops.py
run_default_fa 1 test_gemm_autotune.py
run 1 test_gqa.py
run 1 test_jit.py
Expand All @@ -66,7 +66,7 @@ run_test_config(){
run_default_fa 1 test_nvfp4_fsdp2_hooks.py
run_default_fa 1 test_permutation.py
run_default_fa 1 test_recipe.py
run 1 test_sanity.py
NVTE_GROUPED_LINEAR_SINGLE_PARAM=1 run 1 test_sanity.py
run_default_fa 3 test_sanity_hipified_cast_transpose.py
run_default_fa 1 test_sanity_import.py
run_default_fa 1 test_torch_compile.py
Expand Down
10 changes: 10 additions & 0 deletions docs/api/pytorch.rst
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,16 @@ Operation fuser

.. autoapiclass:: transformer_engine.pytorch.ops.SwiGLU

.. autoapifunction:: transformer_engine.pytorch.triton.mhc.mhc_fused_sinkhorn

.. autoapifunction:: transformer_engine.pytorch.triton.mhc.mhc_fused_scale

.. autoapifunction:: transformer_engine.pytorch.triton.mhc.mhc_fused_aggregate

.. autoapifunction:: transformer_engine.pytorch.triton.mhc.mhc_fused_expand_combine

.. autoapifunction:: transformer_engine.pytorch.triton.mhc.mhc_fused_projection

Deprecated functions
--------------------

Expand Down
2 changes: 1 addition & 1 deletion qa/L0_pytorch_debug_unittest/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ NVTE_TORCH_COMPILE=0 pytest -v -s --junitxml=$XML_LOG_DIR/test_api_features.xml
pytest -v -s --junitxml=$XML_LOG_DIR/test_perf.xml $TE_PATH/tests/pytorch/debug/test_perf.py --feature_dirs=$NVTE_TEST_NVINSPECT_FEATURE_DIRS --configs_dir=$NVTE_TEST_NVINSPECT_CONFIGS_DIR || test_fail "test_perf.py"

# standard sanity and numerics tests with initialized debug
NVTE_TEST_NVINSPECT_ENABLED=1 NVTE_TEST_NVINSPECT_CONFIG_FILE=$NVTE_TEST_NVINSPECT_DUMMY_CONFIG_FILE NVTE_TEST_NVINSPECT_FEATURE_DIRS=$NVTE_TEST_NVINSPECT_FEATURE_DIRS PYTORCH_JIT=0 NVTE_TORCH_COMPILE=0 NVTE_ALLOW_NONDETERMINISTIC_ALGO=0 pytest -v -s --junitxml=$XML_LOG_DIR/test_sanity_2.xml $TE_PATH/tests/pytorch/test_sanity.py || test_fail "debug test_sanity.py"
NVTE_GROUPED_LINEAR_SINGLE_PARAM=1 NVTE_TEST_NVINSPECT_ENABLED=1 NVTE_TEST_NVINSPECT_CONFIG_FILE=$NVTE_TEST_NVINSPECT_DUMMY_CONFIG_FILE NVTE_TEST_NVINSPECT_FEATURE_DIRS=$NVTE_TEST_NVINSPECT_FEATURE_DIRS PYTORCH_JIT=0 NVTE_TORCH_COMPILE=0 NVTE_ALLOW_NONDETERMINISTIC_ALGO=0 pytest -v -s --junitxml=$XML_LOG_DIR/test_sanity_2.xml $TE_PATH/tests/pytorch/test_sanity.py || test_fail "debug test_sanity.py"
NVTE_TEST_NVINSPECT_ENABLED=1 NVTE_TEST_NVINSPECT_CONFIG_FILE=$NVTE_TEST_NVINSPECT_DUMMY_CONFIG_FILE NVTE_TEST_NVINSPECT_FEATURE_DIRS=$NVTE_TEST_NVINSPECT_FEATURE_DIRS PYTORCH_JIT=0 NVTE_TORCH_COMPILE=0 NVTE_ALLOW_NONDETERMINISTIC_ALGO=0 NVTE_FUSED_ATTN=0 pytest -v -s --junitxml=$XML_LOG_DIR/test_numerics_2.xml $TE_PATH/tests/pytorch/test_numerics.py || test_fail "debug test_numerics.py"

if [ "$RET" -ne 0 ]; then
Expand Down
Empty file modified qa/L0_pytorch_lint/test.sh
100644 → 100755
Empty file.
8 changes: 5 additions & 3 deletions qa/L0_pytorch_unittest/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ mkdir -p "$XML_LOG_DIR"

pip3 install pytest==8.2.1 || error_exit "Failed to install pytest"

python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_sanity.xml $TE_PATH/tests/pytorch/test_sanity.py || test_fail "test_sanity.py"
NVTE_GROUPED_LINEAR_SINGLE_PARAM=1 python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_sanity.xml $TE_PATH/tests/pytorch/test_sanity.py || test_fail "test_sanity.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_recipe.xml $TE_PATH/tests/pytorch/test_recipe.py || test_fail "test_recipe.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_deferred_init.xml $TE_PATH/tests/pytorch/test_deferred_init.py || test_fail "test_deferred_init.py"
PYTORCH_JIT=0 NVTE_TORCH_COMPILE=0 NVTE_ALLOW_NONDETERMINISTIC_ALGO=0 NVTE_FUSED_ATTN=0 python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_numerics.xml $TE_PATH/tests/pytorch/test_numerics.py || test_fail "test_numerics.py"
Expand All @@ -37,11 +37,11 @@ python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_quantized_tensor
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_float8blockwisetensor.xml $TE_PATH/tests/pytorch/test_float8blockwisetensor.py || test_fail "test_float8blockwisetensor.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_float8_blockwise_scaling_exact.xml $TE_PATH/tests/pytorch/test_float8_blockwise_scaling_exact.py || test_fail "test_float8_blockwise_scaling_exact.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_float8_blockwise_gemm_exact.xml $TE_PATH/tests/pytorch/test_float8_blockwise_gemm_exact.py || test_fail "test_float8_blockwise_gemm_exact.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/test_grouped_tensor.xml $TE_PATH/tests/pytorch/test_grouped_tensor.py || test_fail "test_grouped_tensor.py"
NVTE_GROUPED_LINEAR_SINGLE_PARAM=1 python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/test_grouped_tensor.xml $TE_PATH/tests/pytorch/test_grouped_tensor.py || test_fail "test_grouped_tensor.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_gqa.xml $TE_PATH/tests/pytorch/test_gqa.py || test_fail "test_gqa.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_fused_optimizer.xml $TE_PATH/tests/pytorch/test_fused_optimizer.py || test_fail "test_fused_optimizer.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_multi_tensor.xml $TE_PATH/tests/pytorch/test_multi_tensor.py || test_fail "test_multi_tensor.py"
NVTE_CUTEDSL_FUSED_GROUPED_MLP=1 python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_fusible_ops.xml $TE_PATH/tests/pytorch/test_fusible_ops.py || test_fail "test_fusible_ops.py"
NVTE_GROUPED_LINEAR_SINGLE_PARAM=1 NVTE_CUTEDSL_FUSED_GROUPED_MLP=1 python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_fusible_ops.xml $TE_PATH/tests/pytorch/test_fusible_ops.py || test_fail "test_fusible_ops.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_backward_override.xml $TE_PATH/tests/pytorch/test_backward_override.py || test_fail "test_backward_override.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_permutation.xml $TE_PATH/tests/pytorch/test_permutation.py || test_fail "test_permutation.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_parallel_cross_entropy.xml $TE_PATH/tests/pytorch/test_parallel_cross_entropy.py || test_fail "test_parallel_cross_entropy.py"
Expand All @@ -58,6 +58,8 @@ fi
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_checkpoint.xml $TE_PATH/tests/pytorch/test_checkpoint.py || test_fail "test_checkpoint.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_fused_router.xml $TE_PATH/tests/pytorch/test_fused_router.py || test_fail "test_fused_router.py"
python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_partial_cast.xml $TE_PATH/tests/pytorch/test_partial_cast.py || test_fail "test_partial_cast.py"
# Disable autotuning to make unittests faster. In addition, disable TF32 path to fully align with the pytorch reference implementation's precision
NVTE_DISABLE_TRITON_AUTOTUNING=1 NVIDIA_TF32_OVERRIDE=0 python3 -m pytest --tb=auto --junitxml=$XML_LOG_DIR/pytest_test_mhc.xml $TE_PATH/tests/pytorch/test_mhc.py || test_fail "test_mhc.py"

if [ "$RET" -ne 0 ]; then
echo "Error in the following test cases:$FAILED_CASES"
Expand Down
3 changes: 3 additions & 0 deletions tests/cpp/operator/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ add_executable(test_operator
test_multi_unpadding.cu
test_causal_softmax.cu
test_swizzle.cu
test_multi_swizzle.cu
test_swap_first_dims.cu
test_grouped_gemm.cu #CUDA-only test
../test_common.cu)
Expand All @@ -44,6 +45,8 @@ if(USE_ROCM)
list(REMOVE_ITEM test_cuda_sources
test_cast_float8blockwise.cu
test_grouped_gemm.cu)
# Skip on ROCm for now; TODO: revisit on gfx1250 and re-enable these tests.
list(REMOVE_ITEM test_cuda_sources test_multi_swizzle.cu)
list(APPEND test_cuda_sources
test_dequantize_nvfp4.cu
test_cublaslt_gemm.cu
Expand Down
Loading
Loading