目前cuda最新的版本已经来到了13.0,今天在cuda13.0的环境下编译gpu-burn报错,查了下资料,cuCtxCreate函数升级为了最新的v4,需要传入4个参数,但是gpu-burn还没更新,所以需要修正下这个问题,我们先来看下编译报错的错误信息
g++ -O3 -Wno-unused-result -I/usr/local/cuda/include -std=c++11 -DIS_JETSON=false -c gpu_burn-drv.cpp
gpu_burn-drv.cpp: In constructor ‘GPU_Test<T>::GPU_Test(int, bool, bool, const char*)’:
gpu_burn-drv.cpp:113:31: error: too few arguments to function ‘CUresult cuCtxCreate_v4(CUctx_st**, CUctxCreateParams*, unsigned int, CUdevice)’
113 | checkError(cuCtxCreate(&d_ctx, 0, d_dev));
gpu_burn-drv.cpp:98:17: note: in definition of macro ‘checkError’
98 | _checkError(rCode, __FILE__, __LINE__, ##__VA_ARGS__)
| ^~~~~
In file included from gpu_burn-drv.cpp:65:
/usr/local/cuda/include/cuda.h:90:45: note: declared here
90 | #define cuCtxCreate cuCtxCreate_v4
| ^~~~~~~~~~~~~~
/usr/local/cuda/include/cuda.h:6275:18: note: in expansion of macro ‘cuCtxCreate’
6275 | CUresult CUDAAPI cuCtxCreate(CUcontext *pctx, CUctxCreateParams *ctxCreateParams, unsigned int flags, CUdevice dev);
| ^~~~~~~~~~~
make: *** [Makefile:45: gpu_burn-drv.o] Error 1
然后我们需要修改gpu_burn-drv.cpp文件,大概在113行
//checkError(cuCtxCreate(&d_ctx, 0, d_dev)); 注释此行
checkError(cuDevicePrimaryCtxRetain(&d_ctx, d_dev)); #添加此行最后如下图所示

然后再进行编译,发现还有报错
g++ -O3 -Wno-unused-result -I/usr/local/cuda/include -std=c++11 -DIS_JETSON=false -c gpu_burn-drv.cpp
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin::." /usr/local/cuda/bin/nvcc -I/usr/local/cuda/include -arch=compute_50 -ptx compare.cu -o compare.ptx
nvcc fatal : Unsupported gpu architecture 'compute_50'
make: *** [Makefile:48: compare.ptx] Error 1因为我使用的5090,报错的arch=compute_50明显和我的算力不一致,需要传入计算能力的参数再进行编译
make COMPUTE=120然后再进行编译就可以顺利编译了。
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/1143
评论列表