如果我需要「並行」運行很多串行程序(因爲問題很簡單但很耗時 - 我需要爲同一個程序讀取許多不同的數據集),如果我只使用一個節點,則解決方案很簡單:。我所做的只是在每個命令之後繼續提交帶有&符號的串行作業,例如在作業腳本中:PBS批處理系統是否跨節點移動多個串行作業?
./program1 &
./program2 &
./program3 &
./program4
這將自然地運行在不同的處理器上的每個串行程序。這適用於登錄服務器或獨立工作站,當然也適用於只需要一個節點的批量作業。
但是如果我需要運行同一程序的110個不同實例來讀取110個不同的數據集呢?如果我使用提交110 ./program#命令的腳本提交給多個節點(比如14),那麼批處理系統會在不同節點上的不同處理器上運行每個作業,還是會嘗試將它們全部運行在同一個節點上, 8核心節點?
我試圖使用一個簡單的MPI代碼來讀取不同的數據,但會導致各種錯誤,110個進程中有100個成功,其他崩潰。我也考慮過作業陣列,但我不確定我的系統是否支持它。
我已經在個別數據集上廣泛測試了串行程序 - 沒有運行時錯誤,並且我沒有超過每個節點上的可用內存。
非常感謝,我現在正在實施您的一些建議。 – 2011-03-28 17:04:07
Gnu並行+1 - 一個奇妙的工具。 – Owen 2014-08-29 04:15:05