首页 > 解决方案 > 升级到 CUDA 11 时 cudaError/CUresult 不兼容

问题描述

我正在尝试将项目从 VS2013/CUDA 8.0 升级到 VS2019/CUDA11.1。

在 VS2013/CUDA8 中一切正常,但是当我尝试使用 VS2019/CUDA11 构建项目时,我收到关于 cuda_helper 的以下兼容性错误:

1>C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1\common\inc\helper_cuda.h(571): error : argument of type "CUresult" is incompatible with parameter of type "cudaError_t"
1>          detected during instantiation of "void check(T, const char *, const char *, int) [with T=CUresult]"
1>C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1\common\inc\helper_cuda_drvapi.h(123): here

CUDA 11 中的哪些变化会导致此错误?如何找到并纠正项目中的错误?

标签: c++compiler-errorscuda

解决方案


我能够解决这个问题导入<helper_cuda.h>而不是<helper_cuda_drvapi.h>

实际上,CUDA 驱动程序返回一个 CUresult,而 CUDA 运行时返回一个 cudaError_t。它可能会从一个 CUDA 版本更改为另一个版本。

否则,正如 talonmies 所提到的,在我的项目中包含一些 CUDA 样本可能不是一个好主意。


推荐阅读