感觉这一篇博客是最具有代表性的博客了
参考链接:PyTorch指定GPU(转载+原创)_universe_R的博客-CSDN博客_pytorch 指定gpu
PyTorch中指定使用的GPU有两种方法:
注意!!!!!!!!!!!!!!
os.environ[“CUDA_VISIBLE_DEVICES”] = "0, 1, 2"此条命令运行必须放在import torch之前,否则不能生效。
- import os
- os.environ["CUDA_VISIBLE_DEVICES"] = "0, 1, 2"
CUDA_VISIBLE_DEVICES=1,2,3 python train.py
注意!!!!!!!!!!!!!!
os.environ[“CUDA_VISIBLE_DEVICES”] = "2, 3, 4,5"此条命令运行必须放在import torch之前,否则不能生效。
- import os
- os.environ["CUDA_VISIBLE_DEVICES"] = "2,3,4,5"
-
-
- #将模型放入GPU中
- if torch.cuda.device_count() > 1:
- model = torch.nn.DataParallel(model, device_ids=[0,1,2,3])
等价于
- if torch.cuda.device_count() > 1:
- model = torch.nn.DataParallel(model, device_ids=[2,3,4,5])
这是因为在第一段中已经设置了可见GPU为2,3,4,5,就是说假设我们有八块GPU,序号分别为0,1,2,3,4,5,6,7,本来他们的编号也分别为0,1,2,3,4,5,6,7,但是因为设置了可见GPU为2,3,4,5所以我们选取的GPU的序号为2,3,4,5,但是对于程序来说他们的编号分别为[0,1,2,3],如下图所示
假设我只有[0,1]两块GPU。当我写的代码是用两块GPU的时候,如果有一个GPU被人占用了,那么我可以直接在开头设置 os.environ[“CUDA_VISIBLE_DEVICES”] = "1"或者 "0",这样后面的程序不用动,就可以直接采用一块GPU运行了