Skip to content

Use dynamic scheduling in ISS keypoint OpenMP loops - #6474

Closed
yurekami wants to merge 2 commits into
PointCloudLibrary:masterfrom
yurekami:fix-5785-iss-dynamic-schedule
Closed

Use dynamic scheduling in ISS keypoint OpenMP loops#6474
yurekami wants to merge 2 commits into
PointCloudLibrary:masterfrom
yurekami:fix-5785-iss-dynamic-schedule

Conversation

@yurekami

@yurekami yurekami commented Sep 2, 2026

Copy link
Copy Markdown

Fixes #5785

Summary

  • switch the ISS boundary-estimation OpenMP loops to dynamic scheduling where neighbor-search cost varies by point
  • extend the ISS regression to validate the keypoint set rather than thread-dependent ordering
  • repeat the 2-thread path to catch order-sensitive flakes

Testing

  • CMake configure under Visual Studio 2022 Build Tools reached OpenMP detection in build-iss
  • full keypoints build/run is still blocked locally by a missing Eigen3 package config

Issue PointCloudLibrary#5785 asks for contained checks of OpenMP loops whose per-iteration cost varies with neighbor searches. ISSKeypoint3D still used the default schedule in several such loops, so this change switches those loops to dynamic scheduling and adds a 2-thread regression on the existing ISS boundary-estimation path.

Constraint: Keep the PointCloudLibrary#5785 work scoped to one candidate implementation file instead of a repo-wide schedule sweep
Rejected: Touching already-dynamic OMP implementations such as normal_3d_omp and shot_omp | no remaining issue value there
Confidence: medium
Scope-risk: narrow
Directive: Revisit the fixed dynamic chunk only with benchmark data; this patch intentionally avoids adding new public tuning knobs
Tested: CMake configure under Visual Studio 2022 Build Tools reached OpenMP detection in build-iss
Not-tested: keypoints_iss_3d build/run blocked at configure time by missing Eigen3 package config on this machine
Signed-off-by: yurekami <yurekami@users.noreply.github.com>
The dynamic-scheduling change for issue PointCloudLibrary#5785 shifts iteration ordering, so the regression should validate the keypoint set rather than a thread-dependent output order. This follow-up canonicalizes the expected keypoints and repeats the 2-thread path enough times to catch flaky ordering-sensitive failures.

Constraint: Keep the existing issue PointCloudLibrary#5785 implementation focused on ISS instead of broadening into more scheduler tuning work
Rejected: Restore the previous order-sensitive assertions | they can fail even when the dynamic-scheduling fix is correct
Confidence: medium
Scope-risk: narrow
Directive: Parallel ISS tests should compare canonicalized keypoint sets unless the API explicitly guarantees output ordering
Tested: git diff --check
Not-tested: Native build/run of test_keypoints_iss_3d; local machine is still missing Eigen3 package config for the PCL build
Signed-off-by: yurekami <yurekami@users.noreply.github.com>
@yurekami yurekami closed this Sep 2, 2026
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.

Check which OpenMP for-loops could benefit from dynamic schedule

1 participant