test: gate the bm8 MPP smoke test on Apple GPU Family 9+#25
Merged
Conversation
moeBm8Smoke dispatches the int4 bm8 MPP cooperative-tensor kernel but, unlike its bm64 MPP siblings, had no hardware gate. The macos-latest runner pool is mixed M1/M3 hardware: on a Family < 9 runner the MPP PSO fails to compile on the current toolchain and fatal-errors PSOCache, which is the intermittent CI failure we kept rerunning past. Reuse the existing mppCooperativeTensorAvailable gate so the test skips on inadequate hardware and runs on Family 9+, matching the bm64 cells.
The manifest sweep compiles every kernel into a PSO, which includes the MPP cooperative-tensor (`_mpp_` / `bgemm`) kernels. On a Family < 9 macos-latest runner those fail to compile, so the sweep recorded a wall of failures. Skip the MPP kernels there (matching PSOCache's detection); they are covered by ffai-kernels' own GPU correctness suite on M3+. This is the same class of fix as the bm8 dispatch guard in this PR — both are "MPP needs Apple GPU Family 9+, which the mixed runner pool doesn't always have."
Name-matching `_mpp_` / `bgemm` missed cooperative-tensor cells with other names (the `_nax_` steel-GEMM kernels), so the manifest sweep still recorded ~105 failures on a Family < 9 runner. Catch the specific "deferred-static-alloca-size" compile error and treat it as a skip when MPP is unavailable, which covers every cooperative-tensor kernel regardless of name. Other compile errors are still real failures.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
moeBm8Smoke(OpsSpecialPathTests) dispatches the int4 bm8 MPP cooperative-tensor kernel but had no hardware gate, unlike its bm64 MPP siblings inMoEBgemmBm64MppTests.The intermittent CI failure
macos-latestis a mixed M1/M3 runner pool. On a Family 9+ runner the bm64 tests run and bm8 passes; on a Family < 9 runner the bm64 tests skip viamppCooperativeTensorAvailable, but the unguarded bm8 test still tries to compile the MPP PSO, which on the current toolchain fatal-errors atPSOCache.swift:67(unsupported deferred-static-alloca-size). That is the failure we kept clearing with reruns (it hit #23, #24, and dev merges).Fix
Add the same
.enabled(if: mppCooperativeTensorAvailable, "MPP cooperative tensor — Apple GPU Family 9+")gate the bm64 cells use, reusing the single availability source so it stays in sync. Skips on inadequate hardware, runs on Family 9+.Test
swift test --filter moeBm8Smokepasses on M5 (Family 9). On Family < 9 it now skips instead of fatal-erroring.