RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-jh50bw2

RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-jh50bw28/aten/src/THC/THCBlas.cu:259

在搜索引擎查找N次,包括询问N次GPT导师都没找到能解决这个问题的方案,都在说cuda和pytorch的对应,但是我花大量的时间对cuda和pytorch对应好了之后,仍然出现了这个问题。怒肝5天后终于找到了终极解决方案,供大家参考。

跑某个对比实验需要用到pytorch1.1.0以及cuda10.0,通过docker pull到本地(显卡为RTX3090)一个cuda10.0的环境,然后使用torch.version.cuda()显示cuda10.0.130检验torch安装时默认的cuda版本,确保torch.version.cuda()与nvcc -V显示的版本匹配。重新配置好cuda、anaconda、python、pytorch后,运行代码,发现报错:

RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-jh50bw28/aten/src/THC/THCBlas.cu:259

或者是报错:

RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-jh50bw28/aten/src/THC/THCBlas.cu:450

发现torch.cuda.is_available()等等尝试均正常。即init初始化函数不会报错,但是运行到torch.bmm、torch.conv2d等实际操作会报错。

通过多次尝试发现,使用torch.conv2d()报错,但是torch.nn.conv2d()不报错,说明与之相联系的cuda有问题,cudnn没有问题可以正常工作。

换一台机器(同为RTX3090)发现仍然出现这个问题。

通过多次实验,进一步验证了自己的想法。

结论:高版本的RTX3090不能支持低版本的cuda10.0
这是我的Driver Version:512.36
RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-jh50bw2_第1张图片
查阅下表可知,
RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-jh50bw2_第2张图片RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-jh50bw2_第3张图片
理论上Driver Version(高版本的显卡)只要大于410.48即可以兼容低版本的cuda10.0.130,但是实际上,高版本的显卡只可与相近的cuda兼容,比如:本文中使用的电脑RTX3090与cuda11.3、cuda11.6、cuda 12.0等可以有效兼容,但是cuda10.0,想都别想。

真的是巨坑啊!!!五天时间做啥不行!全花在论证它跑不出来的路上了。。。。

你可能感兴趣的:(pytorch,pytorch,python,opencv,神经网络,深度学习,cnn)