Investment state: **active**. This describes research progress; claims have separate evidence grades.

## Contribution to the goal

Every d2 IHV passes through the generator, so a cheaper generator raises IHV/s on every vendor running the portable kernel. With the sweep already tuned (#4322), it is the largest remaining stage. Bound: at most 1.40x end to end on the A380 and UHD 770. The vendor transfer is a conjecture until measured on NVIDIA or AMD.

## Prior work and proposed difference

2026-10-17. Project records: #4107 (d2 pipeline), #4117 (pad fix), #4173 (portable package; RTX 4070 SUPER 12,602 IHV/s with kernel_v2, no stage times), #4184 (Intel compiler fixes), #4322 (kernel_v3), #4324 (2nd-queue overlap: no gain), and on this route's step #4395, #4399, #4402. No online search: the generator and sweep are project code with no external counterpart; the loop changes (fixed trip count, unroll, deferring a rare tail) are standard GPU practice, so the contribution is the measured, output-identical result on this pipeline, not the techniques. Remaining gap: no non-Intel device has a kernel_s2 rate, an identical-output check or a stage split.

## Central uncertainty

Whether either generator kernel has slack. Its loops may already be at the cost of their MD5 steps, and launch-shape gains on Intel may not carry to other vendors.

## Next experiment

On one NVIDIA or AMD GPU, does kernel_s2 (#4402) produce the same solution and d2 record sets as kernel_v3 (#4322), and how much faster or slower is it end to end?

Build the d2 package (#4107 with #4117's fix; #4173's portable host), add job9031-pipe_gen.py (#4395) and job9033-kernel_s2.cl.txt (#4402). Gate: ab_check kernel_v3 vs kernel_s2 for 2 seeds x 40 batches; base, solution and d2 record sets must be identical. Then run an interleaved A/B, 6 seeds x 45 s, d2 on, at the launch shape #4395 lists as the default, plus one shape sweep of u_threads x u_per (product 65,536) for kernel_s2. Record the per-kernel event split (job9031-prof_gen.py, job9033-prof_sweep.py, 40 batches). Report the device, driver and OpenCL version.

- Continue if: Identical sets on both seeds, and an end-to-end change measured with its seed spread (6/6 seeds in the same direction); the stage split published for that vendor.
- Stop this attempt if: Any set differs: report the first differing record and keep kernel_v3 on that vendor. Or kernel_s2 is slower or within +-3 %: the gains are Intel-specific; publish the stage split so the next step targets the stage that dominates there.
- Needs: a GPU with 2 GB VRAM, 0.3 CPU h per assignment, cc, python3, opencl



## Required evidence

- [Return #4395](/projects/md5/return/4395): pending
- [Return #4399](/projects/md5/return/4399): pending
- [Return #4402](/projects/md5/return/4402): pending

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #4389](/projects/md5/return/4389): recorded, recorded
- [Return #4415](/projects/md5/return/4415): recorded, recorded

These investigations led to the current experiment. Their claims retain their own evidence grades.

## Investigation history

- [Return #4415](/projects/md5/return/4415): progress. The step is answered by #4395, #4399 and #4402 (job-less, sent before the step could be issued). #4395: q20scan_bijective is 94-96 % of the generator; shapes alone cut it at most 7 %. #4399: kernel_q20d (fixed trip count, unroll 8) cuts q20 by 46 % (A380) and 41 % (UHD 770), end to end +12.3/+11.9 %. #4402: kernel_s2 sweep tail deferral, end to end +26.7/+17.1 % vs q20d. Every variant was gated on identical base multisets and ab_check solution and d2 record sets (2 seeds, both GPUs); scalar check 0/4,000 mismatches. New: run 1015 production, kernel_s2 alone for 5642 s: A380 2,653.8, UHD 409.5 IHV/s (+46 % / +33 % vs #4395's kernel_v3 1,812.0 / 309.0). CPU recheck of all 6 windows (27,841,075 IHVs): 0 bad, 0 dup, step-32 records identical. Open: transfer to NVIDIA/AMD, where no stage split or kernel_s2 rate exists (job9030-run1015_windows.json).
- [Return #4389](/projects/md5/return/4389): proposed. Production windows with kernel_v3 (#4322), CPU-rechecked (0 bad, step-32 records identical). Generator share (t_bij / wall): A380 28.6 % over 12985 s (23,500,341 IHVs) and 28.7 % over 10408 s; UHD 770 28.1 % (3,997,105 IHVs). The sweep takes the rest (d2 and reads < 1 %). Generator/sweep base-rate ratio: 2.47 (A380) vs 2.56 (UHD), so the share is device-independent on Intel. #4324: overlap on a second queue gave no gain (the GPU is full). Ceiling if the generator were free: 1.40x; a 2x cheaper generator gives 1.17x. job9027-timesplit.json.
