Pytorch指定GPU的操作小结
type
status
date
slug
summary
tags
category
icon
password
comment_flag
SLUGS
转移tensor操作等价表:
Title | .to(name) | .to(device) | .cuda() |
GPU | to('cpu') | to(torch.device('cpu')) | cpu() |
Current GPU | to('cuda') | to(torch.device('cuda')) | cuda() |
Specific GPU | to('cuda:1') | to(torch.device('cuda:1')) | cuda(device=1) |
第二行的操作是将tensor放到current cuda device上,当前cuda设备默认为
"cuda:0"
(即gpu_list[0]
),可以通过torch.cuda.set_device()
重新指定current cuda device:对于pytorch的深度学习代码,
main.py
里通常是:说明:
os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2,3"
似乎和import torch
顺序可以换,但建议前者至少得在torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
之前。
os.environ["CUDA_VISIBLE_DEVICES"] = gpu_list
定义了程序可见gpu的列表(不定义该环境变量则默认全部可见),即能被device_x=torch.device("cuda:x" if torch.cuda.is_available() else "cpu")
所指定的gpu的列表。后者语句中的device_x
其实是卡号为gpu_list[x]
的设备。
os.environ["CUDA_VISIBLE_DEVICES"] = gpu_list
中的gpu_list
建议为实际要用的卡号列表。如果gpu_list
中含有程序实际不用的卡号,当前程序也会在实际不用的卡号后面占0M的显存。所以,os.environ["CUDA_VISIBLE_DEVICES"] = gpu_list
是建议一定要定义的。
以上内容若有纰漏,欢迎斧正。
参考
Loading...