Linux下mpi環(huán)境配置與執(zhí)行步驟(Ubuntu為例)
以兩臺計算機為例,將這兩臺計算機應用于MPI運行環(huán)境。
第一步:在兩臺機器上安裝Linux 操作系統(tǒng)
我安裝的是ubuntu 12.04,主機名隨便你自己取,我命名兩臺機器為sinco和cosin。
第二步:為兩臺機器設置固定的IP
當然,我這里假設兩臺機器屬于同一個局域網(wǎng)中。
我設置sinco的IP為192.168.0.2
??????????? cosin的IP為192.168.0.3
第三步:設置通過主機名登錄(需要ROOT)
編輯sinco上的/etc/hosts 文件,文件的前幾行修改成如下形式
127.0.0.1?????localhost 192.168.0.2???sinco 192.168.0.3???cosin
編輯cosin上的/etc/hosts 文件,文件的前幾行也他哦功能樣修改成如上形式
第四步:設置無密碼登錄
我默認兩臺機器上已經(jīng)安裝了ssh服務器,如果不能ssh登錄,安裝一下ssh就行了。別忘了安裝就行。
在sinco上,你的用戶目錄下進入 .ssh 目錄,如果沒有這個目錄,就先創(chuàng)建他,進入之后,執(zhí)行下面的命令:
執(zhí)行:
ssh-keygen?-t?dsa
在.ssh目錄下會產(chǎn)生兩個文件,id_dsa? id_dsa.pub。
執(zhí)行:
?cat?id_dsa.pub?>>?authorized_keys
把id_dsa.pub和authorized_keys一起拷貝到cosin機器上的.ssh目錄下,如果你也想從cosin機器上無需密碼登錄回sinco機器上,只要將id_dsa一起拷貝到cosin的.ssh目錄下就行了。
實驗一下前四步是否成功,在sinco上執(zhí)行ssh cosin,如果沒有密碼就登錄上去了,說明成功了。如果不行,你就需要在看看是不是做錯哪個步驟了。
第五步:編譯和安裝MPICH
我用的版本是MPICH-3.0.4 , 下載后,解壓,安裝配置如下:
./configure?--enable-fc?--enable-cxx?--enable-romio?--enable-threads=multiple?--prefix=${HOME}/soft/mpich2/3.0.4?--with-pm=mpd make make?install
兩臺機器都要這樣安裝MPICH
第六步:設置環(huán)境變量
由于我安裝到了非標準目錄下,所以要設置下環(huán)境變量。
我用的是bash shell,編輯~/.bashrc
在文件的末尾,添加如下幾行
export?PATH=${HOME}/soft/mpich2/3.0.4/bin:${PATH} export?LD_LIBRARY_PATH=${HOME}/soft/mpich2/3.0.4/lib:${LD_LIBRARY_PATH} export?MANPATH=${HOME}/soft/mpich2/3.0.4/share/man:${MANPATH}
兩臺機器的.bashrc都要這樣設置
第七步:設置進程管理器
我用的是mpd,這一點在mpich編譯的時候就指定了。
在兩臺機器上,編輯${HOME}/mpd.hosts
添加如下兩行:
sinco:4 cosin:4
4指的是CPU的個數(shù),我假設兩臺機器都有四個CPU。
在兩臺機器上編輯${HOME}/.mpd.conf文件,添加一行:
MPD_SECRETWORD=mypasswd
第八步:啟動與測試進程管理器
我在sinco啟動進程管理器,
mpdboot?-n?2
-n 2 指定啟動兩個節(jié)點。
測試一下:
mpdtrace
如果輸出兩個主機名,說明測試成功。
測試下mpiexec
mpiexec?-n?2?ls?-l
看下輸出結果是否正確。
第九步:執(zhí)行自己的MPI程序
我現(xiàn)在用的機器是兩臺獨立的機器,他們沒有共享硬盤空間,所以,我只能從一個機器拷貝到另一個機器執(zhí)行程序,例如我在$HOME目錄下有個mpi01.exe,想讓他在兩個機器上運行下??梢赃@樣做。
將這個程序拷貝到另一個機器上的$HOME目錄下。
然后執(zhí)行:
mpiexec?-wdir?$HOME?-n?2?./mpi01.exe