跳转至

不能调用GPU

首先使用nvidia-smi命令检查GPU的使用情况

image-20220606124151522

以上红色框标记的分别为显存占用和GPU使用率。如果程序开始运行后:

  1. 显存无占用,那么可能是安装的框架为非GPU版本。检查方法为:
# 如果你在使用PyTorch
# 如果版本号中带cu字样,说明是cuda版本,否则是cpu版本
# 此外:使用Torch官方的conda安装命令在国内安装的一般为非cuda版本,而是cpu版本(有bug),因此推荐用pip安装,并且如果使用torch官方pip命令,去掉-f参数,这样可以走国内的pip源,速度更快
import torch
print(torch.__version__)  

# 如果你在使用TensorFlow
import tensorflow as tf
sys_details = tf.sysconfig.get_build_info()
sys_details["cuda_version"]
  1. 显存有占用,GPU占用率不为0,但是波动较大,此时正常使用了GPU,可以优化程序使GPU利用率更高,参考帮助文档

  2. 显存有占用,但是GPU占用率一直为0。这种case可以分两种,一种安培架构的GPU(30系列的卡、A40、A100、A5000等)需要使用CUDA11.X。另一种case为代码未使用GPU,只不过import框架和构建网络时,框架会分配显存,因此看到的情况就是显存有占用,但是未使用GPU。这种情况可以通过其他代码进行验证:

# 在终端执行以下命令,然后观察GPU的使用情况(注意该代码是Torch代码)
# 如果GPU使用率不为0,则证明你的代码可能未调用GPU进行计算,请检查调试代码。如果以下代码执行异常,请联系客服协助处理
wget http://autodl-public.ks3-cn-beijing.ksyun.com/debug/dp_res18.py
python dp_res18.py