Files
Jungfraujoch/image_analysis/spot_finding
leonarski_fandClaude Opus 5.5 96388a389f CPU spot finder: the vertical window slide vectorises, output unchanged
SlideVertical took a missing row as a null pointer and read `in ? in[col] : INT32_MIN` inside the
loop. A load under a condition cannot be if-converted, so GCC 13 (-march=x86-64-v3) vectorised only
the rarely taken variant and ran the one every interior row takes - both rows present - as a scalar
loop with branches. A missing row is now a row of INT32_MIN, which the loop already counts as
nothing, so both rows are always read and the loop vectorises (AVX2, alias-versioned). Same integer
sums in the same columns, so the same strong pixels.

--no-gpu, perf (load 23-35, provisional): SlideVertical cycles -47% / instructions -71% on
myoglobin (7.20e11 -> 3.84e11 cycles), -43% / -71% on YAG, -53% / -71% on cytochrome C; the
detection pass as a whole (FlagRow + SlideVertical + DetectPass) -17%, -16%, -26%. The pass is now
bound by the first read of each image row and its ring bins (FlagRow, IPC ~0.4), so total cycles
move by only 1-3%. p.hkl and MTZ data identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PXc1zD1yxHqaR1DGdCTHL4
2026-10-15 17:42:35 +02:00
..
2026-09-02 21:17:31 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-09-02 21:17:31 +02:00
2026-09-02 21:17:31 +02:00
2026-09-29 15:57:32 +02:00
2026-09-15 17:09:31 +02:00
2026-09-29 15:57:32 +02:00
2026-09-29 15:57:32 +02:00
2026-09-02 21:17:31 +02:00
2026-09-02 21:17:31 +02:00