当前位置:首页 » 《随便一记》 » 正文

【已解决】CUDA Error:no kernel image is available for execution on the device:No such file or directory

6 人参与  2022年12月24日 10:57  分类 : 《随便一记》  评论

点击全文阅读


目录

1 问题背景2 问题探索3 问题解决

1 问题背景

环境:

Ubuntu20.04CUDA 11.4显卡:Nividia GeForce MX130

现象:在一台旧机器上通过Makefile编译Darknet时报错

在这里插入图片描述

2 问题探索

查看Makefile中与显卡相关的配置

显卡型号及其架构指令

# Tesla V100# ARCH= -gencode arch=compute_70,code=[sm_70,compute_70]# GeForce RTX 2080 Ti, RTX 2080, RTX 2070, Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Tesla T4, XNOR Tensor Cores# ARCH= -gencode arch=compute_75,code=[sm_75,compute_75]# Jetson XAVIER# ARCH= -gencode arch=compute_72,code=[sm_72,compute_72]# GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4ARCH= -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61# GP100/Tesla P100 - DGX-1# ARCH= -gencode arch=compute_60,code=sm_60# For Jetson TX1, Tegra X1, DRIVE CX, DRIVE PX - uncomment:# ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]# For Jetson Tx2 or Drive-PX2 uncomment:# ARCH= -gencode arch=compute_62,code=[sm_62,compute_62]

CUDA链接路径

ifeq ($(GPU), 1)COMMON+= -DGPU -I/usr/local/cuda-11.4/include/CFLAGS+= -DGPUifeq ($(OS),Darwin) #MACLDFLAGS+= -L/usr/local/cuda-11.4/lib -lcuda -lcudart -lcublas -lcurandelseLDFLAGS+= -L/usr/local/cuda-11.4/lib64 -lcuda -lcudart -lcublas -lcurandendifendififeq ($(CUDNN), 1)COMMON+= -DCUDNNifeq ($(OS),Darwin) #MACCFLAGS+= -DCUDNN -I/usr/local/cuda-11.4/includeLDFLAGS+= -L/usr/local/cuda-11.4/lib -lcudnnelseCFLAGS+= -DCUDNN -I/usr/local/cudnn/includeLDFLAGS+= -L/usr/local/cudnn/lib64 -lcudnnendifendif

首先需要确定cudnn相关文件都已经补充到CUDA中,这部分请参考最新Windows/Ubuntu双系统CUDA与Pytorch保姆级图文安装教程(速查字典版),并验证当前使用的CUDA版本和这里的路径匹配

nvcc -Vnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2021 NVIDIA CorporationBuilt on Wed_Jun__2_19:15:15_PDT_2021Cuda compilation tools, release 11.4, V11.4.48Build cuda_11.4.r11.4/compiler.30033411_0

接着检查显卡和架构是否匹配,先给出以下说明

gencode:生成码,允许生成更多的PTX文件,并且对不同的架构可以重复许多次ptx:并行线程执行(Parallel Thread eXecution, PTX)代码是编译后的GPU代码的一种中间形式,它可以再次编译为原生的GPU微码arch:架构标志位,前端编译目标,指明了CUDA文件编译产生的结果所依赖的NVIDIA GPU架构名称compute_XX:指PTX版本sm_XX:指cubin版本code:指定后端编译目标,可以是cubinPTX或两者均可

上面xx中填的数字,例如compute_61中的61是这种显卡架构的算力,可以在官网查询https://developer.nvidia.com/cuda-gpus,如下所示,这里有绝大多数的算力表。

在这里插入图片描述

由于我这台机器MX130是旧显卡,不在官方的手册中,因此需要采用下面的脚本查询,这种方法也是对所有机器通用的

from numba import cudacuda.detect()I get:Found 1 CUDA devicesid 0        b'GeForce MX130'  [SUPPORTED]            compute capability: 5.0            pci device id: 0            pci bus id: 1Summary:    1/1 devices are supported

可以看出,这里的算力和原Makefile中设置的算力不同,因此本质上导致这个问题的原因是CUDA编译时的架构指令和显卡算力不匹配

3 问题解决

Makefile中注释掉错误的架构设置,添加一行符合显卡的配置

# MX130ARCH= -gencode arch=compute_50,code=[sm_50,compute_50]

随后即可编译通过。


? 更多精彩专栏

《ROS从入门到精通》《机器人原理与技术》《机器学习强基计划》《计算机视觉教程》…
?源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系?

点击全文阅读


本文链接:http://zhangshiyu.com/post/50293.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1