歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> RedHat+MPI+SSH科學集群安裝指南

RedHat+MPI+SSH科學集群安裝指南

日期:2017/2/28 16:06:29   编辑:Linux教程

1.系統配置
CPU --- AMD athlon 1G;AMD athlon 1.1G
RAM --- SDRAM 768M;DDR 256M
OS --- RedHat linux 7.3,2.4.18
MPI --- mpich 1.2.4,http://www-unix.mcs.anl.gov/mpi/mpich源碼下載
網絡 --- 100M realtek8139,百兆交換機

2.linux安裝
安裝過程就不多說了。唯一需要注意的是安裝時,要把SSH選為可信賴的服務。安裝以後, 應該保證各節點之間能夠用ssh相互登錄。每個節點的sshd都應該能正常提供服務。Redhat 7.x對各服務的控制其實是通過在ipchains裡面對各個端口進行訪問控制來實現的,而不是 使用tcp-wrapper的hosts.allow和hosts.deny文件來進行控制。如果安裝系統後,別的機器 無法用ssh登錄,則可以用ipchains -L命令查看ipchains rules,進行正確的配置,使得ssh 服務正常工作。若你對系統安全不是太在乎,則可以使用ipchains -F命令將所有的規則清空。

主機名:shallow sea
● 修改/etc/hosts文件,將所有節點名稱及其ip地址填入。例如:
211.64.128.129 shallow
211.64.128.217 sea
每個節點都進行類似的配置。這樣做的目的是使節點之間能夠通過shallow和sea的名稱相 互訪問。你可以通過ping noden 或 ssh noden進行測試。

● 修改(或創建)/etc/hosts.equiv文件
將所有你允許訪問本機進行mpi計算的機器名填入,一行一個機器名。這一步是為了使節點 對其它的節點放權。
例如,我的機器shallow的/etc/hosts.equiv文件是這樣的:
shallow #給自己放權,這樣在只有一台機器時也可以模擬並行計算環境
sea

在sea的/etc/hosts.equiv文件:
shallow #對shallow放權
sea

● 使用nfs共享文件
首先決定一個用於啟動集群計算的用戶名,不提倡使用root進行集群計算。這裡在每個節 點上建立新用戶mpi,他們的主目錄都是/home/mpi,假設用sea做為計算的服務節點,在sea 上建立~/mirror,修改文件/etc/exports,在其中增加一行: /home/mpi/mirror shallow(rw) sea(rw) 使得機器shallow和sea的用戶可以使用/home/mpi/mirror。 在其他節點shallow也建立/home/mpi/mirror,在/etc/fstab文件中增加一行: sea:/home/mpi/mirror /home/mpi/mirror nfs rw,bg,soft 0 0 這樣節點shallow即可使用mirror與sea共享文件。

● 修改~/.bash_profile文件
建議把將來計算程序放在相同的路徑上,當然也可以不放在同一個目錄下面,但是用起來比 較麻煩,需要一一指定每個節點程序的路徑。譬如你的程序為:fpi.f和a.out,把a.out放在 ~/mpi/mirror/下即可。 修改~/.bash_profile文件,主要是加入下列幾行腳本:
export PATH=$PATH:/usr/local/mpich/bin
export MPI_USEP4SSPORT=yes
export MPI_P4SSPORT=22
export P4_RSHCOMMAND=ssh
這裡我們預定了將來mpich的運行環境安裝在目錄/usr/local/mpich下面。其余的三個變量是 用來通知mpi運行環境采用ssh來作為遠程shell。

linux的運行環境到此就配置完畢了。

3.配置ssh
以設定的用於啟動mpi計算的用戶登錄,運行ssh-keygen –t dsa(SSH2)或是ssh-keygen(SSH1) –t rsa1,這將生成一個私有/公開密鑰對,分別存放在~/.ssh/id_dsa和~/.ssh/id_dsa.pub或是 ~/.ssh/identity和~/.ssh/identity.pub文件中。然後進行訪問授權,運行:
cp ~/.ssh/identity.pub ~/.ssh/authorized_keys
或是cp ~/.ssh/id-dsa.pub ~/.ssh/authorized_keys2
chmod go-rwx ~/.ssh/authorized_keys
或是chmod go-rwx ~/.ssh/authorized_keys2
ssh-agent $SHELL
ssh-add
在每個節點干一遍。
將所有節點的密鑰authorized_keys或是authorized_keys2收集起來,放到一個密鑰文件中, 然後分發到各個節點。這樣做的目的是使各節點相互之間訪問無需輸入密碼。在每個節點登 錄其它節點,ssh shallow,則在~/.ssh/下生成一個known_hosts文件,裡面記錄登錄用戶密鑰。

4.下載、編譯、安裝mpich 1.2.3
下載最新的mpich 1.2.4:

ftp://ftp.mcs.anl.gov/pub/mpi/mpich.tar.gz。拷貝到一個臨時目錄下, 我放在/home/mpi/mirror下了。 首先,用tar xvfz mpich.tar.gz解壓。生成mpich-1.2.4目錄。 切換到mpich-1.2.4目錄。
運行預處理:./configure -c++=pgCC -cc=pgcc -fc=pgf77 -f90=pgf90
-cflags="-Msignextend -tp athlon -DUSE_U_INT_FOR_XDR -DHAVE_RPC_RPC_H=1"
-fflags="-tp athlon" -c++flags="-tp athlon" -f90flags="-tp athlon"
-prefix=/usr/local/mpich -opt=-fast -rsh=ssh
我采用了Portland Group的編譯器,因此需要在預處理時指定使用的編譯器和常用的選項, -tp athlon為AMD athlon產生代碼。mpich的安裝位置為/usr/local/mpich,運行環境的遠程shell 為ssh。 -DUSE_U_INT_FOR_XDR -DHAVE_RPC_RPC_H=1在有的系統上不需要 有時候需要設置環境變量:
setenv LIBS "-L/usr/local/pgi/linux86/lib -lpgftnrtl -lpgc"

編譯:make
安裝:make install

修改件/usr/local/mpich/share/util/machines/machines.LINUX。指定可供集群計算的節點,我的是這個樣子的:
shallow
sea
若是多CPU計算機,需要在節點名稱後用:num加以說明。
每個節點都這樣干一遍。

5. 測試並行計算
以設定的用戶登錄(我的是mpi)sea,將mpich1.2.4/examples/basic/fpi.f文件拷貝到 ~/mpi/mirror下,編譯:
mpif77 fpi.f,生成a.out文件,運行:
mpirun -np 2 a.out
這裡采用2個節點進行計算。進行ssh連接後,程序等待輸入,這時可以在節點機上用命令:
ps -A | grep aout
查看進程,應該能看到數個fpi進程,其中第一個是本機所執行的進程,其它的是異地進程 鏡像。在sea上輸入一個整值,再次在各節點上執行
ps -A | grep a.out
可以發現計算時間在不斷增長,表明計算的確是在多台主機上同時進行的。 至此,整個安裝配置過程結束,如果有問題,多看看mpich手冊都可以解決。

Copyright © Linux教程網 All Rights Reserved