linux集群的安裝與平行計算
2023年12月18日
1.linux安裝
安裝過程就不多說了。需要注意的是安裝時,如果機群不與外界聯網則可以不考慮安全方面的因素而把rsh選為可信賴的服務,注意安裝相應的軟體包;如果還要與外界保持聯網,出於安全需要應把ssh選為可信賴的服務。安裝以後,應該保證各節點之間能夠用ssh相互登入。每個節點的sshd都應該能正常提供服務。主機名:node1...noden (我所構建的系統n=2)
2.建立nfs服務
在伺服器節點public目錄下建立mpi目錄,並將其配置成nfs伺服器,在/etc/exports文
件中加入一行:
/public/mpi node1(rw) node2(rw)
在客戶端節點的/etc/fstab檔案中增加一行:
sever :/pubilc/mpi nfs rw , bg , soft 0 0
將/public/mpi這個目錄從伺服器節點輸出,並裝載在各客戶端,從而便於在各節點間分發任務
127.0.0.1 localhost.localdomain localhost
192.168.1.1 node1
192.168.1.2 node2
…………………….
每個節點都進行類似的配置。這樣做的目的是使節點之間能夠通過node1 ... noden的名稱相互訪問。你可以通過ping noden 或 ssh noden進行測試。
4.修改(或建立)/etc/hosts.equiv檔案
將所有你允許訪問本機進行mpi計算的機器名填入,一行乙個機器名。這一步是為了使節點對其它的節點放權。
例如,我的node1是我用於啟動mpi集群計算的機器,其他的節點是參與計算者,在node1的/etc/hosts.equiv檔案是這樣的:
node1 #給自己放權,這樣在只有一台機器時也可以模擬平行計算環境
node2
.....
noden
在node2...noden的/etc/hosts.equiv檔案:
node1 #對node1放權
node2
......
noden
5.修改~/.bash_profile檔案
首先決定乙個用於啟動集群計算的使用者名稱,不提倡使用root進行集群計算。這裡在每個節點上建立新使用者chief,他們的主目錄都是/home/chief,必須採用同樣的密碼,將來的計算程式必須放在相同的路徑上。譬如你的程式為:fpi.f和a.out,則必須把a.out放在同樣的路境內,比如~/mpirun/a.out,每個節點都是如此。 修改~/.bash_profile檔案,主要是加入下列幾行指令碼:
export path=$path:/usr/local/mpich/bin
export mpi_usep4ssport=yes
export mpi_p4ssport=22
export p4_rshcommand=rsh 或ssh
這裡我們預定了將來mpich的執行環境安裝在目錄/usr/local/mpich下面。其餘的三個變數是用來通知mpi執行環境採用rsh(或ssh)來作為遠端shell。linux的執行環境到此就配置完畢了。
6.配置rsh 或ssh
對於採用rsh來作為遠端shell執行mpi的使用者只要保證在各個節點上都具有相同的使用者,並把這一使用者的密碼設為空密碼就可以執行了。
若採用ssh作為遠端shell則按如下配置:以你設定的用於啟動mpi計算的使用者登入,執行
ssh-keygen,這將生成乙個私有/公開金鑰對,分別存放在~/.ssh/identity和~/.ssh/i
dentity.pub檔案內。然後進行訪問授權,執行:
cp ~/.ssh/identity.pub ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
ssh-agent $shell
ssh-add
在每個節點重複一遍。試著在某一節點上登入其它節點,ssh noden,則在.ssh/下生成乙個known_hosts2檔案,裡面放著訪問該主機的金鑰,把所有金鑰收集起來,在各個節點上作同樣的拷貝。這樣做的目的是使各節點相互之間訪問無需輸入密碼。
7.開啟各項必需的服務
如果是以根使用者root 登陸系統的則可以用ntsysv命令啟動ntsysv實用程式。ntsysv 實用程式允許使用簡單的選單介面啟動或關閉各種執行等級的服務。在其中我們選擇開啟rsh ,rlogin,telnet等。也可以關閉一些服務以加快啟動速度如sendmail。
如果是使用su命令轉為root使用者的則很可能執行ntsysv並不出現ntsysvs實用程式。此時可以直接去修改/etc/xinetd.d下的rlogin, rsh ,telenet的設定。用vi編輯器開啟xin
etd.d:
vi /etc/xinetd.d
則可看到如下所示的配置檔案:
關於rsh的設定如下
# default: off
# description: the rshd server is the server for the rcmd(3) routine and, \
# consequently, for the rsh(1) program. the server provides \
# remote execution facilities with authentication based on \
# privileged port numbers from trusted hosts.
service shell
關於rlogin的設定如下
# default: off
# description: rlogind is the server for the rlogin(1) program. the server
\# provides a remote login facility with authentication based on \
# privileged port numbers from trusted hosts.
service login
關於telnet的設定如下
# default: off
# description: the telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
所有這些服務在安裝完系統之後都是預設為禁用的,要進行修改來開啟這些服務。如要通過修改啟動telenet則就需要改disable = yes為disable = no。對於其他的服務的啟動的修改與之相同。若啟動這些服務則只需要簡單執行:
#/etc/rc.d/init.d/xinetd restart
或重起計算機就可以使所作的更改生效。
c.在伺服器節點編譯、安裝fortran90編譯器
先將fortran90(我用的是intel的)編譯器拷貝至/tmp下,然後用tar xvfz fortran90
.tar.gzj解壓縮。執行./install
選擇你所要安裝的型別,如果你的機器是基於ia-32,就選擇1。如果你的機器是基於it anium(tm)-based system就選擇2。如果要停止安裝,就選擇x。選擇過之後安回車進入下一步,此時會要求你選擇 :2z0
x. exit
d. 在伺服器節點編譯、安裝mpich 1.2.3
將mpich 1.2.4:拷貝到乙個臨時目錄 下,放在/tmp下了。用root使用者登入進行編譯安裝。
1. 對mpich的安裝進行預處理:
首先,用tar xvfz mpich.tar.gz解壓。生成mpich-1.2.3目錄。切換到mpich-1.2.3目錄 。執行預處理:
./configure --prefix=/usr/local/mpi --對應於用rsh進行遠端登入的系統
./configure --prefix=/usr/local/mpi -rsh=ssh --對應於用ssh進行遠端登入的系統
這裡我們通知編譯系統mpich的安裝位置為/usr/local/mpich,執行環境的遠端shell為rsh或ssh。
2.編譯:
make
執行此命令後mpich軟體包會自動編譯形成mpi系統的函式庫,需要數分鐘的時間,根據不同的機器可以略有不同。
3.安裝:
make install
執行此命令可以將mpi軟體包安裝到由./configure --prefix選項指定mpich安裝目錄即/usr/local/mpi
修改檔案/usr/local/mpi/share/util/machines/machines.linux。如下:
node1
ndoe2
......
ndoen
這一步是通知mpich執行環境都有那些節點可供集群計算。每個節點都這樣輸入一遍。
4.測試安裝是否正確
在/usr/local/mpi/examples/basics下編譯cpi.c:
make cpi
用命令列:
../../bin/mpirun -np 2 cp
執行。將會獲得如下資訊。
processes 0 on node1
processes 1 on node2
……..………………..
如果能正常執行即證明mpich軟體包安裝完全成功。
平行計算 集群的構建(1)
其實開始的時候並不是做集群的,當時我們想的做平行計算採用微控制器來做,我個人覺得從微控制器不是可取的地方,因為從目前的專案要求來看,我們要達到的是對大量資料的快速處理能力,而不僅僅只是乙個實現並行性的問題,同時,就算實現了在後面做多處理器的開發板的時候又要從新做,所以這個方法不是我們可取的,也是不值...
搭建平行計算微機集群介紹
作為一名在校大學生,我的名字叫做李志立,非常崇拜那些宅在實驗室或者寢室的技術宅男,能夠做自己喜歡的事,而且能夠有所收穫。今年暑假,有幸跟著一位上公選課時認識的老師做了一些事,他是做智慧型汽車的,在實現智慧型化的過程中,需要用到乙個高速處理系統,而果斷選擇了rocks平行計算集群,因此我也在那裡做起了...
R與平行計算
本文在creative commons許可證下發布 什麼是平行計算?平行計算,準確地說應該包括高效能計算機和並行軟體兩個方面。不過,近年來隨著個人pc機,廉價機群,以及各種加速卡 nvidia gpu,intel xeon phi,fpga 的快速發展,現在個人電腦已經完全可以和過去的高效能計算機相...