這里我只是以兩臺機(jī)子作為參考例子,一臺裝有UBUNTU11.10,另外一臺是在虛擬機(jī)中安裝同樣版本的UBUNTU11.10,這里我也只是做一個測試,后面可能會遷移到集群中。用到的MPICH版本是mpich2-1.4.1p1。廢話不多說,現(xiàn)在開始!
首先MPI的配置分為幾個步驟,具體請參考:點擊打開鏈接,這里我簡要說明一下:
安裝前的準(zhǔn)備
安裝MPICH步驟
設(shè)置環(huán)境變量
添加配置文件
配置SSH
測試
1.安裝前的準(zhǔn)備
首先肯定是需要安裝GCC和G++編譯器,這個直接apt-get就OK了,網(wǎng)上也有好多教程。
2.安裝MPICH步驟
2.1 首先將下載的文件解壓,下載的文件在當(dāng)前用戶目錄里面的“下載”目錄里面,我直接解壓到當(dāng)前目錄:
[plain] view plaincopy
tar xvfz mpich2-1.4.1p1.tar.gz
或者直接到文件所在目錄,直接右鍵單擊,選擇“解壓縮到此處”也可以。
2.2 標(biāo)準(zhǔn)的 configure, make, make install 步驟,這里我是安裝官方文檔配置的,可以查看解壓后的README文檔參考:
由于是bash,因此選擇以下命令,prefix指示安裝路徑,USERNAME就是當(dāng)前用戶的用戶名,由于這里我不用fortran,因此加上參數(shù)(--disable-f77 and --disable-fc),在此之前當(dāng)然要建立安裝MPICH的路徑,也就是:
[plain] view plaincopy
mkdir mpich2-install
接下來就是configure了:
[plain] view plaincopy
./configure --prefix=/home/<USERNAME>/mpich2-install --disable-f77 --disable-fc 2>&1 | tee c.txt
而且在之前的安裝過程中,我發(fā)現(xiàn)如果不禁止fortran,安裝會出問題,會導(dǎo)致MPICH2安裝不完全而出錯,所以這里建議不用的選上。
接下來就是make了:
[plain] view plaincopy
make 2>&1 | tee m.txt
下面就是make install了:
[plain] view plaincopy
make install 2>&1 | tee mi.txt
這樣經(jīng)過漫長的等待,最后在mpich2-install中會生成以下文件:
至此,MPICH2安裝完成。
3.設(shè)置環(huán)境變量
這里設(shè)置環(huán)境變量主要是將MPICH的安裝目錄加到系統(tǒng)環(huán)境變量中,這里我在/etc/profile中加入對應(yīng)的路徑:
用vim編輯器打開/etc/profile:
[plain] view plaincopy
sudo vim /etc/profile
輸入密碼之后,將下面語句添加到最后一行:
[plain] view plaincopy
export PATH=/home/luo/mpich2-install/bin:$PATH
保存強(qiáng)制退出。
最后可以用一下命令看看mpicc和mpiexec位置:
[plain] view plaincopy
which mpicc
which mpiexec
這里會顯示mpicc和mpiexec的位置,也就是在MPICH的安裝牡蠣中的bin文件夾中。
至此,環(huán)境變量設(shè)置完成。
4.添加配置文件
這里所說的配置文件主要是進(jìn)程管理的配置文件,由于UBUNTU11.10的進(jìn)程管理從mpd改為了hydra,因此導(dǎo)致我之前一直是無法配置成功,還在苦苦尋找mpd為何沒有安裝,這一點其實在官方給的文檔中有說明,不過自己當(dāng)時因為看到大片英文就頭疼,所以并沒有仔細(xì)看,導(dǎo)致浪費(fèi)了好長時間,這個教訓(xùn)要吸取。
首先在/etc下面建立目錄:
[plain] view plaincopy
sudo mkdir /etc/hydra
用vim編輯器建立hosts文件:
[plain] view plaincopy
sudo vim /etc/hydra/hosts
文件的結(jié)構(gòu)如下:
# Some Comments
MainNode:8 # other comments
Node1:2
Node2:2
每行中由冒號(:)分隔的前半部分表示節(jié)點,可以使用節(jié)點名也可以使用IP地址,貌似不區(qū)分大小寫;后半部分表示可用的CPU數(shù)量。注釋用“#”前導(dǎo)。根據(jù)你的實際情況撰寫hosts文件。這里我是將我自己的兩臺計算機(jī)名加入其中,可能在此之前需要設(shè)置/etc/hosts中IP與機(jī)器名的對應(yīng)關(guān)系:
[plain] view plaincopy
192.168.1.105 luo-UBUNTU
192.168.1.106 luo-VirtualBox
上面就是我自己的/etc/hosts文件中加入的信息。
在/etc/hydra/hosts中加入:
[plain] view plaincopy
luo-UBUNTU:1 # 192.168.1.105
luo-VirtualBox:1 #192.168.1.106
然后我們需要告訴hydra hosts文件的位置,hydra通過環(huán)境變量進(jìn)行配置,因此我們需要修改.bashrc文件:
[plain] view plaincopy
$ vim ~/.bashrc
在其中加入如下行:
[plain] view plaincopy
export HYDRA_HOST_FILE=/etc/hydra/hosts
至此設(shè)置完畢,這里參考了其他文章(點擊打開鏈接)。
5.配置SSH
這里主要是要各個機(jī)器之間能無密碼訪問,主要用到的就是SSH,因此需要一些設(shè)置。
首先,我們需要導(dǎo)出各個節(jié)點的公鑰和私鑰:
[plain] view plaincopy
$ ssh-keygen -t rsa
在運(yùn)行過程中,會提示你輸入這個輸入那個,不用管那么多,直接回車就完了。等運(yùn)行結(jié)束后,進(jìn)入.ssh目錄,你會看到公鑰和私鑰文件:
[plain] view plaincopy
$ cd ~/.ssh
$ ls
id_rsa id_rsa.pub
(可能還有其他亂七八糟的東西)
其中id_rsa就是私鑰,id_rsa.pub就是公鑰,現(xiàn)在我們需要把各個節(jié)點上的公鑰都集中發(fā)送到一個節(jié)點上,來制作授權(quán)文件(authorized_keys):
$ scp id_rsa.pub User@MainNode:/path/to/yours/id_rsa.pub-X
其中有色字體需要你根據(jù)實際情況進(jìn)行調(diào)整,這里我們講所有的公鑰發(fā)送到了MainNode,然后我們在MainNode上用這些公鑰合成一個authorized_keys:
[plain] view plaincopy
$ cp ~/.ssh/id_rsa.pub authorized_keys
$ cat /path/to/yours/id_rsa.pub-X >> authorized_keys
其中第2條語句需要反復(fù)多次,講所有的公鑰都放入authorized_keys中,這樣就做好了authorized_keys文件。然后我們分別把他拷到各個機(jī)器的.ssh目錄中:
[plain] view plaincopy
$ cp authorized_keys ~/.ssh/
$ scp authorized_keys User@SomeNode:/home/User/.ssh/
如果你現(xiàn)在試一下ssh很可能發(fā)現(xiàn)他們?nèi)耘f不好用,別急,我的話還沒有說完呢。這個東西對權(quán)限的要求很嚴(yán)格,所以我們需要更改一下必要的文件的權(quán)限(所有節(jié)點都要更改):
[plain] view plaincopy
$ chmod 755 ~
$ chmod 755 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/id_rsa
$ chmod 644 ~/.ssh/id_rsa.pub
至此,SSH配置就完成了。下面檢驗一下:
在一個主機(jī)上面SSH另一個主機(jī):
[plain] view plaincopy
ssh luo-VirtualBox
顯示下面截圖:
可以看到是無密碼登錄,首次登錄的時候可能會需要密碼,后面就不需要了。在另一個主機(jī)上面也是可以SSH連接成功的。
5.測試
將MPICH源代碼中example目錄下面的cpi拷貝至各個節(jié)點的相同目錄,這里我放在當(dāng)前目錄下面的MpiWork目錄下面,然后在主節(jié)點上面啟動程序:
[plain] view plaincopy
mpiexec -np 2 ./MpiWork/cpi
顯示如下圖:
可以看到不同的進(jìn)程分別運(yùn)行在不同的機(jī)器上。
至此MPICH2配置完成。
其中在SSH中參考了其他的文章(點擊打開鏈接),而且我也沒有這樣配置,因為自己是兩臺,網(wǎng)上這個配置有好多文章。還有一點是,不知到其他機(jī)器上面是不是需要配置MPICH2,因為我設(shè)置hydra的時候,并沒有在其他機(jī)器上面設(shè)置,只在主節(jié)點上面設(shè)置了,這個后面再研究。
posted on 2012-02-17 15:41
老馬驛站 閱讀(1031)
評論(0) 編輯 收藏 引用 所屬分類:
c++ 、
linux