趙玉廣,孫愛國,郎美娜,王曉軍 (吉林醫(yī)藥學院信息中心,吉林吉林 132013)
集群系統(tǒng)是隨著微處理器技術和計算機互連網(wǎng)絡技術的迅速發(fā)展而出現(xiàn)的一種并行計算系統(tǒng),它使用高速通信網(wǎng)絡將多臺原本獨立、完整的微機或工作站連接在一起,構成一個統(tǒng)一的整體,使之可作為一種單一的計算資源來使用。集群與SMP(對稱多處理)和MPP(大規(guī)模分布式處理)相比,具有更高的可擴展性、可用性和易維護性,而且價格低,性價比高:相對于SMP、MPP類型的大型主機而言,使用相同等級的集群,價格僅為大型主機的六分之一。更重要的是,由于集群系統(tǒng)基于IA(IntelArchitecture)構架,采用的是商用處理器和商用高速網(wǎng)絡,并且采用消息傳遞的編程模型,使其開發(fā)的程序具有很高的通用性和可移植性,可應用于不同的并行計算機?;诩杭夹g的高性能計算平臺已成為并行計算系統(tǒng)發(fā)展的一種新主流技術,為磁約束聚變研究的大規(guī)模計算問題提供了一個有效解決途徑。
集群是一種并行處理系統(tǒng),由很多連接在一起的獨立的計算機組成,像一個整體的計算資源一樣協(xié)同工作。計算機節(jié)點可以是一個單處理器或多處理器的系統(tǒng),如PC、工作站或SMP,它擁有內存、I/O設備和操作系統(tǒng)。集群系統(tǒng)一般是指物理上分散的兩個或多個計算機節(jié)點通過局域網(wǎng)絡連接在一起,對于用戶和應用程序來說像一個單一的系統(tǒng),可以提供一種高性價比、高性能或高可靠性的解決方法。典型的集群系統(tǒng)的結構如圖1所示。
網(wǎng)絡接口硬件負責在節(jié)點間通過網(wǎng)絡傳送和接收數(shù)據(jù)包。集群通常使用網(wǎng)絡通信協(xié)議在其節(jié)點間進行快速通信。集群各節(jié)點可以像集成的計算資源一樣共同工作,而集群中間件負責為獨立但互聯(lián)的計算機對外提供統(tǒng)一的系統(tǒng)映象和易用性。編程環(huán)境包括消息傳遞庫、調試器和性能分析器,它可以為應用程序的開發(fā)提供可移植的、有效和易用的工具。
圖2是高性能計算集群硬件和網(wǎng)絡體系結構圖。從圖中可以看出,整個系統(tǒng)由兩類設備組成:節(jié)點和交換網(wǎng)絡。
高性能計算集群中的節(jié)點按功能的不同,可以劃分為兩種類型:管理節(jié)點和計算節(jié)點。系統(tǒng)由1個管理節(jié)點和64個計算節(jié)點構成。
管理節(jié)點是集群系統(tǒng)各種管理措施的控制節(jié)點。主要承擔兩種任務:一方面為計算節(jié)點提供基本的網(wǎng)絡服務,如DHCP、NIS、NFS等,同時負責調度計算節(jié)點上的作業(yè);另一方面,負責監(jiān)控集群中各個節(jié)點和網(wǎng)絡的運行狀況,通常的集群管理軟件也運行在這個節(jié)點上。管理節(jié)點還是外部世界訪問集群系統(tǒng)的網(wǎng)關,用戶通常登錄到這個節(jié)點上編譯并運行作業(yè)。系統(tǒng)中采用PC服務器(CPU為Dual IntelXeon 3 GHz/2MB;內存4 GB)作為管理節(jié)點。
計算節(jié)點是整個集群系統(tǒng)的計算核心。它的功能就是執(zhí)行計算,一般可根據(jù)不同的需要和預算來決定采用什么樣的配置。隨著英特爾架構處理器性能的不斷提高,越來越多的高性能計算系統(tǒng)使用基于英特爾架構的服務器系統(tǒng)作為計算節(jié)點。此外,考慮到計算機系統(tǒng)在處理器、內存和輸入/輸出系統(tǒng)三部分之間的通信帶寬的平衡性,一般來講,采用雙路處理器為高性能計算系統(tǒng)的節(jié)點是最佳的平衡點。系統(tǒng)中采用SMP服務器(CPU為Dual IntelXeon 3 GHz/2 MB)作為計算節(jié)點。由于服務器是64位的CPU和64位的Linux操作系統(tǒng),因此內存的尋址能力有了很大提高。
系統(tǒng)中每臺計算機都自帶磁盤,將這些磁盤存儲空間配置成兩個文件存儲系統(tǒng),把高性能SCSI磁盤單獨配置為一個文件系統(tǒng),用于保存結果數(shù)據(jù);通過建立并行文件系統(tǒng),把所有計算節(jié)點的磁盤存儲空間配置成一個超大容量的文件存儲系統(tǒng),由于采用了并行存儲技術,使得該文件系統(tǒng)的存取速度更快,它被用于數(shù)據(jù)交換頻繁的中間計算數(shù)據(jù)的存儲。
為了提高通信速度,在設計時將計算數(shù)據(jù)與管理數(shù)據(jù)進行分離,使計算數(shù)據(jù)與管理數(shù)據(jù)由不同的網(wǎng)絡鏈路進行傳輸通信。因此,高性能計算集群系統(tǒng)中必須包含兩個網(wǎng)絡:管理網(wǎng)絡和計算網(wǎng)絡。管理網(wǎng)絡用于對集群中各節(jié)點發(fā)送管理命令,通過管理網(wǎng)絡,RSH、Telnet和SSH等TCP協(xié)議被用來管理集群設備。管理網(wǎng)主要用于傳遞管理信息,通信量相對較少,交換機采用標準千兆交換機連接,其交換機之間互聯(lián)帶寬為1 GB。計算網(wǎng)絡用于計算節(jié)點間的高速通信,通常由特殊的高速網(wǎng)絡設備構成。當大規(guī)模計算中涉及到中細粒度的并行處理時,由于計算節(jié)點間有較高的通信需求,計算網(wǎng)絡的性能會成為集群構建中非常重要的問題,目前,高性能計算集群的主要瓶頸通常也是雙工的網(wǎng)絡通信、延遲和全局同步。因此,系統(tǒng)中采用千兆以太網(wǎng)用于計算網(wǎng)絡,考慮性能價格比和端口間高速通信的要求,采用性價比較高的桌面堆疊式高速千兆交換機作為該網(wǎng)的匯聚連接設備,交換機通過堆疊連接端口實現(xiàn)互聯(lián),其互聯(lián)帶寬為96 GB。
本系統(tǒng)所需要的軟件涉及節(jié)點機操作系統(tǒng)、并行編程軟件、集群管理軟件、編譯器、程序庫、系統(tǒng)性能分析與程序調優(yōu)工具軟件等。圖3為高性能計算集群軟件的組成和結構,以及各層次軟件相應的服務。
操作系統(tǒng)是任何計算機系統(tǒng)的軟件基礎,相對于桌面系統(tǒng)而言,集群系統(tǒng)對操作系統(tǒng)的任務調度和文件管理方面的要求更高。這方面的操作系統(tǒng)包括Unix、Windows NT和Linux。Windows NT操作系統(tǒng)本身在穩(wěn)定性方面存在缺陷,而商用的Unix系統(tǒng)價格昂貴,所以集群系統(tǒng)采用的操作系統(tǒng)主要是Linux系統(tǒng)。Linux是遵守GPL公共源碼開放協(xié)議的類Unix系統(tǒng),提供了GNU軟件和標準化的MPI消息傳遞機制,更重要的是在普通PC機上提供了對高性能網(wǎng)絡的支持,這樣就大大推動了基于Linux的集群系統(tǒng)的發(fā)展。系統(tǒng)中節(jié)點機的操作系統(tǒng)使用了RedHat企業(yè)版LinuxAS 4.0。
3.2.1 編譯器
對于科學研究中的數(shù)值計算,編譯器的優(yōu)劣對生成的程序的執(zhí)行效率有著非常明顯的影響。系統(tǒng)中安裝配置了應用最廣的GNU C/C++和Fortran編譯器以及針對至強處理器進行過專門優(yōu)化的,基于Linux平臺的Intel C++和Fortran9.0編譯器。其中Intel編譯器作為主要編譯器,一般應用都盡可能用Intel編譯器來編譯,以便獲得較好的運行性能。
3.2.2數(shù)學庫
聚變模擬研究中最基本的計算包括矩陣運算和線性方程組的求解,這方面英特爾的數(shù)學核心庫(Math KernelLibrary)有很好的支撐,它是一個包括線性代數(shù)、快速傅里葉變換和矢量超越函數(shù)等在內的軟件庫,并針對最新英特爾處理器進行了專門優(yōu)化。
3.2.3開發(fā)工具
開發(fā)工具包括并行調試器和性能分析器。調試是程序開發(fā)的重要部分,并行程序尤其難調試,更需要調試器的支持。本系統(tǒng)構建中采用了Etnus公司的TotalView,它是一款著名的第三方并行調試器,提供對Linux的支持,對C、C++、Fortran程序的圖形化符號調試,可以調試多線程、多進程和集群應用程序。
程序性能分析可以幫助用戶找到程序中最費時的部分,從而集中精力進行改進和優(yōu)化,是改進程序性能的有效手段。系統(tǒng)中采用 IntelTraceAnalyzer&Trace Collector集群分析軟件來提供基于事件的跟蹤分析和跟蹤數(shù)據(jù)采集。通過同時多個事件的采樣,多線程分析,直接多重運行比較,可以按進程、線程、模塊、函數(shù)或指令地址來查看數(shù)據(jù),實時監(jiān)視、實時分析,幫助調試確定軟件和硬件的性能瓶頸,并提供解決瓶頸問題的原因分析和揭示改進方法。采用IntelVtune性能分析器來幫程序優(yōu)化人員快速識別熱點問題并提出代碼改進意見,從而有助于提高代碼性能和縮短代碼執(zhí)行時間。
根據(jù)不同的并行程序的開發(fā)模式,集群應用支撐層可采用不同的通信標準接口。共享內存模式:在共享內存模型中,數(shù)據(jù)的交換通過隱含地使用共享內存來完成。目前流行的共享內存模式開發(fā)標準是OpenMP[3],支持的編程語言包括 Fortran、C 和 C++。
消息傳遞模式:在消息傳遞模式中,一個并行程序由多個并行任務組成。每個并行任務擁有自己的數(shù)據(jù)并對其進行計算操作。任務之間數(shù)據(jù)的交換是通過顯示的消息傳遞語句來完成的。
現(xiàn)在廣泛使用的消息傳遞模型是MPI(Message Passing Interface)。它是一種工業(yè)標準的API規(guī)范,專門為多處理器計算機和計算機集群上獲得高性能計算而設計。MPI具有很好的可移植性和可擴展性,可以被絕大部分并行環(huán)境支持。它是在標準的串行程序設計語言(Fortran、C/C++)的基礎上,再加入實現(xiàn)進程間通信的MPI消息傳遞庫函數(shù)。MPI既可以在擁有多臺獨立計算機的集群中使用,也可以在共享內存的計算機上使用。
MPI的實現(xiàn)包括MPICH、LAM、IBM MPL等多個版本,最常用穩(wěn)定的是MPICH,目前Linux上使用的MPI基本上都是MPICH。MPICH含三層結構,最上層是MPI的API,基本上是點到點的通信以及在點到點通信基礎上構造的Collective通信;中間層是ADI(AbstractDevice Interface)層,是對各種不同的底層通信庫的不同接口的一個設備虛擬層;底層是具體的底層通信庫,例如p4和socket等通信接口。
從最終用戶看來,集群系統(tǒng)就好像一臺計算機,很多用戶可以同時使用這個系統(tǒng)。但是,當太多用戶使用集群系統(tǒng)時,管理計算任務的遞交、控制計算任務的運行、區(qū)分用戶運行的權限等都是一個十分困難的工作。如果沒有一個好的管理,并行計算機利用效率就很低,系統(tǒng)性能也會變得很差。作為高性能并行計算平臺軟件系統(tǒng)的重要組成部分,資源管理系統(tǒng)軟件可以根據(jù)用戶的需求,統(tǒng)一管理和調度大型服務器的軟硬件資源,保證用戶作業(yè)公平合理地共享計算資源,提高系統(tǒng)的吞吐率和利用率。平臺構建中采用了TORQUE作業(yè)管理系統(tǒng)(圖4)。
TORQUE是基于PBS項目的開源軟件,是開放源代碼軟件OpenPBS的改進版。該軟件提供了對集群計算資源的管理。用戶通過單一切入點使用qsub命令提交作業(yè)腳本(即用戶對計算機資源的請求),PBS服務(pbs_server)將這些作業(yè)放入隊列并由調度器(pbs_sched)檢查作業(yè)隊列,直至可以有足夠的硬件資源來執(zhí)行它們,將它們從隊列送往執(zhí)行器(pbs_mom),執(zhí)行器執(zhí)行腳本,監(jiān)控執(zhí)行狀況并在整個過程結束后將執(zhí)行情況記錄下來。
圖4 TORQUE結構
用于聚變研究的集群環(huán)境是多樣和復雜的,在集群系統(tǒng)中通常裝有多個版本的編譯器、應用程序和輔助的算法庫。通常情況下,這些軟件需要設置它自定義的環(huán)境變量,對于不熟悉集群系統(tǒng)環(huán)境的用戶而言,要正確設置環(huán)境變量比較困難。使用Environment Modules能夠解決這個問題,用戶通過簡單的加載和卸載模塊到他們的環(huán)境中,從而實現(xiàn)在各個軟件版本間的無縫切換。
為了能夠更集中、高效地管理集群系統(tǒng),在系統(tǒng)中安裝了并行分布式的shell程序Pdsh和集群節(jié)點開/關檢測程序Whatsup。使用Pdsh能夠在集群的所有節(jié)點上并行執(zhí)行命令,從而不需要在每個節(jié)點去單獨執(zhí)行,這對于快速關閉系統(tǒng)和集中地在所有遠程節(jié)點上安裝軟件等應用來說非常有效。使用Whatsup能夠快速計算和輸出集群節(jié)點的開關狀態(tài),從而快速診斷出問題節(jié)點。
為了讓用戶能夠實時看到集群運行時網(wǎng)絡的負載情況,以及各節(jié)點的CPU、內存等的使用情況,在管理節(jié)點上安裝了開源的Web服務器軟件Apache,并利用Ganglia軟件對集群系統(tǒng)進行監(jiān)控。Ganglia是一個用來監(jiān)視集群系統(tǒng)狀態(tài)的工具軟件,能夠通過Web以圖表的方式直觀地監(jiān)控集群內部節(jié)點的性能狀況。
目前,該系統(tǒng)已經(jīng)具備大運算量實驗數(shù)據(jù)處理、數(shù)字模擬和控制仿真的能力,并以此為基礎開展了多項國際合作研究,引進了一系列托卡馬克數(shù)值模擬代碼,對實驗數(shù)據(jù)進行分析處理,完成了以前很難完成的一些工作,顯示了該系統(tǒng)高效的并行計算性能,以及對程序可移植性的良好支持。同時它將作為未來建立中國數(shù)字TOKAMAK的基礎,并為大規(guī)模電力系統(tǒng)計算提供了有力的技術支持。