亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

OpenMP time和clock()計算兩個不同的結果

OpenMP time和clock()計算兩個不同的結果

C
守候你守候我 2019-07-25 10:16:38
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貢獻1900條經驗 獲得超5個贊

clock功能測量CPU時間,主動在CPU上花費的時間,OMP功能測量執行期間的時間,兩個完全不同的東西。

你的過程似乎在等待某個地方時被阻止了。


查看完整回答
反對 回復 2019-07-25
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

您觀察到的是任何并行應用程序的完全有效結果 - 返回的所有線程的組合CPU時間clock()通常大于測量的掛鐘時間,omp_get_wtime()除非您的應用程序主要是休眠或等待。


查看完整回答
反對 回復 2019-07-25
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

clock()函數返回CPU時間,而不是停機時間。相反,使用gettimeofday()


查看完整回答
反對 回復 2019-07-25
  • 3 回答
  • 0 關注
  • 2367 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號