1
是否有任何選項可用於分析CUDA內核?不是整體,而是其中的一部分。我有一些設備功能調用,我想測量他們的時間。是否有可以設置的標誌/事件/說明,然後在NVIDIA Visual Profiler中可以看到?或者我需要手動插入cudaEventCreate
和類似的功能。內核中的CUDA分析
是否有任何選項可用於分析CUDA內核?不是整體,而是其中的一部分。我有一些設備功能調用,我想測量他們的時間。是否有可以設置的標誌/事件/說明,然後在NVIDIA Visual Profiler中可以看到?或者我需要手動插入cudaEventCreate
和類似的功能。內核中的CUDA分析
你可以在時間使用手動clock()
或clock64()
功能內核的特定部分:
unsigned long long* time_spent;
__global__ void kernel(...)
{
unsigned int t1, t2;
// ...
t1 = clock();
// code of interest
t2 = clock();
atomicAdd(&time_spent, t2 - t1);
}
「時鐘()`正式返回clock_t表示,但我更喜歡明確的使用unsigned int類型的做出明顯的辦法上面的代碼正確處理時鐘值環繞(只要定時代碼不超過2^32-1週期來完成。
確保也時間
t1 = clock();
t2 = clock();
01碼
背靠背,所以你可以減去時間開銷。
是不是'clock()'爲每個SM返回一個本地計數器? – KiaMorot
沉迷於此答案:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#time-function – KiaMorot
是的。但只要我們僅僅從同一個SM中獲得時間差異,這並不重要。 (動態並行性確實會在這裏產生一個問題,爲簡單起見,我只是假設感興趣的代碼不會啓動任何其他內核)。 – tera