CUDA中的計時函式

2021-09-10 06:23:43 字數 1348 閱讀 4925

一、clock函式計時

在c和c++中有clock計時函式,由於cuda是包含c的,所以在cuda中我們也同樣可以使用這個函式。

clock函式的定義:clock函式測的是在程式中從程式開始到呼叫clock函式之間在cpu上所經過的時鐘數(clocks)。

clock函式的介紹:

在c與c++的標頭檔案time.h與ctime中的庫函式clock()可以測試函式執行時間

1.clock()返回型別為clock_t型別

2.clock_t實際為long型別,typedef long clock_t

3.clock()函式,返回從開啟這個程式程序到程式中呼叫clock()函式時之間的cpu時鐘計時單元(clock tick)數,返回單位是毫秒

4.可以用常量clocks_per_sec,這個常量表示每一秒(per second) 有多少個時鐘計時單元

函式用法:

#include// 標頭檔案

clock_t start,end; // clock_t 資料型別

start = clock(); // 需要計時的部分開始

end = clock(); //需要計時的部分結束

float time = (float)(end-start)/clocks_per_sec;

cout《二、cuda中的事件計時(event)

用法:float time_elapsed = 0;

cudaevent_t start,stop;

cudaeventcreate(&start); //建立event

cudaeventcreate(&stop);

cudaeventrecord( start,0); //記錄當前時間

****** // ******指的是需要在gpu上執行的函式 如核函式kernel

cudaeventrecord( stop,0); //記錄當前時間

cudaeventsynchronize(start); //waits for an event to complete.

cudaeventsynchronize(stop); //waits for an event to complete.record之前的任務

cudaeventelapsedtime(&time_elapsed,start,stop); //計算時間差

cudaeventdestroy(start); //destory the event

cudaeventdestroy(stop);

cout<

CUDA程式計時

之前寫的cuda程式,想測量一下效能,網上很多用的是cpu端計時,很不準確。翻了一下書,發現這裡應該使用事件來計時。cuda中的事件本質上是乙個gpu時間戳,這個時間戳是在使用者指定的時間點上記錄的。由於gpu本身支援記錄時間戳,因此就避免了當使用cpu定時器來統計gpu執行的時間時可能遇到的諸多問...

CUDA計時差別

統計時間問題 想記錄gpu核函式的計算耗時,不同方法得到的結果差別較大,暫不知何種原因 核函式 global void addkernel int c,const int a,const int b gpu核函式 if tid tid griddim.x 1 time.h中的clock函式計時 多次...

CUDA程式設計 CPU計時與GPU計時

使用cuda進行程式設計,主要目的就是時間上加速。為此,如何計時必不可少。在cuda中,我們可以使用cpu計時函式和gpu計時函式。對於cpu計時,我們在之前的文章 精確系統計時 秒 毫秒 微秒 中已經介紹在一般的c c 程式設計中的計時方法。下面我們介紹在cuda中如何計時 cpu計時 cuda中...