2011-02-02 40 views
0

我正在使用cudaEvent方法來查找內核執行的時間。以下是手冊中給出的代碼。使用CudaEvent記錄錯誤的時間

cudaEvent_t start,stop; 
    float time=0; 
    cudaEventCreate(&start); 
    cudaEventCreate(&stop);  
    cudaEventRecord(start,0); 
    subsampler<<<gridSize,blockSize>>>(img_redd,img_greend,img_blued,img_height,img_width,final_device_r,final_device_g,final_device_b); 
    cudaEventRecord(stop,0); 
    cudaEventSynchronize(stop); 
    cudaEventElapsedTime(&time,start,stop); 

現在,當我運行這一點,並嘗試看看談到類似52428800.0000(值不同,但這個命令)。我知道它是以毫秒爲單位,但仍這是一個龐大的數字特別是該程序時的時間執行時間不會超過一分鐘。有人指出爲什麼會發生這種情況。我真的需要找出內核需要多少時間來執行。

回答

0

您應該檢查每個CUDA調用的返回值。至少在最後調用cudaGetLastError()來檢查一切是否成功。

如果內核執行過程中出現錯誤,然後嘗試使用CUDA的MEMCHECK運行你的應用程序,特別是如果你有一個未指定的發射失敗,檢查非法內存訪問。

+0

感謝rep.I調用cudaGetLastError()函數正確完成程序前,它說:「沒有錯誤」。而且我寫一個圖像和原來正確的,所以我敢肯定,代碼是ok.I是隻是驚訝,爲什麼如此龐大的數字將顯示一個程序,只需不到一分鐘的時間執行。 – Manish 2011-02-04 01:39:57