我已經編寫了一個只需要1-4個cpu的代碼。但是當我在集羣上提交作業時,我必須至少採用一個節點,每個作業有16個核心。所以我想在每次提交的任務中對每個節點運行幾次模擬。 我想知道是否有辦法在一份工作中並行提交模擬。如何在一個PBS作業提交中運行多個命令
下面是一個示例: 我的代碼需要4次處理。我爲一個節點提交作業,並且我希望節點運行我的代碼的4個實例(每個實例具有不同的參數)以獲取所有16個核心。
我已經編寫了一個只需要1-4個cpu的代碼。但是當我在集羣上提交作業時,我必須至少採用一個節點,每個作業有16個核心。所以我想在每次提交的任務中對每個節點運行幾次模擬。 我想知道是否有辦法在一份工作中並行提交模擬。如何在一個PBS作業提交中運行多個命令
下面是一個示例: 我的代碼需要4次處理。我爲一個節點提交作業,並且我希望節點運行我的代碼的4個實例(每個實例具有不同的參數)以獲取所有16個核心。
是的,當然;通常這樣的系統將有如何做到這一點的說明,like these。
如果你有(比如說)4x4-cpu作業,你知道每個作業都會花費相同的時間,並且(比方說)你希望它們在4個不同的目錄下運行(這樣輸出文件更容易跟蹤的),使用shell符號在後臺運行它們各自然後等待所有後臺任務完成:
(cd jobdir1; myexecutable argument1 argument2) &
(cd jobdir2; myexecutable argument1 argument2) &
(cd jobdir3; myexecutable argument1 argument2) &
(cd jobdir4; myexecutable argument1 argument2) &
wait
(其中myexecutable argument1 argument2
僅僅是無論你平時運行程序的佔位符;如果使用mpiexec
或類似的東西,就像你通常使用它一樣,如果你使用的是OpenMP,你可以在上面的第一行之前導出環境變量OMP_NUM_THREADS
。
如果您有許多任務不會全部花費相同的時間長度,那麼最好比上面的(比如說)4個任務分配得更好,並讓像gnu parallel這樣的工具根據需要啓動工作,例如描述在this answer中。
謝謝,我會研究它。但如果系統沒有gnu parallel,我可以將它安裝在我的home文件夾中並使用它嗎?我沒有root權限。 – solora
是;只需下載並運行'./configure --prefix = $ HOME && make && make install'。這是一個相當簡單的安裝,並且足夠有用的是,無論如何,系統管理員應該可以隨時安裝系統。語法可能有點複雜;這裏有一個很好的教程 - http://unethicalblogger.com/2010/11/11/gnu-parallel-changed-my-life.html –