Re: [問題]core 2 Duo電腦 讓一個程式跑兩個cpu

看板MacDev作者 (宇宙)時間17年前 (2007/12/06 12:48), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串6/7 (看更多)
嗯 我讚同的你的看法 : ) 如果以一台機器跑的話 似乎multi-thread的方式比較簡單有效率 目前在考慮試試看學 openMP(Shared Memory Multiprocessing) 因為如果只跑一台機器的話openMP會比MPI的方式快 但如果有更多機器的話(不過現在沒有) MPI又會比較好 pthread我不清楚 也不知道對fortran的支援性如何 (或許我應該把程式改寫成C? 但在這種科學計算上fortran比較快一些) 但似乎又多了一個選擇了 : D 謝謝 還有一個原因是因為我不是學資訊出生的 所以我傾向官方網站有大量examples的方式 :P ※ 引述《yllan (藍永倫)》之銘言: : ※ 引述《astroodie (宇宙)》之銘言: : : 有, i,j,k 可以想像成 三維空間的x,y,z : : 而t 是時間 : : 空間中每個格子(u(i,j,k))的流體要怎麼流 : : 必須要知道旁邊的格子(u(i+-1,j+-1,k+-1))的狀態 : : 而下一個時間點(t=t+dt) 必須知道現在現在(t=t)的狀態 : : 所以拆開的話 還是要在交界處溝通(不過只用溝通最邊邊的狀態) : : 而時間會切隔成數萬份或更多 所以手動merge是不可行的 : : 我目前知道的方法是mpi : : (不過還在學怎麼設定環境和使用) : : 但也如你所說得 我才一台機器 用mpi是殺雞用牛刀啊 : : anyway, 還是很謝謝你 : ) : 照你的例子來看,如果只用知道四周上下左右前後共 26 個格子的話, : 平行化的潛力很大!用 MPI 好像不錯,不過如果時間切得很細,一直要 : 溝通邊界也蠻傷的。(特別是空間很大的時候) : 在這種 case 底下我建議開 multi-thread 來跑,對空間分割,每個 : thread 負責一半空間,這樣直接對同一份資料操作就不用一直溝通來 : 溝通去。只要注意每個 iteration 結束後都要停下來確認另一個 iteration : 也結束才能再繼續。(這點 MPI 也一樣吧!) : (我唸書的時候曾經念過,pthread 是 userland library,OS 沒辦法 : 把他分到兩個 CPU 上。不過剛剛在 OSX 測了一下 pthread 是沒問題的) : 不過我只會 C 語言的語法,Fortran 不知道怎麼用 pthread... 召喚 mj! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.174.51.218

12/06 16:33, , 1F
你用intel fortran?
12/06 16:33, 1F

12/07 03:41, , 2F
我用gfortran : )
12/07 03:41, 2F

12/07 12:43, , 3F
我最後歸順 g95 了, that means bye bye openmp
12/07 12:43, 3F

12/09 02:45, , 4F
還好我的程式是用77的格式寫的 ^^"
12/09 02:45, 4F
文章代碼(AID): #17LtyCig (MacDev)
討論串 (同標題文章)
文章代碼(AID): #17LtyCig (MacDev)