2013-05-30 54 views
1

是否有任何選項可用於分析CUDA內核?不是整體,而是其中的一部分。我有一些設備功能調用,我想測量他們的時間。是否有可以設置的標誌/事件/說明,然後在NVIDIA Visual Profiler中可以看到?或者我需要手動插入cudaEventCreate和類似的功能。內核中的CUDA分析

回答

3

你可以在時間使用手動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碼

背靠背,所以你可以減去時間開銷。

+0

是不是'clock()'爲每個SM返回一個本地計數器? – KiaMorot

+0

沉迷於此答案:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#time-function – KiaMorot

+0

是的。但只要我們僅僅從同一個SM中獲得時間差異,這並不重要。 (動態並行性確實會在這裏產生一個問題,爲簡單起見,我只是假設感興趣的代碼不會啓動任何其他內核)。 – tera