張克非, 張憲剛, 梅 栴, 鄭秀紅
(沈陽化工大學(xué)計算機科學(xué)與技術(shù)學(xué)院,遼寧沈陽110142)
隨著科技的飛速發(fā)展,科學(xué)與工程領(lǐng)域的計算日趨復(fù)雜.如此龐大的計算任務(wù)采用串行計算是無法勝任的,并行計算是目前能夠滿足實際大規(guī)模計算需求的有效途徑.并行計算的載體是并行計算機.并行計算機分為2類[1]:一類是為面向重大應(yīng)用問題而定制的專用系統(tǒng),這類系統(tǒng)價格不菲;另一類是通用型的并行計算系統(tǒng).這類系統(tǒng)以PC集群為典型代表.PC集群造價低廉、可滿足不同規(guī)模的計算需求,特別適合小型科研機構(gòu)進行并行計算的科學(xué)研究.本文主要闡述在現(xiàn)有實驗室條件下如何構(gòu)建一個小型的基于Linux的PC集群系統(tǒng).主要包括硬件、軟件、網(wǎng)絡(luò)的設(shè)計與實現(xiàn)過程,并在此基礎(chǔ)上對并行計算進行初步研究.
PC集群系統(tǒng)是指將多臺PC機通過高速局域網(wǎng)相互連接起來,配備一定的并行支撐軟件,形成一個松散耦合的并行計算環(huán)境,協(xié)同地并行求解同一個問題[2].它可以利用本局域網(wǎng)內(nèi)的PC機資源,動態(tài)地構(gòu)造并行虛擬機,能提供高效的計算性能.PC集群系統(tǒng)具有投資小、結(jié)構(gòu)靈活、可擴展性強、通用性好等優(yōu)點,成為并行計算領(lǐng)域的一個新的發(fā)展方向.
并行計算[3]指在并行計算機上,將一個應(yīng)用分解成多個子任務(wù),分配給不同的處理器,各個處理器之間相互協(xié)同,并行地執(zhí)行子任務(wù),從而達到加快求解速度或者提高求解應(yīng)用問題規(guī)模的目的.并行計算的開展需要并行計算環(huán)境的支撐.MPI(message passing interface)[4]是目前比較著名的并行計算環(huán)境,是基于消息傳遞編寫并行程序的一種用戶界面.MPI是免費的,而且開放源代碼,同時它還具有較好的程序可移植性和較高的通信性能等特點.MPICH是目前使用最廣泛的免費MPI實現(xiàn).
集群中各個節(jié)點機之間的互相訪問需要網(wǎng)絡(luò)環(huán)境和相關(guān)協(xié)議的支持.NFS、NIS、RSH是集群系統(tǒng)實現(xiàn)高效工作所需要的最基本的網(wǎng)絡(luò)服務(wù).
NFS(Network File System)[5]是主機間通過網(wǎng)絡(luò)進行文件共享的網(wǎng)絡(luò)協(xié)議,用于多臺主機共享同一主機上的文件資源.其目的是使用戶和程序可以象訪問本地文件一樣訪問遠端系統(tǒng)上的文件.NFS本質(zhì)上是一個文件服務(wù)器,客戶端通過網(wǎng)絡(luò)將遠端的NFS SERVER共享出來的文件掛接到自己的系統(tǒng)中,使用NFS的遠端文件就如同使用本地文件一樣.微機集群一般通過NFS來實現(xiàn)文件共享.
NIS(Network Information Service)[6]是實現(xiàn)網(wǎng)絡(luò)中各機器之間重要數(shù)據(jù)分享的服務(wù).NIS在本質(zhì)上是簡單的客戶機/服務(wù)器數(shù)據(jù)庫系統(tǒng).NIS允許設(shè)立一個存放這些文件的主服務(wù)器,并把網(wǎng)絡(luò)上的每臺計算機配置為服務(wù)器的客戶,每當(dāng)客戶需要從NIS的口令文件中獲取某一項內(nèi)容時,可通過訪問NIS服務(wù)器來實現(xiàn).
RSH(RemoteShell)是遠程通信協(xié)議,通常在集群系統(tǒng)中用于MPICH的通信.在集群系統(tǒng)中,每個節(jié)點都要分擔(dān)一定的計算任務(wù),而這些任務(wù)是由主節(jié)點機分配的.主節(jié)點通過RSH命令將要執(zhí)行的命令發(fā)送給從節(jié)點機,從節(jié)點機通過RSH來完成任務(wù)的接受并根據(jù)實際情況判斷是否執(zhí)行命令.
系統(tǒng)基本配置:1臺交換機和10臺相同配置PC機構(gòu)成的同構(gòu)集群.節(jié)點機的配置為:2.4 GHz CPU,512 MB內(nèi)存,80 GB硬盤.操作系統(tǒng): Redhat Linux9.0.
拓撲結(jié)構(gòu):PC機之間通過百兆以太網(wǎng)交換機相連構(gòu)成星型拓撲結(jié)構(gòu),拓撲結(jié)構(gòu)如圖1所示.
圖1 PC集群拓撲結(jié)構(gòu)Fig.1 Topological structure of PC cluster
系統(tǒng)配置主要包括網(wǎng)絡(luò)環(huán)境配置和MPI并行環(huán)境配置2個方面.
3.2.1 網(wǎng)絡(luò)環(huán)境配置
主節(jié)點機的主機名為 node0,IP設(shè)為192.168.0.0.從節(jié)點機的主機名分別為node1~node9.IP分別設(shè)為192.168.0.1,192.168.0.2,…,192.168.0.9.主節(jié)點安裝的軟件包有 nfsutils包,portmap服務(wù)包;ypserv、yp-tools包;rsh和rsh-server包;xinetd.其中nfs-utils提供NFS服務(wù)器功能;portmap是管理遠程過程調(diào)用協(xié)議RPC(Remote Procedure Call Protocol)連接、啟動RPC必需的軟件包;ypserv是服務(wù)的主程序包,yp-tools是提供NIS客戶端設(shè)定功能的軟件包; rsh-server包括一組程序,它允許用戶在遠程機器上運行命令、登錄到其他機器以及機器間復(fù)制文件;xinetd是互聯(lián)網(wǎng)服務(wù)守護進程,為所有服務(wù)提供訪問控制.從節(jié)點安裝的軟件包有ypbind、rsh-server、xinetd.其中ypbind為NIS客戶端服務(wù)程序.在操作系統(tǒng)和所需要的軟件包安裝結(jié)束后,關(guān)閉防火墻.為集群系統(tǒng)中的各臺機器配置相同的/etc/hosts文件來進行IP地址和計算機名之間的轉(zhuǎn)換,內(nèi)容如下:
127.0.0.1 localhost.localdomain localhost
192.16 8.0.0 node0 node0
192.16 8.0.1 node1 node1
……
192.16 8.0.9 node9 node9
3.2.1.1 NFS的配置
Node0為NFS服務(wù)器,將它的/home和/usr/ local目錄輸出給其余節(jié)點.
(1)啟動 portmap服務(wù),命令如下:/etc/ rc.d/init.d/portmap start
(2)在Node0開啟NFS服務(wù):/sbin/chkcon-fig nfs on
/sbin/chkconfig nfslock on
/etc/init.d/nfslock restart
/etc/init.d/nfs restart
(3)在Node0的文件/etc/exports中編輯命令如下:/home*(rw,sync)
/usr/local*(rw,sync)
(4)在Node0上查看輸出的指定目錄:exportfs-a
(5)分別以root身份登錄到其余節(jié)點機,為分配出去的共享目錄/home和/usr/local創(chuàng)建文件/etc/fstab,編輯如下:
Node0:/home/home nfs default 0 0
Node0:/usr/local/usr/local nfs default 0 0
(6)運行命令使得系統(tǒng)啟動時自動掛接Node0上的/home目錄.
3.2.1.2 NIS配置過程
Node0為NIS服務(wù)器,以root身份登錄到Node0:
(1)啟動 portmap服務(wù),命令如下:/etc/ rc.d/init.d/portmap start
(2)在文件/etc/sysconfig/network編輯命令:NISDOMAIN=CLUSTER
(3)開啟NIS服務(wù):/sbin/chkconfig ypserv on
/etc/init.d/ypserv start
(4)初始化NIS數(shù)據(jù)庫:/usr/lib/yp/ypinit-m
(5)登錄到其余節(jié)點機,確認安裝了ypserv,yp-tools包,在文件/etc/sysconfig/network中編輯命令:NISDOMAIN=CLUSTER.執(zhí)行下述命令,開啟NIS客戶程序:
/sbin/chkconfig ypbind on
/etc/init.d/ypbind start
(6)修改/etc/nsswitch.conf文件,使用NIS用戶登錄.編輯如下:
passwd:files nis
shadow:files nis
group:files nis
hosts:files nis dns
3.2.1.3 rsh的配置過程
除安裝rsh客戶和服務(wù)程序以及開啟rsh服務(wù)之外,還需要允許用戶直接通過rsh在本機上啟動程序,即建立rsh信任關(guān)系.
(1)開啟rsh服務(wù):/sbin/chkconfig rsh on
(2)編輯/etc/hosts.equiv文件.內(nèi)容如下: Node0+
(3)在要使用rsh的每個用戶的主目錄下建立.rhosts文件,該文件控制機器上的用戶用rsh訪問本機.如在root的目錄下,新建普通用戶gf;并配置gf.rhosts:編輯/home/gf/.rhosts文件,內(nèi)容如下:Node0
(4)啟動rsh和rlogin服務(wù):chkconfig rsh on
(5)重啟xinetd進程:/etc/rc.d/init.d/xinetd restart
3.2.2 mpich的安裝和配置
mpich的編譯和安裝只要在主節(jié)點進行1次即可.
(1)下載并安裝mpich2-1.0.6.tar.gz
(2)配置,編譯安裝 mpich:cd mpich2-1.0.6
/configure-prefix=/usr/local/mpi
make
make install
(3)在每個節(jié)點創(chuàng)建配置文件mpich.sh和mpich.csh,將目錄/usr/local/mpi/bin加入到環(huán)境變量PATH.它們分別適用于用戶的登錄Shell是Bash和C-Shell的情況.
(4)運行 mpich程序:創(chuàng)建文件 machinefile,列出節(jié)點機名稱.用mpirun在指定的節(jié)點運行程序.
在已構(gòu)建的PC集群對求π值進行并行實現(xiàn),通過對串行算法和并行算法執(zhí)行效果的比較,驗證該PC集群系統(tǒng)的可行性.求解思想是在微小間隔內(nèi)用求和運算近似積分運算.設(shè)n值為將[0,1]區(qū)間所分的間隔數(shù),主機將n值發(fā)送到各個從節(jié)點機,每一個進程各自計算出一部分的矩形面積之后完成求和.算法本身具有較好的并行性,消息的傳遞只涉及n以及各個從節(jié)點機計算得到的部分和,通信開銷比較小,適合通過編制并行程序來實現(xiàn).
加速比和并行效率是最傳統(tǒng)的并行算法評價標(biāo)準(zhǔn)[7].對求解具有相同規(guī)模的同一應(yīng)用問題,并行計算加速比可定義為在單個處理器上求解問題的串行程序所花時間與P個相同處理器并行求解同一問題所花時間之比.假設(shè)某一個問題,在某個處理器上執(zhí)行所需的時間記為TS,在有P個節(jié)點的集群上的執(zhí)行時間為TP,則加速比SP=TS/TP.并行效率是衡量并行系統(tǒng)性能的另一個技術(shù)指標(biāo).P個節(jié)點的并行效率為:EP= SP/P.對P個處理器的集群而言,假設(shè)并行開銷為零,則理想加速比最大值為P,理想的并行效率為100%.
測試結(jié)果如表1所示.從測試結(jié)果可以看出,對于同一規(guī)模的問題,隨著參與運算節(jié)點數(shù)目的增加,計算時間減少,但節(jié)點達到一定數(shù)目后,對計算時間的影響越來越不明顯.
表1 加速比和效率Table 1 Speed-up and efficiency
由圖2可知:隨著參與運算節(jié)點數(shù)目的增加,加速比提高;在節(jié)點數(shù)目超過8時,加速比的提高速度明顯變慢.原因是在節(jié)點數(shù)目較小時,通信時間相對于計算時間的比例較少,可以忽略不計;但是當(dāng)節(jié)點數(shù)目達到一定數(shù)值時,通信開銷急劇增加,導(dǎo)致加速比的增速減緩.隨著參與運算節(jié)點數(shù)目的增加,計算效率降低.但本系統(tǒng)的加速比和理想加速比十分接近,同時系統(tǒng)的效率隨參與運算節(jié)點數(shù)增加的下降也比較緩慢.因此,本系統(tǒng)具有一定的并行性能,具有一定的應(yīng)用價值.在實際應(yīng)用系統(tǒng)進行并行計算過程中,要結(jié)合具體應(yīng)用問題本身的特點,合理地利用系統(tǒng)資源、設(shè)計高效的并行算法、盡量做到負載平衡以獲得最佳的加速比和效率.
圖2 不同節(jié)點數(shù)目的加速比Fig.2 Speed-up with different node number
PC集群具有較高的應(yīng)用價值,利用局域網(wǎng)和現(xiàn)有的硬件資源可構(gòu)建中小型性能優(yōu)良、高性價比的并行計算環(huán)境.通過本文的研究工作,希望能夠給需要進行高性能并行計算的用戶提供一個廉價、高效、可靠的開發(fā)平臺.
[1] Culler D E.Parallel Computer Architecture-A Hardware/Software Approach(Second edition)[M].北京:機械工業(yè)出版社,1999:20-33.
[2] 黎康保,黎文樓.用PC機群組構(gòu)并行超級計算機[J].計算機工程,2000,26(9):1-3.
[3] Dongarra J.并行計算綜論[M].莫則堯,譯.北京:電子工業(yè)出版社,2005:2-9.
[4] 都志輝.高性能計算之并行編程技術(shù):MPI并行程序設(shè)計[M].北京:清華大學(xué)出版社,2001:13-15.
[5] 金潔珩,王娟.Red Hat Linux 9系統(tǒng)管理[M].北京:機械工業(yè)出版社,2004:255-260.
[6] 黃麗娜,管佩森,陳彩可.Red Hat Linux 9.0基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2004:336-337.
[7] 陳國良.并行計算:結(jié)構(gòu)、算法、編程[M].北京:高等教育出版社,2001:77-80.