处理pytorch代码时如何利用所有GPU?

时间:2018-07-13 10:06:46

标签: python gpu pytorch

我有2个GPU,当我使用pytorch代码时,仅使用一个GPU。我尝试过CUDA_VISIBLE_DEVICES=0,1 python xxx.py,但是发生

  

“ CUDA_VISIBLE_DEVICES:找不到命令”

问题。我还尝试在对象py文件中添加以下行:

 import os    
    os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"    
    os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" 

,但仍然仅使用一个GPU。

1 个答案:

答案 0 :(得分:1)

您需要分别将训练数据并行化到每个GPU。数据并行使用torch.nn.DataParallel实现。 from the pytorch documentation示例:

import torch
import torch.nn as nn


class DataParallelModel(nn.Module):

    def __init__(self):
        super().__init__()
        self.block1 = nn.Linear(10, 20)

        # wrap block2 in DataParallel
        self.block2 = nn.Linear(20, 20)
        self.block2 = nn.DataParallel(self.block2)

        self.block3 = nn.Linear(20, 20)

    def forward(self, x):
        x = self.block1(x)
        x = self.block2(x)
        x = self.block3(x)
        return x