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