pytorch通过cuda指令允许让模型、数据加载到GPU上,常用指令如下:
1. torch.cuda.is_available()
cuda是否可用
import torch print(torch.cuda.is_available())
2. torch.cuda.device_count()
查看GPU数量
import torch print(torch.cuda.device_count())
3. torch.cuda.get_device_name()
查看DEVICE(GPU)名
import torch print(torch.cuda.get_device_name())
4. torch.cuda.current_device()
检查目前使用GPU的序号
import torch print(torch.cuda.current_device())
5. torch.cuda.set_device()
指定使用的卡
torch.cuda.set_device(gpu_id) #单卡 torch.cuda.set_device('cuda:'+str(gpu_ids)) #多卡
只指定主显卡,如下:
import torch torch.cuda.set_device(1) x = torch.tensor([[1,2,3],[4,5,6]]).cuda() print(x.device)
指定特定显卡,如下:
import torch import os os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2' torch.cuda.set_device(1) x = torch.tensor([[1,2,3],[4,5,6]]).cuda() print(x.device)
使用torch.cuda.set_device()可以更方便地将模型和数据加载到对应GPU上, 在定义模型之前加入一行代码即可,但是这种写法的优先级低,如果model.cuda()中指定了参数,那么torch.cuda.set_device()会失效,而且pytorch的官方文档中明确说明,不建议用户使用该方法。
6. .cuda()
指定模型和数据加载到对应的GPU,以net.cuda()为例,加载方法为:
net.cuda(gpu_id) # 输入参数为int类型,只能指定一张显卡
net.cuda('cuda:'+str(gpu_ids)) #输入参数为str类型,可指定多张显卡
只指定主显卡,如下:
import torch import os x = torch.tensor([[1,2,3],[4,5,6]]).cuda() print(x.device)
指定特定显卡,如下:
import torch import os os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2' x = torch.tensor([[1,2,3],[4,5,6]]).cuda('cuda:1') print(x.device)
发表评论