Repository navigation
gemm_ex: general GEMM domain + fp8 fallback for refused shapes (draft) - #139
aien-spark wants to merge 18 commits into
Conversation
…ed batch, bf16/f16/f32-via-bf16x3/fp8 scales) + fp8 GEMV/grouped GEMM fallback for refused shapes New C behind CUDAPP_MIGRATION_PENDING_GEMM_EX (default ON: only shapes the old code refused take the new path). Host tiers: gemm_ex --host-only PASS 224 checks, mutants 1-5 red. Chip: gemm_ex PASS 901 checks (receipts in the PR body; evidence dir to follow).
…; regression gemm/fp8/fp8gemm/matmul; part0of4 = first run whose one FAIL was a test defect: mutant 5 on a one-k-block shape)
…neral field, omega_gpu_fp8_general_rows internal (make test-runtime-api PASS)
|
Full make test (before this commit) reached test-runtime-api and failed there: manifest size of OmegaGpuFp8GemmInfo 80 vs 88 (new u32 general appended; EXPERIMENTAL struct, size change) and omega_gpu_fp8_general_rows undeclared. Fixed in this push; make test-runtime-api now PASS. The targets after test-runtime-api in make test: NOT_RUN on this head (full make test needs a rerun). |
…ounding The flat 2^-22 per fp32 step was below the HMMA model's worst case (DnnGpu: K=1808 adversarial input, err 5.343e-5 vs bound 2.843e-5). Now (1+c)^S - 1 with c = (g+1) 2^-25 + 2^-23, times (1 + 2^-20); g = 16 HMMA, 32 QMMA. Host: PASS 224, mutants 1-5 still red. Chip rerun under the new bound: NOT_RUN (GPU window).
…ME limits, successor #144 Manifest: header src/omega_gpu_gemm_ex.h with OmegaGemmExArgs (200 B), OmegaGemmExInfo (24 B), omega_gpu_gemm_ex, omega_gpu_gemm_ex_fp8_block_rows and 21 constants, all EXPERIMENTAL; abi 0.6.0, OMEGA_RUNTIME_API_VERSION_MINOR 6. INTERNAL: omega_gpu_gemm_ex_set_backend, omega_gpu_gemm_ex_test_set_mutant (TEST ONLY), 183 names. API.md: 0.6.0 change list (OmegaGpuFp8GemmInfo 80 -> 88 bytes, OmegaGpuFp8Info.general at 156), section 9.8 with the host-orchestration, bf16x3, fp8-output and migration-pending limits. README cuBLAS row and section 10 limits text. mk/gemm-ex.mk: the .om successor is #144.
…efore any timed run)
…ffers, one-part path without the double sum, C3 writes C in place for the bit-for-bit case ab-1 measured gemm_ex at 2.17-3.25x the C3 call it wraps. Host-only profile with a no-op core: bf16 2048x16384x2048 151.7 -> 4.4 ms of host work per call, bf16 1x8192x2048 24.6 -> 1.2 ms. Same entry, signature and results. Test summary figure is now |got - ref| / bound. Host PASS 224, sim PASS 252; scan negative control (scan never reports) FAILs 3 of 224.
…5), plan gate FAIL in 5 small cells; chip tier PASS 901 at 0d2b14a; overhead recorded in API.md 9.8
…y 0x1p+0, err above the old flat bound, inside the step_c() bound) Host: PASS 225 checks. Chip tier also runs it; chip rerun on this head NOT_RUN at commit time.
|
Status update: CI check failed in job (). Additionally, the PR stated acceptance criteria note in 5 small cells with small-cell overhead remaining unattributed, and full unverified on the PR head. Leaving draft per acceptance and CI gate rules. |
drakestapleton
left a comment
There was a problem hiding this comment.
Classification: needs-changes (draft).
buildcheck failed on fc591d6 (actions run 40477773654, job 122100130750).- The PR's own performance gate (r <= 1.10 in every cell) fails in 5 cells: e4m3 64x1024x2048 1.24, e4m3 64x2048x512 1.20, bf16 64x1024x2048 1.17, e4m3 16x12288x2048 1.10, e4m3 1x8192x2048 1.10.
- Full
make testis NOT_RUN on this head (per the 2026-10-27 comment).
To become merge-ready: green build, gate passing or formally re-scoped in API.md 9.8, and a full make test log on the final head. #140 is waiting on this.
drakestapleton
left a comment
There was a problem hiding this comment.
Classification: needs-changes.
- A
buildcheck fails on fc591d6 (actions run 40477773654, job 122100130750). - The PR's own A/B gate (r <= 1.10 in every cell) fails in 5 small cells (e4m3 64x1024x2048 1.24, e4m3 64x2048x512 1.20, bf16 64x1024x2048 1.17, e4m3 16x12288x2048 1.10, e4m3 1x8192x2048 1.10). Small-cell overhead remains unattributed.
- Full
make testis NOT_RUN on this head (per the 2026-10-27 comment). - Still draft.
- To become merge-ready: green build, gate passing or formally re-scoped in API.md 9.8, a full
make testlog on the head, then mark ready. #140 waits on this PR.
— Grokbot
Signed-off-by: aien-spark <[email protected]> # Conflicts: # README.md # docs/runtime/API.md # docs/runtime/omega_runtime_api.manifest # src/omega_gpu_fp8_api.c # src/omega_gpu_gemm.c # src/omega_runtime_api.h
…drift baseline records omega's bw_warp_sim_tc.h blob The fp8 general fallback (omega_gpu_fp8_api.c) now calls omega_gpu_gemm_ex_fp8_block_rows, so test_omega_gpu_native_runtime links src/omega_gpu_gemm_ex.c, src/omega_gpu_gemm.c and the qmma codegen. tests/bw_warp_sim_tc.h: main holds omega 9920aab1's blob 59e4ad3 byte for byte; this branch adds the CUDA++-only fp16 HMMA operand path on top, so the baseline row records 59e4ad3 (precedent d2c83a1). A later Omega edit of that file still turns the drift gate red. Signed-off-by: aien-spark <[email protected]>
…M-GENERAL-00c9cf9); README points at it
gemm_ex: general GEMM domain + fp8 fallback for refused shapes (replaces #139)
Draft.
omega_gpu_gemm_ex: one entry with the cblas RowMajor shape contract (any M,N,K, op N/T, ld, alpha/beta, strided batch, f32 via bf16x3, bf16/f16/e4m3/e5m2, tensor or block fp8 scales), plus fp8 GEMV / grouped-GEMM fallback for refused shapes. Migration-pending C behindCUDAPP_MIGRATION_PENDING_GEMM_EX; .om successor #144.Head 7c1a708.
Done
OmegaGpuFp8GemmInfo80 -> 88 bytes.make test-runtime-apiPASS (296 functions, 46 structs, 443 fields, 229 constants; 183 INTERNAL); semver check MINOR.evidence/GEMM-GENERAL-AB-20261027/ab-2/chip/).evidence/GEMM-GENERAL-AB-20261027/:NOT_RUN
make -k testpassed on 34f1b31 (CUDA++ HOST TESTS PASS, 48 targets, EXIT 0). It has not run on the PR head; only the gemm_ex host/sim tiers and the runtime-API check ran there.