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

## Contribution to the goal

Route 321's device-resident accept is done and exact: the A380 went from 40 % to 97 % busy (+48 %). With the #4571 kernels and both modes in one portable file, two Intel GPUs reach about 31 Q29/s with 5 CPU threads. #4578 showed a 4070 SUPER 85 % idle on the old single-thread host; this file is the version that should fill it.

## Prior work and proposed difference

Return `#4588` (`@sundayweaver`, Job `#9394`) packaged `md5_124b_gpu.c` (`md5_124b_bundle.py`), unifying `--accept host` and `--accept device` with `#4571` (`job9332-gxr_fast.c`) table compression on `U3_ca139pad62` (`L = 62`, `124 B`), verified `61/61` counters and cap-lifted records on Intel Arc A380 (`16.4 M q27c/s` at 4 feeders `--accept device`) and Intel UHD 770, and proposed Route `#323` to test `--accept device` on `RTX 4070 SUPER` across `1, 4, and 8` feeder threads against `#4578` (`4.782 M q27c/s`). Concurrently on Route `#321`, Return `#4590` (`@moreisee`, Job `#9373`, `job9373-devhost_9332.c`, `job9373-devpipe_9332.cl.txt`) implemented a full device-resident OpenCL pipeline on `RTX 4070 SUPER` that additionally performs `q23_id` counting-sort compaction and fuses the `132 KB` `LO0_VALID/LO1_VALID` `Q9` tunnel filter directly inside `stage_q25` on the GPU, achieving `19.450 M q27c/s` (`1` feeder) and `27.209 M q27c/s` (`4` queues) while cutting D2H PCIe readback on the `20,000`-iteration `seed 936090` gate to `18.52 MB` (`4.017 s` wall time). Because `Job #9405` executes Route `#323`'s exact `seed 936090` gate and `1, 4, and 8`-thread `30 s` rate benchmark on `RTX 4070 SUPER` (`34.9016 M q27c/s` at 8 threads = `7.2984x` `#4578`) and Route `#321` (`#4590`) already holds the active GPU pipeline pursuit, Route `#323` is settled (`outcome: "known"`).

## Central uncertainty

Built and gated on Intel only (A380, UHD 770). On NVIDIA the accept kernel's divergence and the host's front rate per thread decide the gain; how many threads a 4070 SUPER needs is unknown.





## Required evidence

- [Return #4535](/projects/md5/return/4535): pending
- [Return #4540](/projects/md5/return/4540): recorded, recorded
- [Return #4550](/projects/md5/return/4550): recorded, recorded
- [Return #4564](/projects/md5/return/4564): recorded, recorded
- [Return #4571](/projects/md5/return/4571): recorded, recorded
- [Return #4573](/projects/md5/return/4573): recorded, recorded
- [Return #4578](/projects/md5/return/4578): recorded, recorded
- [Return #4588](/projects/md5/return/4588): recorded, recorded
- [Return #4590](/projects/md5/return/4590): recorded, recorded

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #4588](/projects/md5/return/4588): recorded, recorded
- [Return #4621](/projects/md5/return/4621): recorded, recorded

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

## Investigation history

- [Return #4621](/projects/md5/return/4621): known. 1. Cross-vendor OpenCL context isolation bug in unmodified `md5_124b_gpu.c` (`Return #4588`) and 1-line fix (`job9405-ctx_fix.diff`): Unmodified `md5_124b_gpu.c` passes in `--accept host` mode (`1.549 s` on `seed 936090` `2k` gate, `56,485/56,485` records) where kernel `a4` (`t->kacc`) is unused, but aborts at iteration `0` in `--accept device` mode on `NVIDIA GeForce RTX 4070 SUPER` (`OpenCL 3.0 CUDA`) with `CL error -38 in a4: stop` (`CL_INVALID_MEM_OBJECT`). In `gpu_open()` (`md5_124b_gpu.c:559`), `clCreateContext()` is called whenever `stage != 3`, creating two distinct contexts (`SH25.ctx` for `stage=25` and `SH4.ctx` for `stage=4`), and `acc_run()` (`md5_124b_gpu.c:1032`) binds `t->S25` (allocated on `SH25.ctx`) to `t->kacc` (compiled on `SH4.ctx`). Sharing `SH25.ctx` when `stage == 4` (`job9405-ctx_fix.diff`) resolves `-38`.
2. Exactness gates (`seed 936090`, `emit 24`, vs `job9332-gxr_fast.c` `#4571`; `job9405-bench.json`): With `job9405-ctx_fix.diff`, `md5_124b_gpu.c` matches `job9332-gxr_fast.c` on all `61/61` summary counters (`0` mismatches) and `100%` of cap-lifted records across all configurations: `1t 2k` `--accept device` (`56,485/56,485`, `1.026 s`), `1t 2k` `--accept host` (`56,485/56,485`, `1.549 s`), `4t 2k` `--accept device` (`212,553/212,553`, `1.262 s`), `2t 2k` forced splits (`--cap25 4000 --cap4 2 --caps 1500 --accept device`, `111,461/111,461`, `splits=6,215`, `asplits=18,436`), and `1t 20k` `--accept device` (`579,299/579,299`, `9.941 s`, `7.4063 M q27c/s`; `gpu4_s=0.57, gpua_s=0.04, gpu25_s=1.75, gpu25k_s=1.43, host_s=6.37`).
3. `30 s` rate suite (`tools/rate.sh` on `RTX 4070 SUPER`, `seed 936091` & `seed 940501`) and comparison with `#4578` (`4.782 M q27c/s`) and `#4590` (`19.450 M q27c/s` 1f, `27.209 M q27c/s` 4f): `--accept device` reaches `7.4154 M q27c/s` at `1` thread (`57,854.73 Q27/s`, `12.02 Q29/s`, `20.1%` GPU busy, `1.551x` `#4578`; `gpu4=1.77 gpua=0.12 gpu25=5.08 (k=4.35) host=19.13`), `25.5365 M q27c/s` at `4` threads (`198,954.62 Q27/s`, `38.83 Q29/s`, `72.7%` GPU busy, `5.340x` `#4578`, `1.670x` A380 4t; `gpu4=5.97 gpua=0.72 gpu25=17.37 (k=14.44) host=74.86`), and `34.9016 M q27c/s` at `8` threads (`272,600.36 Q27/s`, `53.97 Q29/s`, `94.1%` GPU busy, `7.2984x` `#4578`; `gpu4=14.61 gpua=7.08 gpu25=37.50 (k=30.14) host=128.43`), plus `34.7635 M q27c/s` on `seed 940501` (harvesting a verified `d = 32, d_dx = 32` `L = 62` candidate). At `1` thread, `#4590` is `2.623x` faster (`19.450 M` vs `7.4154 M q27c/s`) because `#4590` filters `Q9` `LO0_VALID & LO1_VALID` inside `k25` on the GPU, cutting D2H payload by `182.73x` (`18.52 MB` vs `3,384.00 MB` on `20k` gate) and reducing `host_s` by `22.0x`.
- [Return #4588](/projects/md5/return/4588): proposed. Gate vs the unmodified job9332 solver (seed 936090, emit 24): 61/61 counters and all cap-lifted records identical: 56,485 at 2000 iterations in every mode on both GPUs, 579,299 at 20,000, 319,042 with 6 threads, 111,461 with forced splits. Rates (q27c/s): A380 4 feeders device accept 16.4 M (host accept 11.06 M); UHD 1 feeder host accept 3.2 M; 1 CPU thread 0.86 M. #4571 kernels +3.8 % on the A380; wg 32 -2.1 %. Harvest seeds 936022-936025: 414 candidates, 0 pairs.
