diff --git a/tools/intel-arc/README.md b/tools/intel-arc/README.md index af021d246..fc71ffbde 100644 --- a/tools/intel-arc/README.md +++ b/tools/intel-arc/README.md @@ -57,6 +57,16 @@ Bench c and the two family-probe runs left one fact: every instruction family of packaging/ota/publish-jobs.sh add --kind fetch --target ae432dc7 --id fetch-ia-trace-kit-20261007 --file "$TMPDIR/igneum-ia-trace-kit.zip" --dir jobs --extract --title "Arc trace kit" --deploy packaging/ota/publish-jobs.sh add --kind run --target ae432dc7 --id run-ia-arc-trace-20261007 --cards-off "other:Intel(R) Arc(TM) B580 Graphics" --script tools/intel-arc/pc1-arc-trace.ps1 --timeout-minutes 20 --title "Arc B580: register trace against the CPU interpreter" --deploy +## 2c. What the bisect found and the fix (7 October 2026, 12:1x to 12:2x UK) + +| Job | Result | +|---|---| +| `run-ia-arc-family-20261007` and `-b` | every family exact on Intel's compiler, `mulhi` and `mad` included (60 rows, 0 `exact=no`) | +| `run-ia-arc-trace-20261007-b` | the first divergence at snapshot 7, instruction `6 rotr` (`r0 = rotr_var(r0, r2)`, r0 d1affd94, n f183b605): CPU a68d7fec = rotr(x, 5), the Arc 35ffb29a = rotl(x, 5): Intel's compiler folds `rotate(x, (0u - n) & 31u)` into a LEFT rotate by n; the same in both exchange modes | +| the fix | commit 26e135a3: `proto-opencl/intel_rotr.h` rewrites the one helper line to the shift form on an Intel platform before the build (host.c's buildProgram and the prepare path); `proto-opencl/test_intel_rotr.c` in the pre-push gate (Intel rewritten, AMD and NVIDIA untouched); taken into release-0.3.20 by the shipper as 9088293a | +| `run-ia-arc-trace-20261007-c` | with the fix, the local-exchange trace equals the CPU's in all 55,809 snapshots (the sub-group trace kernel alone diverges at a shuffle: the divergent lane-0 store before a sub-group shuffle, a trace-kernel artefact; the real kernel's vectors pass) | +| `run-ia-arc-bench-20261007-d` | self-test PASS on every pack, fingerprints equal to the Mac's and the 5090's; 11.011 MH/s on class v4, 11.019 on the v3 control, 11.002 on the live pack, 10.882 local exchange; the bench-log row and the card-picker entry | + ## 3. Dry run The playbooks are PowerShell; this Mac has no `pwsh` (the Homebrew cask is gone from the tap and the Command Line Tools are too old for a cask install today), so the Mac-side dry run against the UI mock (`node tools/ui-mock/server.mjs 4310` with `?scenario=intel`, whose `api/state` carries the Intel row) is owed until a PowerShell is on the Mac (Microsoft's pkg, the project lead's word for the download). What stands in: the driver playbook ran live on PC 1 twice with the same helper shapes (Stamp, Summary, the adapter and worker-list readers), and the four CI checks pass on both scripts (`kit-path-check`, `ps-drive-ref-check`, `kill-by-name-check`, `playbook-quit-check`). diff --git a/tools/intel-arc/pc1-arc-trace.ps1 b/tools/intel-arc/pc1-arc-trace.ps1 index aca26831c..1791307f5 100644 --- a/tools/intel-arc/pc1-arc-trace.ps1 +++ b/tools/intel-arc/pc1-arc-trace.ps1 @@ -8,7 +8,7 @@ # or quit. Lines: RESULT; the first divergence with 6 lines of context from both traces; a SUMMARY {json} line. $ErrorActionPreference = 'Continue' $jobName = 'pc1-arc-trace' -$kitId = 'fetch-ia-trace-kit-20261007' +$kitId = 'fetch-ia-trace-kit-20261007-b' $started = Get-Date function Stamp { (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ') } function Summary([string] $status, [hashtable] $extra) {