[問題] 平行運算 ParallelTable

看板Mathematica作者 (別再睡了起床了愛麗)時間8年前 (2016/04/02 16:27), 8年前編輯推噓0(0021)
留言21則, 2人參與, 最新討論串1/1
最近遇到計算量較大的問題,想使用Mathematica的平行運算功能節省時間 原本以為直接把Table換成ParallelTable就可以了,但是事情似乎沒這麼簡單 比方說產生隨機變數的時候ParallelTable會顯示一些不存在的錯誤 http://i.imgur.com/YLWcfKF.png
這還不是甚麼大問題,反正還是算得出一樣的答案,但其他的函數就會有沒辦法計算的 狀況,像是我的Table裡有內插函數就會卡住無法計算 http://i.imgur.com/nn3JJb3.png
改成ParallelDo也遇到相同的狀況 請問使用平行運算的時候需要注意哪些問題,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.222.98 ※ 文章網址: https://www.ptt.cc/bbs/Mathematica/M.1459585635.A.202.html ※ 編輯: Absolitude (140.109.222.98), 04/02/2016 16:30:21

04/02 20:48, , 1F
沒測試純猜測:你的DistributedContexts沒設
04/02 20:48, 1F

04/02 20:49, , 2F
可以改成Automatic,預設好像是只會把Context裡的分享
04/02 20:49, 2F

04/02 20:50, , 3F
然後第一個是因為它先讀local變數(所以無法執行)然後
04/02 20:50, 3F

04/02 20:51, , 4F
再去讀主kernal的變數的關係
04/02 20:51, 4F

04/02 20:53, , 5F
然後怕沒傳到子kernal的話可以用DistributedDefine
04/02 20:53, 5F

04/02 21:36, , 6F
謝謝,第一個問題解決了!
04/02 21:36, 6F

04/02 21:37, , 7F
DistributedContexts 是第七版之後才有的函數嗎? 剛剛
04/02 21:37, 7F

04/02 21:37, , 8F
大概查一下好像沒有
04/02 21:37, 8F

04/02 21:56, , 9F
我的是9,建議最好還是手動把def.都傳到子kernal上
04/02 21:56, 9F

04/02 22:10, , 10F
我使用DistributeDefinitions["Global`"]把變數都
04/02 22:10, 10F

04/02 22:11, , 11F
傳到子kernal了,但是內插函數是每一次運算時才分別被
04/02 22:11, 11F

04/02 22:14, , 12F
定義,也不用(或者說不行)分享給其他kernal
04/02 22:14, 12F

04/02 22:16, , 13F
這樣是DistributedContexts的問題嗎?查到的這個函數
04/02 22:16, 13F

04/02 22:17, , 14F
的意思好像是把定義分享給其他kernal
04/02 22:17, 14F

04/02 23:26, , 15F
g=InverseErf[2RandomReal[]-1]&;DistributeDefinitio
04/02 23:26, 15F

04/02 23:26, , 16F
s[g];ParallelDo[Interpolation[Array[g,9]]//Plot[#[
04/02 23:26, 16F

04/02 23:27, , 17F
x],{x,1,9}]&//Print,{8}] 你試試看這個.我是沒問題的
04/02 23:27, 17F

04/03 17:57, , 18F
沒問題! 不過比方說要是在ParallelTable裡再建Table
04/03 17:57, 18F

04/03 17:58, , 19F
或Sum 或用Do進行大量相加都會出問題
04/03 17:58, 19F

04/04 20:27, , 20F
板友提供用Module搭配ParallelMap的方式看來成功了
04/04 20:27, 20F

04/04 20:28, , 21F
謝謝你們~ 不過這樣算好像非常吃記憶體@@
04/04 20:28, 21F
文章代碼(AID): #1M_u9Z82 (Mathematica)
文章代碼(AID): #1M_u9Z82 (Mathematica)