M2 Air LZ4 match-copy unroll

M2 Air LZ4 match-copy unroll#

This follow-up is based on the frozen aac92d42 M2 Air IO handoff. It changes only the scalar low-plane LZ4 decoder in qh5idx.metal: dependency-safe four-word packed_uchar4 match copies replace scalar loop iterations for offset-1 and offset-2 patterns and for offsets of at least 16 bytes. Offsets 4 through 15 keep the original sequential loop. Load geometry, crop, scan and detector binning, dtype, count audit, products, and provenance are unchanged.

The physical test used the same 495f1d6d... Live4DSTEM executable for both arms; only the bundled qh5idx.metal changed from 45c0eba8... to 13fea6a4.... On the 8 GB Mac14,2 M2 Air, seven process-isolated alternating Fixture A/Fixture B loads were measured for frozen A, candidate, and frozen B.

Fixture

Frozen pooled Metal p50/p95/max

Candidate Metal p50/p95/max

Frozen pooled wall p50/p95/max

Candidate wall p50/p95/max

Fixture A

1.715/1.739/1.739 s

1.615/1.629/1.629 s

2.086/2.355/2.355 s

1.985/1.989/1.989 s

Fixture B

1.719/1.731/1.731 s

1.618/1.624/1.624 s

2.114/2.266/2.266 s

2.043/2.148/2.148 s

Both fixtures retained the full 512x512 scan, no crop, scan bin 1, explicit detector sum bin 192x192 -> 48x48, and uint16 resident data. Selected diffraction hashes remained 255b94c5a4b37122 and cc1b9e849138c351. Frozen/candidate/frozen BF, ABF, ADF, CoM row/column, DPC row/column, and iDPC exports were byte-identical. Peak process footprint was about 1.43 GB, swap delta was zero, system memory remained 77% free after the campaign, and macOS reported no thermal or performance warning.

AGX sampling on candidate Fixture B recorded 100% device-utilization p50/p95/max, with 71.8% of samples at or above 90%. The remaining approximately 1.62-second Metal interval is therefore the next optimization target; this commit does not claim the requested one-second wall target.

Verification before commit:

  • QuantEM.GPU Swift suite: 60 executed, 4 opt-in real-QH5 skips, 0 failures.

  • Real-QH5 CPU/Metal focused suite: 4/4 passed twice.

  • Physical Air A/B/A: 42 source loads plus six full product exports.

  • Rejected separately: aligned 32/64-bit copies, mask-word loads, concurrent mapping, disabled read-ahead, and unroll depth 8.

Adoption boundary: Live4DSTEM should consume this as a new pin only after its current aac92d42 regression completes. Do not rewrite the frozen handoff or enable benchmark-gated paths implicitly.