2010-12-04 52 views
2

因此,cuda可視化剖析器中有2個定時器,cuda可視化剖析器中的CPU和GPU定時器

GPU時間:這是GPU上該方法的執行時間。 CPU時間:它是啓動該方法的GPU時間和CPU開銷的總和。在驅動程序生成的數據級別,CPU時間僅僅是啓動非阻塞方法的方法的CPU開銷;對於阻塞方法,它是GPU時間和CPU開銷的總和。所有內核默認啓動都是非阻塞的。但是如果任何分析器計數器被啓用,則內核啓動將被阻止。不同流中的異步內存複製請求是非阻塞的。

如果我有一個真正的程序,實際的exectuion時間是多少?我測量時間,還有GPU計時器和CPU計時器,有什麼不同?

+0

我想你已經回答了你自己的問題。 – erjiang 2010-12-04 02:13:58

回答

2

你幾乎就在那裏 - 現在你已經意識到了一些不同的選擇,最後一步就是問問自己到底什麼時候要測量。對此沒有正確的答案,因爲這取決於你想要測量的內容。當您嘗試優化計算時,CPU時間和GPU時間正是您想要的,但它們可能不包含諸如實際上可能非常重要的事情。你提到「實際執行時間」 —這是一個開始。你的意思是從用戶啓動程序到答案被吐出並且程序結束爲止的問題—的完整執行時間?在某種程度上,這確實是唯一真正重要的時間。

對於這樣的數字,在Unix類型的系統中,我喜歡測量程序的整個運行時間; /bin/time myprog,大概是Windows的等價物。這很好,因爲它完全不起眼。另一方面,因爲它是一個整體,所以它的範圍太廣而不能提供幫助,如果你的代碼有一個大的GUI組件,那麼它也不是很好,因爲那樣你也可以測量用戶點擊它們所需的時間結果。

如果你想要一些組計算的經過時間,CUDA具有非常方便的功能cudaEvent *可以放置在代碼—看到CUDA Best Practices Guide的各個部分,S 2.1.2,使用CUDA GPU定時器—這些,你可以在重要的代碼之前和之後放置並打印結果。

0

gpu計時器基於事件。 這意味着當一個事件被創建時,它將被設置在gpu的隊列中以供投放。所以這裏也有小的開銷。 從我已測量,雖然差異是次要的