Torch7入门续集(六)----多GPU运行程序 ---- (2018-4-18更新!)

本文介绍了Torch7中如何进行多GPU程序的实现,包括两种不同的方法:不推荐的同步模式训练方法和推荐的自动同步参数方法。通过示例代码展示了如何在多个GPU上并行训练神经网络,强调了第二种方法的简洁性和效率提升。
摘要由CSDN通过智能技术生成

总说

更新: 重写多GPU程序示例, 2018-4-18
先感叹一波,我竟然会时隔一年后, 再更新这个, 本来是不想更新的,错了就错了, 根本没人看, 然而网友的评论说出现了问题, 我想还是更新一波吧, 不说了,真要给自己点个赞.
Torch的多GPU程序其实并不复杂.

最简单的代码:

第一种方法(不推荐)

require 'optim'
require 'nn'
require 'cutorch'
require 'cunn'
require 'torch'
torch.setdefaulttensortype('torch.FloatTensor')

local conv_net = nn.Sequential()
local concat = nn.ConcatTable()
concat:add(nn.SpatialConvolution(3,3,3,3,1,1,1,1):noBias())
concat:add(nn.SpatialConvolution(3,3,3,3,1,1,1,1):noBias())
conv_net:add(concat)
local jt = nn.JoinTable(2)
conv_net:add(jt)
conv_net:add(nn.SpatialConvolution(6,3,3,3,1,1,1,1):noBias())
conv_net:add(nn.SpatialConvolution(3,3,3,3,1,1,1,1):noBias())
conv_net:add(nn.SpatialConvolution(3,3,3,3,1,1,1,1):noBias())
conv_net:add(nn.SpatialConvolution(3,3,3,3,1,1,1,1):noBias())
conv_net:add(nn.SpatialConvolution(3,3,3,3,1,1,1,1):noBias())
conv_net:add(nn.SpatialConvolution(3,3,3,3,1,1,1,1):noBias())
conv_net:add(nn.SpatialConvolution(3,3,3,3,1,1,1,1):noBias())
conv_net:add(nn.SpatialConvolution(3,3,3,3,1,1,1,1):noBias())
conv_net:cuda()  -- 把网络的参数变成cuda类型


num_epochs = 1
batchsize = 64
criterion = nn.MSECriterion():cuda()
input = torch.randn(1000,3,256,256):mul(100):floor():cuda()
target = torch.randn(1000,3,256,256):mul(100):floor():cuda()
num_takes = input:size(1)/batchsize

-- DataParrallelTable是进行
-- 使用DataParallelTable进行多GPU, 1表示在batch维度进行切分
dpt = nn.DataParallelTable(1)

-- 使用第1,2,3,4个GPU, 将相同一个网络, 分别复制到4个GPU上.
for i = 1, 4 do
  cutorch.setDevice(i)
  dpt:add(conv_net:clone():cuda(), i)  
end
print(net)

cutorch.setDevice(1) -- 设置`主`GPU, 同步时, 就是用来将其他GPU参数全部累加到这个GPU上.
parameters, gradParameters = dpt:getParameters()
-- TRAINING:
local timer = torch.Timer()
for i = 1, num_epochs do
  for bth = 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值