前言
當我們想要計算一支 pytorch 程式的運算時間,
單純只用 time.time() 好像測出來的時間感覺不太準,
要怎麼比較客觀的得到數據呢?
這時我們就會需要 torch.cuda.synchronize() !
torch.cuda.synchronize()
說明
因為在 pytorch 程式當中,很多程式都是非同步 (unsynchronized) 進行的,
也就是說,雖然我們已經執行了該行程式碼,
但「不會」等待該行程式碼執行完,才繼續做下一行。
這樣可以確保程式的效率,但也因此會出現怎麼跑時間都很短很快的錯覺!
我們可以在想測試時間的前一行加上「torch.cuda.synchronize() 」!
這樣就可以看到相對比較正確的執行囉!
範例
time_start = time.time()
# some pytorch code here
torch.cuda.synchronize()
time_end = time.time()