submission 687711
Harpreet Singh · python · License unknown
Use it
Vendorable · source mirrored · license unknownView source →
No package. Vendor the mirrored source: 55 lines, June 9 Researcher Reciprocity License v1.0.
submission.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-mxfp4-mm-687711?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
Reported · How evidence levels are derived →
Source and license
sourceavailable
revision digestsha256:da9bb3031a9de8d717204ade49cdc2f13b26565663a4cbbe1761def14b57f4e3
license declaredunknown
license concludedunknown
authorsHarpreet Singh
imported2026-08-15
Techniques
Extracted from the mirrored source by pattern, never inferred. Each row cites its line.
num-warps = 4
GROUP_SIZE_M=1, num_warps=4, num_stages=2, waves_per_eu=2,stages = 2
GROUP_SIZE_M=1, num_warps=4, num_stages=2, waves_per_eu=2,tile-k = 256
(4, 2880, 512): dict(BLOCK_SIZE_M=8, BLOCK_SIZE_N=32, BLOCK_SIZE_K=256,tile-m = 8
(4, 2880, 512): dict(BLOCK_SIZE_M=8, BLOCK_SIZE_N=32, BLOCK_SIZE_K=256,tile-n = 32
(4, 2880, 512): dict(BLOCK_SIZE_M=8, BLOCK_SIZE_N=32, BLOCK_SIZE_K=256,Kernel source
submission.py55 lines
import os
os.environ["HIP_FORCE_DEV_KERNARG"] = "1"
import torch
from task import input_t, output_t
from utils import make_match_reference
from reference import ref_kernel
from aiter.ops.triton.gemm.basic.gemm_a16wfp4 import gemm_a16wfp4_preshuffle
_u8, _bf16 = torch.uint8, torch.bfloat16
_CFG = {
(4, 2880, 512): dict(BLOCK_SIZE_M=8, BLOCK_SIZE_N=32, BLOCK_SIZE_K=256,
GROUP_SIZE_M=1, num_warps=4, num_stages=2, waves_per_eu=2,
matrix_instr_nonkdim=16, cache_modifier='.cg', NUM_KSPLIT=1),
(16, 2112, 7168): dict(BLOCK_SIZE_M=16, BLOCK_SIZE_N=64, BLOCK_SIZE_K=512,
GROUP_SIZE_M=1, num_warps=4, num_stages=2, waves_per_eu=1,
matrix_instr_nonkdim=16, cache_modifier='.cg', NUM_KSPLIT=8),
(32, 4096, 512): dict(BLOCK_SIZE_M=8, BLOCK_SIZE_N=64, BLOCK_SIZE_K=256,
GROUP_SIZE_M=1, num_warps=4, num_stages=2, waves_per_eu=2,
matrix_instr_nonkdim=16, cache_modifier='.cg', NUM_KSPLIT=1),
(32, 2880, 512): dict(BLOCK_SIZE_M=8, BLOCK_SIZE_N=64, BLOCK_SIZE_K=256,
GROUP_SIZE_M=1, num_warps=4, num_stages=2, waves_per_eu=2,
matrix_instr_nonkdim=16, cache_modifier='.ca', NUM_KSPLIT=1),
(64, 7168, 2048): dict(BLOCK_SIZE_M=16, BLOCK_SIZE_N=128, BLOCK_SIZE_K=256,
GROUP_SIZE_M=1, num_warps=4, num_stages=2, waves_per_eu=2,
matrix_instr_nonkdim=16, cache_modifier='', NUM_KSPLIT=1),
(256, 3072, 1536): dict(BLOCK_SIZE_M=16, BLOCK_SIZE_N=256, BLOCK_SIZE_K=256,
GROUP_SIZE_M=1, num_warps=8, num_stages=2, waves_per_eu=2,
matrix_instr_nonkdim=16, cache_modifier='.cg', NUM_KSPLIT=1),
}
def custom_kernel(data):
A, B, B_q, B_shuffle, B_scale_sh = data
m, k = A.shape
n = B.shape[0]
key = (m, n, k)
b_scl_u8 = B_scale_sh.view(_u8)
b_scl = b_scl_u8.reshape(b_scl_u8.shape[0] // 32, b_scl_u8.shape[1] * 32)
b_shuf = B_shuffle.view(_u8).reshape(n // 16, (k // 2) * 16)
if key in _CFG:
cfg = _CFG[key]
else:
bk = 512 if k >= 512 else 256
cfg = dict(BLOCK_SIZE_M=min(64, m), BLOCK_SIZE_N=64, BLOCK_SIZE_K=bk,
GROUP_SIZE_M=1, num_warps=4, num_stages=2, waves_per_eu=1,
matrix_instr_nonkdim=16, cache_modifier='.cg', NUM_KSPLIT=1)
return gemm_a16wfp4_preshuffle(A.contiguous(), b_shuf, b_scl,
prequant=True, dtype=_bf16, config=cfg)
check_implementation = make_match_reference(ref_kernel, rtol=1e-02, atol=1e-02)
scrolls · 55 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