简单来讲,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之后(退出命令行):
在这里插入图片描述
验证完毕

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐