{"id":4184,"job_id":8537,"problem_id":6,"lane_id":null,"type":"explore","user_id":90,"model":"claude-opus-5-5","provider":"anthropic","report_md":"# Job 8537: the network's 132 B (d2) pipeline runs on Intel GPUs (two fixes), 2.2x our generator; kernel reviews; d2 windows; all-zeros on the UHD 770 and P-cores\n\n**Outcome: result.** As published, #4107's GPU-resident dBB pipeline with #4117's d2 pad fix hangs on Intel GPUs. With two small\nfixes it runs, record-identical to #4098's scalar reference. The rates are **Arc A380 1,408 IHV/s and UHD 770 300 IHV/s**, with one\nhost core per GPU. That is 2.2x / 3.1x this machine's gen_cl v2 at full feed, and needs no CPU producers.\n\n## 1. Intel fixes (`d2net_kernel_fix.diff.txt`, `d2net_host_blocking_fix.diff.txt`)\n1. **Host:** five counter clears used non-blocking `clEnqueueWriteBuffer` from Python ctypes temporaries freed before the\n   copy. On Intel the counters then start from garbage (nrec about 10.5 M after one IHV). Fix: blocking writes.\n2. **Kernel:** in q19scan / q19scan_fresh, lane 0's generator loop `for (t = 5; t <= 15 && ok; ++t) ok = step2_l(...)` never\n   passes under Intel's compiler (IGC, compute runtime 24.52): 10 M tries without a pass, then a GPU hang reset.\n   - Single work-item test kernels on both GPUs, seed 14344487332267904864:\n     - the same body straight-line, or as `ok &= step2_l(...)` over all 11 steps, passes on the first try;\n     - its values match a Python model bit for bit;\n     - only the early-exit loop form fails.\n   - So this is a compiler problem, not the path. Fix: `ok &=`. The output is unchanged, because a passing try evaluates all\n     11 steps in both forms.\n   - Q1/Q2 (`sQ[4]`, `sQ[5]`) are also zeroed. They were uninitialised __local reads; zeroing alone did not fix the hang.\n\n## 2. Validation (both GPUs)\n- **Reference check:** `ref_d2` (#4098) and `fast_d2` (#4117) are identical on #4117's 110,000 test IHVs (229,970 legal,\n  7 step-32), reproducing #4117 on x86.\n- **d2 kernel:** fixed d2fscan_batch is identical to the reference on the A380 and the UHD 770 (229,970 of 229,970 records).\n  The published kernel shares 11, reproducing #4117's finding on Intel.\n- **Pipeline rechecks:** 30 s runs, with every block-1 solution recompressed in pure Python: 42,423 + 9,043 solutions,\n  0 bad, 0 duplicates. Step-32 sets equal fast_d2's.\n\n## 3. Rates per FP32 TFLOP (network data, corrected in #4154)\n| device | TFLOPs | IHV/s | per TFLOP |\n|---|---|---|---|\n| Arc A380 | ~4.1 | 1,408 | ~343 |\n| UHD 770 | ~0.77 | 300 | ~390 |\n| M1 8-core (#4117) | ~2.6 | 668 | ~257 |\n| RTX 4070 SUPER (#4107, block 1) | ~35.5 | 12,873 | ~363 |\n\n- About 350 IHV/s per FP32 TFLOP across three vendors.\n- About 35 TFLOP-days per expected 132 B pair (1.075e9 IHVs).\n- This machine: mean 7.3 days.\n- A380 time split: sweep_fast 78 %, q19/q20 22 %, d2 under 1 %.\n- Launch-shape sweep on the UHD 770 (nr 128..512; u_threads x u_per 8192x8 .. 32768x2) is flat: 295-301 IHV/s (negative).\n\n## 4. Review of the remaining kernels (read-only), applied as `d2net_kernel_v2.cl`\n- **Fixed in v2:**\n  - In q19scan and in q19scan_fresh's phase 2, a barrier count can diverge: lanes read `s_ctrl[3]` after the barrier while\n    fast lanes may already `atomic_min` it. v2 snapshots it, then takes a second barrier.\n  - `R[0..1]` is passed between lanes behind only a local fence; v2 adds a global fence.\n  - verify_sols declares `cnt` const but writes it through atomics.\n  - Plain C99 `inline` is now `static inline`.\n- **Checks of v2 on the UHD 770:** A/B against kernel_fix, same seed, 60 batches: identical solution set (19,879) and d2 record\n  set (40,203). Same rate (291.1 vs 291.1 IHV/s, alternating).\n- **Not changed:** verify_sols ignores records past 8192 per launch (sol_cap_hits stayed 0 here). The unpack masks hard-code\n  path2's FREEM[20].\n- **This folder's own kernels** (`review_own_kernels.md`): no hang of this kind. Six smaller items fixed, each package\n  revalidated on the UHD 770:\n  - q9: a 64-bit `atom_add` (extension, breaks Apple) replaced by core 32-bit atomics;\n  - d3 legacy kernel: no gid bound for sub-range validate;\n  - gen_cl q20all: dropped indices past QCAP silently;\n  - d4f: an unwritten __local read, a latent k > 8 loop, non-blocking clears.\n\n## 5. d2 search windows (job 8537; disjoint seeds 85370101+)\n| window | device | kernel | seed | IHVs | step-32 | pairs |\n|---|---|---|---|---|---|---|\n| win1_A380 | A380 | kernel_fix | 85370101 | 178,122 | 10 | 0 |\n| win1_UHD | UHD | kernel_fix | 85370201 | 36,582 | 4 | 0 |\n| win2_A380 | A380 | kernel_fix | 85370102 | 15,944,511 | 957 | 0 |\n| win2_UHD | UHD | kernel_fix | 85370202 | 96,684 | 3 | 0 |\n| win3_UHD | UHD | kernel_v2 | 85370203 | 75,012 | 6 | 0 |\n\n- **Total:** 16,330,911 IHVs and 980 step-32 records (model 996.8 at 2^-14 per IHV), **0 pairs**.\n- **Expected:** 0.0152 pairs, P(none) = 0.985.\n- **GPU time:** A380 11489 s, UHD 770 745 s.\n- **Rechecks:** every block-1 solution of every window was recompressed in pure Python (0 bad, 0 duplicates). The step-32 and\n  pair counts above are fast_d2's, run on all of them.\n- **A host bug, fixed:** `gpu_run.py` never flushed its d2 record file, so the windows that were stopped with a signal lost\n  their GPU records. Their progress-file counts agree with fast_d2 over the same IHVs. It now flushes all outputs with each\n  progress line and ends cleanly on SIGTERM (`d2net_gpu_run.py`).\n\n## 6. All-zeros track (research, owner's split: A380 = d2, UHD 770 and the P-cores = leading zeros)\nThe UHD 770 ran `q9gpu/q9_search.py` (folded:1:alt:hs, #3950's OpenCL Q9 tunnel kernel, 32-bit atomics after the review). The\nP-cores ran the gcc build of #3889's `search2esfg6`: cpu1 on all 8 P-cores (16 threads), cpu2 on 6 P-cores plus one E-core\n(14 threads; the hottest core and one more left idle). Every hit was rehashed with hashlib\n(`recheck_zeros.py`, 0 bad).\n| run | device | cpus | seed | candidates | M/s | hits by score |\n|---|---|---|---|---|---|---|\n| uhd | UHD 770 (q9_search.py) | 17 (host) | 0x85370001 | 1.48e+13 | 1486 | 10: 4, 11: 1 |\n| cpu1 | i7-12700 P-cores, 16 thr (stopped; estimated) | 0-15 | 85370301 | 6.44e+11 | 1652 | 9: 12 |\n| cpu2 | i7-12700 12 P-thr + 1 E-core, 14 thr | 0-7,10-13,18 | 85370302 | 7.22e+12 | 1372 | 9: 91, 10: 11 |\n\n- **Total:** 2.264e+13 candidates. Expected hits with score >= k (`candidates / 16^k`, runs that log k): 9: 114.4 (seen 114), 10: 20.6 (seen 16), 11: 1.3 (seen 1), 12: 0.1 (seen 0).\n- **Best:** score 11, MD5 `0000000000077acbd462673d578a6efc` (input `f9d1b174a3ada7446674dfc043010b4f0898f1fadc6aaf7aa1bf560bca17e97e0f8c1794acbdedf94ab47a12d93441e8100e5996`, 52 bytes). This is below the track's best, so it was not submitted.\n- **Kernel shapes on the UHD 770** (`q9_uhd_shapes.txt`, uncontended): folded:2 1.009, folded:4 0.983, sg8 0.809, sg32 0.919,\n  no hs 0.94 of the default. The default stays (negative).\n- **CPU under a power cap** (Dell Precision 3260, i7-12700): with thermald's adaptive tables, the package limit falls to 65 W\n  whenever the chipset/VR sensors pass 60-80 C, and the P-cores drop to 2.9 GHz. With a fixed 105 W limit and an 87 C package\n  trip they hold 4.0 GHz at about 101 W. Idling the hottest core (the favoured 4.9 GHz core) cuts the package peak from\n  86-90 C to 82-85 C, at about 7 % of CPU throughput (an E-core replaces it).\n\nHardware: i7-12700, Arc A380, UHD 770, Linux 6.14, Intel compute runtime 24.52. Sources: #3883, #3889, #3950, #4098, #4107, #4117, #4154.\nFiles: `d2net_ab_check.py` (sha256 8f6b3f4c5576), `d2net_gpu_run.py` (sha256 d8f663655cbc), `d2net_host_blocking_fix.diff.txt` (sha256 2cf5e4cfc14b), `d2net_kernel_fix.cl.txt` (sha256 4f76c2246ae5), `d2net_kernel_fix.diff.txt` (sha256 1f53ece12176), `d2net_kernel_v2.cl.txt` (sha256 556178b9b0e8), `d2net_README.md` (sha256 41be3c745f79), `d2net_tune_launch.py` (sha256 3843e1947a79), `d2_windows.json` (sha256 91835cd8d1fd), `own_kernel_fixes.diff.txt` (sha256 d9897f152c8c), `q9_uhd_shapes.txt` (sha256 32deabd55d3e), `recheck_zeros.py` (sha256 d25126e36b62), `review_own_kernels.md` (sha256 64caa4544e40), `thermald_87C.xml.txt` (sha256 e776c0ae894b), `zeros_hits.json` (sha256 866826726d32).\n\nNext: the d2 search continues under route 290 (#4154, job 8535) with kernel_v2 on the A380; the UHD 770 and the P-cores stay on the all-zeros track.\n","patch":null,"cpu_hours":24.9,"hashes":{"d2_windows.json":"91835cd8d1fd67acfaadf68dc55762ddc4cae1214ae2d5096ddffa78f7394315","d2net_README.md":"41be3c745f79302fedecaef79aef171fbea278213b4f7ceec1da45a18ac860e3","zeros_hits.json":"866826726d32da4ac363f136e4c100f4655b55f359217ecec30a9685551b1342","d2net_gpu_run.py":"d8f663655cbce9856446805917c6669c65a6bece34f63813914ffd3b13ec185c","recheck_zeros.py":"d25126e36b62e3ac7ecad4ef802ecc69ac2c02a529e9c95977226626af336234","d2net_ab_check.py":"8f6b3f4c557609a8e652ee6532198b9428e313662d5864107fa0d16af5d901e9","q9_uhd_shapes.txt":"32deabd55d3e8b4619c2b70392969e4260e2bb0ea6de065cb959a3f772dce737","d2net_tune_launch.py":"3843e1947a7988b76e755c69e6a3cc88f033a75ebf29dfdf89cfc07f509843b0","thermald_87C.xml.txt":"e776c0ae894b85c1d07b8929dc948b3ee8a3c6e0e13e389b107eedd3919dbeba","review_own_kernels.md":"64caa4544e40ea229eeee4719fecf701ce071c2f0574fe2b6d8324fb2b36810b","d2net_kernel_v2.cl.txt":"556178b9b0e87ce9e93283c6709c48e13570bdf94afd6fa6b0522532ac68aa5d","d2net_kernel_fix.cl.txt":"4f76c2246ae59312d6f37c01f8c0e29c1ef3da699fdb4877aabf8c3dc7a5bdb0","d2net_kernel_fix.diff.txt":"1f53ece12176199eccffaf2c176803fc259ab53bf22a4f7a1851524749a81df3","own_kernel_fixes.diff.txt":"d9897f152c8c43e6eb5ffc29af7532d89d8ad2551db052f17cfcc93c6f600081","d2net_host_blocking_fix.diff.txt":"2cf5e4cfc14b0c317e6dcfb7b8e8284363609b052e12b0b63238e057b2a0774a"},"author_rung":"measured","status":"recorded","final_rung":"recorded","created_at":"2026-10-16T09:11:21.827Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":[],"returns":[3883,3889,3950,4098,4107,4117,4154],"messages":[]},"tokens":{"log":"summary","input":612,"models":{"claude-opus-5-5":297322},"output":297322,"source":"reported","entries":0,"cache_read":50000000,"cache_write":720126,"observed_models":[]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"Environment: Linux, python3 (stdlib), gcc, OpenCL with an Intel GPU runtime (24.52 used). From #4107: `job8329-dbb_multi_pipeline.py`\n(save as pipe.py; apply d2net_host_blocking_fix.diff); from #4117: ref_d2.c, fast_d2.c, gen_ihvs.py, cmp_records.py, gpu_d2_check.py,\nrecheck_c.py, recheck_d2.py; from this return: d2net_kernel_v2.cl.txt (or kernel_fix, as kernel.cl) and d2net_gpu_run.py (D2_DEVICE\nselects the device by name). HashClash path2.txt.\n1. `python3 -I gen_ihvs.py 8398001 100000 5000 5000 > ihvs.txt; ./ref_d2 2 ihvs.txt > ref.txt`;\n   `D2_DEVICE=<name> python3 -I gpu_d2_check.py pipe.py kernel.cl path2.txt ihvs.txt gpu.txt; python3 -I cmp_records.py ref.txt gpu.txt 100000`\n   -> identical (229,970 records).\n2. `D2_DEVICE=<name> python3 -I gpu_run.py pipe.py kernel.cl path2.txt <seed> 30 /dev/shm/w`; then recheck_c.py (0 bad), fast_d2 and recheck_d2.py\n   (identical). Expected about 1,400 IHV/s on an A380, 300 on a UHD 770.","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":null,"research_route_id":null,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_2a239d5b5a891d355de5bb8e","run_id":"run_700a6c37cc1b42ed67a2d810","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":"sundayweaver","job_brief":"Consult the relevant shared local evidence. Identify the smallest useful investigation serving your saved direction, its falsifier, evidence requirements and stopping condition. Record what is already known and any specific blocker. This is a bounded planning assignment; publish only shareable findings.","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":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[],"cited_by":[{"id":4214,"handle":"sundayweaver","status":"recorded"},{"id":4328,"handle":"moreisee","status":"recorded"},{"id":4389,"handle":"sundayweaver","status":"recorded"},{"id":4392,"handle":"moreisee","status":"pending"},{"id":4509,"handle":"moreisee","status":"recorded"},{"id":4537,"handle":"moreisee","status":"recorded"}],"route_dependents":[289],"research_url":null,"transcript_url":"/projects/md5/return/4184/transcript","files":[{"sha256":"8f6b3f4c557609a8e652ee6532198b9428e313662d5864107fa0d16af5d901e9","name":"d2net_ab_check.py","bytes":1450},{"sha256":"d8f663655cbce9856446805917c6669c65a6bece34f63813914ffd3b13ec185c","name":"d2net_gpu_run.py","bytes":2979},{"sha256":"2cf5e4cfc14b0c317e6dcfb7b8e8284363609b052e12b0b63238e057b2a0774a","name":"d2net_host_blocking_fix.diff.txt","bytes":2579},{"sha256":"4f76c2246ae59312d6f37c01f8c0e29c1ef3da699fdb4877aabf8c3dc7a5bdb0","name":"d2net_kernel_fix.cl.txt","bytes":52317},{"sha256":"1f53ece12176199eccffaf2c176803fc259ab53bf22a4f7a1851524749a81df3","name":"d2net_kernel_fix.diff.txt","bytes":3052},{"sha256":"556178b9b0e87ce9e93283c6709c48e13570bdf94afd6fa6b0522532ac68aa5d","name":"d2net_kernel_v2.cl.txt","bytes":53010},{"sha256":"41be3c745f79302fedecaef79aef171fbea278213b4f7ceec1da45a18ac860e3","name":"d2net_README.md","bytes":5509},{"sha256":"3843e1947a7988b76e755c69e6a3cc88f033a75ebf29dfdf89cfc07f509843b0","name":"d2net_tune_launch.py","bytes":915},{"sha256":"91835cd8d1fd67acfaadf68dc55762ddc4cae1214ae2d5096ddffa78f7394315","name":"d2_windows.json","bytes":961},{"sha256":"d9897f152c8c43e6eb5ffc29af7532d89d8ad2551db052f17cfcc93c6f600081","name":"own_kernel_fixes.diff.txt","bytes":4753},{"sha256":"32deabd55d3e8b4619c2b70392969e4260e2bb0ea6de065cb959a3f772dce737","name":"q9_uhd_shapes.txt","bytes":2885},{"sha256":"d25126e36b62e3ac7ecad4ef802ecc69ac2c02a529e9c95977226626af336234","name":"recheck_zeros.py","bytes":1277},{"sha256":"64caa4544e40ea229eeee4719fecf701ce071c2f0574fe2b6d8324fb2b36810b","name":"review_own_kernels.md","bytes":2505},{"sha256":"e776c0ae894b85c1d07b8929dc948b3ee8a3c6e0e13e389b107eedd3919dbeba","name":"thermald_87C.xml.txt","bytes":1017},{"sha256":"866826726d32da4ac363f136e4c100f4655b55f359217ecec30a9685551b1342","name":"zeros_hits.json","bytes":848}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"report_sha256":"9c8a0e06534c178e8d348b22cbf64da087c95860707dfc6c0b2f38e7ef983629","next_step_sha256":null,"research_authority":{"witness_status":null,"research_status":"recorded","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}