對CUDA核心函式執行時間測量的方法

2021-07-10 23:37:47 字數 962 閱讀 6300

方法一:

[cpp]view plain

copy

cudaevent_t start1;  

cudaeventcreate(&start1);  

cudaevent_t stop1;  

cudaeventcreate(&stop1);  

cudaeventrecord(start1, null);  

// 需要測時間的核心函式kernel;

cudaeventrecord(stop1, null);  

cudaeventsynchronize(stop1);  

float

msectotal1 = 0.0f;  

cudaeventelapsedtime(&msectotal1, start1, stop1);  

方法二:

[cpp]view plain

copy

stopwatchinte***ce * timer_cublas;  

sdkcreatetimer(&timer_cublas);  

sdkstarttimer(&timer_cublas);  

// 需要測時間的核心函式kernel;

cudasyncthreads()  

sdkstoptimer(&timer_cublas);  

double

dseconds = sdkgettimervalue(&timer_cublas)/((

double

)niter);  

關於方法二中的cudasyncthreads()說明,如果在sdkstoptimer之前不加該函式,會導致測量時間僅僅是核函式在cpu上啟動的耗時,而沒有考慮在gpu中的耗時,使得結果和方法一小很多。所以要等cuda啟動的gpu執行緒同步之後,才能停止計時,這樣得到的耗時才是正確的。

測量執行時間StopWatch類

using system using system.diagnostics using system.threading class program ts.hours,ts.minutes,ts.seconds,ts.milliseconds 10 console.writeline elapsed...

C 新增測量執行時間

使用模組化開發,每個模組都有初始化功能,初始化功能可能包括 載入配置表,初始化事件,初始化設定 那麼如果想測量每個模組的init時間呢?net框架已經提供了測量執行的方法 system.diagnostics system.diagnostics 命名空間包含具有以下功能的型別 能讓你與系統程序 事...

timeofday測量程式執行時間

2.時間的測量 有時候我們要計算程式執行的時間.比如我們要對演算法進行時間分析.這個時候可以使用下面這個函式.include int gettimeofday struct timeval tv,struct timezone tz strut timeval gettimeofday將時間儲存在結...