最新版的mpich簡化了運行方式,不再提供mpd開頭的命令,只需要一個mpiexec即可啟動mpi運行環境,方便了mpi編程。源代碼下載地址:http://www.mpich.org/downloads/。不過和之前的版本一樣,在運行mpi程序時,首先要配置好系統環境。
1. 安裝mpich3
從上述網址下載源代碼后,解壓,然后configure,最后make和make install。命令如下:
- root@nami:~# tar zxvf mpich-3.0.4.tar.gz
- root@nami:~# cd mpich-3.0.4/
- root@nami:~/mpich-3.0.4# ./configure --prefix=/usr/local/mpich
- root@nami:~/mpich-3.0.4# make
- root@nami:~/mpich-3.0.4# make install
2. 配置環境變量
主要是修改path,為path添加mpi的bin目錄:
- root@nami:~# vim .bashrc
- 在.bashrc文件的末尾添加:exportPATH=/usr/local/mpich/bin:$PATH
- root@nami:~# source .bashrc
- root@nami:~# echo $PATH,查看PATH變量是否發生變化;
- root@nami:~# ls /usr/local/mpich/bin,查看bin下的可執行程序;
- root@nami:~# which mpiexec,查看命令是否是我們安裝目錄下的命令
3. 配置多服務器間無密碼訪問
- 在每台服務器上都執行ssh-keygen -t rsa生成密鑰對: #ssh-keygen-t rsa,所有提示都按回車跳過。這時會在根目錄下生成一個目錄.ssh。里面有兩個文件:id_rsa和id_rsa.pub。分別表示私鑰和公鑰。
- 將每台服務器上的公鑰,即id_rsa.pub分別復制到其他的服務器:#ssh-copy-id–i ~/.ssh/id_rsa.pub root@192.168.5.***。 以上命令,可以自動將公鑰添加到名為authorized_keys的文件中,在每台服務器都執行完以上步驟后就可以實現多台服務器相互無密碼登陸了。
- 可以通過修改/etc/hosts文件將IP與host名對應,例如可添加如下行:
192.168.5.123 node1
192.168.5.124 node2
192.168.5.125 node3
到hosts的末尾。node*在實際情況中要替換成服務器的主機名,可通過hostname獲得主機名。
- 通過ssh命令訪問不同的服務器,如果不需要密碼則說明服務器之間可以無密碼訪問:#sshnode1。
4. 添加machinefile文件
該步驟是在各個服務器上指明要訪問的其他服務器,在不同的服務器上內容一樣。例如node1下的該文件內容為:
root@node1:~# cat machinefile
node1
node2
node3
5. 運行測試程序
root@nami:~# mpiexec -n 6 -machinefile~/machinefile ~/ mpich-3.0.4/examples/cpi
通過運行該命令測試是否正確安裝mpich3。注意一點可執行程序在不同服務器上的位置要一樣,否則會報錯。上述命令的結果是:
Process 2 of 6 is on node1
Process 5 of 6 is on node1
Process 0 of 6 is on node2
Process 3 of 6 is on node2
Process 1 of 6 is on node3
Process 4 of 6 is on node3
pi is approximately 3.1415926544231243, Error is 0.0000000008333312
wall clock time = 0.001908
更多的命令參數可參看官網文檔:http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4-userguide.pdf。
按照上述步驟絕大多數情況下可以正確安裝mpich3,有一點需要注意,在所有的服務器上運行的mpi版本必須一致,否則也會出錯。有時有些問題是由於防火牆導致的,在運行mpi程序時,我們可以關掉防火牆:
- 關閉防火牆
#service iptables stop
- 查看防火牆狀態
#service iptables status
但總而言之,mpich3運行過程中出現的問題要比mpich2少很多,也方便很多。