2016-12-18 3 views
0

私は、Titan X Pascal、Intel i5-6600、16GB RAM、およびUbuntu 14.04で動くtorch7を持っています。 Nvidiaドライバのバージョンは375.20、CUDA Toolkit 8.0、およびcuDNN v5.1です。VGG16のTitan X Pascalは、私のマシンでベンチマークよりもずっと遅い

私はCaffe(loadcaffe経由でインポート)の同じVGG16ネットワークでin this Benchmarkと同じテストを行いました。しかし、往路の場合、セットアップにはベンチマークで必要とされる時間の2倍の80msが必要です。

私はまた、3チャンネルとサイズ224x224の16枚の画像を生成しました。関連するコードは次のとおりです。

local model = loadcaffe.load("/home/.../Models/VGG16/VGG_ILSVRC_16_layers_deploy.prototxt", 
          "/home/.../Models/VGG16/VGG_ILSVRC_16_layers.caffemodel", 
          "cudnn") 

for i=1, 50 do 
    local input = torch.randn(16, 3, 224, 224):type("torch.CudaTensor") 

    cutorch.synchronize() 
    local timer = torch.Timer() 

    model:forward(input) 
    cutorch.synchronize() 

    local deltaT = timer:time().real 
    print("Forward time: " .. deltaT) 
end 

出力は次のようになります。 Forward time: 0.96536016464233 Forward time: 0.10063600540161 Forward time: 0.096444129943848 Forward time: 0.089151859283447 Forward time: 0.082037925720215 Forward time: 0.082045078277588 Forward time: 0.079913139343262 Forward time: 0.080273866653442 Forward time: 0.080694913864136 Forward time: 0.082727193832397 Forward time: 0.082070827484131 Forward time: 0.079407930374146 Forward time: 0.080456018447876 Forward time: 0.083559989929199 Forward time: 0.082060098648071 Forward time: 0.081624984741211 Forward time: 0.080413103103638 Forward time: 0.083755016326904 Forward time: 0.083209037780762 ...

は、私はその速度を得るために追加的な何かをする必要がありますか?あるいは私はここで何か間違っているのですか? または、Ubuntu 16.04の代わりにUbuntu 14.04を使用している可能性があります(ただし、Ubuntu 14.04で動作するGTX 1080も60msしか必要ありません)。

+0

なぜ2つ(もしあれば)cutorch.synchronizeを呼び出すのですか?私の知る限り、これはなぜgpusと平行しているのかとだけ関連しています。 – Elad663

+0

また、データを生成するたびに、gpuへのコピーを作成します(cudaテンソルによって)。より効率的な解決策は、すべてを生成し、次にeveythingをgpuにコピーしてSGDまたはミニバッチを実行することです。あなたはそれに12ギガバイトを持って、それを楽しむ – Elad663

+0

クーダは、GPUのジョブをキューに入れません。したがって、有効なタイミング結果を得るには、テンソルがGPUでのコピーを終了するのを待つために初めてsynchronize()を呼び出します。次に、タイマーを開始し、転送ジョブを待ち行列に入れ、次に2番目のsynchronize()でforward()ステップが完了するのを待ちます。 –

答えて

0

最後に解決策が見つかりました。デフォルトでは

cudnn.benchmark = true 

最速のアルゴリズムを選択していないので、cudnn falseに設定されており:

私はcudnn.benchmarkフラグを有効にする必要がありました。私の前方は約39msです。

関連する問題