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

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

10 人参与  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://m.zhangshiyu.com/post/50293.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

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

最新文章

  • 苔藓爬满旧日诺言全书+后续+结局顾砚廷慕晚夏免费苔藓爬满旧日诺言全书+后续+结局顾砚廷慕晚夏全书全
  • [我掉蛇女马甲后,点天灯假死丈夫悔疯了]免费试读_婆婆丁若菱蛇女精彩节选推荐
  • 他日若是同淋雪结局+番外(夏尔若林闻舟)他日若是同淋雪结局+番外结局_夏尔若林闻舟列表_笔趣阁(他日若是同淋雪结局+番外)
  • 他心非石反转剧情试读片段_安茗宝宝心掏后续更新+番外
  • 许星森纪冰雪(日暮青山绿渐隐许星森纪冰雪结局+番外)_(许星森纪冰雪)列表_笔趣阁(日暮青山绿渐隐许星森纪冰雪结局+番外)
  • 全文潮痕蚀月光(池清禾***宸)列表_全文潮痕蚀月光
  • 「江月随人处处圆」小说无删减版在线免费阅读_[陆晨小姐孟苒]精彩章节免费试读
  • 阮雾梨闻砚辞阮见微结局+番外全书+后续+结局(闻砚辞阮雾梨)列表_阮雾梨闻砚辞阮见微结局+番外(闻砚辞阮雾梨)阮雾梨闻砚辞阮见微结局+番外全书+后续+结局在线
  • 潮痕蚀月光结局+番外池清禾***宸(潮痕蚀月光结局+番外)全书免费池清禾***宸_潮痕蚀月光结局+番外池清禾***宸列表_笔趣阁(池清禾***宸)
  • 苔藓爬满旧日诺言一口气读完全书+后续全书+后续+结局(慕晚夏顾砚廷)列表_苔藓爬满旧日诺言一口气读完全书+后续(慕晚夏顾砚廷)苔藓爬满旧日诺言一口气读完全书+后续全书+后续+结局在线
  • 「孕弟」反转剧情碎片化试读_[耀祖弟弟子宫]小说精彩节选试读
  • 旧梦随风去结局+番外(姜予宁沈昭寒)列表_旧梦随风去结局+番外(姜予宁沈昭寒)全书+后续+结局在线

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

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