PointCloudLibrary / PointCloudLibrary/pcl

Check which OpenMP for-loops could benefit from dynamic schedule

Open
#5,785 12 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

good first issue help wanted
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.