CUDA學習——統計時間

在CUDA中統計運算時間,大致有三種方法:

 

<1>使用cutil.h中的函數
unsigned int timer=0;
//創建計時器
cutCreateTimer(&timer);
//開始計時
cutStartTimer(timer);
{
  //統計的代碼段
  …………
}
//停止計時
cutStopTimer(timer);
//獲得從開始計時到停止之間的時間
cutGetTimerValue( timer);
//刪除timer值
cutDeleteTimer( timer);
 

不知道在這種情況下,統計精度。

 

<2>time.h中的clock函數
clock_t start, finish;
float costtime;
start = clock();
{
  //統計的代碼段
  …………
}
finish = clock();
//得到兩次記錄之間的時間差
costtime = (float)(finish - start) / CLOCKS_PER_SEC;
時鐘計時單元的長度爲1毫秒,那麼計時的精度也爲1毫秒

 

<3>事件event
cudaEvent_t start,stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecend(start,0);
{
  //統計的代碼段
   …………
}
cudaEventRecord(stop,0);
float costtime;
cudaEventElapsedTime(&costtime,start,stop);
 
cudaError_t cudaEventCreate( cudaEvent_t* event )---創建事件對象;
cudaError_t cudaEventRecord( cudaEvent_t eventCUstream stream )--- 記錄事件;
cudaError_t cudaEventElapsedTime( float* timecudaEvent_t startcudaEvent_t end )---計算兩次事件之間相差的時間;
cudaError_t cudaEventDestroy( cudaEvent_t event )---銷燬事件對象。
計算兩次事件之間相差的時間(以毫秒爲單位,精度爲0.5微秒)。如果尚未記錄其中任何一個事件,此函數將返回cudaErrorInvalidValue。如果記錄其中任何一個事件使用了非零流,則結果不確定。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章