2013年10月30日 星期三

在 Ubuntu 上安裝 Open-MPI

在 Ubuntu 上安裝 Open Message Passing Interface 的心得

主要參考網站:海豹雜記,使用 Ubuntu Linux 12.04 與 OpenMPI 架設 Cluster

我所認知的 MPI


以程式的角度來看,與 Linux fork() 程式差不多。只是被 fork() 出來的程式,可以在其它台電腦上執行。其執行情形、結果可透過 MPI 傳回。

如何安裝

IP 及 hosts 的設定與 hadoop 一樣,另外,也是要設定 ssh key。
然而因為 MPI 不像 hadoop 一樣,有專門的部份管理 File System;且該程式在執行時,所以機台上的設定、程式位置等,都要一樣。所以要自己設定 Network File System。

Master 端設定

安裝 NFS Server
sudo apt-get install nfs-kernel-server
設定 NFS,把/home 掛到 /export/home 上,方便存取
sudo mkdir /export
sudo mkdir /export/home
sudo mount --bind /home /export/home
設定 /etc/fstab,加入一行指令,這樣每次開機會自動掛載
/home /export/home none bind 0 0
更改 /etc/default/nfs-kernel-server
NEED_SVCGSSD=no
更改 /etc/default/nfs-common
NEED_IDMAPD=yes
NEED_GSSD=no
設定 /etc/exports,很明顯的,這是在告訴說,誰可以掛載哪邊。要注意的是,IP 要設定自己的網段。
/export 192.168.0.0/24(rw,fsid=0,no_subtree_check,sync)
/export/home 192.168.0.0/24(rw,nohide,insecure,no_subtree_check,sync)
動新啟動 NFS Server 與 idmapd,這部份,不是 start 就是 restart,要注意
sudo /etc/init.d/nfs-kernel-server restart
sudo start idmapd

設定 NFS Client

安裝 NFS Client
sudo apt-get install nfs-common
設定 /etc/default/nfs-common
NEED_IDMAPD=yes
重啟 idmapd,還是一樣,不是 start 就是 restart
sudo service idmapd start
設定 /etc/fstab
master:/home /home nfs4 _netdev,auto 0 0

之後安裝 MPI 就可以了
sudo apt-get install libopenmpi-dev openmpi-bin openmpi-doc


常用指令:
mpicc hello.c -o hello
mpiexec --host slave1,slave2 -n 4 hello