Linux下MPI並行環境與Eclipse配置全過程。Linux + mpich2 + Eclipse

http://hi.baidu.com/evevil/item/578c89ea990324225a2d6438




我是Linux超級新手,文中難免有錯誤的地方,望指正和多多包容


硬件情況:2臺主機
主機1: 主機名:node1  IP:192.168.19.165   操作系統:CentOS 5.2  用戶:root 密碼:root
主機2: 主機名:node2  IP:192.168.19.169   操作系統:CentOS 5.2  用戶:root 密碼:root
(這裏的兩臺主機上的用戶名和密碼設置成一樣的,好像不一樣的話將會影響之後mpi程序的執行)

爲了省事,以下操作都是以root用戶進行的
1、===================配置host文件=========================
在node1和node2上
#vi /etc/hosts   打開hosts文件,修改如下:
127.0.0.1 localhost.localdomain localhost
192.168.19.165 node1
192.168.19.169 node2
(注意127.0.0.1 localhost.localdomain localhost一定不能缺,否則將可能導致之後 mpiexec運行出錯)

2、====================設置SSH信任連接====================
在node1上生成SSH祕鑰對.
#ssh-keygen -t rsa    yes,一路回車
#cat  /root/.ssh/id_rsa.pub | [email protected] "cat - >> root/.ssh/authorized_keys" 將密鑰等信息拷貝至node2中,該過程需要輸入node2上root用戶的密碼
#ssh root@node2   登陸node2
#exit
#ssh root@node2   第二次登陸node2,無需再輸入密碼了
#exit
#ssh root@node1   登陸自身一次

在node2上執行同樣的操作,只不過目標換成node1了
#ssh-keygen -t rsa    yes,一路回車
#cat  /root/.ssh/id_rsa.pub | [email protected] "cat - >> root/.ssh/authorized_keys"
#ssh root@node1 
#exit
#ssh root@node1  
#exit
#ssh root@node2  
(以上使用的ssh,如果系統安裝的ssh2,設置過程將與上有所不同)

3、=====================安裝mpich2======================
在node1和node2上:
#tar -zxvf mpich2-1.0.1.tar.gz  解壓縮
#cd mpich2-1.0.1
#./configure     --prefix==安裝路徑,指定安裝路徑時可以使用#./configure --prefix=???,不帶參數時默認安裝路徑爲/usr/loacl,我用的是默認安裝路徑
#make
#make install  安裝完成
(爲了避免未知錯誤,兩臺機器的mpich2安裝位置最好一樣)

設置環境變量:
#cd /etc/
#vi profile   編輯profile文件
添加   PATH="$PATH:/usr/local/bin"
#source profile
#which mpd    測試環境變量

創建並修改/etc/mpd.conf文件
#vi /etc/mpd.conf
內容爲
secretword=myword
#touch /etc/mpd.conf     
#chmod 600 /etc/mpd.conf     (設置文件讀取權限和修改時間,這兩步好像不能省)

創建主機名稱集合文件/root/mpd.hosts
#vi /root/mpd.hosts
文件內容如下:
node1
node2

4、=====================簡單的測試=========================
在node1上
#mpd &    啓動
#mpdboot -n 2 -f mpd.hosts   啓動2臺機器(啓動的機器數不能超過集羣中的主機數,這裏只有2臺)
#mpdtrace 觀看啓動機器
#mpiexec -n 4 /usr/local/examples/cpi     number爲使用的進程數,運行mpi自帶的測試程序(不一定存在)
#mpdallexit   退出

mpi程序的編譯
#mpicc example.cc -o example          C語言源代碼
或#mpic++ example.cc -o example      C++語言源代碼
或#mpif77 example.f -o example        Fortran語言源代碼

編譯後可以執行:
#mpdboot -n 2 -f mpd.hosts
#scp /tmp/example  root@node2:/tmp/example  (/tmp/爲剛纔編譯的程序所在文件夾)
(需要並行運算的程序在兩臺主機上所存放的路徑必須相同,文件名也必須相同我這裏都存放在/tmp/文件夾下)
#mpiexec -n 4/tmp/example

5、===================在Eclipse中開發MPI程序=================
在新建的工程上點右鍵 選擇Properties


添加include路徑,我的mpich2安裝在/usr/local




添加lib庫路徑,添加mpich,mpichxx,pthread   注:這是在linux下,與windows環境下需添加的庫不同


OK,Eclipse加MPI開發環境配置完成

參考資料:
SSH設置:
http://stevenz.blog.hexun.com/15798089_d.html
MPICH2配置:
http://www.xxlinux.com/linux/article/accidence/install/20070514/8413.html
MPI與Eclipse:
http://blog.csdn.net/cleverysm/archive/2007/06/06/1640290.aspx
一些MPI錯誤解決方法:

http://blog.csdn.net/xiaxiazls/archive/2009/09/08/4530423.aspx




在PBS任務管理系統中使用MPICH

只要將

sort -u $PBS_NODEFILE > mpd.hosts

mpdboot -f mpd.hosts -n $NNODES --rsh=/usr/bin/rsh

mpiexec -machinefile $PBS_NODEFILE -np $NNODES $RUNJOB -i $WORK_AREA/$PREFILE/$PREFILE.in -dim 2 -n 100000 -d 10000 > $PREFILE.log

mpdallexit
寫入pbs的script中就可以了
實際上包含了一個完整使用集羣的過程,只不過是提交給了任務管理系統PBS而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章