refactor: drop dead fp8 gemm knobs and dedupe ring depth logic
- remove the LeanRing knob: every production Policy already ran full kStages+1 rings (the lean variant measured slower, 1280³ +5..9%), so the barrier-4 branch, the kInterleave condition and the ring-depth ternaries collapse to a single kRingDepth in Fp8GemmSmem, now the single source the mainloop reads - remove the always-true grouped field from Fp8GemmPlan: every layout canonicalize_gemm produces is grouped-raster, so plan_gemm drops the parameter; the plain-raster experiment knob stays available via launch_plan's GroupRaster template parameter - extract load_b_frags for the duplicated B-fragment fill (initial + double-buffer next-seg sites) - device_sm_count: fold the out-of-range branch into one cached query path - Fp8GemmPolicy goes 12 -> 11 template parameters; fp8_test's CasePolicy follows Benchmark: NVIDIA L20 (sm_89, 92 SMs), kernel bench and the 1204M bf16 model e2e training step both unchanged (fp8 step 503.7 -> 503.9 ms, 1.23x vs bf16; per-shape TFLOPS within +-2%); fp8_test All PASS, tests/extension/test_fp8_mma.py 36 passed.
This commit is contained in:
@@ -196,7 +196,7 @@ constexpr bool kCaseFast =
|
||||
template <typename LA, typename LB, int kK, int Stages>
|
||||
using CasePolicy =
|
||||
Fp8GemmPolicy<FP8Format::E4M3, 128, 128, LA, LB, 64, 32, kK, Stages, 8,
|
||||
false, false, kCaseFast<LA, LB>>;
|
||||
false, kCaseFast<LA, LB>>;
|
||||
|
||||
template <typename LA, typename LB, int kK, int Stages>
|
||||
static bool run_gemm_case(const float* ha, const float* hb, int m, int n,
|
||||
|
||||
Reference in New Issue
Block a user