cuda/gpu报错,会提示类似如下错误:
error C2059: 语法错误:“volatile”
error C2912: 显式专用化
error C2065: “LOAD_CS”: 未声明的标识符
”不是函数模板的专用化
完整报错log部分截取如下:
Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(291): error C2059: 语法错误:“volatile”
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(291): error C2912: 显式专用化;“ulonglong2 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CA,const ulonglong2*>(const ulonglong2 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(291): error C2912: 显式专用化;“ushort4 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CA,const ushort4*>(const ushort4 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(291): error C2912: 显式专用化;“uint2 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CA,const uint2*>(const uint2 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(291): error C2912: 显式专用化;“unsigned __int64 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CA,const unsigned __int64*>(const unsigned __int64 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(291): error C2912: 显式专用化;“unsigned int cub::CUB_200802_SM_890::ThreadLoad<LOAD_CA,const unsigned int*>(const unsigned int *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(291): error C2912: 显式专用化;“unsigned short cub::CUB_200802_SM_890::ThreadLoad<LOAD_CA,const unsigned short*>(const unsigned short *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(291): error C2912: 显式专用化;“unsigned char cub::CUB_200802_SM_890::ThreadLoad<LOAD_CA,const unsigned char*>(const unsigned char *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2065: “LOAD_CG”: 未声明的标识符
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2912: 显式专用化;“uint4 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CG,const uint4*>(const uint4 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2059: 语法错误:“volatile”
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2912: 显式专用化;“ulonglong2 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CG,const ulonglong2*>(const ulonglong2 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2912: 显式专用化;“ushort4 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CG,const ushort4*>(const ushort4 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2912: 显式专用化;“uint2 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CG,const uint2*>(const uint2 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2912: 显式专用化;“unsigned __int64 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CG,const unsigned __int64*>(const unsigned __int64 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2912: 显式专用化;“unsigned int cub::CUB_200802_SM_890::ThreadLoad<LOAD_CG,const unsigned int*>(const unsigned int *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2912: 显式专用化;“unsigned short cub::CUB_200802_SM_890::ThreadLoad<LOAD_CG,const unsigned short*>(const unsigned short *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(292): error C2912: 显式专用化;“unsigned char cub::CUB_200802_SM_890::ThreadLoad<LOAD_CG,const unsigned char*>(const unsigned char *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(293): error C2065: “LOAD_CS”: 未声明的标识符
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(293): error C2912: 显式专用化;“uint4 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CS,const uint4*>(const uint4 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(293): error C2059: 语法错误:“volatile”
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(293): error C2912: 显式专用化;“ulonglong2 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CS,const ulonglong2*>(const ulonglong2 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(293): error C2912: 显式专用化;“ushort4 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CS,const ushort4*>(const ushort4 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(293): error C2912: 显式专用化;“uint2 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CS,const uint2*>(const uint2 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(293): error C2912: 显式专用化;“unsigned __int64 cub::CUB_200802_SM_890::ThreadLoad<LOAD_CS,const unsigned __int64*>(const unsigned __int64 *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(293): error C2912: 显式专用化;“unsigned int cub::CUB_200802_SM_890::ThreadLoad<LOAD_CS,const unsigned int*>(const unsigned int *)”不是函数模板的专用化
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cub/thread/thread_load.cuh(293): fatal error C1003: 错误计数超过 100;正在停止编译
使用原因为我编译c++推理脚本,使用的是tensorrt10,换到另一台电脑上发现运行报错。两台电脑都是win11。
因为代码在上一台机器可以运行,那肯定就不是代码问题,而环境配置也都修改完毕,相关库也没有缺失,所以怀疑可能是cuda版本问题,对比发现原cuda版本为12.4,新电脑为12.9
查看cuda版本可以运行
nvcc --version
# 或者
nvcc -V

卸载cuda12.9,删除文件夹:C:\Program Files\NVIDIA GPU Computing Toolkit
然后重装cuda12.4,再配置cudnn,重新配置tensorrt10
此时再运行程序,完美解决!

845

被折叠的 条评论
为什么被折叠?



