解决装完mamba运行时报错RuntimeError:CUDA error:no kernel image is available for execution on the device

1.前言

最近继承了实验室师兄的电脑(GTX 1070),在装完mamba运行代码时报错(之前在实验室新机子上安装成功)
报错内容:RuntimeError:CUDA error:no kernel image is available for execution on the device
CUDA kernel errors might be asynchronously reported at some other API call, so ther stacktrace below might be incorrect.
由于之前在新机子上安装成功,因此安装步骤并没有出错,但遇到了这个奇怪的报错。
在这里插入图片描述

2.尝试解决

在网上查阅一些资料后,发现很多文章都说是torch和cuda版本不对应。但我用装好的torch和cuda跑了其他不用mamba的网路,是能运行的,且自查过torch和cuda版本是对应的。自查代码如下:

import torch
print(torch.__version__)
# 显示torch和cuda版本
print(torch.cuda.is_available())
# 显示True

3.解决方案

在多次尝试装了不同的torch(2.及以上版本)和cuda后,并没有解决该问题。由于现在可以参考的资料很少,本人为解决该问题查阅了好几天的资料,最终找到了以下两个方法。

3.1 方法一(不推荐)

此方法能让电脑运行起来mamba,但不知道是什么原因,运行精度特别低。推荐只在本地验证代码是否能运行,再用服务器跑的同学装。
想到之前在云服务器上也装过mamba,查看了当时装的版本为torch1.13.1cuda117(python版本为3.7),猜测可能是1070不兼容过高版本的torch。因此,重装了torch1.13.1cuda117,如下图所示:
在这里插入图片描述再装对应版本的causal-conv1dmamba-ssm的whl后,运行成功!

3.2 方法二

在使用方法一装完mamba后,欣喜万分,但运行代码后,又给了我当头一棒。miou和一些其他的模型评价指标巨低,这明显和我想在本地跑代码的想法有出入。运行结果如下图所示:
在这里插入图片描述
因此,我再次踏上了搜寻之旅,并把目光放在了github上。功夫不负有心人,在一段时间的搜索后,我看到了这篇文章: 宝藏文章
在这里插入图片描述这篇文章中说他的显卡是GTX1070,计算能力为6.1。但causal-conv1d和mamba-ssm暂时不支持算力为6.1的设备,需在原码处添加如下代码:

cc_flag.append("-gencode")
cc_flag.append("arch=compute_60,code=sm_60")

3.2.1 下载对应的包

1.下载 causak-conv1d
2.下载 mamba-ssm

3.2.2 修改对应的setup.py文件

找到两个包内的setup.py文件并分别添加代码,如下图所示:
在这里插入图片描述
添加完后保存代码,进入对应的文件夹:
1.进入causal-conv1d-main: 使用以下代码进行安装(此次安装较慢,若安装失败,重新运行该代码)

CAUSAL_CONV1D_FORCE_BUILD=TRUE pip install .

2.进入mamba-main: 使用以下代码进行安装(此次安装可能需要10mins,请耐心等待,并需确认电脑上有足够的空间)

MAMBA_FORCE_BUILD=TRUE pip install .

看到如下图片,即安装成功:
在这里插入图片描述

4.再次运行

再次运行该代码,结果正常,如下图所示^_^:
在这里插入图片描述

### 解决方案 当遇到`RuntimeError: CUDA error: no kernel image is available for execution on the device`错误时,这通常表明CUDA环境配置存在问题。具体原因可能涉及多个方面: - **CUDA与PyTorch版本兼容性**:如果使用的CUDA版本和PyTorch版本之间存在不匹配,则可能导致此问题[^1]。 - **GPU驱动程序与CUDA版本一致性**:若GPU驱动支持的最大CUDA版本低于当前安装的CUDA版本,同样会引发此类错误。例如,某情况下GPU驱动显示最大支持至11.4版本而实际安装的是11.8版本CUDA工具包[^4]。 针对上述情况,建议采取如下措施来解决问题: #### 方法一:调整软件组件版本以实现最佳适配 为了确保各部分能够协同工作,应当确认所用硬件(如GTX 1070显卡)、操作系统以及相关开发库之间的相互兼容性。可以通过官方文档查询特定型号GPU推荐搭配的CUDA版本范围,并据此选择合适的PyTorch构建版本进行安装。 #### 方法二:更新或降级必要的依赖项 依据现有系统的具体情况决定是升级还是回退某些关键组件: - 对于过期的GPU驱动,应及时访问制造商网站获取最新的稳定版并完成更新操作; - 如果已经拥有较新的CUDA工具链却遭遇兼容难题,则考虑暂时卸载高版本转而部署较低版本直至找到最适宜组合为止; #### 方法三:利用预编译资源简化设置流程 考虑到手动配置过程中可能出现的人为失误风险,在条件允许的情况下优先选用由社区维护好的集成化解决方案可以有效减少麻烦。比如参考资料中提到的方法——通过指定环境变量强制重新构建Mamba项目中的Python扩展模块,从而绕开潜在的路径冲突等问题[^3]。 ```bash export CAUSAL_CONV1D_FORCE_BUILD=TRUE pip install . export MAMBA_FORCE_BUILD=TRUE pip install . ``` 以上命令可以在本地环境中执行,帮助修正因不同源码树间差异引起的链接失败状况。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值