CUDA 13.0 中 CCCL 2.x 到 CCCL 3.0 迁移介绍
来自于页面:CCCL 2.x ‐ CCCL 3.0 migration guide — CUDA Core Compute Libraries
CCCL是NVIDIA推出的CUDA C++开发者核心工具库,整合了Thrust、CUB、libcudacxx等多个高性能库,旨在为CUDA环境下的C++开发提供统一、高效的工具链
核心组件:
-
libcu++:CUDA环境下的C++标准库实现,支持主机与设备端无缝运行,提供高级同步原语、精细缓存控制、原子操作优化等功能,简化跨设备代码开发
-
CUB:底层并行算法库,针对GPU架构优化,提供块级(Block-wide)规约、束级(Warp-wide)扫描等底层原语,适合极致性能的自定义内核开发
-
Thrust:高层并行算法库,类似C++ STL,提供简洁的接口(如
transform_reduce
、sort
),支持多后端(CUDA、TBB、OpenMP),适合快速原型开发与跨平台部署
CUDA升级到13.0后,CCCL也会升级到3.0,使用的代码需要进行迁移,遇到的主要修改有:
- 头文件包含修改
CUDA 13.0 之前 | CUDA 13.0 之后 |
${CTK_ROOT}/include/cuda/ | ${CTK_ROOT}/include/cccl/cuda/ |
${CTK_ROOT}/include/cub/ | ${CTK_ROOT}/include/cccl/cub/ |
${CTK_ROOT}/include/thrust/ | ${CTK_ROOT}/include/cccl/thrust/ |
官方说明不要修改代码中头文件路径增加<cccl/>,而是使用增加编译参数的方式 -I${CTK_ROOT}/include/cccl
- 调用接口修改
CUDA 13.0 之前 | CUDA 13.0 之后 |
cub::Max | cuda::maximum |
cub::max | cuda::std::max |
cub::Min | cuda::minimum |
cub::min | cuda::std::min |
cub::Sum | cuda::std::plus |
cuda::maximum 可以在文件 include/cccl/cuda/__functional/maximum.h 查看
cuda::minimum 可以在文件 include/cccl/cuda/__functional/minimum.h 查看
cuda::std::max 在文件 include/cccl/cuda/std/detail/libcxx/include/algorithm 查看
cuda::std::min 在文件 include/cccl/cuda/std/detail/libcxx/include/algorithm 查看
cuda::std::plus 在文件 include/cccl/cuda/std/__functional/operations.h 查看
如果升级到CUDA 13.0后使用CCCL还有其他问题,可以在CCCL 2.x ‐ CCCL 3.0 migration guide — CUDA Core Compute Libraries查找对应的调用是否要替换或移除