-
-
Notifications
You must be signed in to change notification settings - Fork 4.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[registration] Add OMP based Multi-threading to NDT #4277
base: master
Are you sure you want to change the base?
Conversation
Tagging @shrijitsingh99 for relevance with GSoC |
Looking into this seems as if this will be similar to how integration with filters is going to take place. The only point which would need to be taken care of is the Is the implementation set to replace the original CPU implementation too? |
Should we create a separate issue to note that the non-special NDT code needs update (till the level of NDT_OMP implementation)? If (or rather when) the executors get integrated, a large update would not be needed. |
Is an update to non-special needed? Is there any reason we are not just removing original NDT and renaming ndt_omp to ndt besides maybe potential bugs? |
Some concerns about replacing the original ndt with the new one are:
|
Regarding the last point: OMP and normal implementations started diverging and it was decided to bring both under one umbrella and to use We'll be seeing some larger unification of API across PCL 🤞 Hopefully, all goes well If possible something along the lines of PRs started by @shrijitsingh99 would be better 😄 |
OK, the other concerns don't matter IMO. I think we can use less memory consuming routines when num_threads = 1. Should we append the new additions to this PR #4180 (or open another PR)? |
Please make the modifications here since we've merged 1.11.1 and next target release is API/ABI breaking 1.12 |
OK, thanks! I'll push updates here. |
8b6a5aa
to
ff9adcf
Compare
I pushed multi-threaded NDT code. In addition to #4277 (comment), I made two modifications:
I'm testing the correctness of the updated NDT on KITTI. I'll report the test result once it's finished. |
8eeab76
to
3e261cf
Compare
Try not to force-push. Reviewers lose all context |
Oh, sorry, I'll avoid force pushing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You mentioned an unrolled loop, but I can't find it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please verify that the deprecated functions aren't used anywhere inside PCL (except any code explicitly testing them)
All the deprecated ones are all protected members, and they are not used in anywhere other than NDT. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Minor comment only
Can I do rebase, squash, and force-push to resolve the conflict? |
106ce87
to
18f2f2c
Compare
There's a conflict due to the merge of formatting in registration module |
18f2f2c
to
1586d99
Compare
I resolved the conflict. |
GCC 16.04 is failing because the it doesn't accept the fourth lambda |
I remove the lambda in INSTANTIATE_TEST_SUITE_P |
LGTM |
Use value-parameterized tests for NDT
35c9a78
to
509c5be
Compare
I resolved conflicts. |
Should this be merged 🚀 ? |
Needs 1 more review. Currently, requested from mvieth, but please feel free to review instead Lars :) |
This PR adds a multi-threaded and SSE-optimized NDT (for reference: #4180 #4135). Taking a diff with ndt.(h|hpp) would be helpful to see the added/updated codes.
[Added] NormalDistributionsTransformOMP
Benchmark result on KITTI00 (ApproxVoxelGrid: 0.25m, voxel resolution: 2.0m, transformation epsilon 1e-3):
(Average processing time per scan and relative trajectory errors are reported)
It's not a very comprehensive comparison, but we can see the trend of processing speed and accuracy.
Note: