Skip to content

fix cuda 13.3 errors#6443

Merged
larshg merged 2 commits into
PointCloudLibrary:masterfrom
jmackay2:cuda_13_3
Jun 2, 2026
Merged

fix cuda 13.3 errors#6443
larshg merged 2 commits into
PointCloudLibrary:masterfrom
jmackay2:cuda_13_3

Conversation

@jmackay2
Copy link
Copy Markdown
Contributor

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.

@mvieth
Copy link
Copy Markdown
Member

mvieth commented May 30, 2026

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?

@jmackay2
Copy link
Copy Markdown
Contributor Author

jmackay2 commented Jun 2, 2026

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.

@mvieth mvieth added module: cuda changelog: fix Meta-information for changelog generation labels Jun 2, 2026
Copy link
Copy Markdown
Member

@mvieth mvieth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great, thank you!

@larshg larshg merged commit 5f77c27 into PointCloudLibrary:master Jun 2, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog: fix Meta-information for changelog generation module: cuda

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants