【torch报错】RuntimeError: CUDA error: no kernel image is available for execution on torch解决方案

在机器上直接用pip安装pytorch-gpu版本,很有可能出现torch的cuda toolkit和设备不兼容的问题。即,torch.cuda.is_available()显示为true,tensor也可以正常move到gpu上,但是无法进行运算,显示如下报错:

RuntimeError: CUDA error: no kernel image is available for execution on the device

Q: 如何知道自己安装的gpu版pytorch能否正常使用?
A: 参见博客:验证pytorch是否为GPU版本

解决的办法有两种:

1. 升级torch的cuda支持

由于直接使用pip安装的时候,cuda toolkit并不是默认最新的;所以,我们需要安装支持更高版本cuda tookit的pytorch。

  • 如果你在国外,或者你有proxy:

直接去torch官网,按照提示下载高版本cuda toolkit的torch (目前,截止09/06/2022,pytorch已经将支持最新cuda 11.6的torch版本,更新至1.12.1。即,torch stable==1.12.1,如下图所示)
【torch报错】RuntimeError: CUDA error: no kernel image is available for execution on torch解决方案_第1张图片

  • 如果你在国内,建议离线包whl安装;
    【torch报错】RuntimeError: CUDA error: no kernel image is available for execution on torch解决方案_第2张图片

2. 安装多cuda支持

一般而言,一台设备的显卡驱动,应该只支持一个cuda版本;但实际上,我们也可以实现一台机器上,兼容多个cuda toolkit。

具体参考笔者另一篇博客:同台设备配置多cuda环境

或者参考其他博客:

  • Multiple Version of CUDA Libraries On The Same Machine
  • How to install CUDA 9.2 on Ubuntu 18.04

当然,经过笔者试验,这种方法存在一定的风险 (i.e., 很容易错误地更新cuda toolkit,导致前功尽弃;甚至迫不得已重装显卡驱动)。而且,很多过去的博客,都是在cuda 10.x和cuda 9.x上进行操作,目前还没有很多有关于cuda 11.x上进行操作的成功样例 (笔者也曾失败数次)。所以,并不是非常推荐这种操作。


参考:

  • CUDA版本11.4,pytorch应该下哪个版本的?
  • CUDA 11.4 and torch version 1.11.0 not working

你可能感兴趣的:(深度学习,各类报错,深度学习,pytorch,神经网络)