cuda中時間用法

來源:互聯網
上載者:User

標籤:des   style   blog   http   使用   os   strong   檔案   

轉載:http://blog.csdn.net/jdhanhua/article/details/4843653

因之前使用nvcc編譯.cu 檔案時,使用time_t及其一系列函數編譯報不知名錯誤。

在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 event,CUstream stream )--- 記錄事件;
cudaError_t cudaEventElapsedTime( float* time,cudaEvent_t start,cudaEvent_t end )---計算兩次事件之間相差的時間;
cudaError_t cudaEventDestroy( cudaEvent_t event )---銷毀事件對象。
計算兩次事件之間相差的時間(以毫秒為單位,精度為0.5微秒)。如果尚未記錄其中任何一個事件,此函數將返回cudaErrorInvalidValue。如果記錄其中任何一個事件使用了非零流,則結果不確定。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.