2011-08-21 176 views
3

我使用的集羣有幾種主機類型 - Linux的不同發行版/版本,一些32位,一些64位,不同版本的GCC。我知道我應該使用針對GCC的特定於平臺的MPI包裝器來編譯我的程序。這一步對我來說或多或少都很清楚。編譯並運行OpenMPI程序

我的程序使用固定數量的主機,每臺主機只運行一個進程。共享內存線程由TBB處理,所以基本上我只需要MPI用於主機之間的工作分配。

最後一步是在所有主機上運行程序。事實證明,這是我不知道如何去做的部分,我的IT人員也幫不了我。

我所擁有的是爲每個主機的主機IP地址的列表(本地地址是準確的,像192.168.1.xxx)和用戶名和密碼。在所有主機上運行我的程序的步驟是什麼,只要它是具有特定於平臺的編譯器的編譯器並複製到每個主機中?任何幫助讚賞。

回答

3

您需要無密碼SSH訪問所有機器,hostfile,所有機器上的可執行文件。 確保可執行文件在所有機器上具有相同(相對)路徑。

HOSTFILE(主計算機上):

# my_hostfile 
192.168.0.205 
192.168.0.208 

命令打開MPI:

mpirun --hostfile my_hostfile programname 

對於無密碼SSH接入創造條件,~/.ssh

ssh-keygen -t rsa 

一個masterkey添加(的~/.ssh/rsa.pub一行)的內容從主計算機到一個新行在目標機器上的~/.ssh/authorized_keys2。 (相反,RSA,你可以使用其他SSH密碼。)

+0

我從來沒有使用MPI卻不需要啓動主機上的東西嗎? –

+0

@Martin:不,這是通過'mpirun'完成的。不要問我如何。 –

+0

我要去嘗試了這一點對本地集羣明天早上。 ;-) –