Skip to content

Commit 21f0cd5

Browse files
committed
feat(matrix): env-parameterize gb10 fastfused driver (MATRIX_TAG/BATCH_SIZE/SEQ_LEN/STEPS)
Defaults reproduce batch=1 seq=512 byte-for-byte; MATRIX_TAG suffixes outputs so a batch=4 seq=4096 fair run (steady-state path_c-vs-path_b, MLX-vs-C++ like-for-like) does not clobber the batch=1 artifacts.
1 parent 466332c commit 21f0cd5

1 file changed

Lines changed: 18 additions & 9 deletions

File tree

scripts/run_gb10_speed_matrix_fastfused_20260601.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,21 @@
2828

2929
ROOT = Path(__file__).resolve().parents[1]
3030
DATESTAMP = "20260601"
31+
# Optional run parameterization (env-driven). Defaults reproduce the original
32+
# batch=1 seq=512 matrix byte-for-byte. MATRIX_TAG suffixes every output path +
33+
# work/cache dir so a batch=4 fair run does NOT clobber the batch=1 artifacts.
34+
TAG = os.environ.get("MATRIX_TAG", "").strip()
35+
_SUF = f"_{TAG}" if TAG else ""
36+
BATCH_SIZE = int(os.environ.get("MATRIX_BATCH_SIZE", "1"))
37+
SEQ_LEN = int(os.environ.get("MATRIX_SEQ_LEN", "512"))
38+
STEPS = int(os.environ.get("MATRIX_STEPS", "10"))
3139
TARGET_PARQUET = (
3240
ROOT / "data" / "parquet_samples" / "gb10" / "clang_semantic_4k_v10" / "val_00000.parquet"
3341
)
34-
WORK_DIR = Path(f"/tmp/cppmega_1b_speed_matrix_gb10_fastfused_{DATESTAMP}_cells")
35-
CACHE_ROOT = Path(f"/tmp/cppmega_1b_speed_matrix_gb10_fastfused_{DATESTAMP}_tilelang_cache")
36-
MD_OUT = ROOT / "reports" / f"cppmega_1b_speed_matrix_gb10_fastfused_{DATESTAMP}.md"
37-
HTML_OUT = ROOT / "reports" / f"cppmega_1b_speed_matrix_gb10_fastfused_{DATESTAMP}.html"
42+
WORK_DIR = Path(f"/tmp/cppmega_1b_speed_matrix_gb10_fastfused_{DATESTAMP}{_SUF}_cells")
43+
CACHE_ROOT = Path(f"/tmp/cppmega_1b_speed_matrix_gb10_fastfused_{DATESTAMP}{_SUF}_tilelang_cache")
44+
MD_OUT = ROOT / "reports" / f"cppmega_1b_speed_matrix_gb10_fastfused_{DATESTAMP}{_SUF}.md"
45+
HTML_OUT = ROOT / "reports" / f"cppmega_1b_speed_matrix_gb10_fastfused_{DATESTAMP}{_SUF}.html"
3846

3947
PYTHON = sys.executable
4048
def _timeout_bin():
@@ -111,9 +119,9 @@ def build_command(dtype: str, optimizer: str, bits: int, path: str, out_json: Pa
111119
"--data-path", str(TARGET_PARQUET.relative_to(ROOT)),
112120
"--data-format", "parquet",
113121
"--token-key", "token_ids",
114-
"--steps", "10",
115-
"--batch-size", "1",
116-
"--seq-len", "512",
122+
"--steps", str(STEPS),
123+
"--batch-size", str(BATCH_SIZE),
124+
"--seq-len", str(SEQ_LEN),
117125
"--dtype", dtype_arg(dtype, path),
118126
"--optimizer", OPT_CLI[(optimizer, bits)],
119127
"--optimizer-quant-scheme", "dynamic_int8_v1",
@@ -300,7 +308,8 @@ def write_markdown(results, identity):
300308
L.append("- Host: gb10 (NVIDIA GB10, CUDA sm_121)")
301309
L.append("- Model profile: local_gb10_quarter")
302310
L.append(f"- Data: {TARGET_PARQUET.relative_to(ROOT)} (parquet, token_ids)")
303-
L.append("- Settings: seq-len 512, batch 1, --steps 10 warm, --grad-checkpoint, --optimizer-quant-scheme dynamic_int8_v1")
311+
L.append(f"- Settings: seq-len {SEQ_LEN}, batch {BATCH_SIZE}, --steps {STEPS} warm, --grad-checkpoint, --optimizer-quant-scheme dynamic_int8_v1"
312+
+ (f" (tokens/step = {BATCH_SIZE*SEQ_LEN})" if (BATCH_SIZE != 1 or SEQ_LEN != 512) else ""))
304313
L.append("- Paths: `path_b` (reference); `path_c` = Path-C flag-OFF (serial mamba3, prior baseline); "
305314
"`path_c_chunked` = Path-C **flag-ON** (CPPMEGA_PATH_C_MAMBA3_CHUNKED_SCAN=1, FAST chunked fused mamba3).")
306315
L.append("- Path-C route: SPLIT/WARM (Path C fwd + Path B mamba3 bwd, mamba3 bwd=path_b).")
@@ -420,7 +429,7 @@ def write_html(results, identity):
420429
<h1>cppmega 1B Speed Matrix — gb10 (NVIDIA GB10, CUDA) — FAST FUSED Path-C</h1>
421430
<ul class="meta">
422431
<li>Date: {DATESTAMP} &middot; Host: gb10 (NVIDIA GB10, CUDA sm_121) &middot; Profile: local_gb10_quarter</li>
423-
<li>seq-len 512, batch 1, --steps 10 warm, --grad-checkpoint, dynamic_int8_v1</li>
432+
<li>seq-len {SEQ_LEN}, batch {BATCH_SIZE}, --steps {STEPS} warm, --grad-checkpoint, dynamic_int8_v1 (tokens/step = {BATCH_SIZE*SEQ_LEN})</li>
424433
<li>path_b=reference &middot; path_c=flag-OFF serial mamba3 &middot; path_c_chunked=flag-ON CPPMEGA_PATH_C_MAMBA3_CHUNKED_SCAN=1 (FAST chunked fused mamba3)</li>
425434
<li>loss check = all losses finite AND final&lt;initial (fail-loud) &middot; per-cell bound {CELL_TIMEOUT_S}s</li>
426435
<li>cppmega SHA: <code>{_esc(identity['cppmega_sha'])}</code> &middot; TileLang SHA: <code>{_esc(identity['tilelang_sha'])}</code></li>

0 commit comments

Comments
 (0)