简单来讲,torch.cuda.is_available()
输出为True应该就是gpu版本的torch,但是有些情况下(算力不支持,etc.)就算torch是gpu版本也是用不了gpu进行推理反传的。
所以需要使用gpu验证一下,具体来讲执行如下代码:
import torch
torch.cuda.is_available() ## 输出应该是True
t=torch.nn.Linear(3,3)
t.to("cuda:0")
input=torch.randn((3,3)).requires_grad_().to("cuda:0")
output=t(input)
loss=torch.sum(output)
torch.autograd.grad(loss,input,retain_graph=True) ## 输出应该是一个gpu上的梯度矩阵
loss.backward()
上述代码输出正常,并且没有报错说明可以使用GPU推理反传梯度.
于此同时 (不要在命令行里退出上述python进程) 可以简单看一下nvidia-smi
:
发现有进程占用gpu,将刚才的python进程kill之后(退出命令行):
验证完毕