[Small Feature] Parallel Outlier Removal#4659
Merged
lrineau merged 7 commits intoCGAL:masterfrom May 22, 2020
Merged
Conversation
Member
|
Typo: a threshold on the of average |
6 tasks
Contributor
|
Successfully tested in https://cgal.geometryfactory.com/CGAL/testsuite/results-5.1-Ic-152.shtml |
Member
|
Still TODO: modify the |
b85e444 to
700631d
Compare
Contributor
Author
|
(Please don't merge yet, I erased something by mistake, I still have to fix it.) |
Contributor
Author
|
Ok we're good now, Sebastien fixed my mistake (@maxGimeno I see you put the Under Testing flag, if you already merged it in integration, you should do it again, otherwise there'll be a warning in the testsuite). |
maxGimeno
added a commit
to maxGimeno/cgal
that referenced
this pull request
May 19, 2020
…rs-GF [Small Feature] Parallel Outlier Removal
Contributor
|
Successfully tested in https://cgal.geometryfactory.com/CGAL/testsuite/results-5.1-Ic-156.shtml |
Member
|
@MaelRL Do you remember why you added "TODO" to this PR? |
Member
|
It was for the remark from @afabri at #4659 (comment), which was addressed. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rationale
Many algorithms in Point Set Processing are parallelized, but
CGAL::remove_outliers()is not: the main reason is that it originally filled astd::multimapstructure which is hard to parallelize.This small feature adds a
ConcurrencyTagtemplate parameter toCGAL::remove_outliers()similarly to what already exists in other PSP functions. The algorithm has also changed slightly in the sense that it does not sort points anymore: apart from that, the output partition (which point is outlier, which point is inlier) is unchanged.A parallel variant of the algorithm is added, and the sequential version is also made faster (around 1.7x faster in my experiments).
In practice:
std::multimapby astd::vectorfilled first and sorted afterwards makes the algorithm 1.3x faster than master versionstd::partition(for threshold-based version) andstd::nth_element(for the percentage-based version) makes the algorithm 1.7x faster than master versionSummary of API changes
A new template parameter
ConcurrencyTagis added toCGAL::remove_outliers(). Documentation is changed to make it clear that points are not sorted but only partitioned.License and copyright ownership
(no change)
CHANGES.md
Submission
Status