[問題] Thread 執行時間計算(Be solved!)
開發平台(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
04/28 14:37, 1F
→
04/28 14:58, , 2F
04/28 14:58, 2F
→
04/28 14:58, , 3F
04/28 14:58, 3F
→
04/28 14:59, , 4F
04/28 14:59, 4F
→
04/28 15:00, , 5F
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
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
04/28 21:26, 9F
→
04/28 21:32, , 10F
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)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章