火炬线性模型在GPU上向前传递4倍,然后是CPU

时间:2016-06-12 13:53:17

标签: lua gpu torch

我正在使用torch 7处理其中一个AWS GPU实例。 以下代码对线性模型的简单正向传递进行了基准测试。 gpu执行似乎慢了大约4倍。我做错了什么?

require 'torch';
require 'nn';

cmd = torch.CmdLine()
cmd:option("-gpu", 0) -- gpu/cpu
cmd:option("-n_in", 100)
cmd:option("-n_out", 100)
cmd:option("-n_iter", 1000)

params = cmd:parse(arg)
A = torch.Tensor():randn(params.n_in);
model = nn.Sequential():add(nn.Linear(params.n_in, params.n_out))

if params.gpu>0 then
    require 'cutorch';
    require 'cudnn';
    A = A:cuda()
    model = model:cuda()
end

timer = torch.Timer()

for i=1,params.n_iter do
    A2 = model:forward(A)
end
print("Average time:" .. timer:time().real/params.n_iter)

1 个答案:

答案 0 :(得分:3)

您需要足够的大型网络才能充分利用GPU。对于小型网络(<500×500),包括GPU内核启动,通过PCI-E的数据传输等的开销将占用大部分的训练时间。在这种情况下,您可能希望使用CPU。