20世紀80年代,可以說是高性能計算機體系結構和通信技術不斷創新的年代,出現了包括MPP、SMP、集群等各種各樣的體系,以及各種各樣的互聯技術;而從20世紀90 年代以來,高性能計算應用進入全面開花階段,高性能計算在科學計算、商業計算領域齊頭并進,各種促進應用發展的技術如開發環境、存儲、測試等技術不斷完善;21世紀,我們將迎來高性能計算技術創新的春天,技術創新的步伐將會加快。今天,我們在此介紹高性能計算中的一些關鍵技術。
拋開學術上對體系結構的劃分,從應用的角度看看高性能計算機的發展規律。
前美國總統信息技術顧問委員會兩主席之一,IBM網格計劃領導人Wladawsky-Berger曾認為,按照對國民經濟和社會發展的影響程度,科學技術的發展可分為專家使用期、早期流行期、公眾認識期、廣泛使用期四個階段。讓我們依照這一思路看看高性能計算機的發展情況。
專家使用期——只有少數專家能用
在專家使用期,HPC是“大型機—終端”時代,只有少數專家可以使用,并且“會”用大型機(mainframe),解決科學研究中的計算問題。IBM 360系統和Cray-1,中科院計算所的757機、KJ系統、國防科大的銀河-1等都是典型的系統。
早期流行期——百花齊放
在早期流行期,HPC是“PC—局域網—服務器”時代,專業人士開始廣泛使用計算機,高性能計算機除進行科學計算外,還能做工程計算,如飛機設計、數值天氣預報;做事務處理,如銀行交易、企業管理信息系統等。高性能計算機呈現出百花齊放的局面,一個本質改變是微處理器取代了組合處理部件,高性能計算機的成本大大降低。
從體系結構上看,以數據為計算原料的事務處理一直穩定在SMP(對稱式共享存儲多處理機)上,如Sun的Unix系統;在以計算(computation)為目的的高性能計算領域,則精彩紛呈。
為了在一個時鐘周期內做更多計算,人們將許多計算部件放在一個CPU內,成為向量機(vector),又以此為基礎發展了共享存儲的向量機,能共享遠地存儲的分布式存儲向量機,如NEC SX-5系統。為了讓一個應用能使用很大的內存,人們將分布在不同CPU周圍的內存合并成一個邏輯的大內存,成為分布共享系統(NUMA),又以此為基礎發展了COMA、NCC-NUMA、cc-NUMA系統等,如SGI的Origin系統等。
為了讓應用能并行地使用盡可能多的CPU解決一個大問題,人們將大量小的處理單元用互聯網絡連接起來,成為大規模并行處理系統(MPP),又在此基礎上發展了可物理地共享存儲的MPP系統,和可邏輯地由虛存來共享存儲的系統,如Cray T3E、計算所的曙光1000和金怡廉院士設計的神威等。這個時代,用戶多在自己的PC上通過網絡使用被稱為“巨型機”和“超級計算機”(supercomputer)的這些高性能計算機。
公眾認識期——逐漸為人所熟悉
在公眾認識期——我們現在處于的時期,是“Internet”時代,廣大的機構、企業和民眾開始大量使用信息技術,與高性能計算機打交道,帶來這一改變的當然是Internet和Web了。
對高性能計算機來說,有兩個變化改變著游戲規則:一個是以Intel CPU為代表的微處理器,正在飛快地縮小桌面系統與后臺系統的處理單元在計算能力上的差距,這是“摩爾定律”在向人們顯示的威力;另一個是商品化和標準化不斷發揮作用,由此導致了信息產品的量產,大量用戶能夠使用高端技術,系統的性能價格比迅速提高,由此形成正反饋。以IBM為例,它的eServer的四個系列在CPU、高性能部件、操作系統、數據庫等上越來越走向統一。
這個時代在高性能計算機上的偉大貢獻顯然是集群(Cluster)體系結構了。Cluster就是用標準化的互聯網絡(定制或商品化)將量產的高性能部件連接起來,用軟件提供單一系統映像。在Cluster平臺上,科學計算、事務處理和“Internet”時代特有的信息服務應用都能運行自如。典型的系統有IBM SP、HP AlphaServer SC以及計算所的曙光2000、曙光3000。
廣泛使用期——HPC變成HPS
在廣泛使用期,人們將看不到計算機系統,看到的是各種各樣的服務,這就是IBM的按需計算,計算所提倡的網格計算所描敘的美妙未來。這個時代的本質變化是高性能服務(High Performance Service),HPC變成HPS,這時的高性能計算機體系結構是什么,人們尚不知曉。但是我們可以預測一下現有的體系結構的走向。
在商業計算領域,IBM的大型主機會維持它在以銀行交易結算為代表的特定領域的市場,但不會有大的發展了;SMP系統是主流,以大節點SMP系統構成的集群系統將不斷進入企業,甚至是銀行、證券這些最保守的領域。
在技術計算領域(technique computing), MPP、cc-NUMA、VPP系統在最追求性能的應用領域會有一席之地,其中MPP/VPP在構造最大系統,最追求應用飽和性能的用戶,以及資金充足的政府機構那里依然受到追捧;大型的cc-NUMA系統將逐漸走向衰落,理由有二:一是它的惟一優勢是大物理內存,大量CPU共享內存的高效編程對用戶是一件困難的事;二是用算法和軟件的方式使用大內存,要有效和經濟得多。但NUMA技術不會衰落,在IBM P690的板與板的互連中,AMP Opteron的CPU之間的互連中,都采用NUMA方式,只是規模較小而已。SMP系統由于應用的持續性,集群系統由于無可比擬的性能價格比將占據主流位置。
未來發展
高性能計算機的體系結構創新的挑戰在哪里?我們認為在兩個方面:一是滿足新需求的技術創新,如電子商務、生物信息、信息安全、網格計算等都提出了新的需求;二是解決存在問題,集群技術無疑是應堅持的技術路線,但這一體系結構存在很多問題,如系統中有許多操作系統映像,天生單一系統映像差;當系統較大時,可擴展性和可靠性較差。計算所智能中心將重點放在四項技術上進行創新,分別是網格零件、數據密集技術、全頻譜服務和大規模集群計算。
開發環境—搭建應用的基礎——清華大學 鄭緯民 陳文光
并行程序的編程模型、運行環境、調試環境等都要比串行程序復雜得多。提供良好的高性能計算開發環境,一直是學術界和工業界所追求的目標。
目前比較流行的高性能計算系統,大體可以分為兩類:一類是共享內存系統(SMP),如IBM的P690,HP的SuperDome等,其特點是多個處理器擁有物理上共享的內存;一類是分布存儲系統(DMP),如MPP和集群系統,其特點是系統由多個物理上分布的結點組成,每個結點擁有自己的內存,結點通過高速以太網或專用高速網絡連接。本文主要介紹這兩類系統上的開發工具。
一、并行程序的開發模式
1. 共享內存模型
在共享內存模型中,一個并行程序由多個共享內存的并行任務組成,數據的交換通過隱含地使用共享數據來完成。此編程模式一般僅需指定可以并行執行的循環,而不需考慮計算與數據如何劃分,以及如何進行任務間通信,編譯器會自動完成上述功能。
目前流行的共享內存模型開發標準是OpenMP。OpenMP定義了一套編譯指導語句,用于指定程序的并行性、數據的共享/私有等信息。其目標是為SMP系統提供可移植、可擴展的開發接口。OpenMP由OpenMP Architecture Review Board于1997年推出,現在已發展到2.0版。OpenMP支持的編程語言包括Fortran、C和C++。
OpenMP得到了工業界的廣泛支持,有大量的商業編譯器和其他開發工具支持OpenMP的開發,如IBM、HP、Sun、SGI、Intel等硬件廠商均有支持OpenMP的編譯器產品,另外還有一些第三方廠商的OpenMP編譯器。
2. 消息傳遞模型
在消息傳遞模型中,一個并行程序由多個并行任務組成。每個并行任務擁有自己的數據并對其進行計算操作。任務之間數據的交換是通過顯式的消息傳遞語句來完成的。
現在廣泛使用的消息傳遞模型有兩個:PVM和MPI。PVM即Parallel Virtual Machine(并行虛擬機)與MPI即Message Passing Interface(消息傳遞界面)。PVM與MPI所提供的功能大致相同,但兩者的側重點有所不同。PVM強調在異構環境下的可移植性和互操作性,程序之間可以互相通信,并支持動態的資源管理和一定程度的容錯;而MPI更強調性能,不同的MPI實現之間缺乏互操作性,本身也不支持容錯(可以通過專門的容錯軟件來支持容錯)。一般而言,使用MPI比較適合于開發MPP或同構集群上的并行應用,可以有較高的通信性能;而PVM更適合于異構的集群系統。
幾乎所有的高性能計算系統都支持PVM和MPI。
3. HPF
HPF(High Performance Fortran)的思想與OpenMP類似,都是通過定義編譯指導語句來幫助編譯器生成并行代碼。HPF的目標系統與OpenMP不同,它支持DMP系統。因此,除了指定并行性的編譯指導語句外,HPF還指定數據劃分的編譯指導語句。HPF與消息傳遞模型的不同之處則在于:HPF通過編譯器來生成通信語句,不需要程序員手工編寫。
HPF得到了工業界的廣泛支持,如IBM、HP、Sun都有HPF編譯器。第三方產品則有PGI的PGHPF、APR的Forge xHPF等。其不足是對于某些問題無法得到與手工編寫的消息傳遞程序相同的性能。
4. 并行庫
使用并行庫開發高性能計算程序的基本思想是:用戶不需要自己編寫通用的并行算法代碼,而由程序庫提供并行算法,并對用戶透明。用戶只需要根據自己的需求,調用相應的庫函數,就可以編寫出并行程序。由于庫函數的編寫者一般經驗豐富,而且庫函數會采取較為優化的算法,并采用優化編譯,使得庫函數的執行效率很高。對于大量使用通用計算算法的用戶來說,使用并行庫是一種高效的開發模式。并行庫的缺點是無法幫助那些需要自己書寫非通用并行算法的用戶。
目前的并行庫很多,包括PBLAS(Parallel Basic Linear Algebra Subroutines),以及建立在其基礎上的LAPACK和ScaLAPACK,提供了一些線性代數問題的并行求解算法,如求特征值、最小二乘問題等。LAPACK是為SMP系統優化的,ScaLAPACK是為DMP系統優化的。大多數高性能計算系統都提供在本系統上優化的PBLAS、LAPACK、ScaLAPACK。
另一個著名的并行庫是PETSc。PETSc是一套基于MPI的數據結構和庫函數,用于解決基于偏微分方程的典型科學計算問題。另外,MATLAB是很常用的科學計算軟件。很多公司和研究機構也在進行并行化MATLAB的工作,如RTExpress。
5. 串行程序并行化
另一種并行程序的開發模式是將串行程序并行化。此模式的優點在于,可以將現有的很多串行代碼轉換成并行代碼。
并行化分為全自動并行化和交互式并行化兩種模式。全自動并行化的并行過程不需要人的干預,可以自動發現程序中可并行的部分,生成并行代碼,F在,高性能計算系統提供商的Fortran和C編譯器大都能提供面向SMP系統的自動并行化的編譯選項。對于少數程序,全自動并行化編譯器可以達到較好的效果;但對大多數程序來說,并行化的效果還不理想。
交互式并行化工具通過給用戶提供程序中的有效信息,包括相關性分析結果、程序調用圖、性能預測結果等幫助用戶進行并行化工作,但是如何更好地結合用戶和并行化工具的能力還需要進一步研究。目前產品化的交互式并行化工具主要有APR的Forge,該系統支持Fortran77的并行化,并同時支持SMP系統和DMP系統。
二、開發工具
1. 調試器
調試是程序開發的重要部分,并行程序尤其難調試,更需要調試器的支持。高性能計算系統中大多會帶有并行調試器,如IBM的pdb(命令行方式)、pedb(Xwindow圖形界面)、HP的DDE(XWindow圖形界面)和LaDebug(用于Alpha系統)、Sun的Prism等。
Etnus的TotalView是最著名的第三方并行調試器。它提供對C、C++、Fortran程序的圖形化符號調試,可以調試MPI、PVM、HPF、OpenMP程序,支持SGI、Sun、HP、IBM等幾乎所有的高性能廠商的產品,還提供對Linux的支持。
KAI的Assure Thread Analyzer是一個支持OpenMP的程序正確性檢測工具,用于自動發現程序中的常見錯誤。它目前僅支持IA32和IA64上的Linux。
2. 性能分析和預測
程序性能分析(profiling)可以幫助用戶找到程序中最費時的部分,從而集中精力進行改進和優化,是改進程序性能的有效手段。傳統的性能分析工具一般僅提供子程序級的性能分析,但對于高性能程序來說,對于循環程序的性能分析是必不可少的,F有的大部分高性能計算系統中大都具有能夠進行循環級性能分析的性能分析器,有些還提供了友好的用戶界面,如Intel的VTune、IBM的Xprofiler等。
一些第三方廠商也提供性能分析工具,比如Pallas的Vampir,它支持從Linux PC到IBM、HP、Sun、SGI等幾乎所有的高性能廠商的產品。
3.資源管理和負載平衡系統
嚴格地說,負載平衡系統是運行時環境,而不是開發環境,但對于開發者來說,了解負載平衡系統是有必要的。
某些高性能計算系統主要用于提供共享的多任務處理環境。對于SMP系統來說,操作系統內置的任務調度器可以完成任務的調度功能。對于DMP系統來說,需要專門的軟件來進行任務調度,達到負載平衡。負載平衡系統通過了解系統中各個結點的負載狀況、計算能力、內存狀況等,可以合理地分配任務的執行結點,必要時遷移現有的任務到其他結點,從而達到提高系統吞吐量的作用。
著名的負載平衡系統包括Platform公司的LSF(Load Sharing Facility)和Veridian的PBS(Portable Batch System)。這兩個系統都支持多種操作系統和硬件平臺,能夠管理異構的集群系統。另外開放源代碼的OpenMosix主要支持Linux集群系統。
三、發展趨勢
OpenMP將成為支持SMP系統編程的主要標準,將來的工作在于研究和開發更加有效的OpenMP編譯器,以及更加強大友好的開發、調試工具。MPI和PVM將仍然是DMP系統的主要標準。
并行庫是很有前途的開發方式和研究方向,隨著更多的并行程序庫的出現,并行化編程會越來越容易。
程序自動并行化技術也能大大縮短并行程序的開發時間,但目前的技術即使對SMP系統也沒有達到實用的水平,還需要技術上的突破。
網格計算是現在的熱門話題,也是將來高性能計算的發展方向之一。為網格計算制定標準,提供所需的開發環境和運行環境將是未來的發展方向。
通信技術—減少時延——清華大學 林闖 譚章熹
最理想的情況下,高性能計算機的性能是所有節點計算性能的簡單相加,實際上系統的整體性能根本達不到理想情況,主要原因是各節點之間存在通信時延。圍繞減少通信時延,發展了獨具特色的HPC通信技術。
高性能計算機往往采用多個處理節點。其根本思想就是將要完成的任務盡量分布到各個處理節點并發執行,在最理想的情況下高性能計算機的性能是所有節點計算性能的簡單相加。但是由于節點間存在著通信延時和各個節點間的同步關系,使得系統的整體性能通常達不到理想情況。比如在某些MPP上其持續速度只是峰值速度的3%~10%。
另一方面,隨著單個工作站(或微機)的性價比越來越高以及商業寬帶網絡的高速發展,集群系統(Cluster)得到了廣泛的應用。同時,高性能計算也逐步向著松耦合(loosely Coupled)和復雜化的方向發展。大量的SMP集群(CLUMPs)的出現,使得高性能計算機內部節點與節點間的通信瓶頸愈發明顯。因此,解決高性能計算機的通信問題也就成為了一個研究的熱點,包括減小通信延時、任務粒度劃分、負載平衡和調度等。
基本互聯方式和通信協議
在高性能計算機內部,各個節點通過互聯網絡進行連接并通信,以實現協同工作。根據高性能計算機內部節點耦合方式的不同,節點與節點間的通信連接方式也不同:
緊耦合(Tightly Coupled)計算機,如SMP系統,各個節點通常以共享內存的方式完成互聯通信操作。這種共享內存的聯接方式允許單一節點獲得較高的內存訪問吞吐量,且易于編程。但是隨著節點數目、節點間通信量的增加以及操作系統切換進程等額外開銷的增加,共享內存將成為系統性能的瓶頸,例如一個雙路SMP系統,單節點擁有足夠的處理能力但卻經常出現內存或I/O總線競爭的情況。為此,現在一些SMP系統除了共享內存總線外還增加一些專用的消息通路,以減少共享內存的競爭和增加節點間的通信能力。不過,這種緊耦合的通信方式仍然限制了整個計算機節點數目的規模,一般的SMP系統只采用2~4個節點且擴展性差。
松耦合(Loosely Coupled)計算機,如集群(Cluster),其每個節點擁有自己的存儲器,節點之間使用一些專用的或者通用的互聯網絡進行連接。它避免了共享內存所出現的資源競爭,有助于提高節點利用率,但節點間的互聯網絡速度較慢并有較大的通信延時。
目前一些商用集群的節點間連接通常使用快速以太網(Fast Ethernet)、千兆以太網(Gigabit Ethernet)、Myrinet等。其中快速以太網可以提供100Mbps的鏈路帶寬,千兆以太網可提供1Gbps帶寬,這兩者可以通過交換機或路由器直接到桌面;而Myrinet由一系列交換開關組成,交換開關內部使用流水線機制,目前其帶寬已經達到2Gbps以上。在通信網絡的協議選擇上可以使用普通的TCP/IP協議,也可以使用等效TCP/IP協議的精簡協議,如Active Message、Fast Message、VIA(Virtual Interface Architecture)等。
網絡拓撲結構與基本通信方式
由于網絡通信延時的關系,通信網絡的拓撲結構對高性能計算機的性能有著非常重要的影響。不同拓撲結構的功能特性、網絡時延、帶寬、硬件復雜性、可擴展性和可靠性也不相同。下面是三種基本的連接方式:
● 2D或3D網絡(2D、3D Mesh):連接方式非常簡單,在同時對節點與其鄰近節點交換數據頻繁的應用場合非常有效。這種網絡的性能主要取決于網絡中路由器的性能。
● 超立方體(Hypercube)網絡:這種連接的主要思想是減小任意兩個節點間通信的“Hop”數。它的擴張性能較差,隨著超立方體維數的增加所需要的節點數目按指數增長。
● 交換網絡:所有的節點都直接與一個或多個高速交換開關相連,屬于動態連接方式且速度很快。
在大型計算機中通信網絡的拓撲結構可能更為復雜,因此在節點通信時往往使用一些尋徑算法,這好比在IP網上面的分組路由操作。這些典型算法有存儲轉發、虛擬直通、線路交換、蟲蝕尋徑等。此外,與IP路由類似,在尋找路徑時往往會遇到死鎖、沖突、消息擁塞等現象。
不過,無論網絡拓撲結構如何,高性能計算機節點間通信對于用戶是透明的。其通信模式無外乎以下4種:
● 單播(Unicast):一個源節點到一個目的節點;
● 多播(Multicast):一個源節點到多個目的節點;
● 廣播(Broadcast):一個源節點到全體節點;
● 會議(Conference):多個源節點到一個目的節點。
任務粒度劃分
在很多情況下,對于一個給定的并發程序,并不是增加更多的處理節點就可以獲得更多的性能,因為隨著節點數目的增加,節點間通信開銷、同步的開銷等都會增加。因此為了提高整個系統的性能,需要在任務通信時做以下幾點的均衡考慮:
● 所需處理節點的數目;
● 執行任務模塊或劃分的數目(如是否將一些小規模的任務組合在一起串行執行);
● 系統通信開銷。
而對這些諸多因素的權衡分析就是通過對任務粒度(task granularity)的分析而得到的。一個比較通用的任務粒度的定義如下:
式中G是任務粒度,R代表程序執行的時間,C是以通信時延為主的額外開銷。G越小則粒度越細,數據流計算中的程序指令就是一個細粒度的典型例子;另一方面,如果G越大則粒度越粗大,其典型的例子有任務的子程序、函數等。通常的細粒度的任務并行度高,但是通信開銷大;粗粒度任務的并行度低,但通信開銷小。
為了最大限度發揮高性能計算機的并行度,我們往往把減小系統通信延時作為任務劃分的依據,即將一些任務劃分到一個節點上串行執行,使得通信延時的減小效果超過串行執行對性能的影響。
靜態調度與負載平衡
為了進一步減小并發程序的執行時間,在使用高性能計算機時往往要對所執行的任務做一定的調度。調度主要分為靜態調度和動態負載平衡兩種。靜態調度主要是通過預先劃分任務,減小節點間的通信開銷,以達到提升系統性能的作用;而動態的負載平衡則是充分利用運行時節點與節點的通信,交互必要的系統信息,以提高整個系統的吞吐量。
對于靜態調度,通常在程序編譯階段預測程序的執行時間與通信延時,并將小的任務匯集為較粗粒度(coarser-grain)的任務。這種調度主要分為完全優化(optimal)和部分優化(suboptimal)兩大類。其中完全優化方案一般屬于NP問題,只有當給定某些限制時才能進行完全優化的求解。由于完全優化方案的復雜性問題,大部分研究工作都是集中在部分優化方案上,即求得一個“較優”解(或可以接受的解)。部分優化方案的求解主要由近似式(approximate)和啟發式(Heuristic)兩種方法構成,其中包括模擬退火、線性或非線性規劃、狀態空間搜索等技術。不過它也存在很多缺點,如缺乏對任務執行和通信延時的有效預測,忽略對異地數據存取時帶來的通信延時。
為了彌補這些缺點,目前對高性能計算機的執行時間預測器(execution time estimation)的研究廣泛開展,如對用戶預測、模擬預測和基于Profile預測的研究。
負載平衡技術在編譯階段不需要知道程序在運行時的任何信息,相反,它主要依靠系統運行時各處理節點的信息做出相應的決策。負載平衡將任務以動態啟發式的方式在處理節點間分布,以達到減小總的執行時間、最大化系統吞吐量或最大化系統利用率等為目標。負載平衡強調適量的信息在節點間的有效通信,主要分為靜態(static)和自適應(adaptive)兩大類。通常認為隨機放置(Random)和節點輪詢(Round Robin)策略屬于典型的靜態負載平衡。而自適應性負載平衡通過集中的或分布式的通信,使用一個或多個閾值(threshold),即在系統參數到達閾值前后使用不同的策略。
目前動態的負載平衡算法的主要缺點是運行時的通信開銷較大,未來還將向著簡單有效的方向發展,并通過層次化的信息交換方式與適量的人為控制進一步提高通信的效率。
發展趨勢
減小通信時延是提高高性能計算機性能的一項非常關鍵的技術,其手段大體上有硬件和軟件兩種。硬件上:對于通信網絡可以通過改進拓撲結構、提高通信速度的手段實現;對于節點可以使用高速緩存、超線程技術等。在軟件上可以通過改善任務劃分和處理器的分配,以及適量的任務復制(即在不同節點上執行相同的任務)達到通信時延隱藏的效果;另一方面,充分利用節點間的通信,使用負載平衡技術也可以改善系統的性能。
存儲技術—推陳出新——國家高性能計算機工程技術研究中心 肖展業 張建剛
存儲系統在中高端計算機系統價值中所占比例不斷升高,現已達到50%以上,有些甚至達到75%。
現在市場上存在著的三種存儲方案 SAS或者DAS、NAS、SAN都滿足了不同規模HPC的應用需求。
DAS——老兵有新用場
SAS和DAS是同一存儲方式的不同名字。這種方式是最為傳統的存儲方案。磁盤設備通過系統總線適配器直接連到計算機。連接的形式可以是通過IDE、SCSI、光纖通道的直接連接模式。不同的連接方式提供了不同的傳輸速度。而實際可達到的數據傳輸速度隨著系統的配置及連接方式的不同而不同。其連接速度能達到理論速度的20%~85%。
DAS的特點是采用直接連接方式。因此,除了直接連接的計算機之外,其磁盤設備是不能與其他計算機物理共享的。共享往往是通過NFS或CIFS等協議實現“軟”共享。最近出現的Dual-Ported Disk Array是一個例外。這種磁盤陣列設備可以通過SCSI直接連到服務器。由于它有兩個端口,所以,它可以同時連到兩個不同的服務器。許多高檔的文件服務器系統都使用這種裝備。例如,HP的文件服務器及Veritas的VCS系統。Veritas的VCS系統可以用兩個文件服務器實現高可用文件服務系統,只不過在任意時刻,只有一臺服務器訪問磁盤,而另一臺服務器則只能等待。
NAS——支持新的協議DAFS
NAS是現在較為流行的一種存儲方式。由于它的流行性,人們給予它一個特殊的名字:filer。簡言之,它是特制的網絡文件系統服務器。不同的廠家采取不同的特制方式。特制的方面包括系統硬件、操作系統及系統管理等。
所支持的協議通常包括NFS和CIFS。此外,支持HTTP和備份服務也是其常見的特點。除此之外,NAS系統是不允許安裝和運行任何其他應用的。連接的形式多數是百兆以太網或千兆以太網,實際可達到的最大數據傳輸速度分別為11MB/s和32MB/s。
值得注意的是Network Appliance從2001年開始推動DAFS Collaborative。這個聯盟現在已有許多公司參加,幾乎囊括了所有著名的計算機公司。
DAFS(Direct Access File System)是一個基于NFS v4的新的網絡文件系統協議。它是為本地數據共享(Local Sharing)環境中取代NFS v4而設計的。目標是為高性能的應用提供低延遲共享存儲系統。存儲系統可以通過光纖通道、千兆以太網或InfiniBand來連接。其核心技術基于VIA(Virtual Interface Architecture)。此外,這個協議還通過高速鎖、Fail-Over、隔離、數據恢復等技術提供了數據的一致性和可靠性的保障。也許在不遠的將來,NAS系統也需要支持DAFS。
SAN——不斷推陳出新
SAN是一個相對較新的存儲技術。早期的SAN幾乎全部是基于光纖通道技術的。光纖通道提供了兩種連接方式:Arbitrated Loop (AL)和Switch。由于光纖通道技術的一些原因,SAN發展相對較為緩慢。這些原因包括:
● 光纖通道設備的互操作性差。
● 采用光纖通道技術的系統造價非常昂貴。
● 管理基于光纖通道技術的SAN非常昂貴。
網絡技術的進步,特別是千兆以太網和InfiniBand的出現,為網絡存儲注入了新的活力。硬件技術和嵌入式技術的發展,也為網絡磁盤系統的實現提供了可能性。近來,基于IP的存儲系統(IP SAN)呼聲越來越高。從存儲設備方面,CMU提出了NASD(Network-Attached Secure Disk),Segate也提出了高智能磁盤計劃。從網絡存儲協議方面,iSCSI已經歷時多年,最近已經推出最后版本,相關的標準,如iFCP,也在制定之中。此外,Linux系統中NBD(Network Block Device)也為其實現提供了實際的例子。
NAS與SAN的融合——大勢所趨
近來包括IBM、HP、Dell在內的一些公司先后推出了與其SAN產品相結合的NAS Head產品。如Auspex的公司的產品NSc 3000的前端通過傳統的IP網絡與客戶端相連,后端通過FC SAN與網絡存儲設備相連。NSc 3000向其客戶端提供傳統的服務,如NFS或CIFS?蛻舳藢⑺械恼埱笏徒oNSc 3000,其系統相應也通過NSc 3000送還給用戶。通過NSc 3000這樣的NAS Head,NAS系統與SAN系統可以共享存儲空間。
NAS Head系統雖然在一定程度上解決了NAS與SAN系統的存儲設備級的共享問題,但在文件級的共享問題上卻與傳統的NAS系統遇到了同樣的可擴展性問題。當一個文件系統負載很大時,NAS Head很可能成為系統的瓶頸。
一些分布式文件系統也是NAS與SAN融合的產物,其中,一些系統使用的是FC SAN存儲設備,而另一些卻以IP SAN存儲設備為主。EMC公司也在2001年推出了一個新的存儲系統——HighRoad MultiPlex File System。HighRoad系統中包含一個或多個名為Celerra的系統服務器、多個Unix和Windows的客戶端,以及多個名為Symmetrix的網絡存儲設備。系統服務器和客戶端都是通過光纖通道與存儲設備相連,而系統服務器與客戶端則通過傳統的IP網絡連接。在HighRoad系統中,系統服務器是惟一需要理解文件系統結構的部分,其他的系統組成部分都與文件系統無關。系統服務器通過IP網絡向客戶端提供文件元數據服務;客戶端在獲取元數據信息之后,通過光纖通道直接訪問網絡存儲設備。文件的數據位置信息和并發文件訪問都是通過FMP(File Mapping Protocol)協議實現的。一個HighRoad系統中可以含有多個文件系統,但每個文件系統必須與一個系統服務器相對應。此外,在該系統中,文件系統必須支持預留(Reservation)、預分配(Pre-Allocation)、延遲提交(Delayed Commit)等資源管理技術。
在HighRoad系統中,由于一個系統服務器負責一個文件系統的全部元數據服務,因此系統服務器的性能對于整個系統的性能有著很大的影響。在系統負載很重時,系統服務器有可能成為系統的瓶頸,因而系統的可擴展性較差。
杜克大學的SFS也是一個分布式的NFS。在這個系統中,存在著三種子系統:應用服務器、系統服務器和存儲設備。所有的文件被靜態地映射到相對應的系統服務器?蛻舴⻊掌魍耆ㄟ^系統服務器訪問文件。為了給用戶提供一個完全透明的使用環境,一個特殊的網絡設備——μproxy,也被加入到系統中。μproxy是一個文件系統代理,它將文件請求變換后,分送到不同的系統服務器上。
SFS的問題在于它的可擴展性和動態處理能力相對較弱。這個系統基本上采用哈希方式將文件請求映射到系統服務器,靜態的文件綁定使得系統缺乏動態的應變能力。在可擴展性方面,也由于靜態綁定變得極不靈活。此外,SFS只是一個文件系統,它并不具有很強的數據管理功能。
國家高性能計算機工程技術研究中心目前與曙光公司等單位承擔863項目——“海量存儲系統技術與集成”。通過該項目的研究與開發,工程中心已研制成功了多項關鍵性技術,包括“藍鯊”網絡存儲設備、“藍鯨”網絡存儲系統等。
測試技術—什么樣的系統適合你——中科院軟件所并行計算實驗室 張云泉
評估和測試PC的性能有BenchMark,而對高性能計算系統而言,其評估和測試的BenchMark是什么呢?
計算機的性能評估與測試就是我們通常所說的BenchMark,普通的計算機用戶對于BenchMark并不陌生。相比較而言,HPC的性能評估與測試要復雜得多,需要加上專家的知識才能真正地對一個系統進行客觀、公正的綜合評價。
隨著HPC系統的逐漸普及、體系結構的統一和并行程序設計環境的標準化,已經有幾個經過多年開發和改進的Benchmark軟件包逐漸獲得廠商、用戶和研究者的認可,這些軟件包或測試程序是Linpack測試、NAS Parallel Benchmark、SPEC HPC測試、IDC Balanced Rating等。這些測試軟件包能從3個方面推動高性能計算的發展:在機器采購過程中扮演不可替代的角色;幫助應用科學家對生產用軟件在特定高性能計算系統上可能達到的性能水平進行估計;幫助計算機科學家對不同計算機硬件、軟件和算法的改進方案進行定量的評估。
目前,根據所測試的層次不同,通常把測試程序分成以下幾個層次,對應HPC系統的不同性能水平,所測得的性能從高到低為:機器峰值;Linpack測試,核心測試,機器實際可達到的性能的上限;NASA NPB,緊湊應用程序測試,8類實際應用核心和模擬應用程序,分辨機器適應的應用種類;SPEC HPC測試,機器在運行大型應用程序時的性能;用戶的實際應用程序測試。
Linpack
由Jack Dongarra教授編寫的Linpack是在高性能計算領域最出名和使用最廣泛的基準測試。Linpack使用線性代數方程組,利用選主元高斯消去法在分布式內存計算機上按雙精度(64 bits)算法,測量解線性方程的稠密系統所需的時間。Linpack的結果按每秒浮點運算次數(flops)表示。第一個Linpack測試報告出現在1979年的Linpack用戶手冊上。
Linpack原始版本的問題規模為100×100的矩陣,目前的Linpack測試分成三個層次的問題規模和優化選擇:
● 100×100的矩陣 在該測試中,不允許對Linpack測試程序進行任何哪怕是注釋行的修改。
● 1000×1000的矩陣 在該測試中,允許對算法和軟件進行修改或替換,并盡量利用系統的硬件特點,以達到盡可能高的性能。但是所有的優化都必須保持和標準算法如高斯消去法相同的相對精度,而且必須使用Linpack的主程序進行調用。
● 針對大規模并行計算系統的測試,其名稱為High Performance Linpack (HPL) HPL 1.0版于2000年9月發布,是第一個標準的公開版本并行Linpack測試軟件包,一般用于TOP500超級計算機上的并行超級計算機。HPL與其前輩不同,使用者可以選擇矩陣的規模(問題規模)。
很多人把用Linpack基準測試出的最高性能指標作為衡量機器性能的標準之一。這個數字可以作為對系統峰值性能的一個修正。通過測試求解不同問題規模的實際得分,我們不僅可以得到達到最佳性能的問題規模,而且可以得到達到最佳性能值的一半的求解問題規模,這些數字與理論峰值性能一起列在TOP500列表中?傮w來說, Linpack是一個比較成熟的測試標準。
NAS并行基準測試
數值空氣動力學模擬 (NAS)并行基準測試NPB (NAS Parallel Benchmark)已經廣泛地應用于并行計算機的測試和比較中。NPB是由NASA Ames于1991年研究開發的,并在當年發布NPB 1.0版本,于1996年發布了帶有具體MPI實現的NPB2軟件包。目前NPB2的最新版本是2002年11月19日發布的2.4 beta版本和NPB3 alpha版本。
NPB是應用核心基準測試。NPB套件由8個程序組成,它來源于計算流體動力學(CFD)的代碼。這8個不同的程序從不同的方面反映了CFD計算的特點。8個程序中的每一個——5個核心和3個模擬CFD應用,代表航空、物理學應用高性能并行計算的全貌。5個核心(EP、FT、MG、CG和IS)代表在CFD應用中使用的5種不同數值方法的計算核心。目前每個基準測試有4類問題規模:A、B、C、D,其中的Class D是最近增加的。A是規模最小的,D是最大的。
NPB2的測試結果報告可以有3種形式:0%(無任何改變)、小于5%(小于5%的源代碼修改)和大于5%(大于5%的源代碼修改)模式。
SPEC HPC測試
SPEC成立于20世紀80年代末,它的目的就是“建立、維持和認證相關的基準測試以應用于新一代的高性能計算機”,它的主要工作有兩個:開發測試計算機性能的測試工具,這些工具以代碼的形式發布;在SPEC網站(http://www.spec.org)上發布通過認證的測試結果。
High Performance Computing Group (HPC)是其一個分組織,主要測試高性能計算機。主要測試程序有SPEC HPC96、SPEC HPC2002和SPEC OMP 2001系列,其中的SPEC HPC96已經于2003年2月被SPEC HPC2002取代。
SPEC HPC軟件包有三大組成部分:SPEC CHEM(化學)、 SPEC ENV(環境)、SPEC SEIS(地震)。
SPEC HPC2002軟件包支持MPI和OpenMP并行程序設計環境,包含3個測試程序,每個都有小規模和中規模測試數據集。
(1)SPEC ENV2002: 該程序基于氣象研究和預報模型WRF之上,有SPECenvM2002和 SPECenvS2002兩個評價指標;
(2)SPEC CHEM2002:基于量子化學計算軟件GAMESS,有SPECchemM2002和SPECchemS2002兩個評價指標;
(3)SPEC SEIS2002: 基于尋找天然氣和石油工業過程的時間和空間疊前偏移計算,有SPECseisM2002和 SPECseisS2002兩個評價指標。SPEC HPC2002的評價指標說明了一個系統在24小時能運行的性能測試次數。
SPEC HPG計劃發布一個更為全面的HPC測試軟件包。該軟件包將包括新版本的地震資料處理和量子化學計算程序,并考慮增加其他領域的測試程序。
IDC 平衡評價指標
IDC新推出的平衡評價指標(Balanced Rating)通過測試計算系統的處理器、內存和可擴展性能來評定系統的性能。該系統只能對已安裝在客戶場地運行的系統進行測試,而不是在廠家那里進行測試。對于處理器,該系統使用Specfp_rate_base2000基準來測試其浮點運算能力,使用SPECint_rate_base2000來測試整數計算能力,而使用“Linpack Rmax”來測試解決密集線性方程的能力。
內存系統容量測試包括在給定期間內可以將多少數據移入和移出內存;可擴展性能測試則通過使用全部處理器計算、全部系統內存和連接的帶寬來確定。 該系統目前包括6項測試,但是IDC希望在未來幾年將測試數目增加到12項。
IDC平衡評價指標排行包括4個獨立的排行:一個綜合排行;另外3個按處理器、存儲系統和可擴展性進行的排行。
IDC 平衡評價指標測試的目標并不是完全替代為了某種特定購買目的而進行的專門測試。IDC已經和San Diego超級計算機中心聯合開始了一個更加綜合并面向用戶需求的測試軟件包的研究工作,以便用戶可以根據自己的特定需要對計算機進行滿足需要的個性化排名。
文章來源于領測軟件測試網 http://www.kjueaiud.com/