Skip to content

Sf only per tok quant - #4042

Open
IwakuraRein wants to merge 13 commits into
flashinfer-ai:mainfrom
IwakuraRein:sf-only-per-tok-quant
Open

IwakuraRein wants to merge 13 commits into
flashinfer-ai:mainfrom
IwakuraRein:sf-only-per-tok-quant

Conversation

@IwakuraRein

@IwakuraRein IwakuraRein commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

📌 Description

Add a faster nvfp4 per-token quantization path for trtllm-gen Nvfp4 MoE. The new quantization kernel achieves speedup for large batch size.

  • add scaleOnlyQuantAndPerTokenScaleKernel
  • for for trtllm-gen Nvfp4 MoE, allow outputing fp32 scales

Performance

     N       M  cute-dsl (us):   cuda (us)  scale-only (us)   speedup over cuda
---------------------------------------------------------------------------------
  1024       1      11.745      11.617           10.864          1.07x
  1024       8      11.712      11.456           10.720          1.07x
  1024      32      11.873      12.000           10.784          1.11x
  1024     128      11.808      12.064           11.423          1.06x
  1024    1024      13.040      12.608           11.424          1.10x
  1024    2048      13.952      13.600           11.328          1.20x
  1024    4096      16.256      15.760           11.616          1.36x
  1024    8192      20.480      20.000           12.160          1.64x
  1024   16384      28.688      28.512           14.112          2.02x
  2048       1      13.584      11.393           10.671          1.07x
  2048       8      13.440      11.584           10.944          1.06x
  2048      32      13.856      11.872           10.800          1.10x
  2048     128      11.936      12.192           11.360          1.07x
  2048    1024      13.280      12.880           11.360          1.13x
  2048    2048      14.528      14.208           11.648          1.22x
  2048    4096      17.184      16.448           11.808          1.39x
  2048    8192      21.264      20.832           13.056          1.60x
  2048   16384      30.240      29.088           15.168          1.92x
  4096       1      13.760      11.872           10.912          1.09x
  4096       8      13.856      11.759           10.800          1.09x
  4096      32      14.048      12.288           10.944          1.12x
  4096     128      13.184      12.320           11.264          1.09x
  4096    1024      14.591      14.143           11.680          1.21x
  4096    2048      17.072      15.872           11.712          1.36x
  4096    4096      21.120      19.232           12.784          1.50x
  4096    8192      28.960      25.728           14.336          1.79x
  4096   16384      43.584      38.928           17.872          2.18x
  8192       1      12.480      12.737           11.008          1.16x
  8192       8      12.672      12.608           10.912          1.16x
  8192      32      12.992      13.344           11.072          1.21x
  8192     128      14.624      13.280           11.361          1.17x
  8192    1024      17.312      16.512           12.032          1.37x
  8192    2048      21.792      20.512           12.624          1.62x
  8192    4096      30.336      28.368           14.528          1.95x
  8192    8192      44.656      40.929           18.176          2.25x
  8192   16384      70.945      65.633           24.608          2.67x

python benchmarks/bench_moe_deepseek.py --use-per-token-activation --ep 8

--------------------------------------------------------
 Tokens |       old       |       new       |  Speedup  
        |      ms  TFLOPS |      ms  TFLOPS |           
-------------------------------------------------------
    128 |   0.149    75.5 |   0.147    76.5 |    1.01x  
    256 |   0.158   142.9 |   0.157   143.7 |    1.01x  
    512 |   0.168   269.2 |   0.166   271.4 |    1.01x  
   1024 |   0.175   515.5 |   0.171   526.3 |    1.02x  
   2048 |   0.193   934.4 |   0.186   971.8 |    1.04x  
   4096 |   0.238  1515.5 |   0.224  1611.3 |    1.06x  
--------------------------------------------------------

🔍 Related Issues

🚀 Pull Request Checklist

Thank you for contributing to FlashInfer! Before we review your pull request, please make sure the following items are complete.

✅ Pre-commit Checks

  • I have installed pre-commit by running pip install pre-commit (or used your preferred method).
  • I have installed the hooks with pre-commit install.
  • I have run the hooks manually with pre-commit run --all-files and fixed any reported issues.

If you are unsure about how to set up pre-commit, see the pre-commit documentation.

🧪 Tests

  • Tests have been added or updated as needed.
  • All tests are passing (unittest, etc.).

Reviewer Notes

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Added NVFP4 “scale-only” quantization using FP32 per-block scales, including per-token scale generation.
    • Expanded support for additional scale output layouts in this path.
    • Improved fused MoE quantization/scaling to support a distinct GEMM1 output dtype, controlled by an environment flag for FP4 “fast math”.
  • Bug Fixes

    • Tightened candidate validation for scaling/layout configurations.
    • Corrected MoE scale buffer typing/wiring and added runtime dtype handling for the selected path.
  • Tests

    • Updated MoE test environment handling to reliably toggle and restore FP4 fast-math behavior.
  • Chores

    • Updated internal TRTLLM GEN BMM artifact path/checksum metadata.

Signed-off-by: Siyuan Fu <siyuanf@nvidia.com>
Signed-off-by: Siyuan Fu <siyuanf@nvidia.com>
Signed-off-by: Siyuan Fu <siyuanf@nvidia.com>
Signed-off-by: Siyuan Fu <siyuanf@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ce6b7fb2-d3e8-45e4-a51e-4cfa6a74f543

📥 Commits

Reviewing files that changed from the base of the PR and between c164dfb and 4ec4d1b.

📒 Files selected for processing (2)
  • csrc/trtllm_fused_moe_kernel_launcher.cu
  • tests/moe/utils.py
🚧 Files skipped from review as they are similar to previous changes (1)
  • csrc/trtllm_fused_moe_kernel_launcher.cu

📝 Walkthrough

Walkthrough

Adds scale-only NVFP4 quantization kernels for FP32 block scales, extends MoE runner dtype contracts, and selects between E2m1 scale-only and BF16 NVFP4 quantization paths. FP4 launcher allocation, environment handling, kernel filtering, artifact references, benchmark inputs, and test fixtures are updated.

Changes

NVFP4 MoE quantization

Layer / File(s) Summary
Scale-only quantization kernels and dispatch
csrc/nv_internal/tensorrt_llm/kernels/quantization.cuh, csrc/nv_internal/tensorrt_llm/kernels/quantization.h, csrc/nv_internal/cpp/kernels/quantization.cu, benchmarks/bench_nvfp4_quantize_backend_comparison.py
Adds block and warp kernels that reconstruct scales, compute per-token scales, write FP8 outputs for supported layouts, select launch strategies, and pass CPU global scales to the CUDA benchmark path.
Dtype-aware MoE execution
include/flashinfer/trtllm/fused_moe/runner.h, csrc/trtllm_fused_moe_runner.cu
Adds the FC1 output dtype to MoE runner configuration and branches explicit quantization between scale-only E2m1 processing and BF16 NVFP4 quantization.
FP4 launcher and configuration wiring
csrc/trtllm_fused_moe_kernel_launcher.cu, csrc/trtllm_batched_gemm_runner.cu, tests/moe/utils.py
Propagates the fast-math-controlled output dtype, updates FP4 tensor allocation and workspace pointers, filters incompatible kernel candidates, and conditions the test environment flag.
Generated artifact references
flashinfer/artifacts.py
Updates the TRTLLM generated BMM artifact path and checksum.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant FP4BlockScaleLauncher
  participant MoERunner
  participant PermuteGemm1
  participant ScaleOnlyQuantization
  participant NVFP4Quantization

  FP4BlockScaleLauncher->>MoERunner: configure dtypeGemm1Output
  MoERunner->>PermuteGemm1: run FC1 with selected output dtype
  alt E2m1 output
    MoERunner->>ScaleOnlyQuantization: process FP32 block scales
  else BF16 output
    MoERunner->>NVFP4Quantization: quantize BF16 activation
  end
Loading

Possibly related PRs

Suggested reviewers: yzh119, bkryu, nekorobov, jiahanc, zianglih

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 40.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title points to the new scale-only per-token quantization path, though it uses abbreviations.
Description check ✅ Passed The description follows the template and gives a clear summary plus benchmarks, though Related Issues and tests remain unfilled.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces support for fast-math-free FP4 quantization in MoE kernels, adding the scaleOnlyQuantAndPerTokenScaleKernel to quantize FP32 NVFP4 dequantization scales to E4M3 and find row-wise amax when raw NVFP4 input is unavailable. It also updates the MoE runner and launcher to handle BF16 or E2M1 GEMM1 output datatypes based on the fast math configuration. Feedback on these changes includes: removing the redundant and potentially undefined tg:: namespace prefix in trtllm_batched_gemm_runner.cu, adding a null check for workspace.activation_output_scale in trtllm_fused_moe_runner.cu to prevent dereferencing issues, and handling potential shared memory limit exhaustion in quantization.cu if smem_size exceeds 48KB.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread csrc/trtllm_batched_gemm_runner.cu Outdated
Comment thread csrc/trtllm_fused_moe_runner.cu
Comment thread csrc/nv_internal/cpp/kernels/quantization.cu Outdated
Signed-off-by: Siyuan Fu <siyuanf@nvidia.com>
Signed-off-by: Siyuan Fu <siyuanf@nvidia.com>
Signed-off-by: Siyuan Fu <siyuanf@nvidia.com>
@IwakuraRein

Copy link
Copy Markdown
Collaborator Author

/bot run

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

GitLab MR !1004 has been created, and the CI pipeline #58862832 is currently running. I'll report back once the pipeline job completes.

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

[FAILED] Pipeline #58862832: 7/20 passed

@IwakuraRein

Copy link
Copy Markdown
Collaborator Author

/bot run

@IwakuraRein
IwakuraRein marked this pull request as ready for review July 22, 2026 21:44
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

GitLab MR !1004 has been updated with latest changes, and the CI pipeline #59145927 is currently running. I'll report back once the pipeline job completes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
csrc/trtllm_fused_moe_kernel_launcher.cu (1)

538-553: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Consider including mDtypeGemm1Output in runnerKey.

The runner cache key omits mDtypeGemm1Output, yet the runner is constructed with mDtypeGemm1Output.value_or(mDtypeAct) (Line 570). This is only safe today because that dtype is fully derivable from usePerTokenScalingGemm2 (already in the key) plus the process-constant disableFP4QuantFastMath. If the selection ever gains a runtime-varying input, cached runners could be returned with a stale FC1 output dtype. Adding the effective dtypeGemm1Output to the key makes this robust to future changes.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@csrc/trtllm_fused_moe_kernel_launcher.cu` around lines 538 - 553, Update the
runnerKey construction in the launcher to include the effective
mDtypeGemm1Output value, matching the value passed to runner construction via
mDtypeGemm1Output.value_or(mDtypeAct). Ensure distinct FC1 output dtypes produce
distinct cached runners while preserving the existing key fields and ordering.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@csrc/trtllm_fused_moe_kernel_launcher.cu`:
- Around line 538-553: Update the runnerKey construction in the launcher to
include the effective mDtypeGemm1Output value, matching the value passed to
runner construction via mDtypeGemm1Output.value_or(mDtypeAct). Ensure distinct
FC1 output dtypes produce distinct cached runners while preserving the existing
key fields and ordering.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9f79e499-11d9-4ac4-81d9-5885369eb398

📥 Commits

Reviewing files that changed from the base of the PR and between 9481099 and 9d5f678.

📒 Files selected for processing (9)
  • csrc/nv_internal/cpp/kernels/quantization.cu
  • csrc/nv_internal/tensorrt_llm/kernels/quantization.cuh
  • csrc/nv_internal/tensorrt_llm/kernels/quantization.h
  • csrc/trtllm_batched_gemm_runner.cu
  • csrc/trtllm_fused_moe_kernel_launcher.cu
  • csrc/trtllm_fused_moe_runner.cu
  • flashinfer/artifacts.py
  • include/flashinfer/trtllm/fused_moe/runner.h
  • tests/moe/utils.py

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

[FAILED] Pipeline #59145927: 6/20 passed

@IwakuraRein

Copy link
Copy Markdown
Collaborator Author

/bot run tests/moe

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

GitLab MR !1004 has been created, and the CI pipeline #59274664 is currently running. I'll report back once the pipeline job completes.

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

[FAILED] Pipeline #59274664 — 16/18 executed test jobs passed

Compared with nightly #59054944.

Unit Tests

GPU CUDA 12.9 CUDA 13.0 Notes
5090 ✅ Pass ✅ Pass
B300 ❌ New ✅ Pass New: tests.moe.test_trtllm_gen_fused_moe (1 failure; CUDA 12.9)
GB200 ❌ New ✅ Pass New: tests.moe.test_trtllm_gen_fused_moe (1 failure; CUDA 12.9)
GB300 ✅ Pass ✅ Pass
H100 ✅ Pass ✅ Pass
RTX Pro 6000 Blackwell ✅ Pass ✅ Pass

✅ Pass · 🟡 Old failure · ❌ New failure · ⏱ Test timeout · ⚠️ Infrastructure · ❔ Unknown or unclassified · — Not run

Multi-GPU and Multi-Node Tests — 6/6 passed

GPU CUDA 12.9 CUDA 13.0 Notes
B300 (multi-GPU) ✅ Pass ✅ Pass
GB200 (multi-node) ✅ Pass ✅ Pass
GB300 (multi-node) ✅ Pass ✅ Pass
Failure details

New relative to nightly (attribution uncertain)

  • tests.moe.test_trtllm_gen_fused_moe — 2 failures on B300 / CUDA 12.9, GB200 / CUDA 12.9
    • Exception: Mismatch percentage is 0.8729 for rtol 0.85 (threshold: 0.0800)

Optional<Tensor> activation_output_scale;
TensorView topk_ids; // [num_tokens, top_k] - pre-computed or output top-k expert indices
TensorView topk_weights; // [num_tokens, top_k] - pre-computed or output top-k routing weights
static bool const disableFP4QuantFastMath;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is caching an env var in a static variable common practice in the codebase? I can imagine it gets initialized once and remains unchanged across test fixtures that enable/disable FP4 quantization fast math.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right. This variable will be fixed after .so is loaded. Thanks for point out.

@Aneureka

Copy link
Copy Markdown
Collaborator

LGTM overall. Left a minor comment.

@IwakuraRein
IwakuraRein requested a review from feih-nv as a code owner July 28, 2026 16:35
@IwakuraRein

Copy link
Copy Markdown
Collaborator Author

/bot run tests/moe

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

GitLab MR !1004 has been updated with latest changes, and the CI pipeline #59979580 is currently running. I'll report back once the pipeline job completes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
benchmarks/bench_nvfp4_quantize_backend_comparison.py (1)

92-107: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Document the backend-specific scale placement.

The CPU/GPU split at Line [104] is intentional but easy to regress. Add a short comment explaining that CUDA extracts the scalar from the host copy, while CuTe-DSL consumes the CUDA tensor.

As per coding guidelines, intentional departures from established efficiency or defensiveness must be documented with rationale.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@benchmarks/bench_nvfp4_quantize_backend_comparison.py` around lines 92 - 107,
Add a concise inline comment in _run_nvfp4_quantize immediately before the
global_sf_cpu if backend == "cuda" selection, documenting that CUDA extracts the
scalar from the host copy while CuTe-DSL consumes the CUDA tensor. Preserve the
existing backend-specific argument behavior.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@benchmarks/bench_nvfp4_quantize_backend_comparison.py`:
- Around line 149-151: Move the global_sf.cpu() call inside the try block in
verify_nvfp4_correctness, keeping the CUDA-to-host copy covered by the existing
exception handling so deferred CUDA errors return the failure tuple instead of
aborting the sweep.

---

Nitpick comments:
In `@benchmarks/bench_nvfp4_quantize_backend_comparison.py`:
- Around line 92-107: Add a concise inline comment in _run_nvfp4_quantize
immediately before the global_sf_cpu if backend == "cuda" selection, documenting
that CUDA extracts the scalar from the host copy while CuTe-DSL consumes the
CUDA tensor. Preserve the existing backend-specific argument behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a3887fc2-0878-4074-8bfa-884b8c03489c

📥 Commits

Reviewing files that changed from the base of the PR and between 9d5f678 and c164dfb.

📒 Files selected for processing (2)
  • benchmarks/bench_nvfp4_quantize_backend_comparison.py
  • csrc/trtllm_fused_moe_kernel_launcher.cu
🚧 Files skipped from review as they are similar to previous changes (1)
  • csrc/trtllm_fused_moe_kernel_launcher.cu

Comment on lines +149 to 151
global_sf_cpu = global_sf.cpu()

try:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate and inspect the referenced function around the reported lines.
file="benchmarks/bench_nvfp4_quantize_backend_comparison.py"
if [ ! -f "$file" ]; then
  echo "Referenced file not found: $file"
  fd -a 'bench_nvfp4_quantize_backend_comparison.py' .
  exit 0
fi

wc -l "$file"
sed -n '110,190p' "$file" | cat -n -v

echo '--- all verify_nvfp4_correctness definitions/usages ---'
rg -n "def verify_nvfp4_correctness|verify_nvfp4_correctness|_split_quantize_result" "$file" benchmarks || true

Repository: flashinfer-ai/flashinfer

Length of output: 4881


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="benchmarks/bench_nvfp4_quantize_backend_comparison.py"

echo '--- verify_nvfp4_correctness full body ---'
sed -n '119,320p' "$file" | cat -n -v

echo '--- try/except structure search in file ---'
python3 - <<'PY'
from pathlib import Path
import ast
path = Path("benchmarks/bench_nvfp4_quantize_backend_comparison.py")
tree = ast.parse(path.read_text())
for node, label in (
    (tree.body[0], "module level"),
    (tree.body[1], "verify_nvfp4_correctness"),
):
    if isinstance(node, ast.FunctionDef):
        print(f"{label}: lines {node.lineno}-{node.end_lineno}")
        for c in node.body:
            print("- " + ast.unparse(c).splitlines()[0][:120])
PY

echo '--- call site surrounding try/except ---'
sed -n '380,445p' "$file" | cat -n -v

Repository: flashinfer-ai/flashinfer

Length of output: 11108


Keep the CUDA-to-host copy inside verify_nvfp4_correctness.

global_sf.cpu() still runs before the try block that returns verify_nvfp4_correctness’s failure tuple. Since .cpu() can synchronize and surface deferred CUDA errors, wrap it inside the same error boundary so failures are reported instead of aborting the sweep.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@benchmarks/bench_nvfp4_quantize_backend_comparison.py` around lines 149 -
151, Move the global_sf.cpu() call inside the try block in
verify_nvfp4_correctness, keeping the CUDA-to-host copy covered by the existing
exception handling so deferred CUDA errors return the failure tuple instead of
aborting the sweep.

Signed-off-by: Siyuan Fu <siyuanf@nvidia.com>
@IwakuraRein

Copy link
Copy Markdown
Collaborator Author

/bot run tests/moe

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

GitLab MR !1004 has been updated with latest changes, and the CI pipeline #60004868 is currently running. I'll report back once the pipeline job completes.

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

[FAILED] Pipeline #60004868 — 16/18 executed test jobs passed

Compared with nightly #59757517 (different CI configuration).

Unit Tests

GPU CUDA 12.9 CUDA 13.0 Notes
5090 ✅ Pass ✅ Pass
B300 ✅ Pass ✅ Pass
GB200 ✅ Pass ✅ Pass
GB300 ✅ Pass ✅ Pass
H100 ✅ Pass ✅ Pass
RTX Pro 6000 Blackwell ✅ Pass ✅ Pass

✅ Pass · 🟡 Old failure · ❌ New failure · ⏱ Test timeout · ⚠️ Infrastructure · ❔ Unknown or unclassified · — Not run

Multi-GPU and Multi-Node Tests — 4/6 passed

GPU CUDA 12.9 CUDA 13.0 Notes
B300 (multi-GPU) ❔ Failed ❔ Failed
GB200 (multi-node) ✅ Pass ✅ Pass
GB300 (multi-node) ✅ Pass ✅ Pass

No individual test or infrastructure failures could be extracted.

@flashinfer-bot

Copy link
Copy Markdown
Collaborator

[FAILED] Pipeline #60004868 — 16/18 executed test jobs passed

No usable JUnit artifact was available; individual tests and nightly comparison could not be recovered.

Unit Tests

GPU CUDA 12.9 CUDA 13.0 Notes
5090 ✅ Pass ✅ Pass
B300 ✅ Pass ✅ Pass
GB200 ✅ Pass ✅ Pass
GB300 ✅ Pass ✅ Pass
H100 ✅ Pass ✅ Pass
RTX Pro 6000 Blackwell ✅ Pass ✅ Pass

✅ Pass · 🟡 Old failure · ❌ New failure · ⏱ Test timeout · ⚠️ Infrastructure · ❔ Unknown or unclassified · — Not run

Multi-GPU and Multi-Node Tests — 4/6 passed

GPU CUDA 12.9 CUDA 13.0 Notes
B300 (multi-GPU) ❔ Unknown ❔ Unknown Unknown: script failed before producing a JUnit report (2 jobs; CUDA 12.9, CUDA 13.0)
GB200 (multi-node) ✅ Pass ✅ Pass
GB300 (multi-node) ✅ Pass ✅ Pass
Failure details

Timeouts, infrastructure, or incomplete jobs

1 similar comment
@flashinfer-bot

Copy link
Copy Markdown
Collaborator

[FAILED] Pipeline #60004868 — 16/18 executed test jobs passed

No usable JUnit artifact was available; individual tests and nightly comparison could not be recovered.

Unit Tests

GPU CUDA 12.9 CUDA 13.0 Notes
5090 ✅ Pass ✅ Pass
B300 ✅ Pass ✅ Pass
GB200 ✅ Pass ✅ Pass
GB300 ✅ Pass ✅ Pass
H100 ✅ Pass ✅ Pass
RTX Pro 6000 Blackwell ✅ Pass ✅ Pass

✅ Pass · 🟡 Old failure · ❌ New failure · ⏱ Test timeout · ⚠️ Infrastructure · ❔ Unknown or unclassified · — Not run

Multi-GPU and Multi-Node Tests — 4/6 passed

GPU CUDA 12.9 CUDA 13.0 Notes
B300 (multi-GPU) ❔ Unknown ❔ Unknown Unknown: script failed before producing a JUnit report (2 jobs; CUDA 12.9, CUDA 13.0)
GB200 (multi-node) ✅ Pass ✅ Pass
GB300 (multi-node) ✅ Pass ✅ Pass
Failure details

Timeouts, infrastructure, or incomplete jobs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants