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