Re: [問題]core 2 Duo電腦 讓一個程式跑兩個cpu
※ 引述《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: 59.112.176.150
→
12/06 12:32, , 1F
12/06 12:32, 1F
討論串 (同標題文章)
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章