pytorch中的GPU操作默认是异步的,当调用一个使用GPU的函数时,这些操作会在特定设备上排队但不一定在稍后执行。这就使得pytorch可以进行并行计算。但是pytorch异步计算的效果对调用者是不可见的。
但平时我们用的更多其实是多GPU的并行计算,例如使用多个GPU训练同一个模型。Pytorch中的多GPU并行计算是数据级并行,相当于开了多个进程,每个进程自己独立运行,然后再整合在一起。
注:多GPU计算的前提是你的计算机上得有多个GPU,在cmd上输入nvidia-smi
来查看自己的设备上的GPU信息。
1. 多GPU计算的简单例子
一般我们使用torch.nn.DataParallel()
这个函数来进行接下来我将用一个例子来演示如何进行多GPU计算。
net = torch.nn.Linear(10,1)
print(net)
print('---------------------')
net = torch.nn.DataParallel(net, device_ids=