这个问题是在用pycharm远程调试功能时遇到的,当服务器上没有xforward功能时,pycharm专业版带有的远程调试功能是一个很好用的IDE调试解决方法。
程序运行时,torch.cuda.is_available()的值为False,而且模型无法使用GPU,当执行model.cuda()时出错。
执行print(torch.version.cuda)可以正常看到CUDA版本,print(torch.cuda.device_count()),输出为0。
尝试加入环境变量,LD_LIBRARY_PATH=/usr/local/cuda/lib64,问题未解决。
在ssh连接到服务器的shell里可以正常运行程序,使用GPU进行运算。搞了很久,发现问题在于pycharm远程执行时缺少环境变量。通过对比在shell里调用python执行以下代码段以及在pycharm里执行,会发现LD_LIBRARY_PATH缺少值。
import os
print(os.environ)
在我使用的服务器上,缺少的是LD_LIBRARY_PATH中的/usr/local/nvidia/lib,/usr/local/nvidia/lib64,加到LD_LIBRARY_PATH后程序终于能够正常运行。问题解决。
最后的环境变量LD_LIBRARY_PATH==/usr/local/cuda/lib64:/usr/local/nvidia/lib:/usr/local/nvidia/lib64,注意用冒号":"隔开。
加环境变量的位置在Run/Debug Configurations里的Environment下方。