OpenMP time和clock()計算兩個不同的結果我有通過OpenMP并行化的順序代碼。我已經放了相應的pragma并測試它。在測試時,我通過檢查主要功能所花費的時間來解釋性能提升。奇怪的是通過計算的經過時間cpu_time()并omp_get_wtime()返回兩個不同的結果。您認為原因是什么?通過cpu_time()函數計算的經過時間與順序時間類似。在計算開始之前ctime1_ = cpu_time();#ifdef _OPENMP
ctime1 = omp_get_wtime();#endif計算結束后ctime2_ = cpu_time();#ifdef _OPENMP
ctime2 = omp_get_wtime();#endifcpu_time()函數定義double cpu_time(void){
double value;
value = (double) clock () / (double) CLOCKS_PER_SEC;
return value;}打印結果printf("%f - %f seconds.\n", ctime2 - ctime1, ctime2_ - ctime1_);樣本結果7.009537 - 11.575277 seconds.
3 回答

慕森王
TA貢獻1777條經驗 獲得超3個贊
您觀察到的是任何并行應用程序的完全有效結果 - 返回的所有線程的組合CPU時間clock()
通常大于測量的掛鐘時間,omp_get_wtime()
除非您的應用程序主要是休眠或等待。
- 3 回答
- 0 關注
- 2367 瀏覽
添加回答
舉報
0/150
提交
取消