栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytorch和GPU有关操作(CUDA)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytorch和GPU有关操作(CUDA)

使用GPU前 我们首先需要查看GPU信息 这可以通过如下命令实现

watch nvidia-smi

输出如下

可以看到总共有两块3090显卡。

一、设定计算设备

默认情况下Pytorch将数据创建在内存 然后利用CPU进行计算 所以我们我们需要手动设定GPU信息。接下来介绍几个相关指令

查看GPU是否可用 torch.cuda.is_available()

查看GPU数量 torch.cuda.device_count()

查看当前GPU索引号 从0开始 torch.cuda.current_device()

根据索引号查看GPU名字 torch.cuda.get_device_name(index_number:int)

二、TENSOR的GPU计算

默认情况下 Tensor会被存储在内存上。因此 我们打印Tensor时候看不到GPU相关标识

x torch.tensor([1,2,3])
print(x)

输出

tensor([1,2,3])

使用.cuda()可以内存中的Tensor转换到GPU上。如果有多块GPU 可以使用.cuda(i)来表示第i块GPU所对应的显存 从0开始 注意cuda(0)和cuda()等价

x x.cuda(0)
print(x)

输出

tensor([1, 2, 3], device cuda:0 )

我们可以通过Tensor的device属性来查看该Tensor所在的设备

print(x.device)

输出

cuda:0

我们可以在创建的时候就指定设备

device torch.device( cuda if torch.cuda.is_available() else cpu )
x torch.tensor([1,2,3],device device)
# 或者通过如下的方式指定
x torch.tensor([1,2,3]).to(device)
print(x)

输出

tensor([1, 2, 3], device cuda:0 )

如果对GPU上的数据进行运算 那么结果还是存放在GPU上

y x**2
print(y)

输出

tensor([1, 4, 9], device cuda:0 )

注意存储在CPU上的数据无法直接与存放在GPU上的数据进行运算 会报错。

三、模型的GPU计算

和Tensor类似 Pytorch模型也可以通过.cuda转换到GPU上 我们可以通过检查模型参数的device属性来查看存放模型的设备

net nn.Linear(3,1)
print(list(net.parameters())[0].device)

输出

cpu

此时可见模型在CPU上 我们将其转换到GPU上

net.cuda()
print(list(net.parameters())[0].device)

输出

cuda:0

注意我们需要保证模型输入的Tensor和模型都在同一台设备上 否则会报错。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号