Parallelism

在多個核心上執行 GNU Octave 腳本

  • February 27, 2017

我正在我的 4 核 PC 上使用 GNU Octave 4.0.0 計算蒙特卡羅模擬。模擬需要將近 4 個小時來計算腳本 50,000 次(特定於我的問題),這在計算上花費了很多時間。我想知道是否有一種方法可以同時在多個核心上執行 Octave 以減少計算時間。

提前致謝。

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 並行調度

安裝

如果沒有為您的發行版打包 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

引用自:https://unix.stackexchange.com/questions/283939