PointCloudLibrary / PointCloudLibrary/pcl
Check which OpenMP for-loops could benefit from dynamic schedule
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 4.7k
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 6
Description
I guess other OMP implementations could use this setting as well, since most of those also require some search for neighbors, which can vary a lot and hence vary the computation between each iteration?
Originally posted by @larshg in https://github.com/PointCloudLibrary/pcl/issues/5775#issuecomment-1664141425
Candidates are for-loops where the loop iterations do not take the same time, e.g. when a neighbourhood search is done for each point in a cloud (especially radius search).
Files that contain parallelized for-loops and should be checked:
apps/3d_rec_framework/include/pcl/apps/3d_rec_framework/pipeline/impl/global_nn_recognizer_crh.hpp
apps/3d_rec_framework/include/pcl/apps/3d_rec_framework/pipeline/impl/local_recognizer.hpp
apps/3d_rec_framework/include/pcl/apps/3d_rec_framework/pipeline/impl/global_nn_recognizer_cvfh.hpp
common/src/range_image.cpp
common/src/fft/kiss_fft.c
features/include/pcl/features/impl/fpfh_omp.hpp
features/include/pcl/features/impl/shot_omp.hpp
features/include/pcl/features/impl/normal_3d_omp.hpp
features/include/pcl/features/impl/intensity_gradient.hpp
features/include/pcl/features/impl/shot_lrf_omp.hpp
features/src/range_image_border_extractor.cpp
features/src/narf.cpp
filters/include/pcl/filters/impl/convolution_3d.hpp
filters/include/pcl/filters/impl/convolution.hpp
filters/include/pcl/filters/impl/pyramid.hpp
filters/include/pcl/filters/impl/fast_bilateral_omp.hpp
filters/src/pyramid.cpp
io/include/pcl/io/impl/lzf_image_io.hpp
io/src/real_sense_2_grabber.cpp
keypoints/include/pcl/keypoints/impl/harris_6d.hpp
keypoints/include/pcl/keypoints/impl/trajkovic_3d.hpp
keypoints/include/pcl/keypoints/impl/iss_3d.hpp
keypoints/include/pcl/keypoints/impl/harris_3d.hpp
keypoints/include/pcl/keypoints/impl/harris_2d.hpp
keypoints/include/pcl/keypoints/impl/trajkovic_2d.hpp
keypoints/src/narf_keypoint.cpp
recognition/include/pcl/recognition/impl/hv/hv_go.hpp
registration/include/pcl/registration/impl/ia_fpcs.hpp
segmentation/include/pcl/segmentation/impl/approximate_progressive_morphological_filter.hpp
surface/include/pcl/surface/impl/mls.hpp
tools/fast_bilateral_filter.cpp
tools/normal_estimation.cpp
tracking/include/pcl/tracking/impl/pyramidal_klt.hpp
tracking/include/pcl/tracking/impl/kld_adaptive_particle_filter_omp.hpp
tracking/include/pcl/tracking/impl/particle_filter_omp.hpp
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the OpenMP loops in the listed files, especially the feature implementations and range-image code. Compare the work performed per iteration and identify which loops have enough variation to warrant dynamic scheduling. Done means the candidate loops have been evaluated and the resulting schedule changes are clearly recorded.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-vision, performance
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100