我正在我的 4 核 PC 上使用 GNU Octave 4.0.0 計算蒙特卡羅模擬。模擬需要將近 4 個小時來計算腳本 50,000 次(具體到我的問題),這是一個大量的計算時間。我想知道是否有一種方法可以在多個核心上同時運行 Octave 以減少計算時間。
提前致謝。
答案1
GNU Parallel 不會執行多線程,但它將要進行多處理,這對你來說可能就足夠了:
seq 50000 | parallel my_MC_sim --iteration {}
預設情況下,每個 CPU 核心有 1 個進程,並確保兩個並行作業的輸出不會混合。
您甚至可以將這種並行化放入 Octave 腳本中。看https://www.gnu.org/software/parallel/parallel_tutorial.html#Shebang
GNU Parallel 是一個通用並行器,可以輕鬆地在同一台電腦或多台您可以透過 ssh 存取的電腦上並行運行作業。它通常可以代替for
循環。
如果您想要在 4 個 CPU 上執行 32 個不同的作業,則並行化的直接方法是在每個 CPU 上執行 8 個作業:
相反,GNU Parallel 在完成後會產生一個新進程 - 保持 CPU 處於活動狀態,從而節省時間:
安裝
如果您的發行版未打包 GNU Parallel,您可以進行個人安裝,不需要 root 存取權。這樣做可以在 10 秒內完成:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
其他安裝選項,請參閱http://git.savannah.gnu.org/cgit/parallel.git/tree/README
了解更多
查看更多範例:http://www.gnu.org/software/parallel/man.html
觀看介紹影片:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
瀏覽本教學:http://www.gnu.org/software/parallel/parallel_tutorial.html
註冊電子郵件清單以獲得支援:https://lists.gnu.org/mailman/listinfo/parallel