You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Track the BMM slice of #400. The 2 nominal ops listed there (bmm_fp16, bmm_fp8) map to 2 TileOPs ops, following the same input-inferred / call-time-JIT design as GemmOp:
Strict torch.bmm contract — 3D×3D only, a=[B, M, K], b=[B, K, N] → d=[B, M, N]. No batch-dim broadcasting, no matmul-style shape promotion.
Transpose-free primary layout matching torch.bmm inputs; NT / other layouts are separate manifest entries if demand appears.
Fully input-inferred: batch, m, n, k, and dtype are read from a / b at forward() time; nothing pinned at construction. Roofline binds these dims via func mode.
Reference API: torch.bmm. Dtype coverage: float16, bfloat16. Accumulation in float32.
Checklist
Public Op has a tileops/manifest/ entry (or updates an existing entry).
Parent Issue
Sub-issue of #400.
I'd be happy to implement the next two operators.
Task Type
Description
Track the BMM slice of #400. The 2 nominal ops listed there (
bmm_fp16,bmm_fp8) map to 2 TileOPs ops, following the same input-inferred / call-time-JIT design asGemmOp:bmm_fp16BmmFwdOp(fp16 + bf16)bmm_fp8BmmFp8Op(fp8, epilogue-scale + block-scaled paths)Semantics (settled):
torch.bmmcontract — 3D×3D only,a=[B, M, K],b=[B, K, N]→d=[B, M, N]. No batch-dim broadcasting, nomatmul-style shape promotion.torch.bmminputs; NT / other layouts are separate manifest entries if demand appears.batch,m,n,k, and dtype are read froma/batforward()time; nothing pinned at construction. Roofline binds these dims via func mode.torch.bmm. Dtype coverage:float16,bfloat16. Accumulation infloat32.Checklist
tileops/manifest/entry (or updates an existing entry).signaturedeclares inputs, outputs, params, shape rules, and dtype coverage.workloadsdeclare benchmark shapes/dtypes; unit-test edge cases are not generated from manifest workloads.rooflineis present and consumable byop.eval_roofline().sourcedeclares kernel, op, test, bench, andsource.kernel_mapwhen dispatching kernels.forward(), anddefault_kernel_mapmatch the manifest entry.tileopsbaseline unless explicitly justified.[Feat][Scope]/[Perf][Scope]/[Fix][Scope]convention.