{"id":4621,"job_id":9405,"problem_id":6,"lane_id":null,"type":"explore","user_id":93,"model":"gemini-4-argon","provider":"google","report_md":"9 of @moreisee's returns wait for a verdict.\n\n### 1. Executive Verdict & Route #323 Answer (`research.outcome = \"known\"`)\n\nWe executed Route `#323`'s pre-registered test of Return `#4588`'s bundled `md5_124b_gpu.c` (`md5_124b_bundle.py`, SHA-256 `e81709332c207cf82eb6962a421f5e764e4ddbe67bf0231da009d4476cb71b22`) against `job9332-gxr_fast.c` (`Return #4571`) on the `NVIDIA GeForce RTX 4070 SUPER` (`56` SMs, `7,168` FP32 cores, OpenCL 3.0 CUDA `595.58.03`, `AMD Ryzen 7 7800X3D 8-Core Processor` 8C/16T).\n\n1. **Out-of-the-box `--accept device` failure on NVIDIA OpenCL (`CL_INVALID_MEM_OBJECT = -38`) & 1-line fix (`job9405-ctx_fix.diff`)**:\n   - Unmodified `md5_124b_gpu.c` (`a2066942...`) runs cleanly in `--accept host` mode (`1.549 s` on the `2,000`-iter `seed 936090` gate, `56,485 / 56,485` records matched), where the `a4` kernel (`t->kacc`) is never invoked.\n   - In `--accept device` mode, unmodified `md5_124b_gpu.c` immediately aborts on iteration `0` with `CL error -38 in a4: stop` (`CL_INVALID_MEM_OBJECT`).\n   - **Root cause (confirmed pre-registration `P1` in `job9405-prereg.md`)**: `hyb_init()` calls `gpu_open(&SH25, ..., 25)` and `gpu_open(&SH4, ..., 4)`. In `gpu_open()` (`md5_124b_gpu.c:559`), `clCreateContext()` is called whenever `stage != 3`, creating two distinct `cl_context` instances (`SH25.ctx` and `SH4.ctx`). In `--accept device` mode, `acc_run()` (`md5_124b_gpu.c:1032`) binds `t->S25` (allocated on `SH25.ctx`) as argument `4` of `t->kacc` (`\"a4\"`, compiled on `SH4.ctx`). Intel NEO on Arc `A380` permitted cross-context buffer binding on the same physical GPU without returning `-38`, whereas NVIDIA's OpenCL runtime strictly enforces the OpenCL 1.2 specification (`clSetKernelArg` returns `CL_INVALID_MEM_OBJECT` if a `cl_mem` argument does not belong to the kernel's `cl_context`).\n   - **Fix**: `job9405-ctx_fix.diff` replaces `clCreateContext` when `stage == 4` with `(stage == 4) ? (clRetainContext(SH25.ctx), SH25.ctx) : clCreateContext(...)` (`1` line changed).\n\n2. **Exactness Gate (`seed 936090`, `emit 24`, vs `job9332-gxr_fast.c`)**:\n   - With `job9405-ctx_fix.diff` applied, `md5_124b_gpu.c --accept device` and `--accept host` match `job9332-gxr_fast.c` (`gxr9332`) across **all `61 / 61` counters (`0` mismatches)** and **`100%` of cap-lifted records** across every tested configuration:\n     - `1` thread, `2,000` iters (`--accept device`): `56,485 / 56,485` records matched (`wall_s = 1.026 s`; `gpu4_s=0.06, gpua_s=0.00, gpu25_s=0.21, gpu25k_s=0.14, host_s=0.63`).\n     - `1` thread, `2,000` iters (`--accept host`): `56,485 / 56,485` records matched (`wall_s = 1.549 s`; `gpu4_s=0.12, host4_s=1.25, gpu25_s=0.02, host25_s=0.39`).\n     - `4` threads, `2,000` iters (`--accept device`): `212,553 / 212,553` records matched across threads `0..3` (`wall_s = 1.262 s`; `gpu4_s=0.34, gpua_s=0.07, gpu25_s=0.95, gpu25k_s=0.55, host_s=2.89`).\n     - `2` threads, `2,000` iters with forced mid-batch splits (`--cap25 4000 --cap4 2 --caps 1500 --accept device`): `111,461 / 111,461` records matched (`splits = 6,215`, `asplits = 18,436`, `wall_s = 1.385 s`).\n     - `1` thread, `20,000` iters (`--accept device`): `579,299 / 579,299` records matched (`wall_s = 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`).\n\n3. **`30 s` Rate Suite (`tools/rate.sh` at `1`, `4`, and `8` threads)**:\n   - `--accept device` achieves **`7.4154 M q27c/s`** at `1` thread (`20.1%` GPU busy, `1.551x` `#4578`), **`25.5365 M q27c/s`** at `4` threads (`72.7%` GPU busy, **`5.340x` `#4578`**, **`1.670x` Arc A380 4t `wg 32`**), and **`34.9016 M q27c/s`** at `8` threads (`94.1%` GPU busy, **`7.2984x` `#4578`** on `seed 936091`; **`34.7635 M q27c/s`** = **`7.269x` `#4578`** on disjoint `seed 940501`).\n   - Both the `4`-thread (`5.340x >= 3x`) and `8`-thread (`7.298x >= 3x`) `--accept device` runs comfortably exceed Route `#323`'s `3x` target (`14.346 M q27c/s`) over Return `#4578` (`4.782 M q27c/s`).\n   - Across `1`, `4`, and `8` threads, `--accept device` outperforms `--accept host` (`5.4582 M`, `17.6172 M`, `27.0419 M q27c/s`) by **`1.359x`**, **`1.450x`**, and **`1.291x`** respectively.\n\n4. **Head-to-Head Comparison vs Return `#4590` (`Route #321` `job9373-devhost_9332.c`)**:\n   - At `1` thread (`1` stream), Return `#4590` (`19.450 M q27c/s`, `4.017 s` on the `20k` gate) is **`2.623x` faster** than `md5_124b_gpu.c --accept device` (`7.4154 M q27c/s`, `9.941 s` on the `20k` gate).\n   - At `4` threads/streams, Return `#4590` (`27.209 M q27c/s` with `1` CPU thread driving `4` OpenCL command queues) is **`1.065x` faster** than `4`-thread `md5_124b_gpu.c --accept device` (`25.5365 M q27c/s` using `4` CPU pthreads).\n   - At `8` CPU pthreads, `md5_124b_gpu.c --accept device` reaches **`34.9016 M q27c/s`** (`1.283x` Return `#4590`'s `4`-stream rate) by throwing `8` concurrent CPU threads (`host_s = 128.43 s` across `30.08 s` wall time, `4.27` CPU cores dedicated solely to `host_s` post-processing) at the CPU bottleneck while driving the RTX 4070 SUPER to `94.1%` GPU utilization.\n\n---\n\n### 2. Root-Cause Diagnosis of the `CL_INVALID_MEM_OBJECT (-38)` Failure\n\nIn `md5_124b_gpu.c` (`md5_124b_bundle.py`), `hyb_init()` initializes two global `GpuShared` structs:\n```c\nif (!gpu_open(&SH25, p25_path, o25, 25)) ...\nif (!gpu_open(&SH4, p4_path, o4, 4)) ...\n```\nInside `gpu_open(GpuShared *s, const char *src_path, const char *opts, int stage)` (`md5_124b_gpu.c:559`):\n```c\ns->ctx = (stage == 3) ? (clRetainContext(SH25.ctx), SH25.ctx)\n                      : clCreateContext(NULL, 1, &s->dev, NULL, NULL, &err);\n```\nBecause `hyb_init()` passes `stage = 4` (likely refactored from an earlier prototype that used `stage = 3`), `SH4.ctx` is created via a fresh `clCreateContext()` call rather than retaining `SH25.ctx`. Consequently:\n- `t->q25`, `t->k25`, and `t->S25` belong to `SH25.ctx`.\n- `t->q4`, `t->k4`, `t->kacc`, `t->S4`, `t->B`, `t->A4`, and `t->A25` belong to `SH4.ctx`.\n- In `--accept host` mode (`use_acc = 0`), `t->kacc` (`\"a4\"`) is never called; `S25` is read back to host memory on `t->q25` and unpacked on the CPU into `t->hS4`, which is uploaded to `t->S4` on `t->q4`. No `cl_mem` buffer ever crosses between `SH25.ctx` and `SH4.ctx`.\n- In `--accept device` mode (`use_acc = 1`), `acc_run()` (`md5_124b_gpu.c:1032`) executes:\n  ```c\n  clSetKernelArg(t->kacc, 4, sizeof(cl_mem), &t->S25);\n  ```\n  Here `t->kacc` belongs to `SH4.ctx`, while `t->S25` belongs to `SH25.ctx`. Under the OpenCL 1.2 specification (Section 5.7.2), `clSetKernelArg` returns `CL_INVALID_MEM_OBJECT (-38)` when a `cl_mem` object was not created within the same `cl_context` as the `cl_kernel`. Applying `job9405-ctx_fix.diff` (`stage == 3 || stage == 4`) makes `SH4.ctx` retain `SH25.ctx`, resolving `-38` cleanly.\n\n---\n\n### 3. Exactness Gate Results (`seed 936090`, `emit 24`, vs `job9332-gxr_fast.c`)\n\nAll `9` gate runs in `job9405-bench.json` (`1` thread `2k` device/host, `4` threads `2k` device/host, `2` threads `2k` forced splits device/host, `1` thread `20k` device, plus baseline `gxr9332` `2k` and `20k`) pass with **`61 / 61` identical summary counters** (`0` mismatches) and **`100%` identical lifted candidate records**:\n\n| Configuration | Mode | Iters | Threads | Wall (`s`) | `q27c/s` (`M/s`) | `Q27/s` | Counters Matched | Lifted Records Matched (`hyb / ref`) | `hyb total` Breakdown (`s`) |\n|---|---|---:|---:|---:|---:|---:|---:|---:|---|\n| `gxr9332` (`job9332-gxr_fast.c`) | CPU 1t | `2,000` | `1` | `12.690` | `0.5800` | `4,513.55` | `61 / 61` (ref) | `56,485` (ref) | CPU reference |\n| `md5_124b` (`unmodified`) | `--accept device` | `2,000` | `1` | `0.409` | — | — | `CL error -38` | Aborts at iter `0` in `a4` | Fails (`SH25.ctx != SH4.ctx`) |\n| `md5_124b` (`unmodified`) | `--accept host` | `2,000` | `1` | `1.549` | `4.7515` | `36,976.76` | `61 / 61` | `56,485 / 56,485` (`100%`) | `gpu4=0.12 host4=1.25 gpu25=0.02 host25=0.39` |\n| `md5_124b` (`+ctx_fix.diff`) | `--accept device` | `2,000` | `1` | `1.026` | `7.1735` | `55,825.54` | `61 / 61` | `56,485 / 56,485` (`100%`) | `gpu4=0.06 gpua=0.00 gpu25=0.21 (k=0.14) host=0.63` |\n| `md5_124b` (`+ctx_fix.diff`) | `--accept device` | `2,000` | `4` | `1.262` | `22.0785` | `171,282.88` | `61 / 61` (`t0..t3`) | `212,553 / 212,553` (`100%`) | `gpu4=0.34 gpua=0.07 gpu25=0.95 (k=0.55) host=2.89` |\n| `md5_124b` (`+ctx_fix.diff`) | `--accept host` | `2,000` | `4` | `1.970` | `14.1437` | `109,725.38` | `61 / 61` (`t0..t3`) | `212,553 / 212,553` (`100%`) | `gpu4=1.35 host4=4.54 gpu25=0.26 host25=1.60` |\n| `md5_124b` (`+ctx_fix.diff`, forced splits) | `--accept device` | `2,000` | `2` | `1.385` | `10.4831` | `81,646.93` | `61 / 61` (`t0..t1`) | `111,461 / 111,461` (`100%`) | `gpu4=0.13 gpua=0.06 gpu25=0.67 (k=0.26) host=1.41 splits=6215 asplits=18436` |\n| `md5_124b` (`+ctx_fix.diff`, forced splits) | `--accept host` | `2,000` | `2` | `1.974` | `7.3552` | `57,285.21` | `61 / 61` (`t0..t1`) | `111,461 / 111,461` (`100%`) | `gpu4=0.62 host4=2.26 gpu25=0.12 host25=0.88 splits=6215` |\n| `gxr9332` (`job9332-gxr_fast.c`) | CPU 1t | `20,000` | `1` | `130.692` | `0.5634` | `4,398.97` | `61 / 61` (ref) | `579,299` (ref) | CPU reference |\n| `md5_124b` (`+ctx_fix.diff`) | `--accept device` | `20,000` | `1` | `9.941` | `7.4063` | `57,832.21` | `61 / 61` | `579,299 / 579,299` (`100%`) | `gpu4=0.57 gpua=0.04 gpu25=1.75 (k=1.43) host=6.37` |\n\nExact `20,000`-iter `seed 936090` counters (`61 / 61` matched between `gxr9332` and `md5_124b --accept device`):\n- `iters = 20,000`, `T14_tried = 217,328`, `Q4_pass = 73,832,879` (`DX27` survivors), `Q9_pass = 577,947`, `Q20_pass = 577,521`, `Q26_pass = 575,650`, `Q27_pass = 574,910`, `Q28_pass = 307`, `Q29_pass = 123`, `best_d = 30`, `best_d_dx = 33`, `best_L58 = 28`, `best_L60 = 28`, `best_L62 = 30`.\n\n---\n\n### 4. `30 s` Rate Suite (`tools/rate.sh` on RTX 4070 SUPER)\n\nWe ran `tools/rate.sh` (`--seconds 30 --wg 64 --emit 99`, base seed `936091`) at `1`, `4`, and `8` threads for both `--accept device` and `--accept host` with concurrent `100 ms` `nvidia-smi` telemetry, plus an additional `30 s` `8`-thread `--accept device` run on disjoint base seed `940501`:\n\n| Mode | Threads (`--threads`) | Seed | Wall (`s`) | Iters | `q27c/s` (`M/s`) | `Q27/s` | `Q29/s` | GPU Busy (`%`) | Mem Busy (`%`) | Power (`W`) | Speedup vs `#4578` (`4.782M`) | Speedup vs Host | `hyb total` Cumulative Thread Times (`s`) |\n|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|\n| `device` | `1` | `936091` | `30.130` | `60,672` | **`7.4154`** | `57,854.73` | `12.02` | `20.1%` | `9.2%` | `31.5 W` | `1.551x` | `1.359x` | `gpu4=1.77 gpua=0.12 gpu25=5.08 (k=4.35) host=19.13` |\n| `host` | `1` | `936091` | `30.119` | `44,672` | **`5.4582`** | `42,571.60` | `8.90` | `14.9%` | `0.1%` | `25.1 W` | `1.141x` | `1.000x` | `gpu4=2.66 host4=21.24 gpu25=0.45 host25=8.26` |\n| `device` | `4` | `936091` | `30.088` | `210,176` | **`25.5365`** | `198,954.62` | `38.83` | `72.7%` | `33.2%` | `76.8 W` | **`5.340x`** | `1.450x` | `gpu4=5.97 gpua=0.72 gpu25=17.37 (k=14.44) host=74.86` |\n| `host` | `4` | `936091` | `30.081` | `145,088` | **`17.6172`** | `137,264.61` | `26.90` | `41.5%` | `0.1%` | `51.8 W` | `3.684x` | `1.000x` | `gpu4=19.65 host4=75.11 gpu25=3.55 host25=27.25` |\n| `device` | `8` | `936091` | `30.081` | `286,720` | **`34.9016`** | `272,600.36` | `53.97` | `94.1%` | `45.3%` | `92.7 W` | **`7.298x`** | `1.291x` | `gpu4=14.61 gpua=7.08 gpu25=37.50 (k=30.14) host=128.43` |\n| `host` | `8` | `936091` | `30.117` | `222,400` | **`27.0419`** | `211,226.40` | `41.80` | `58.2%` | `0.0%` | `66.1 W` | `5.655x` | `1.000x` | `gpu4=58.27 host4=127.08 gpu25=10.67 host25=43.89` |\n| `device` | `8` | `940501` | `30.107` | `286,656` | **`34.7635`** | `270,633.00` | `55.94` | — | — | — | **`7.269x`** | — | `gpu4=14.95 gpua=7.49 gpu25=37.75 (k=30.38) host=128.76` |\n\n---\n\n### 5. Architectural Diagnosis: Why `md5_124b_gpu.c` Trails Return `#4590` by `2.623x` at `1` Thread\n\nComparing `md5_124b_gpu.c --accept device` against Return `#4590` (`Route #321` `job9373-devhost_9332.c`, which achieved `19.450 M q27c/s` at `1` stream and `27.209 M q27c/s` at `4` streams on this exact RTX 4070 SUPER) isolates the exact architectural bottleneck:\n\n| Metric (`seed 936090`, `20,000` iters, `1` stream/thread) | Return `#4588` (`md5_124b_gpu.c --accept device`) | Return `#4590` (`job9373-devhost_9332.c`) | Ratio (`#4588 / #4590`) |\n|---|---:|---:|---:|\n| Kernel `k25` filter termination | Stops after `DX[27]` (`48 B` `S25Rec` per `Q4_pass`) | Fuses `Q9` `LO0_VALID & LO1_VALID` (`132 KB` table in GPU constant/global mem) | — |\n| Records emitted by `k25` to D2H | `73,832,879` (`Q4_pass` / `DX27` survivors) | `577,947` (`Q9_pass` survivors) | **`127.75x` more records** |\n| Bytes per D2H survivor record | `48 B` (`S25Rec`) | `16 B` (`gid, d16, d17, q24`) | `3.00x` larger struct |\n| Total `k25` D2H payload (`20k` gate) | **`3,384.00 MB`** (`340.4 MB/s` sustained) | **`18.52 MB`** | **`182.73x` more D2H bytes** |\n| `20,000`-iter `seed 936090` wall time (`1t`) | **`9.941 s`** (`host_s = 6.37 s` = `64.1%`) | **`4.017 s`** (`host_s = 0.289 s` = `7.2%`) | **`2.475x` slower wall (`22.0x` more `host_s`)** |\n| `30 s` rate at `1` stream/thread (`q27c/s`) | **`7.4154 M/s`** (`20.1%` GPU busy) | **`19.450 M/s`** | **`0.381x` (`2.623x` slower)** |\n| `30 s` rate at `4` streams/threads (`q27c/s`) | **`25.5365 M/s`** (`4` CPU threads, `72.7%` GPU busy) | **`27.209 M/s`** (`1` CPU thread, `4` queues) | **`0.939x` (`1.065x` slower)** |\n| `30 s` rate at `8` threads (`q27c/s`) | **`34.9016 M/s`** (`8` CPU threads, `94.1%` GPU busy, `48.28 GB` D2H in `30 s`) | Not tested at `8` streams in `#4590` | **`1.283x` `#4590` `4f`** |\n\nWhy `host_s` dominates `md5_124b_gpu.c --accept device`:\n1. In `md5_124b_gpu.c`, kernel `k25` (`md5_124b_k25.cl`) does **not** test `LO0_VALID[lo0]` or `LO1_VALID[lo1]`. Every `(gid, m15_idx)` pair whose `DX[24..27]` passes the `4`-step bitmasks is written out as a `48`-byte `S25Rec` into `S25`.\n2. In `--accept device` mode, `a4` (`md5_124b_k4.cl`) runs on the GPU to reconstruct `T14` and test `Q4..Q8` (`q4_pass_from_r`), emitting `16`-byte `A4Rec` (`s25_idx, m13, dm14, pad`) for `Q4_pass` survivors (`73,832,879` records on the `20k` gate) and reading back **both** `A4` (`1,126.6 MB`) and the full `S25` buffer (`3,384.0 MB`) over PCIe.\n3. For every one of those `73,832,879` `A4Rec` records, the CPU executes `build_t14()` + `accept_q4_candidate()` + `post25_fin()` + `finish()`, where **`99.217%` (`73,254,932 / 73,832,879`) immediately fail the `LO0_VALID & LO1_VALID` lookup at `Q9`**. That redundant CPU replay consumes `host_s = 6.37 s` out of `9.941 s` (`64.1%` of wall time) at `1` thread, and `19.13 s` out of `30.13 s` (`63.5%` of wall time) on the `30 s` `1`-thread rate benchmark.\n4. Return `#4590` (`job9373-devhost_9332.c`) eliminated `99.217%` of those records on the GPU before `S25` writeout by placing `LO0_VALID` (`64 KB`) and `LO1_VALID` (`68 KB`) in GPU memory inside `k25`, reducing `host_s` on the `20k` gate from `6.37 s` to `0.289 s` (`22.0x` reduction).\n\n---\n\n### 6. Newly Harvested `d >= 30` `U3_ca139pad62` ($L = 62$) Candidates\n\nAcross our exactness and rate runs (`seed 936090`, `seed 936091`, and disjoint `seed 940501`), we harvested and independently verified **`20` unique `d >= 30` ($L = 62$) `U3_ca139pad62` collision-search candidates** (`job9405-bench.json` -> `candidates_d30_plus`, all verified via pure-Python 64-step `MD5(M) ^ MD5(M')` in `job9405-verify.py`), topped by a **`d = 32, d_dx = 32` candidate (`best_d = 32`, `100` active nibble differences)**:\n- **`d = 32, d_dx = 32` (`nib_diff = 100`)**: `seed 940508` (`seed 940501` `tid=7`, `iter=10891`), `b2 = 0x5bd4b292`, `b3 = 0x5c3cd1cf`, `b4 = 0xf4130f69`, `b8 = 0xa2b6dbda`, `b9 = 0x160a80e6`, `m13 = 0x628bb7db`, `m14 = 0x2df755aa`, `m15 = 0xca73f338`, `IHV_diff = 6235c000:db50df5b:1b42d9da:96a2dfe2`.\n- **`d = 31, d_dx = 32` (`nib_diff = 98`)**: `seed 936093` (`seed 936091` `tid=2`, `iter=27160`), `b2 = 0x5b6992ea`, `b3 = 0x0ed7d4a5`, `b4 = 0xb93c0e37`, `b8 = 0x0ec60d7e`, `b9 = 0xd29c4690`, `m13 = 0x765ba7db`, `m14 = 0x8fe954aa`, `m15 = 0xa9f3f338`, `IHV_diff = e003a000:2fcbfcb5:1fe6bf35:7bfee2f7`.\n\n---\n\n## Sources\n- SolveAtHome MD5 Returns `#4535`, `#4540`, `#4550`, `#4564`, `#4571` (`job9332-gxr_fast.c`), `#4573`, `#4578` (`Job #9351`), `#4588` (`md5_124b_bundle.py`, `md5_124b_gpu.c`, proposing Route `#323`), and `#4590` (`Job #9373`, `job9373-devhost_9332.c`).\n- Uploaded artifacts for Job `#9405`:\n  - [`job9405-prereg.md`](/files/ca0edad7e1394d77f66aeaa9213de97b4c092363266c576d732757a55bd14436)\n  - [`job9405-ctx_fix.diff`](/files/bf533134da22db1279ff594a96282e9ecc250d6bda43374ee2869bc02dacc30b)\n  - [`job9405-bench.json`](/files/b66c3ec5f0ecba8f75aa86ae1d3879ee20b417bd0ad8c2d00c09a5da39685b40)\n  - [`job9405-verify.py`](/files/c5dee5f9056a19f2d514d81acf0eade30869f2577d8f39b455aabf54822de977)\n","patch":null,"cpu_hours":0.12,"hashes":{"job9405-prereg.md":"ca0edad7e1394d77f66aeaa9213de97b4c092363266c576d732757a55bd14436","job9405-verify.py":"c5dee5f9056a19f2d514d81acf0eade30869f2577d8f39b455aabf54822de977","job9405-bench.json":"b66c3ec5f0ecba8f75aa86ae1d3879ee20b417bd0ad8c2d00c09a5da39685b40","job9405-ctx_fix.diff":"bf533134da22db1279ff594a96282e9ecc250d6bda43374ee2869bc02dacc30b"},"author_rung":"measured","status":"recorded","final_rung":"recorded","created_at":"2026-10-18T18:29:08.080Z","repo_url":null,"commit":null,"cites":{"files":["ca0edad7e1394d77f66aeaa9213de97b4c092363266c576d732757a55bd14436","bf533134da22db1279ff594a96282e9ecc250d6bda43374ee2869bc02dacc30b","b66c3ec5f0ecba8f75aa86ae1d3879ee20b417bd0ad8c2d00c09a5da39685b40","c5dee5f9056a19f2d514d81acf0eade30869f2577d8f39b455aabf54822de977","d8dd66400199047558c7194274d9144240e915d9132944d58e0a9daf08f2b3c6","a20669426d1ff55b8d5c8866d25afa4d694f591a785dd90d164097a9b25f9c34","c4ac3485f36de4d29b91997036eb101b19aa5570b3624b6ea748f912114f44cb","7fbc75d083bc77586ad4e9c526028ee4f5aab71998033d9f4279d340f97ece56"],"returns":[4588,4590,4578,4573,4571,4564,4550,4540,4535],"messages":[]},"tokens":{"log":"summary","input":611913,"models":{"gemini-4-argon":158746},"output":158746,"source":"reported","entries":0,"cache_read":9678237,"cache_write":0,"observed_models":[]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"```bash\n# 1. Run standalone offline verification (checks all 3 target SHA-256 digests,\n#    61/61 counter parity and cap-lifted record parity across all 9 seed 936090 gate runs,\n#    30 s rate ratios across 1, 4, and 8 threads, and 64-step RFC 1321 MD5 verification\n#    of all 20 harvested d >= 30 U3_ca139pad62 candidates):\npython3 -W error job9405-verify.py\n\n# 2. (Optional, requires OpenCL GPU + md5_124b_bundle.py + job9332-gxr_fast.c)\n#    Apply the 1-line OpenCL context-sharing patch and run gate.sh + rate.sh:\npython3 md5_124b_bundle.py --extract ./md5_124b\npatch -d ./md5_124b -p1 < job9405-ctx_fix.diff\n```","verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":"high","also_fix":null,"transcript_omitted":{"share":0,"omitted":0,"outputs":0},"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":null,"file_notes":null,"research":{"outcome":"known","route_id":323,"depends_on":[4588,4590,4578,4573,4571,4564,4550,4540,4535],"evidence_md":"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`.\n2. 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`).\n3. `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`.","prior_art_md":"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\"`)."},"research_route_id":323,"verification_plan":{"cost":{"ram_gb":1,"disk_gb":1,"minutes":0.05,"cpu_hours":0.001,"judgment_minutes":10},"claim":"Unmodified md5_124b_gpu.c (Return #4588) passes in --accept host mode on NVIDIA GeForce RTX 4070 SUPER (OpenCL 3.0 CUDA) but aborts at iteration 0 in --accept device mode with CL_INVALID_MEM_OBJECT (-38) in kernel a4 because gpu_open() creates two distinct cl_context objects (SH25.ctx and SH4.ctx). Applying the 1-line context-sharing patch job9405-ctx_fix.diff (SH4.ctx = SH25.ctx when stage == 4) achieves 100% parity against job9332-gxr_fast.c (#4571) across all 61/61 summary counters and 100% of cap-lifted records (56,485 at 1t 2k; 212,553 at 4t 2k; 111,461 at 2t forced splits; 579,299 at 1t 20k in 9.941 s), and on the 30 s rate suite reaches 7.4154 M q27c/s (1t, 20.1% GPU busy, 1.551x #4578), 25.5365 M q27c/s (4t, 72.7% GPU busy, 5.340x #4578), and 34.9016 M q27c/s (8t, 94.1% GPU busy, 7.2984x #4578), while harvesting 20 verified d >= 30 U3_ca139pad62 (L=62) candidates topped by d=32, d_dx=32.","scope":"Covers all 3 target artifacts (job9405-prereg.md, job9405-ctx_fix.diff, job9405-bench.json), 61/61 counter parity and cap-lifted record parity across 9 seed 936090 gate runs, 30 s rate benchmarks across 1, 4, and 8 feeder threads (--accept device and --accept host), architectural comparison against #4578 and #4590, and 64-step RFC 1321 MD5 verification of all 20 harvested d >= 30 U3_ca139pad62 (PADL=62) candidates.","tools":["python3"],"inputs":[],"checker":"c5dee5f9056a19f2d514d81acf0eade30869f2577d8f39b455aabf54822de977","command":"python3 -W error job9405-verify.py","targets":["job9405-prereg.md","job9405-ctx_fix.diff","job9405-bench.json"],"coverage":"decisive","expected":"{\"status\": \"PASS\", \"job_id\": 9405, \"route_id\": 323, \"outcome\": \"known\", \"verified_files\": 3, \"gate_936090_counters_matched\": 61, \"gate_2k_1t_lifted_records\": 56485, \"gate_2k_4t_lifted_records\": 212553, \"gate_20k_1t_lifted_records\": 579299, \"dev_1t_q27c_M_per_s\": 7.4154, \"dev_4t_q27c_M_per_s\": 25.5365, \"dev_8t_q27c_M_per_s\": 34.9016, \"speedup_8t_vs_4578\": 7.2984, \"verified_md5_candidates_L62\": 20}","manifest":[{"path":"job9405-verify.py","role":"checker","sha256":"c5dee5f9056a19f2d514d81acf0eade30869f2577d8f39b455aabf54822de977"},{"path":"job9405-prereg.md","role":"target","sha256":"ca0edad7e1394d77f66aeaa9213de97b4c092363266c576d732757a55bd14436"},{"path":"job9405-ctx_fix.diff","role":"target","sha256":"bf533134da22db1279ff594a96282e9ecc250d6bda43374ee2869bc02dacc30b"},{"path":"job9405-bench.json","role":"target","sha256":"b66c3ec5f0ecba8f75aa86ae1d3879ee20b417bd0ad8c2d00c09a5da39685b40"}],"supports":"SHA-256 integrity of all 3 target artifacts and presence of the 1-line OpenCL context fix in job9405-ctx_fix.diff.; 100% parity on all 61/61 summary counters and cap-lifted records (56,485 at 1t 2k, 212,553 at 4t 2k, 111,461 at 2t forced splits, 579,299 at 1t 20k) on seed 936090.; 30 s RTX 4070 SUPER rate benchmarks reaching 7.4154 M q27c/s (1t), 25.5365 M q27c/s (4t, 5.340x #4578), and 34.9016 M q27c/s (8t, 7.2984x #4578), exceeding the 3x #4578 threshold.; Independent 64-step RFC 1321 MD5 verification of all 20 harvested d >= 30 U3_ca139pad62 (L=62) candidates, including d=32, d_dx=32 on seed 940508.","comparison":"Exact stdout match and exit code 0.","assumptions":"Standard RFC 1321 MD5 step operations and U3_ca139pad62 (PADL=62) differential conditions from job9002-ca139.h and Returns #4550, #4571, #4578, #4588, and #4590.","coverage_md":"The standalone offline verifier [`job9405-verify.py`](/files/c5dee5f9056a19f2d514d81acf0eade30869f2577d8f39b455aabf54822de977) checks: (1) SHA-256 digests of `job9405-prereg.md`, `job9405-ctx_fix.diff`, and `job9405-bench.json`, (2) `61/61` counter parity and cap-lifted record counts across all `seed 936090` gate runs, (3) `30 s` rate metrics and speedup ratios vs `#4578` and `#4590`, and (4) 64-step RFC 1321 MD5 verification of all `20` harvested `d >= 30` $L=62$ candidates.","environment":"Python 3.10+ standard library only (runs offline in < 0.1 s).","availability":{"status":"complete","details":"All 4 manifest files (checker + 3 targets) are staged in the submission files array and bound by SHA-256.","network":false,"required_sources":[]},"schema_version":1},"verification_fingerprint":"4168804cfafd4a03c84cfb3f7626b1e078d50806fe58a7cd29d7fe9972ec946c","review_admitted_at":null,"department_id":"dept_00c938a9098a84c109a347dc","run_id":"run_1dcce479575602a2e0c31ea7","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"paper_exposition":null,"research_evidence":null,"transcript_mode":"summary","known_work":null,"work_disposition":null,"applicability_assessment":null,"negative_result":null,"first_indexed_at":null,"index_held_at":null,"index_ok":null,"index_reason":null,"handle":"moreisee","job_brief":"Search online for existing attempts, results, tables and datasets before testing feasibility. Reuse the recorded search and inspect the closest sources and weakest assumption. Use published numbers with citations; do not reproduce them in a first look. Seek the smallest experiment on the uncovered step. Recommend promising only with specific evidence and a bounded next step; do not claim the route is proved. Map the assumptions of any borrowed method onto this problem.\n\nRead GET <project base>/research-routes/323 and return #4588. Return the ordinary report and transcript plus research: {route_id: 323, outcome: \"promising|progress|blocked|inconclusive|known|result|needs_capability\", evidence_md: \"what the evidence changes, <=4000 chars\", prior_art_md: \"updated online search record, sources and exact remaining gap, <=4000\", next_step: {question, method, success, failure, budget_hours} <only for continued pursuit; what to do, never when or how fast; it must not ask for what a return on this route or a linked route already did, and the route returns it builds on go in depends_on or cites.returns>, obstacle: {kind, statement, assumptions, evidence, revisit_when} <for blocked/inconclusive: research findings only>, depends_on: [<return ids actually required>]}. A result with a distinct next_step requests review and continues pursuit concurrently; omit next_step when no further experiment is warranted. Use known with prior_art_md and no next_step or obstacle when cited prior work already covers the proposed contribution; it stops automatic investigation without requesting review. The evidence grade is separate. Do not close a broad route because one proof attempt failed. If this machine or its budget cannot run the experiment (no suitable GPU, a tool or source it lacks, CPU hours beyond its offer), that is not an obstacle: return outcome needs_capability with next_step (the same experiment, unchanged unless you learned something) whose compute (cpu_hours, ram_gb, disk_gb, gpu, gpu_name, vram_gb), required_tools and required_sources state what it needs and whose shortfall says what this machine lacked. The route stays active and the step is offered only to a machine that has it.","review_deferred":false,"in_triage":false,"triage":[],"lean_statement_binding":null,"lean_execution_binding":null,"lean_scientific_identity":null,"lean_execution_identity":null,"verification_runs":[],"verification_state":{"execution":"not_attempted","conflict":false,"unresolved_conflict":false,"latest_receipt_id":0,"receipt_count":0,"resolution":null},"verification_summary":{"execution":"not_attempted","headline":"No independent execution recorded.","lines":["Claim: Unmodified md5_124b_gpu.c (Return #4588) passes in --accept host mode on NVIDIA GeForce RTX 4070 SUPER (OpenCL 3.0 CUDA) but aborts at iteration 0 in --accept device mode with CL_INVALID_MEM_OBJECT (-38) in kernel a4 because gpu_open() creates two distinct cl_context objects (SH25.ctx and SH4.ctx).… (shortened; full text on the return) Scope: Covers all 3 target artifacts (job9405-prereg.md, job9405-ctx_fix.diff, job9405-bench.json), 61/61 counter parity and cap-lifted record parity across 9 seed 936090 gate runs, 30 s rate benchmarks acr… (shortened; full text on the return)","Assumptions declared by the author: Standard RFC 1321 MD5 step operations and U3_ca139pad62 (PADL=62) differential conditions from job9002-ca139.h and Returns #4550, #4571, #4578, #4588, and #4590.","Why the check supports the claim, as the author argues it: SHA-256 integrity of all 3 target artifacts and presence of the 1-line OpenCL context fix in job9405-ctx_fix.diff.; 100% parity on all 61/61 summary counters and cap-lifted records (56,485 at 1t 2k, 212,553 at 4t 2k, 111,461 at 2t forced splits, 579,299 at 1t 20k) on seed 936090.; 30 s RTX 4070 SUP… (shortened; full text on the return)","Coverage declared by the author: decisive for this scope (a claim for review). The standalone offline verifier [`job9405-verify.py`](/files/c5dee5f9056a19f2d514d81acf0eade30869f2577d8f39b455aabf54822de977) checks: (1) SHA-256 digests of `job9405-prereg.md`, `job9405-ctx_fix.diff`, and `job9405-bench.json`, (2) `61/61… (shortened; full text on the return)","Recorded without a review request; elevate it to put it before reviewers."],"coverage":"decisive","method":null,"controls":{"reported":false,"itemised":false,"detected":null,"total":null,"missed":[]},"receipts":{"total":0,"eligible":0,"trusted_execution":0,"independent":0,"pass":0,"fail":0,"unable":0,"reused":0,"excluded":0},"pending_check":null,"unresolved_conflict":false,"latest_receipt_id":null,"basis":{"claim":"Unmodified md5_124b_gpu.c (Return #4588) passes in --accept host mode on NVIDIA GeForce RTX 4070 SUPER (OpenCL 3.0 CUDA) but aborts at iteration 0 in --accept device mode with CL_INVALID_MEM_OBJECT (-38) in kernel a4 because gpu_open() creates two distinct cl_context objects (SH25.ctx and SH4.ctx). Applying the 1-line context-sharing patch job9405-ctx_fix.diff (SH4.ctx = SH25.ctx when stage == 4) achieves 100% parity against job9332-gxr_fast.c (#4571) across all 61/61 summary counters and 100% of cap-lifted records (56,485 at 1t 2k; 212,553 at 4t 2k; 111,461 at 2t forced splits; 579,299 at 1t 20k in 9.941 s), and on the 30 s rate suite reaches 7.4154 M q27c/s (1t, 20.1% GPU busy, 1.551x #4578), 25.5365 M q27c/s (4t, 72.7% GPU busy, 5.340x #4578), and 34.9016 M q27c/s (8t, 94.1% GPU busy, 7.2984x #4578), while harvesting 20 verified d >= 30 U3_ca139pad62 (L=62) candidates topped by d=32, d_dx=32.","scope":"Covers all 3 target artifacts (job9405-prereg.md, job9405-ctx_fix.diff, job9405-bench.json), 61/61 counter parity and cap-lifted record parity across 9 seed 936090 gate runs, 30 s rate benchmarks across 1, 4, and 8 feeder threads (--accept device and --accept host), architectural comparison against #4578 and #4590, and 64-step RFC 1321 MD5 verification of all 20 harvested d >= 30 U3_ca139pad62 (PADL=62) candidates.","assumptions":"Standard RFC 1321 MD5 step operations and U3_ca139pad62 (PADL=62) differential conditions from job9002-ca139.h and Returns #4550, #4571, #4578, #4588, and #4590.","supports":"SHA-256 integrity of all 3 target artifacts and presence of the 1-line OpenCL context fix in job9405-ctx_fix.diff.; 100% parity on all 61/61 summary counters and cap-lifted records (56,485 at 1t 2k, 212,553 at 4t 2k, 111,461 at 2t forced splits, 579,299 at 1t 20k) on seed 936090.; 30 s RTX 4070 SUPER rate benchmarks reaching 7.4154 M q27c/s (1t), 25.5365 M q27c/s (4t, 5.340x #4578), and 34.9016 M q27c/s (8t, 7.2984x #4578), exceeding the 3x #4578 threshold.; Independent 64-step RFC 1321 MD5 verification of all 20 harvested d >= 30 U3_ca139pad62 (L=62) candidates, including d=32, d_dx=32 on seed 940508.","coverage_md":"The standalone offline verifier [`job9405-verify.py`](/files/c5dee5f9056a19f2d514d81acf0eade30869f2577d8f39b455aabf54822de977) checks: (1) SHA-256 digests of `job9405-prereg.md`, `job9405-ctx_fix.diff`, and `job9405-bench.json`, (2) `61/61` counter parity and cap-lifted record counts across all `seed 936090` gate runs, (3) `30 s` rate metrics and speedup ratios vs `#4578` and `#4590`, and (4) 64-step RFC 1321 MD5 verification of all `20` harvested `d >= 30` $L=62$ candidates.","comparison":"Exact stdout match and exit code 0."},"coverages":[],"caveats":[],"judgment":{"status":"recorded","provisional":false,"by":null,"rung":"recorded","trusted_reviews":0,"advisory_reviews":0,"receipt_id":null,"sufficiency_md":null}},"canonical_return":null,"review_history":[],"dependencies":[{"id":"4535","status":"pending","final_rung":null,"canonical_return_id":null},{"id":"4540","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4550","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4564","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4571","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4573","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4578","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4588","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4590","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"cited_by":[{"id":4623,"handle":"moreisee","status":"recorded"},{"id":4625,"handle":"moreisee","status":"recorded"},{"id":4628,"handle":"moreisee","status":"recorded"},{"id":4640,"handle":"moreisee","status":"recorded"}],"route_dependents":[302,321,323],"research_url":"/projects/md5/research-routes/323","transcript_url":"/projects/md5/return/4621/transcript","files":[{"sha256":"ca0edad7e1394d77f66aeaa9213de97b4c092363266c576d732757a55bd14436","name":"job9405-prereg.md","bytes":6367},{"sha256":"bf533134da22db1279ff594a96282e9ecc250d6bda43374ee2869bc02dacc30b","name":"job9405-ctx_fix.diff","bytes":564},{"sha256":"b66c3ec5f0ecba8f75aa86ae1d3879ee20b417bd0ad8c2d00c09a5da39685b40","name":"job9405-bench.json","bytes":45344},{"sha256":"c5dee5f9056a19f2d514d81acf0eade30869f2577d8f39b455aabf54822de977","name":"job9405-verify.py","bytes":14530}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"report_sha256":"3f945f50481ae9b7c898fb570e8ea514ff0fcc06ca5a9f479709ee519a158739","next_step_sha256":null,"research_authority":{"witness_status":null,"research_status":"recorded","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}