我正在嘗試寫一個PBS腳本。用PBS腳本並行執行
我必須在集羣中使用4個節點並運行4次可執行程序。困難的是,4所執行過的節點
眼下並行運行,一個,我剛分配的節點
#PBS -l nodes=4:ppn=1
問題是我不知道如何可以肯定的程序並行運行。我該怎麼做 ?
我正在嘗試寫一個PBS腳本。用PBS腳本並行執行
我必須在集羣中使用4個節點並運行4次可執行程序。困難的是,4所執行過的節點
眼下並行運行,一個,我剛分配的節點
#PBS -l nodes=4:ppn=1
問題是我不知道如何可以肯定的程序並行運行。我該怎麼做 ?
如果您不確定您的進程是否將同時在多個節點上啓動,則可以在代碼中使用MPI_BARRIER
函數。這將阻止所有節點執行,直到它們全部執行完此功能。
如果您不需要您的程序與其自身的其他副本通信,則不需要MPI。 MPI代表消息傳遞接口(Message Passing Interface)(MPI Forum Website),是編寫並行程序最流行的方式。網上有很多教程可以通過快速搜索找到。我建議看看他們。您可以通過自己安裝MPI庫來在自己的機器上測試。它們在大多數包管理器中都可用。最流行的開源實現是MPICH和Open MPI。如果您從頭開始,嘗試獲取最新的版本,因爲您將以這種方式從各個社區獲得更多幫助。
您可以使用mpiexec
執行一個非MPI程序,它將跨多個節點啓動(假設您設置正確),但它不會做任何事情來使它們進行通信。這必須明確完成(再次參見MPI教程)。
如果您不打算在進程之間進行通信(並行計算),我不得不想知道爲什麼要在整個羣集中運行同一程序的多個副本以開始。唯一想到的就是簡單的集羣維護實用程序,但是有比PBS/MPI設置更好的方法,我想如果您在進行集羣維護,您已經知道該如何使用。
pbsdsh是一個非常簡單的方法來完成你在說什麼。
# this will launch one copy of <executable> on each execution slot. For -l nodes=4:ppn=1
# it will launch it once per node.
pbsdsh <executable>
有時您必須根據您的環境提供pbsdsh的完整路徑。它默認爲/ usr/local/bin/pbsdsh。
您正在編寫MPI程序嗎?你的程序是否以某種方式溝通?使用PBS啓動程序基本上會在您的羣集的不同節點上創建4個程序副本,但不會使它們進行通信。你需要使用類似MPI的東西來讓它們一起執行。 –
把這個問題提交給一個答案,它更清楚你現在問什麼,我無法將我的回答放在字符限制內。 –
此線程有幫助嗎? http://stackoverflow.com/questions/18948727/naive-parallelization-in-a-pbs-file – dbeer