cuda中的計時方式:#include
cudaevent_t start1;//stream計時
cudaevent_t stop1;
cudaeventcreate(&start1);cudaeventcreate(&stop1);cudaeventrecord(start1, null);kernel<<>>( a, b, c );cudaeventrecord(stop1, null);cudaeventsynchronize(stop1);cudaeventelapsedtime(&msectotal, start1, stop1);需要注意的是函式cudaeventsynchronize() 不可或缺,因為cuda的kernel函式是以非同步方式執行的,呼叫後立刻返回,這會導致計時不準確。cudaeventsynchronize(stop1)會使得直到gpu執行完cudaeventrecord(stop1, null)之前的所有語句時,事件stop才會被記錄下來,即起到同步的作用。
注意:此處記錄的時間單位為毫秒。
clock的計時方式:#include
clock_t start,end;
start = clock();
cudathreadsynchronize();//執行緒同步,gpu是非同步進行的
end = clock();
printf("time=%f\n",((double)end-start)/clock_per_sec);
另外,此處引用了nvidia論壇中橫掃千軍版主的原話:windows 慎用clock()
(1)clock()在windows上的精確度可能無法滿足要求。(clocks_per_sec的值是1000不假,但一般得不到
1ms的精度,一般可能會得到幾個到10幾個ms的精度)
(2)clock()存在嚴重的移植性問題。
(3)使用clock()來測時是windows "專用"的做法,在*nix下無法這麼用(和精度無關,是clock()的含義不同)。
可以使用queryperformancecounter()和queryperformancefrequency()來替代。
queryperformancecounter()這個函式返回高精確度效能計數器的值,它可以以微妙為單位計時.但是queryperformancecounter()確切的精確計時的最小單位是與系統有關的,所以,必須要查詢系統以得到queryperformancecounter()返回的嘀噠聲的頻率.queryperformancefrequency()提供了這個頻率值,返回每秒嘀噠聲的個數.
#include
large_integer t1,t2,tc;
queryperformancefrequency(&tc);
queryperformancecounter(&t1);
foo();//dosomething
queryperformancecounter(&t2);
printf("use time:%f\n",(t2.quadpart - t1.quadpart)*1.0/tc.quadpart);
在kernel中的clock()和clock64()還是值得使用的。
gettickcount返回(retrieve)從作業系統啟動到現在所經過(elapsed)的毫秒數,它的返回值是dword
#include
dword t1,t2;
t1 = timegettime();
foo();//dosomething
t2 = timegettime();
printf("use time:%f\n",(t2-t1)*1.0/1000);
arrayfire中的計時方式:
timer::start();
printf("elapsed seconds: %g\n", timer::stop());
linux計時方式:
gettimeofday() linux環境下的計時函式,int gettimeofday ( struct timeval * tv , struct timezone * tz ),gettimeofday()會把目前的時間有tv所指的結構返回,當地時區的資訊則放到tz所指的結構中.
//timeval結構定義為:
struct timeval;
//timezone 結構定義為:
struct timezone;
void test7()
參考:
常用計時器實現
專案開發中常常會用到計時器 例如,獲取驗證碼的時候,類應用的限時搶購,考試類應用的考試計時 提供以下方法 開始倒計時 starttime 重新整理計時 refreshtime long second 停止計時 stoptime 獲取現在時間 getnowtime 獲取message.what的tag...
軟考常用計算公式及理解
系統可靠度 串聯 r r1r2 rx 併聯 r 1 1 r1 1 r2 1 rx 串聯系統失效率 p p1 p2 平均無障礙時間 1 p 單利計算 利息 本金 利率 時間,即ir p i n 終值f p 1 i n 複利計算 折現率與折現係數 若n 年後能收入f 元,那麼這些錢現在的價值 現值 稱為...
Map集合常用方法及常用遍歷方式
public v put k key,v value 把鍵與值新增到map集合中public v remove object key 刪除key對應的值public v get object key 根據指定的鍵,獲取對應的值public v containkey object key 判斷是否包含...