Skip to content
KernelIndex
Search⌘K

submission 754357

mars-compute · python · License unknown

Use it

Vendorable · source mirrored · license unknownView source →

No package. Vendor the mirrored source: 63 lines, June 9 Researcher Reciprocity License v1.0.

test_v21.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-mxfp4-mm-754357?include=source"
interfacepython
Compatibility
measured onAMD Instinct MI355X
declared hardwareAMD Instinct MI355X
architecturesgfx950
dtypesbf16, mxfp4

Benchmark evidence

1 measurement across 1 GPU, fastest first.

Operation / workload
Hardware
Latency
Rank
Observed
AMD MXFP4 GEMMsuite of 6 cases
AMD Instinct MI355X
8.51µs
#69 of 1143
2026-04-07

Reported · How evidence levels are derived →

Source and license

sourceavailable
revision digestsha256:3496b14b2d32f1488a60a1a8b0503ea1f692c649aeb45dd99596a2a70380f8c3
license declaredunknown
license concludedunknown
authorsmars-compute
imported2026-08-15

Techniques

Extracted from the mirrored source by pattern, never inferred. Each row cites its line.

fp4Fused BF16-A-quantize + MXFP4 GEMM for AMD Instinct MI355X (gfx950, ROCm 7.2).

Kernel source

test_v21.py63 lines
"""
Fused BF16-A-quantize + MXFP4 GEMM for AMD Instinct MI355X (gfx950, ROCm 7.2).
Branchless FP4 quant + K-unroll-4 macro kernel.
"""
import os, base64, bz2, torch
from task import input_t, output_t

os.environ['HSA_XNACK'] = '0'
os.environ['PYTORCH_ROCM_ARCH'] = 'gfx950:xnack-'
import shutil as _shutil
os.environ['CXX'] = _shutil.which('clang++') or 'g++'

from torch.utils.cpp_extension import load_inline as _load_inline

_CPP_WRAPPER = """
void fused_fp4_gemm(torch::Tensor A, torch::Tensor B_shuf, torch::Tensor B_scale_sh, torch::Tensor C);
void unified_quant_gemm(torch::Tensor A, torch::Tensor B_shuf, torch::Tensor B_scale_sh, torch::Tensor C);
"""

_CUDA_SRC_COMPRESSED = "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"

_ext = None

cuda_src = bz2.decompress(base64.b64decode(_CUDA_SRC_COMPRESSED)).decode('utf-8')
_ext = _load_inline(
    name='fused_fp4_gemm_hip',
    cpp_sources=[_CPP_WRAPPER],
    cuda_sources=[cuda_src],
    functions=['fused_fp4_gemm', 'unified_quant_gemm'],
    verbose=False,
    extra_cuda_cflags=[
        "--offload-arch=gfx950:xnack-",
        "-std=c++20",
        "-DBUILD_TORCH_EXTENSION",
        "-DMXFP4_SKIP_TORCH_BINDINGS",
        "-O3",
        "-ffast-math",
        "-march=native",
        "-funroll-loops",
        "-fomit-frame-pointer",
    ],
    extra_cflags=[
        "-O3",
    ],
)



_C_cache = {}

def custom_kernel(data: input_t) -> output_t:
    A, B, B_q, B_shuffle, B_scale_sh = data
    global _ext, _C_cache
    # Reuse fixed C tensor so its data_ptr() is stable across calls.
    # This allows unified_quant_gemm to capture the full prequant+GEMM
    # sequence into a HIP Graph and replay it with minimal dispatch overhead.
    shape = (A.shape[0], B_shuffle.shape[0])
    if shape not in _C_cache:
        _C_cache[shape] = torch.empty(shape, dtype=torch.bfloat16, device=A.device)
    C = _C_cache[shape]
    _ext.unified_quant_gemm(A, B_shuffle, B_scale_sh, C)
    return C
scrolls · 63 lines total

Source code from GPU Mode and the KernelBot dataset · June 9 Researcher Reciprocity License v1.0

Best evidence level for this revision: reported

JSON