Skip to content

feat: sequence mode (cross-frame warm-start) + ROI/seed CLI#1

Merged
johnaoga merged 1 commit into
mainfrom
feat/gpu-sequence-refupdate
Jun 29, 2026
Merged

feat: sequence mode (cross-frame warm-start) + ROI/seed CLI#1
johnaoga merged 1 commit into
mainfrom
feat/gpu-sequence-refupdate

Conversation

@johnaoga

@johnaoga johnaoga commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

feat(engine): sequence mode (cross-frame warm-start) + ROI/seed CLI controls

Enables cuNCorr to track real high-strain DIC sequences, where the previous fixed-reference, per-frame path collapsed once cumulative displacement exceeded the coarse seed-search radius.

Sequence mode (the main change):

  • DicEngine::process_sequence / NcorrSession::process_frame_sequence / reset_sequence, plus CLI --sequence. Each grid point initialises from the previous frame's converged warp (cross-frame seed propagation); only cold points pay a coarse search. Reuses the existing GPU icgn_batch_cuda and CPU IC-GN cores unchanged. process_frame stays stateless for parity-oracle use.
  • On real coating data this holds coverage across the full 141-frame sequence (t7 frame 140: 345 -> 34,254 valid points) and matches the CppNCorr CPU reference to ~0.01 px median, while running faster than the fixed path (warm-start skips the per-frame coarse search): ~1.6 min on an A100 vs ~36 min for the 32-thread CPU pipeline.

Supporting CLI/engine controls:

  • --roi (apply the ROI mask; previously the CLI ignored it and even fed the mask in as a frame), --seed X,Y (manual CPU seed, x=col/y=row), and --seed-search N (configurable coarse-search radius; was hard-wired to 15).
  • SessionConfig gains seed_x/seed_y/seed_search (cuNCorr extensions).

Build fix:

  • dic_engine.cpp: add missing (relied on transitive include under GCC 8.5; fails on GCC >= 13).

…ontrols

Enables cuNCorr to track real high-strain DIC sequences, where the previous
fixed-reference, per-frame path collapsed once cumulative displacement exceeded
the coarse seed-search radius.

Sequence mode (the main change):
- DicEngine::process_sequence / NcorrSession::process_frame_sequence /
  reset_sequence, plus CLI --sequence. Each grid point initialises from the
  previous frame's converged warp (cross-frame seed propagation); only cold
  points pay a coarse search. Reuses the existing GPU icgn_batch_cuda and CPU
  IC-GN cores unchanged. process_frame stays stateless for parity-oracle use.
- On real coating data this holds coverage across the full 141-frame sequence
  (t7 frame 140: 345 -> 34,254 valid points) and matches the CppNCorr CPU
  reference to ~0.01 px median, while running faster than the fixed path
  (warm-start skips the per-frame coarse search): ~1.6 min on an A100 vs
  ~36 min for the 32-thread CPU pipeline.

Supporting CLI/engine controls:
- --roi (apply the ROI mask; previously the CLI ignored it and even fed the
  mask in as a frame), --seed X,Y (manual CPU seed, x=col/y=row), and
  --seed-search N (configurable coarse-search radius; was hard-wired to 15).
- SessionConfig gains seed_x/seed_y/seed_search (cuNCorr extensions).

Build fix:
- dic_engine.cpp: add missing <stdexcept> (relied on transitive include under
  GCC 8.5; fails on GCC >= 13).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@johnaoga johnaoga changed the title feat(engine): sequence mode (cross-frame warm-start) + ROI/seed CLI c… feat: sequence mode (cross-frame warm-start) + ROI/seed CLI Jun 27, 2026
@johnaoga johnaoga merged commit 1b9aaa4 into main Jun 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant