pytorch中使用一些使用GPU基本操作

在使用单机多卡的时候我们会经常遇到一些GPU的操作,例如查询当前有几块GPU卡,GPU卡名字,如何在torch中使用多卡等问题,下面我们先进行一些基础的学习,这里不再赘述如何安装torch,可以看我之前的笔记。

一些常用的方法

判断cuda是否可用

torch.cuda.is_available()

获取GPU卡的数量

torch.cuda.device_count()

获取当前设备的索引

torch.cuda.current_device()

获取GPU卡的名字

torch.cuda.get_device_name(0)

下面我们来上一些简单的代码查看下

import torch
print(torch.cuda.is_available())
print(torch.cuda.device_count())
print(torch.cuda.current_device())
gpus = [torch.cuda.get_device_name(g_index) for g_index in range(torch.cuda.device_count())]
print(gpus)

返回

微信截图_20220714212008.png

我们可以通过os.environ来设置环境变量使用指定的GPU卡为主显卡

os.environ["CUDA_VISIBLE_DEVICES"] = "1,0"

这样我两张卡默认第二张卡为主显卡,在使用torch.nn.DataParallel指定运算显卡时,显卡的对应关系如下

实际显卡编号----->运算显卡编号
1       ----->0(主卡)
0       ----->1

那么上面我们学习了学习使用指定GPU和获取GPU卡信息,当使用显卡时,我们需要怎么操作?

存在多张卡的情况,我们使用所有GPU卡方法如下

net = torch.nn.DataParallel(model)

直接使用torch.nn.DataParallel将你的模型wrap一下即可,这时所有显卡都将会被用上

如果显卡很多,指定使用其中几张显卡使用,那么操作如下

net = torch.nn.DataParallel(model, device_ids=[0, 1, 2])
#或者
os.environ["CUDA_VISIBLE_DEVICES"] = '0,1,2'

CUDA_VISIBLE_DEVICES 表示当前可以被python环境程序检测到的显卡

关于GPU还有一些其他的函数

查看GPU的容量

torch.cuda.get_device_capability(device)

清空程序占用的GPU资源

torch.cuda.empty_cache()

使用cuda进行检查计算测试代码

print(torch.rand(3,3).cuda())


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/859.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。