M.S. ECE finished December 2025
UW-Madison, Professional option
Not public: Degree record and resume
What each number on this site means, the conditions it holds under, and where to check it. Where a source isn't public, it says so.
UW-Madison, Professional option
Not public: Degree record and resume
flash-linear-attention #1319 and #1412, cuDNN frontend #1287, which is tests only
flash-linear-attention #1319, flash-linear-attention #1412, cudnn-frontend #1287
RTX 5090, RTX 4090, RTX 3090, rented hosts
Keys in data/agents/agents.json. 30 roles at the time of the incident the audit covers
First commit on vLLM #38338 is dated 2026-03-27
Checked by hand against each PR page. #1412 and #1319 also confirmed in the repo's git history
UTC
H200, B=1, one query, HQ=32, H=8, D=128, median from do_bench. Op level, not a model-level latency
B x Lq x HQ = 1 x 1 x 32 on H200. "32 of 132 busy" is derived, not counted
Not measured. 2 x 8 x 65536 x 128 x 2 bytes = 268 MB at the H200 rated 4.8 TB/s. A floor, not a target
UTC
D=128, 2 to 4 pipeline stages, per config
Nsight Compute at B=2, T=4096, H=16, D=128, base clocks. 255 registers per thread, 12.5% theoretical
Forward plus backward. H100 SXM, same session, 8 shapes, against the faster of dense and varlen at 7619a3c. Higher means slower. Forward alone is 1.07-1.54x
UTC
A100, one edit at a time then restored. A 4th bug was a control the old suite caught
UTC. Closed by the author, not merged
RTX 5090, down shape 4096x14336, M=8192 to 49152, autotuned tiles, hot L2, about 2 hours apart with 0.988-1.046x drift. M=1024 and 2048 run 946 and 889
Same shape, M=49152, hot L2, from 852.4 at M=8192
RTX 5090, N=6144, K=4096, GEMM only, hot L2. Cold L2 at M=1 to 128 is 1.33-1.79x
Geomean over four Llama-3.1-8B shapes, hot L2, from M=1024 up. Rows at lower M range 0.19-0.33. Not QKV alone, and no profile exists
UTC. Closed by the author after #1239
A100, session B, d128, S_q=4, S_kv=131072, b=1. Develop kernel 6.01, PR kernel 6.66. Develop run was bimodal
A100, S_q 2 and 8, S_kv=128K, b=32 and 128, one pass per side, 3 configs
Develop needs a 64 to 512 GiB expanded K/V workspace. 10 of 16 batched rows
Same table, PR ms against backend ms
UTC. A comment on an RFC someone else wrote
Qwen3-30B-A3B, one H200, CPU ngram drafts, 2 synthetic workloads, offline batches, 3 repeats. 0.00 / 1.81 / 1.16 / 1.18% at B=1/4/16/64. Prices identifying the workload only. No controller was built, so per-step control is unmeasured
Worst cell: sonnet, K=0, B=16. About 2x pooled. 1.00, 1.45, 3.05, 2.10x across B=1/4/16/64
98,519-token corpus. Claude Sonnet reader via claude -p, 200K window, 1 run per question, 3-judge majority, synthetic corpus, 50 questions
1,261,774-token corpus. bert 45/50, grep 44/49. Paired difference +0.020, CI [-0.08, +0.12], Holm p 1.0. Claude Sonnet reader via claude -p, 200K window, 1 run per question, 3-judge majority, synthetic corpus, 50 questions
Reader capped at a 120K budget, so it keeps only about the newest 10%. A 1M-context reader would hold about 80% and would not collapse
Synthetic project memory
Paired per-question ratio, cache reads counted in full. Means 282K (n=49) and 149K (n=50), or 118K on the shared 49. Grep higher on 86%
n=249, Claude reader, AST-derived gold, 21 judge-graded. Grep 70,537 tokens, bert 149,648
n=20, 131K-token httpx and starlette corpus, llama-3.3-70b reader, non-Claude grader. The same questions exposed and rescored the bug. Directional, no significance test
core/retrieval.py before the fix
18 GB Mac, MPS. CIs overlap: 0.745 [0.707, 0.783], 0.740 [0.696, 0.779]
Own BM25 implementation. Published BM25 is 0.665
scifact, nfcorpus, fiqa
Same retriever, paired, p<0.001, n=249
Per dtype, 152 cells in all
fp16, fused 76.9 us, baseline 133.2 us. Best of 152 cells. A100-SXM4-80GB. Baseline is cuBLAS GEMM plus separate bias and GeLU, PyTorch eager
Fused 74.9 us, baseline 96.0 us. A100-SXM4-80GB. Baseline is cuBLAS GEMM plus separate bias and GeLU, PyTorch eager
bf16, M=128, N=13824, K=5120. Read from the raw CSV. A100-SXM4-80GB. Baseline is cuBLAS GEMM plus separate bias and GeLU, PyTorch eager
fp16, 76 shapes. A100-SXM4-80GB. Baseline is cuBLAS GEMM plus separate bias and GeLU, PyTorch eager
fp16. A100-SXM4-80GB. Baseline is cuBLAS GEMM plus separate bias and GeLU, PyTorch eager. In bf16 the median is 0.95× with 25 faster
fp16 at 1024x32768x8192. Peak is 312 TFLOP/s for A100 fp16 tensor cores
fp16, 256.0 TFLOP/s at 2048x5120x20480 over 312
triton-vs-cublas-llm-benchmarks: data/gemm_llm_rect_bench_2026-01-13_01-01-18.csv
Each trial is the mean of 120 to 2000 calls by size. p50 across 10 trials. p90 over p50 is spread across trials, not per-call tail latency
fp16, cuBLAS 108.0 us, Triton 78.4 us
triton-vs-cublas-llm-benchmarks: data/gemm_llm_rect_bench_2026-01-13_01-01-18.csv
1.731 / 1.378. Bare and fused CSVs are 2 days apart. The bf16 lift is about 1.45x
triton-vs-cublas-llm-benchmarks: data/gemm_llm_rect_bench_2026-01-13_01-01-18.csv
GELU, both dtypes, Fisher p=1.0. Ridge at 153 FLOP/byte
11.27 MB at peak HBM is 5.5 us of a 56.3 us gap. From bytes_model.py, not counters
GEMM, bias, activation
RTX 5090, mean speed, 30 problems, 256 tokens, batch 1. 153 is the faster-memory host. Stock clock is 58-134
gpt-oss C=14. Limit from Belady's MIN and probed read rates, so relative to the probe, not physical. Consumer scope set after the data. 3 server machines reach 12-46%. The machine list drops 5 unstable rentals, all server processors, so the drop doesn't touch the consumer range
2 RTX 5090 hosts, 6 cells each, 30 problems per cell. The one slower cell is Qwen3 43.75% on host S at 0.97x
MacBook Pro M3 Pro, unified memory
String counts over 763 runner logs. Per-session CSV is public, log text is not
Qwen2.5-7B, H100 NVL, vLLM. 4, 8 and 32 req/s. Gap 2.88-3.64 ms, (eager - on) / eager
Same setup, 4, 16, 64 req/s and burst. (fp16 - fp8) / fp16
About 200-275 requests per run, inferred. So p99 is the 2nd or 3rd worst request
Numbered 1 to 13, plus sub-stages 4b and 7b
Jetson Orin Nano, stamped into every row of bench.csv
B=1, H=8, D=64, fp16, p50 latency. S=64 to 1024. Best at S=1024, 2.61 ms against 0.47 ms
Ivaturi, Nagendra, Kantamneni, Avvaru
Not public: ECE 759 course report byline
Lyu, Kantamneni, Ryu. Kantamneni built the gem5 GPUFS environment and HIP benchmark suite. Parameter tuning was a teammate's
Not public: ECE 752 final report, contributions section. Not public
Getting Started with Accelerated Computing in Modern CUDA C++
harshithkantamneni.github.io: site/certificates/NVIDIA_Accelerated_Computing_Modern_CUDA_Cpp.pdf
The Art of Compressing LLMs
harshithkantamneni.github.io: site/certificates/NVIDIA_Art_of_Compressing_LLMs.pdf
Dates printed on each page
One operator, one MacBook, about two weeks, per the public report PDF
harshithkantamneni.github.io: site/Recursive_Verification_Surface_Collapse_paper.pdf
Chief architect, CPO, red team, applied researcher
harshithkantamneni.github.io: site/notes/llm-judge-bias/index.html
An estimate for the whole refresh, not tiering alone. 70 sessions before, 2 after. Never re-measured. The script priced Opus about 3x above list
harshithkantamneni.github.io: site/notes/tier-per-task/index.html
One M3 Pro 18 GB laptop, 2.56M tokens per expert at k=2, K=8
Not public: Lab program files, not public
18-cell evaluable matrix, against a 4pp decision threshold. O4 pre-registered with prior 0.17
Not public: Lab program files, not public
N=1, one operator, one model class, one MacBook, no control group
harshithkantamneni.github.io: site/Recursive_Verification_Surface_Collapse_paper.pdf
One rented GH200 per rental, bf16, 700 W limit, 1710 MHz lock, skewed routing, R3's 32x64x64 test tile. Rentals 6 and 7. This is not one of vLLM's own tiles. Byte predictions on OLMoE w1 failed their open test, 11.76% rms, scored apart
One rented GH200 per rental, bf16, 700 W, 220 cells. Predicted too slow on average, mean +6.0%, worst 39.2%. Per model: DeepSeek-V2-Lite 2.35%, Qwen1.5 5.3%, Phi-3.5 9.5%, Granite-3B 13.4%, JetMoE 19.5%. No model certified. Phi-3.5 was also in the v3 test, so unseen means unseen in decode
A100, bf16, batch 1, S_q=2, S_kv=128K, 5 shapes. The time saved follows how much the copy writes: 2.19x at 64/8 d128, 1.15x at 8/1 d128, where the expansion is 8x smaller
RTX 5090, GEMM only, gate_up, large M, with hot L2
One rented GH200 per rental, bf16, 700 W. v3 at 1710 MHz on the 32x64x64 test tile, bar rms at most 2%. Decode blind test, bar rms at most 1.5%
Jetson Orin Nano, 15 W mode, B=1, H=8, D=64, fp16, single stream. A sweep of kernels, not serving throughput, and no counter data in the repo
Synthetic corpus, 98,519 and 1,261,774 tokens. Claude Sonnet reader through Claude Code (claude -p), 200K window, 1 run per question, 50 questions (grep 49 at the larger size), 3 Llama judges by majority, none of them Claude. Percentile bootstrap intervals. Naive vector is one-shot cosine top-10, while bert and grep are multi-turn, so that comparison is confounded
bert: benchmarks/M1_REPORT.md, bert: benchmarks/M1_REPORT.md, bert: benchmarks/M1_REPORT.md, bert: benchmarks/M1_REPORT.md, bert: benchmarks/M1_REPORT.md, bert: benchmarks/m1_arms.py
Majority vote. nvidia llama-3.3-70b, nvidia llama-3.1-70b, groq llama-3.3-70b. Independent of the Claude reader, not of each other. The rows keep no per-judge votes
bert: benchmarks/M1_REPORT.md, bert: benchmarks/v2_grader.py, bert: benchmarks/m1_arms.py
1,261,774-token synthetic corpus. Exact paired McNemar, Holm corrected, p 1.000. 41 both right, 4 bert only, 3 grep only, 1 neither. n=49, because the grep row for one question is missing
The reader window is 200K. The harness keeps newest sessions up to 120,000 tokens (chars / 4), since 180K tripped "Prompt is too long". 120,000 of 1,261,774 is 9.5%. The 1M-context figure is the report's arithmetic, 1M of 1.26M. No 1M-context reader was run on this corpus
bert: benchmarks/m1_arms.py, bert: benchmarks/M1_REPORT.md, bert: benchmarks/M1_REPORT.md
Real open-source repos, 249 frozen code-fact questions. Claude Sonnet reader through Claude Code. 228 graded programmatically against AST-derived values, 21 multi-hop questions by the 3-judge majority. Percentile bootstrap intervals
bert: benchmarks/results/v2/v3_stats.json, bert: benchmarks/results/v2/v3_stats.json, bert: benchmarks/RETRIEVAL_BENCHMARK.md
n=249, cache reads counted in full. Grep used fewer on 83% of questions. These are tokens, not dollars
bert: benchmarks/results/v2/v3_stats.json, bert: benchmarks/results/v2/v3_stats.json
bert over MCP against grep, grouped by corpus. big is a 41M-token multi-repo set. The rest are httpx plus starlette, gin and pydantic. Exact McNemar on 7 discordant, no multiple-comparison correction. The cause was not measured
bert: benchmarks/results/v2/claude_code_rows.jsonl, bert: benchmarks/RETRIEVAL_BENCHMARK.md
n=30, 3-judge majority. Intervals [0.90, 1.00] and [0.80, 1.00]. Raw McNemar p 0.625. Grep 218,168 tokens per question, bert 110,339
bert: benchmarks/RETRIEVAL_BENCHMARK.md, bert: benchmarks/RETRIEVAL_BENCHMARK.md, bert: benchmarks/V3_REPORT.md
Opus in every arm, graded by non-Claude judges. Gain is full orchestration minus bare Opus with the same rubric block. Token and wall-clock ratios are against bare Opus, counted cache-inclusive on both sides. Small n
300 queries, bootstrap 95% intervals, M3 Pro with 18 GB, MPS. BM25 is the repo's own implementation. Latency is on that laptop only
bert: benchmarks/results/B2_BEIR_MULTI_RESULT.md, bert: benchmarks/results/B2_BEIR_MULTI_RESULT.md, bert: benchmarks/results/B2_BEIR_MULTI_RESULT.md, bert: benchmarks/results/B2_BEIR_MULTI_RESULT.md
nDCG@10, hybrid without and with rerank. 648 fiqa queries, 323 nfcorpus queries. Dense alone is best on nfcorpus at 0.374
bert: benchmarks/results/B2_BEIR_MULTI_RESULT.md, bert: benchmarks/results/B2_BEIR_MULTI_RESULT.md
Needles planted among filler sessions built from templates. No real project history in this test
bert: benchmarks/M1_REPORT.md, bert: benchmarks/m1_corpus.py
knowledge_update category at the larger size, n=1. Under-sampled, so this shows nothing either way
Counted in tools/mcp/bert_lab.py. The memory and code runs direct the reader to memory_search
A config is the head count, d and batch size. A100, S_kv=128K. Each config ran at S_q 2 and 8, which stay within 1% of each other, so each counts as 2 rows
One rented A100-SXM4-80GB, torch 2.9.1, cuDNN 9.26, bf16. torch.profiler device time after 5 warm-ups, with a 256 MiB L2 flush before each sample. Develop and the prototype alternated in one pod. SM clocks not locked. The 1.000 is PR over develop on 88 backend rows and 18 FROST rows that run identical code on both sides
A100, bf16, batch 1, S_kv=128K. The table is S_q=2, 5 shapes. All 15 rows across S_q 2, 4 and 8 fall in 1.15-2.19x. Mean of 2 pass medians per side, backend one pass, clocks not locked. 64/8 and 8/1 have the same head ratio, so the ratio alone does not set the gain
A100, bf16, S_kv=128K, batch 32 and 128, S_q 2 and 8, one pass per side, clocks not locked. The table is S_q=8. Develop needs a 64 to 512 GiB expanded K/V workspace on the 10 rows. The prototype is faster than the backend only at 64/8 d64
d128, batch 1, S_kv=131072, 2 bytes per element. 2 x 131072 x 64 x 128 x 2 bytes = 4 GiB, and 0.5 GiB at 8/1. Computed, not counted. The PR states the 4 GiB as the workspace drop
fp16 at d128 and d256 for the 66 bitwise cases, on all three schedulers. 2 more cover a short last block and 12 cover 8/4, 8/2 and MQA. Passing on A100, develop 4c0dc9a8, torch 2.8.0, cuDNN 9.26
A100-SXM4-80GB, develop 4c0dc9a8 plus the patch, torch 2.8.0, cuDNN 9.26. One kernel edit at a time, then restored. The third bug is d256 only, so it ran against 60 d256 cases, not all 411. The fourth is a control
A100, batch 1, S_kv=131072, the harness kernel breakdown. Develop samples at this shape ranged 11.96 to 14.57 ms in one run
A100, clocks not locked. Larger than those rows' control bands. Every row outside its band stays outside on either pass alone. Batched rows ran once per side, so they have no spread figure
64/8, d128, 8 KV heads, S_kv=131072, 2 bytes per element, batch 1. 2 x 131072 x 8 x 128 x 2 bytes = 0.5 GiB, so 16 GiB per layer at batch 32 on an 80 GB card. Computed, not measured
By my count: string counts over 763 private runner logs, named Apr 17 to May 30, 2026. Eligible means the log contains GRACEFUL_CHECKPOINT, a text match that isn't checked against true clean exits. The 6 sessions are a regex match on a shell tool call, column detector_run_by_hand. The public CSV has one row per log with size and SHA-256 and no log text, so its sums can be checked and its rows can't be checked without the logs
agi-lab-framework: audits/gate_audit_sessions.csv, agi-lab-framework: audits/README.md
Apr 17, 2026. Recorded in the detector header and the architecture doc. The lab documents holding the sign-offs are not public
agi-lab-framework: tools/verify_signatures.py, agi-lab-framework: ARCHITECTURE.md
agents.json during Apr 17 to Apr 20, 2026, per the detector source. The repo's agents.json has 31 roles now
agi-lab-framework: tools/verify_signatures.py, agi-lab-framework: CLAUDE.md
tests/test_verify_signatures_patterns.py (12) and tests/test_dispatch_identity.py (12). All 24 passed on Nov 3, 2026, CPU only. They pin the changes and do not cover the known gaps
agi-lab-framework: tests/test_verify_signatures_patterns.py, agi-lab-framework: tests/test_dispatch_identity.py
By my count over the private archive. Detector: full archive run, false positives in three classes. Evaluator: of 14 reports recording a pass, 10 quote the detector and 6 of those quote a scan of 0 signatures. Receipts: 31 dated before their role's first dispatch by type, and 1 role never dispatched by type. This is a date test, not proof for each receipt
agi-lab-framework: audits/README.md, agi-lab-framework: audits/README.md, agi-lab-framework: audits/README.md
By my count over the lab's private tree. The receipts were never added to git, rather than being gitignored. Session logs are gitignored
H100 SXM, torch 2.8.0, Triton 3.4.0, bf16, HQ=H, K=V=D, attend_current=False, median ms from triton.testing.do_bench. Earlier head is 5f378d6, timed in an earlier session on the same GPU type. Authors are shawntan/stickbreaking-attention at 7619a3c on the same H100, the faster of their dense and varlen kernels on dense inputs, varlen on packed. The last column is this PR over the authors, so higher means slower
H100 SXM, 8 shapes, this PR 4c539a5 against earlier head 5f378d6. The two were timed in different sessions on the same GPU type, where parallel_attn matched within 1% on forward plus backward and within 6% on forward. Mostly the backward rewrite
H100 SXM, 8 shapes. 1.27-1.34x is the rewrite alone on forward plus backward, against the earlier head, different sessions. 1.02-1.12x and 1.11-1.82x are retile plus launch order on forward plus backward and on forward alone, 617966b against 4c539a5 in one process
flash-linear-attention #1319, Not public: Per-shape split from a bench file that is not public
H100 SXM, Nsight Compute at base clocks, B=2, T=4096, H=16, D=128. DRAM reads rose from 101 MB to 295 MB, and the kernel time still fell
H100 SXM, Nsight Compute at base clocks, B=2, T=4096, H=16, D=128. Backward share is (3808+3580)/(1262+3808+3580). All at about 12% occupancy. Tile size, launch order and CTA size were not separated inside Nsight Compute
H100 SXM, Nsight Compute at base clocks, B=2, T=4096, H=16, D=128. ALU and XU across dq and dkv. dq DRAM writes total 0.39 GB over 3.8 ms, and the HBM share divides that traffic by HBM bandwidth
H100 SXM, Nsight Compute, Block Limit Registers 2. An SM has 65536 registers, and 128 threads x 255 registers fits 2 CTAs. Before the retile the forward ran 1 CTA of 8 warps, which is the same 12.5%. Achieved occupancy is 12.16-12.49%
flash-linear-attention #1319, Not public: Nsight Compute report, not public
H100 SXM, bf16 operands, against the earlier forward, on the same test file. Failures are bf16 saturated-logit tolerance failures. With TF32 the forward is about 2.5x faster and also misses the tolerance
H100 SXM at 4c539a5, two runs. Separately the maintainer ran 99/99 on GB200 after merging main. Coverage stops at logit 15 in fp16 because casting score gradients to fp16 can underflow beyond it
H200 (141 GB), torch 2.11.0+cu128, Triton 3.6.0, bf16, FLA_CI_ENV=0, commit f5e7b1cc. One new query per sequence, dense, HQ=32, H=8, D=128, median us from do_bench. Recompute is parallel_stickbreaking_attn over all T tokens. Each 4x step in T costs 3.80-3.97x. 90.1x is the best of 18 rows
H200 at f5e7b1cc, before the rebase. test_cache sends a 67-token prompt, then steps of 1, 3, 1 and 2 tokens, and compares them with one uncached forward. Test groups passed 135, 85 and 30, with 5 skips that need flash-attn, which was not installed. Rebased commits reran only on the CPU interpreter
H200, commit f5e7b1cc. Random-init StickBreakingAttentionForCausalLM, hidden 2048, 12 layers, 32/8 heads of dimension 64, bf16. Greedy generate, 64 new tokens, all-ones mask, (t(64) - t(1)) / 63, each t the median of 3 calls after 1 warmup. At B=1 with 512 and 2048 tokens the cached path is 9% and 6% slower than recomputing. 45.5x is B=8 with an 8192-token prompt. Where the 9 ms goes was not profiled
Two RTX 5090 hosts, 2 models, 3 budgets each. Host B has a 9950X3D, card memory at 17001 MHz, a best probed host read of 88 GB/s and a 575 W limit. Host S has a 9950X, stock clock, card memory at 14001 MHz, 71 GB/s and a 400 W limit. Rented hosts, batch-1 decode, equal GPU expert memory, 30 AIME-25 problems, first 256 greedy tokens, each system decodes its own text. Ratios are of mean speeds, intervals are 95% paired bootstrap over problems. FreeToken uses its faster backend per budget, picked on host B. Host B rows come from 3 rentals of one machine. The Qwen3 25% row on host B is the selection launch only
moe-speed-of-light: paper/tab_grid.tex, moe-speed-of-light: prereg/stockclock_089.json, moe-speed-of-light: paper/tab_headline.tex, moe-speed-of-light: paper/tab_headline.tex
gpt-oss-120b at 11% of experts on the GPU. 1.29x is host B, the faster-memory host. 1.21x is host S, stock clock. Both 30 problems, 95% paired bootstrap
moe-speed-of-light: paper/tab_headline.tex, moe-speed-of-light: paper/tab_headline.tex
Qwen3-30B-A3B at 43.75% of experts on the GPU, host S, 30 problems. The interval is entirely below 1. Cause not separated
Ratio over FreeToken on host S minus host B, registered before the rental. Every cell was below host B. gpt-oss 40% missed by 0.001
moe-speed-of-light: prereg/stockclock_outcome_089.md, moe-speed-of-light: paper/wsg_numbers2.tex
Host S, all else as in the full system, 6 cells. At the other 2 cells LRU was faster than FreeToken at gpt-oss 25% and its interval includes 1 at gpt-oss 40%. The rule accounts for 77-84% of the difference from FreeToken at gpt-oss 25 and 40%, and more than all of it at gpt-oss 11% and Qwen3 12.5 and 25%
moe-speed-of-light: paper/wsg_numbers2.tex, moe-speed-of-light: paper/app_wsg.tex
One RTX 5090 with a Ryzen 9 9950X at 14001 MHz, one launch, 5 FreeToken settings per cell, 6 cells, shuffled order. Tuning moved FreeToken at most 4%. Still slower at Qwen3 43.75%. This rental is not host S
moe-speed-of-light: prereg/freetoken_outcome_098.md, moe-speed-of-light: paper/wsg_ft.tex
MXFP4, top-4 of 128. Arithmetic on the expert size in the repo. The RTX 5090 is the 32 GB card
moe-speed-of-light: paper/main_body.tex, moe-speed-of-light: scripts/fig_decomp.py, moe-speed-of-light: paper/app_wsg.tex
Host O4, Ryzen 9 9950X, RTX 5090, gpt-oss-120b at 11% of experts on the GPU, job 096, teacher-forced, shuffled order. Milliseconds are 1000 over mean speed. 36% is (13.78 - 10.02) / (20.59 - 10.02), the share of the gap left on this machine. Oracles read the future routing from a recorded trace. Read-ahead is the paced copy path. The limit is computed, the rest measured
moe-speed-of-light: paper/tab_accounting_measured.tex, moe-speed-of-light: paper/app_foresight.tex
gpt-oss-120b at 11% of experts on the GPU. Mean share of the gap in percent, 95% t-interval over machines. Panel: 15 machines, exploratory. New: 5 machines rented for a registered test. Copy table off: 5 machines of two registered tests. With the table on, the first row measures MIN's schedule with the table, not its set held. The last three rows are attributed, not measured. Left at 25% is 42-48%
gpt-oss-120b at 11%. Four variants built from the engine's admission margin and layer-ahead prediction. Registered. The registered capture bound, at most 35%, was loose
moe-speed-of-light: paper/wsg_job109.tex, moe-speed-of-light: paper/app_prereg.tex
llama-batched-bench, host S, 25% of experts on the GPU, both models, prefill at 512 and 2,048 tokens, decode at 2 and 4 parallel sequences, tg 128. One run per configuration, so no intervals. The cache only serves single-token steps
moe-speed-of-light: paper/wsg_numbers2.tex, moe-speed-of-light: runtime/llama.cpp-expert-cache-4da6337.patch
LLAMA_EC_TIMEOUT_MS, default 2000, converted to GPU clock cycles assuming at most 2 GHz, so a higher clock reaches it sooner. Read from the patch, not measured
moe-speed-of-light: runtime/llama.cpp-expert-cache-4da6337.patch, moe-speed-of-light: runtime/llama.cpp-expert-cache-4da6337.patch
gpt-oss-120b at 11% and 25%, 25 launches. The closest is the read-ahead oracle. This is consistent with the limit, not a proof of it
From the closed-form account of the time, not from counters. Up to 1.22x the probe
moe-speed-of-light: paper/wsg_robust.tex, moe-speed-of-light: paper/main_body.tex
Median and server range are gpt-oss-120b at 11%. 23-36% is the 25 consumer machines at gpt-oss 25%. Limit from Belady's MIN and probed read rates. The 31% low end is one Threadripper with a 178 GB/s probe. Consumer means Ryzen, Core and Threadripper, server means EPYC, Xeon and engineering samples
moe-speed-of-light: paper/wsg_decomp.tex, moe-speed-of-light: paper/wsg_decomp.tex, moe-speed-of-light: paper/main_body.tex
Wrong outputs, or rounds more than 2% apart. All 5 have server processors, so the drop can only touch the server range, not the consumer one
moe-speed-of-light: scripts/fig_decomp.py, moe-speed-of-light: prereg/onlineadmit_outcome_106.md, moe-speed-of-light: prereg/onlineadmit_outcome_106.md, moe-speed-of-light: prereg/newhosts_outcome_107.md, moe-speed-of-light: prereg/newhosts_outcome_107.md, moe-speed-of-light: prereg/smallhosts_outcome_108.md
Jobs 073-115. Clauses, not whole predictions. 12 more were untested or void. A clause fails when its point estimate is on the wrong side. Some registered thresholds were loose, and the paper marks them
moe-speed-of-light: prereg/scorecard.json, moe-speed-of-light: prereg/scorecard.json
tests/test_signoff_gaps.py (62) and tests/test_signoff_receipts.py, run on Nov 4, 2026 with a stub harness, not a live lab. All 62 gap tests failed against the previous commit and pass on the new code. The other 109 are not claimed to fail on the old code
Posted on the PR by the maintainer who approved and merged it, Oct 2, 2026, on an A100. The existing tests still passed. This reproduces one of the planted bugs, not all of them