Skip to content

Merge upstream develop to clear the PR #186 conflict - #2

Open
jeffdaily wants to merge 3 commits into
moat-portfrom
moat-fix-186
Open

Merge upstream develop to clear the PR #186 conflict#2
jeffdaily wants to merge 3 commits into
moat-portfrom
moat-fix-186

Conversation

@jeffdaily

Copy link
Copy Markdown
Collaborator

Clears the merge conflict GitHub reported on upstream PR alicevision#186. No maintainer request in this round; nothing was asked for and nothing else changed.

Upstream commit 3d05ad0 ("Include Thrust tuple and zip iterator headers", merged to develop as 36d704d on 2026-08-07) added #include <thrust/iterator/zip_iterator.h> and #include <thrust/tuple.h> to src/popsift/s_filtergrid.cu, because CUDA 13.3 stopped pulling them in transitively. Our a0b95cc had reworked the same include block to route through common/thrust_setup.h. Both sides edited overlapping lines, so the PR went CONFLICTING.

src/popsift/s_filtergrid.cu was the only conflict; the rest of b1c8199..36d704d merges clean because that range touches no other file. Git auto-merged zip_iterator.h; the textual conflict was the trailing tuple.h / version.h pair. The resolution keeps our include-block shape and adds upstream's two headers in their sorted positions. common/thrust_setup.h includes only <thrust/execution_policy.h> and <thrust/version.h>, so neither new header duplicates it, and both are used by this translation unit alone, so they belong here rather than in the shared header. rocThrust ships both.

Net delta against the published tip d10126b5dab3 is therefore src/popsift/s_filtergrid.cu, +2/-1 -- byte-identical to upstream's own text -- plus upstream's end-of-file blank-line removal that came in with the merge.

Upstream reply

Merged develop to clear the conflict on src/popsift/s_filtergrid.cu. The overlap was your CUDA 13.3 include fix in alicevision#188 landing on the same include block this branch had reworked to route through common/thrust_setup.h. Kept both: your two headers in their sorted positions, our shared-header include. thrust_setup.h only pulls in execution_policy.h and version.h, so nothing is duplicated.

Rebuilt and re-ran the correctness checks after the merge. The Oxford boat feature and descriptor counts are unchanged on every image, and the CUDA build is still clean with nvcc 12.8 (sm_86, 0 errors, 0 warnings).

Review notes (not published upstream)

Re-tested at 758d5e77faf0cc64b86b785d9b0981f324b2c1ad on three platforms, all PASS with byte-identical Oxford boat counts against each platform's own prior figures:

Platform Result img1..img6 feat/desc
linux-gfx90a (wave64) PASS matches prior, incl. the known img2 7945/9451 wave64 boundary case
linux-gfx1100 (wave32) PASS 8351/9874, 7946/9452, 6158/7280, 4802/5799, 4618/5476, 3855/4618
windows-gfx1151 (wave32) PASS identical to gfx1100; sorted-output md5 identical to this host's own d10126b recording

linux-gfx942 remains non-viable for reasons unrelated to this round (no texture/image API; the same failure exists at the published tip). The wave64 gate is carried by gfx90a, wave32 by gfx1100, windows by gfx1151.

The changed translation unit's device path was exercised directly, not just linked: --filter-max-extrema 2000 --filter-grid 4 runs a stable 2008 selected features across repeats on both gfx90a and gfx1151, no NaN, exit 0.

CUDA no-regression gate re-run at this branch head rather than reused from the earlier tip, since this round's only content change is the CUDA include fix itself: nvcc 12.8.93, sm_86, clean from scratch, 29 objects including s_filtergrid.cu.o, 0 errors, 0 warnings. That exercises nvcc 12.8, not the CUDA 13.3 floor that originally broke; the text is upstream's own, unmodified.

jargon.py --port popsift shows its one long-standing hit in 05e698ec8, an ancestor of the published tip and live in alicevision#186 since it opened -- unchanged by this round.

BillyONeal and others added 3 commits July 20, 2026 17:16
CUDA 13.3 no longer exposes these declarations transitively. Include the headers used by s_filtergrid.cu so thrust::tuple, thrust::make_tuple, and thrust::make_zip_iterator remain available.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Merge pull request alicevision#188 from BillyONeal/fix/cuda-13.3-thrust-includes
Upstream added <thrust/iterator/zip_iterator.h> and <thrust/tuple.h> to src/popsift/s_filtergrid.cu because CUDA 13.3 stopped pulling those headers in transitively. This branch had already reworked the same include block, replacing <thrust/execution_policy.h> and <thrust/version.h> with common/thrust_setup.h, which centralizes the stream-bound Thrust execution policy that is spelled differently on each platform. That is the only file that conflicted.

Resolved as the union of both intents: the include of common/thrust_setup.h and the surrounding block shape stay as they are here, and both new upstream headers are added in their sorted positions. They are specific to this translation unit, so they belong here rather than in the shared header. rocThrust provides both, so the AMD build is unaffected.

This work was done with the assistance of an AI coding agent.

Test Plan:

```
cmake -S . -B build-hip -DUSE_HIP=ON -DCMAKE_HIP_ARCHITECTURES=gfx90a \
  -DCMAKE_HIP_COMPILER=$ROCM_PATH/lib/llvm/bin/clang++ -DCMAKE_PREFIX_PATH=$ROCM_PATH \
  -DCMAKE_BUILD_TYPE=Release -DPopSift_BUILD_EXAMPLES=ON -DBUILD_SHARED_LIBS=ON \
  -DPopSift_USE_TEST_CMD=ON -DPopSift_TESTFILE_PATH=<path to the Oxford datasets>
cmake --build build-hip -j
```
@jeffdaily

Copy link
Copy Markdown
Collaborator Author

To approve this fix round, leave a comment containing this line by itself:

/moat approve

To send it back to the porter instead:

/moat changes-requested

Approving covers the commits on this branch and the section under '## Upstream reply' in the body, which is posted verbatim as a comment on the upstream pull request after the merge, behind a standing line disclosing that it was drafted by an AI assistant. utils/upstream.py --merge-fix --apply then fast-forwards the open upstream PR's branch to exactly the approved tip. Anything pushed afterwards, or any edit to the body, voids the approval and needs a fresh one.

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.

3 participants