[問題] Thread 執行時間計算(Be solved!)

看板C_and_CPP (C/C++)作者時間14年前 (2012/04/28 13:54), 編輯推噓0(0010)
留言10則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux NetBeans 7.1.2 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) None 問題(Question): 計算 Thread 執行的時間居然是 0.000000 秒...... 餵入的資料(Input): 預期的正確結果(Expected Output): execute Time: X sec. 浮點數 X 不應為 0 錯誤結果(Wrong Output): execute Time: 0.000000 sec. 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/zzBk5 補充說明(Supplement): 曾經參考此方法產生 thread http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html 用 pthread 的方式就能不為 0 但是不知道 pthread 呼叫 function 後如何讓 function 把指標傳回來 只好用 vfork Update: 第41行改成 exeTime = (double) ( finish - start ) / CLOCKS_PER_SEC ; 結果也是一樣 第17行 long 改 double 一樣...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.135.24.88 ※ 編輯: iWRZ 來自: 140.135.24.88 (04/28 13:57) ※ 編輯: iWRZ 來自: 140.135.24.88 (04/28 14:00)

04/28 14:37, , 1F
fork分出新process吧 你要設一個barrier在計時的process
04/28 14:37, 1F

04/28 14:58, , 2F
1.如果要用的是thread就用pthread, 要process才用vfork
04/28 14:58, 2F

04/28 14:58, , 3F
善用pthread的callback應該可以達到目的
04/28 14:58, 3F

04/28 14:59, , 4F
2.建議用time()而不是clock(), clock()的更新速度不是
04/28 14:59, 4F

04/28 15:00, , 5F
很快,可能0.001或0.01秒才會更新一次
04/28 15:00, 5F
之前有用 fork() 但是發現到 fork() 只複製父 process 的資料 完事後就不會把資料弄回去 所以只好用 vfork() 讓父子共用一個資料 process 這點我知道 老師說叫 thread 就當 thread 用 之前 Google 查到 pthread 只是拿 process 偽裝成 thread 有待查證 網路上 pthread 用法範例好少 正在努力查...... ※ 編輯: iWRZ 來自: 140.135.24.88 (04/28 15:36) 後來把 clock() 改成 time((time_t *) NULL) 執行下去 終於跳脫0 執行結果 execute Time: 0.000001 sec. ............ 1萬筆資料做 bubble sort 全部做完只要 0.000001 秒 是我的電腦太快 還是設計有錯= = ※ 編輯: iWRZ 來自: 140.135.24.88 (04/28 15:49) 故意讓電腦每次交換數據前 sleep(1) 看看= = ※ 編輯: iWRZ 來自: 140.135.24.88 (04/28 15:53)

04/28 16:19, , 6F
電腦快不好嗎 :/
04/28 16:19, 6F
數據交不出去呀= = 如果今天換用 Fortran 寫程式運算浮點數 當然越快越好呀= = ※ 編輯: iWRZ 來自: 140.135.24.88 (04/28 16:57) 剛剛把程式碼最佳化 0.000000 秒....... ※ 編輯: iWRZ 來自: 140.135.24.88 (04/28 16:58)

04/28 17:07, , 7F
沒仔細看code,做一次時間不夠長,就做個一千萬次吧
04/28 17:07, 7F

04/28 17:44, , 8F
推樓上,多做幾次取平均
04/28 17:44, 8F
最近有物理系的小姐跟我反應說 Fortran with CUDA 跑 2000 * 2000 筆資料 就跑了一個月 應該是程式太簡單才會這麼快 話說......他為了跑這個程式買了 GTX 560 Ti 說什麼顯卡記憶體要2G 如果 CUDA 能跑 FM1 上 還不如直接買 FM1 ........ ※ 編輯: iWRZ 來自: 140.135.24.108 (04/28 18:36)

04/28 21:26, , 9F
我是不太懂FM1是什麼,不過cuda分散運算很強是真的
04/28 21:26, 9F

04/28 21:32, , 10F
你的code真的只長這樣?
04/28 21:32, 10F
FM1 是 AMD 的 APU 目前架構 CPU與GPU整合 不用再外接顯示卡就能跑3D繪圖 主要是長這樣 前面都是資料輸入(fscanf) 真正開始執行排序與計算時間都是這 ※ 編輯: iWRZ 來自: 140.135.24.108 (04/29 00:50) ※ 編輯: iWRZ 來自: 140.135.24.108 (04/29 00:51) 後來自己創個10萬筆資料 結果有比較大 所以程式碼沒問題了 感謝大家 ※ 編輯: iWRZ 來自: 140.135.24.108 (04/29 04:52)
文章代碼(AID): #1FcuON9b (C_and_CPP)
文章代碼(AID): #1FcuON9b (C_and_CPP)