You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Upgrading to CUDA 13.3 included an update of thrust. This resulted in the following build failures in the cuda module:
pcl/cuda/common/include/pcl/cuda/point_cloud.h(287)
namespace "thrust" has no member "tuple"
pcl/cuda/common/include/pcl/cuda/point_cloud.h(301)
namespace "thrust" has no member "make_tuple"
pcl/cuda/features/include/pcl/cuda/features/normal_3d_kernels.h(172)
namespace "thrust" has no member "get"
...
This fixes the issue by switching to use cuda::std instead of thrust when there is a newer version of thrust.
Testing
This was tested by building on Ubuntu 24.04 with both CUDA 12.9 and 13.3.
Thank you for the fix. However, I have to say I am a bit hesitant to put these three function into the thrust namespace. pcl/cuda/thrust.h is included by pcl/cuda/point_cloud.h, which is in turn included by several other files. Im am worried that there might be problems if a user project uses PCL and some other library which also uses thrust. I guess the less risky fix would be to replace thrust::tuple, thrust::make_tuple, and thrust::get where they are used within PCL, with a preprocessor check. Or alternatively, something like this:
#if THRUST_MAJOR_VERSION >= 3
#include <cuda/std/tuple>
namespace pcl_thrust {
using ::cuda::std::tuple;
using ::cuda::std::make_tuple;
using ::cuda::std::get;
}
#else
namespace pcl_thrust {
using ::thrust::tuple;
using ::thrust::make_tuple;
using ::thrust::get;
}
#endif
And change thrust::tuple to pcl_thrust::tuple etc. within PCL. What do you think?
Thanks @mvieth for the comments. I went through the updated thrust files today and realized that everything was actually handled properly in the thrust/tuple.h file. Including this file fixes the issue and works across different versions of thrust properly. This seems like the right way to fix the issue. I think this fixes the issues you pointed out with the previous approach I took.
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
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.
Upgrading to CUDA 13.3 included an update of thrust. This resulted in the following build failures in the cuda module:
This fixes the issue by switching to use
cuda::stdinstead ofthrustwhen there is a newer version of thrust.Testing
This was tested by building on Ubuntu 24.04 with both CUDA 12.9 and 13.3.