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

看板MacDev作者 (宇宙)時間17年前 (2007/12/06 04:42), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串3/7 (看更多)
※ 引述《yllan (藍永倫)》之銘言: : ※ 引述《astroodie (宇宙)》之銘言: : : 我有一個單純的程式(fortran的) : : 裡面有非常多的迴圈(流體力學的程式) : : ex. : : do t=0,10,1d-4 : : do k=1,8 : : do j=1,1024 : : do i=1,1024 : : ... : : 為了提昇效率 : : 有沒有辦法簡單的讓我的Core 2 duo mac book pro : : 的兩顆cpu一起跑? : : (因為我發現只有一顆跑100% 另一顆在發呆, 但神奇的是偶爾還會交換) : : 還是只能靠MPI? : : 又如果只能靠MPI, 有沒有人能推薦一些關於入門的網頁或文獻(for mac) : : 謝謝 : ) : 你的計算有 data dependency 嗎?拿你的例子來說 有, 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, 還是很謝謝你 : ) -- 我原本以為(或幻想)對一台機器可能會有內建平行計算的技術XD 只要按個扭開啟某個功能就可以平行計算了 XD : do t=0,10,1d-4 : do k=1,8 : do j=1,1024 : do i=1,1024 : ... : 可不可以拆成兩個程式分別計算一半? : do t=0,5,1d-4 do t=5,10,1d-4 : do k=1,8 do k=1,8 : .... .... : 或者是 : do t=0,10,1d-4 do t=0,10,1d-4 : do k=1,4 do k=5,8 : 可以的話,在你機器上(才一台機器,dual core CPU XD)最簡單的方法就是 : 拆成兩個程式同時跑再把結果手動 merge 起來吧! : 如果不行的話... 就算用 MPI 也是沒救。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.174.51.218

12/06 08:56, , 1F
果然是幻想啊... 只是一句話, multithread programming
12/06 08:56, 1F

12/06 08:56, , 2F
和 mpi programming 都是需要很大力氣去改的
12/06 08:56, 2F

12/06 08:57, , 3F
by the way, leopard 內建 openmpi
12/06 08:57, 3F

12/06 08:59, , 4F
謝謝你 ^^ 不過內建的openmpi不支援fortran XD
12/06 08:59, 4F

12/06 10:05, , 5F
好吧,那我盡快搞一個跟內建互補的 version 出來
12/06 10:05, 5F

12/06 11:01, , 6F
你說的「按鈕就跑出來」的技術是 OpenMP... :P
12/06 11:01, 6F
文章代碼(AID): #17LmqWd2 (MacDev)
討論串 (同標題文章)
文章代碼(AID): #17LmqWd2 (MacDev)