Re: [問題]core 2 Duo電腦 讓一個程式跑兩個cpu
嗯 我讚同的你的看法 : )
如果以一台機器跑的話 似乎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
12/06 16:33, 1F
→
12/07 03:41, , 2F
12/07 03:41, 2F
推
12/07 12:43, , 3F
12/07 12:43, 3F
→
12/09 02:45, , 4F
12/09 02:45, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 7 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章