VoxelGrid on GPU
It would be nice to have a voxel grid filter that runs on the GPU, and is thus faster than the existing pcl::VoxelGrid (which runs on the CPU).
The new GPU voxel grid should have the same filtering behaviour as pcl::VoxelGrid, but does not have to implement filter_field_name_ or save_leaf_layout_ for now.
It could maybe make use of pcl::gpu::Octree, or stay closer to the implementation of pcl::VoxelGrid and use the sorting functions from thrust.
Trying work on this.I noticed that PCL includes both a gpu directory and a cuda directory. Should the new GPU VoxelGrid be implemented in the gpu directory or the cuda directory? I suspect that the gpu module is designed to support a broader range of GPUs (not just NVIDIA’s). Is this the case? I can't find any docs explaining this.
@kai-waang Hi, cool that you are having a try at this! Regarding gpu vs cuda directory: No, so far there has not been any attempt to utilize non-NVIDIA GPUs or to use something else than CUDA for GPU-computing. I cannot really explain why there is a gpu directory and a cuda directory, these have been created long before I joined the PCL project. I think one difference is that the gpu directory contains the pcl::gpu::Octree and many other classes in the gpu directory use that. So if you are planning to also use the gpu-based octree in your GPU VoxelGrid implementation (this was only a very rough idea from me, not sure if this really works!), then I would put it into the gpu directory, otherwise into the cuda directory.
@kai-waang The cuda directory does have cuda filter code, but most functionality has been removed and marked deprecated. Most of the cuda code seems to be in the gpu module these days. The two modules should probably get merged.
@jmackay2 @mvieth Thanks a lot! It seems that in this commit, current gpu folder had been created for " @pcl::gpu@ to be used after a sudo make install of PCL".