2016-06-12 3 views
1

トーチ7を使用してAWS GPUインスタンスの1つで作業しています。 次のコードは、リニアモデルの単純なフォワードパスをベンチマークします。 GPUの実行は約4倍遅くなっているようです。私は間違って何をしていますか?トーチリニアモデルフォワードパスGPUでCPUが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

大きなサイズを試してください – kangshiyin

+0

ありがとう、これはそうです! -n_in 10000 -n_out 500で実行すると、GPUで約30倍のスピードアップが得られます。 – pavel

答えて

3

GPUをフルに活用するには、十分な大規模なネットワークが必要です。小規模ネットワーク(< 500 x 500)の場合、GPUカーネルの起動、PCI-E経由のデータ転送などのオーバーヘッドはトレーニング時間の大部分を占めます。この場合、代わりにCPUを使用することができます。

関連する問題