專利名稱:并行計算機和定位并行計算機中硬件故障的方法
技術領域:
本發明涉及數據處理,或更具體地,涉及用于定位并行計算機中的硬件故障的方法、裝置和產品。
背景技術:
1948的EDVAC計算機系統的出現經常被稱作計算機時代的開始。從那以后,計算機系統已經發展成非常復雜的設備。現在的計算機比諸如EDVAC的早期系統要復雜得多。計算機系統通常包含硬件和軟件部件、應用程序、操作系統、處理器、總線、存儲器、輸入/輸出設備等等的組合。隨著半導體加工和計算機結構的進步推動計算機的性能越來越高,更復雜的計算機軟件已發展成利用硬件的更高性能,從而產生了比僅僅幾年前強得多的當前的計算機系統。
并行計算是已經歷了進步的計算機技術的領域。并行計算是為了更快地獲得結果而在多處理器上同時執行(分割以及特別適配的)相同任務的技術。并行計算基于解決問題的過程通常可被分成較小任務的事實,其中可以某種協同同時執行這些較小任務。
并行計算機執行并行算法。并行算法可被分割以在許多不同處理設備上每次執行一段,然后最終再合到一起以得到數據處理結果。一些算法易于分割成段。例如,通過將數的子集分配到每個可用處理器,然后將肯定結果列表合到一起,能夠將檢查從一到十萬的所有數以觀察哪個數是素數的任務進行分割。在本說明書中,執行并行程序的各個段的多個處理設備被稱為‘計算節點’。并行計算機由計算節點以及其它處理節點組成,所述其它處理節點例如包含輸入/輸出(‘I/O’)節點和服務節點。
因為通過并行算法執行某些大型計算任務比通過串行(非并行)算法(由于現代處理器的工作方式)更快,所以并行算法是有價值的。用單個快速處理器構造計算機比用多個具有相同吞吐率的慢速處理器構造計算機要難得多。串行處理器的可能速度還存在某些理論極限。另一方面,每個并行算法具有串行部分,因此并行算法具有飽和點。在該點之外增加更多的處理器不產生更多的吞吐率,而只是增加開銷和費用。
并行算法也被設計成優化并行計算機的節點間數據通信所需的一或多個資源。并行處理器通信有兩個方式,即共享存儲器或消息傳送。共享存儲器處理需要數據的額外鎖定,并且產生附加處理器和總線周期的開銷,以及串行化算法的某部分。
消息傳送處理使用高速數據通信網和消息緩沖器,但是該通信增加數據通信網絡上的傳送開銷,以及消息緩沖器的附加存儲器需要和節點間數據通信的時延。并行計算機的設計使用特別設計的數據通信鏈路,使得通信開銷較小,但決定傳輸量的是并行算法。
許多數據通信網絡結構被用于并行計算機中的節點間的消息傳送。計算節點在網絡中可被組織成例如‘環(torus)’或‘網格(mesh)’。并且,計算節點在網絡中可被組織成樹。環形網絡用圍繞鏈路的圈來連接三維網格中的節點。每個節點通過該環形網絡被連接到其6個相鄰節點,并且每個節點用其網格中的x,y,z坐標尋址。在樹形網絡中,節點通常被連接成二進制樹每個節點具有父節點,以及兩個子節點(雖然取決于硬件配置,一些節點可能只具有零子節點,或一個子節點)。在使用環形和樹形網絡的計算機中,通常利用分立路由電路、分立物理鏈路和分立消息緩沖器,彼此獨立地實現兩個網絡。
環形網絡有助于點對點幾何探知診斷,而樹形網絡在點對點通信中通常是低效的。然而,樹形網絡對于某些集群操作(collectiveoperation)、所有計算節點同時參加其中的消息傳送操作提供高帶寬和低時延。因為數千節點可參與并行計算機上的數據處理操作,所以定位并行計算機中的硬件故障是困難的。
發明內容
公開了用于定位并行計算機中的硬件故障的方法、設備和計算機程序產品。這種并行計算機包含多個計算節點和數據通信網絡。數據通信網絡包含連接到計算節點以便將計算節點組織成樹的數據通信鏈路。樹以根計算節點和多層計算節點為特征。根據本發明的實施例,定位硬件故障通常包含在樹內定義網絡的計算節點的兩個或更多非重疊測試層次集合,所述非重疊測試層次集合一起包含網絡的所有數據通信鏈路,每個非重疊測試層次包括樹的兩個或更多相鄰層。根據本發明的實施例,定位硬件故障通常還包含在每個非重疊測試層次內定義測試單元,每個測試單元包括樹的子樹,所述子樹包含非重疊測試層次內的子樹根計算節點和該子樹根計算節點的所有后代計算節點。根據本發明的實施例,定位硬件故障通常還包含分別在每個非重疊測試層次集合上對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試,以及分別從上行鏈路測試以及分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試。
從以下附圖所示本發明的示范實施例的更多具體描述將明白本發明的前述和其它目的、特性和優點,其中類似參考標記通常代表本發明的示范實施例的類似部分。
圖1根據本發明的實施例圖解了用于定位并行計算機中的硬件故障的示例性系統。
圖2根據本發明的實施例示出了用于定位并行計算機中的硬件故障的示例性計算節點的模塊圖。
圖3A根據本發明的實施例圖解了用于定位并行計算機中的硬件故障的系統的示例性點對點適配器。
圖3B根據本發明的實施例圖解了用于定位并行計算機中的硬件故障的系統的示例性集群操作適配器。
圖4圖解了為點對點操作優化的示例性數據通信網絡。
圖5圖解了為集群操作優化的示例性數據通信網絡。
圖6根據本發明的實施例示出了圖解定位并行計算機中的硬件故障的示例性方法的流程圖。
圖7A圖解了組織成樹的網絡,其中定義了計算節點的非重疊測試層次集合。
圖7B圖解了相同的網絡,但是是用計算節點的第二非重疊測試層次集合定義的。
具體實施例方式
根據本發明的實施例,參考從圖1起的附圖,描述用于定位并行計算機中的硬件故障的示例性方法、設備和計算機程序產品。圖1根據本發明的實施例圖解了用于定位并行計算機中的硬件故障的示例性系統。圖1的系統包含并行計算機(100),數據存儲設備(118)形式的計算機非易失存儲器,打印機(120)形式的計算機輸出設備,以及計算機終端(122)形式的計算機輸入/輸出設備。圖1的例子中的并行計算機(100)包含多個計算節點(102)。
通過包含高速以太網(174)、聯合測試行動組(‘JTAG’)網絡(104)、集群操作網絡(106)和點對點操作網絡(108)的若干獨立的數據通信網絡,連接計算節點(102)以進行數據通信。集群操作網絡(106)是包含連接到計算節點以便將計算節點組織成樹的數據通信鏈路的數據通信網絡。利用計算節點(102)間的數據通信鏈路實現每個數據通信網絡。數據通信鏈路為并行計算機的計算節點間的并行操作提供數據通信。如下面在說明書中詳細描述的,根據本發明的實施例,圖1的系統通常進行操作以通過以下方式來定位并行計算機中的硬件故障在并行計算機的樹形網絡內定義網絡計算節點的兩個或更多非重疊測試層次集合,所述非重疊測試層次集合一起包含網絡的所有數據通信鏈路,其中由樹的兩個或更多相鄰層組成每個非重疊測試層次;在每個非重疊測試層次內定義測試單元,其中每個測試單元包含樹的子樹,所述子樹則包含非重疊測試層次內的子樹根計算節點和該子樹根計算節點的所有后代計算節點;分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試;以及分別從上行鏈路測試,并且分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試。
除了計算節點之外,計算機(100)包含通過數據通信網絡(174)中的一個連接到計算節點(102)的輸入/輸出(‘I/O’)節點(110,114)。I/O節點(110,114)提供計算節點(102)和I/O設備(118,120,122)之間的I/O服務。通過局域網(‘LAN’)(130)為數據通信I/O設備(118,120,122)連接I/O節點(110,114)。計算機(100)還包含通過網絡(104)之一連接到計算節點的服務節點(116)。服務節點(116)提供公用于多個計算節點的服務,從而將程序加載到計算節點,在計算節點上開始程序執行,得到計算節點上程序操作的結果,諸如此類。服務節點(116)運行服務應用程序(124),并且通過在計算機終端(122)上運行的服務應用程序接口(126)與用戶(128)通信。
在有缺陷鏈路周圍路由通信可以是點對點操作或集群操作的一部分,并且當在周圍的路由發生時,在有缺陷鏈路周圍路由通信數據所經過的第二網絡對于有效操作可能是或可能不是優化的。如果在有缺陷鏈路周圍的路由作為針對點對點操作而優化的網絡,例如環形網絡中的點對點操作的一部分而發生,則在有缺陷鏈路周圍路由數據分組所經過的第二網絡可以是針對集群操作而不是點對點操作優化的網絡,例如集群樹形網絡。如果在有缺陷鏈路周圍的路由作為針對集群操作而優化的網絡,例如樹形網絡中的集群操作的一部分發生,則在有缺陷鏈路周圍路由數據分組所經過的第二網絡可以是針對點對點而不是集群操作優化的網絡,例如環形網絡。
集群操作是一種操作,即由‘多個’或‘一組’計算節點中的所有計算節點同時,即幾乎同時執行的消息傳送計算機程序指令。這樣的多個或一組計算節點可包含并行計算機(100)中的所有計算節點,或所有計算節點的子集。在MPI術語中,這樣‘多個’或‘一組’可被定義為‘通信者(communicator)’。
‘MPI’是指‘消息傳送接口’,一種現有技術并行通信庫,一種用于在并行計算機上進行數據通信的計算機程序指令的模塊。根據本發明的實施例,可被改進用于定位并行計算機中的硬件故障的現有技術并行通信庫的例子包括MPI和‘并行虛擬機’(‘PVM’)庫。PVM是由田納西大學,美國橡樹嶺國立實驗室和埃默里大學開發的。MPI是由MPI論壇,一個擁有來自定義和維護MPI標準的許多組織的代表的開放組所公布的。在寫本文的時候,MPI是在分布式存儲器并行計算機上運行并行程序的計算節點之間的通信的事實標準。該說明書為便于說明有時使用MPI術語,盡管如此使用MPI不是本發明的要求或限制。
集群操作由或多或少并行執行(取決于操作和內部算法)的許多點對點消息組成,并且涉及在指定計算節點組,即指定MPI通信者中運行的所有進程。在該組中的每個計算節點上的每個進程必須幾乎同時調用或執行相同的集群操作。因為在許多分立的物理計算節點上運行的許多進程不能說是完全同時一起做任何事情,所以所要求的同時性被描述為近似的。并行通信庫提供支持同步的功能。在MPI例子中,這樣的同步功能是‘barrier’程序。為進行同步,組內所有計算節點上的所有進程都調用例如MPI_barrier(),然后所有進程進行等待,直到所有進程達到相同執行點。于是執行基本同步地繼續。
多數集群操作是四個基本操作的變型或組合廣播、收集、分散和歸約。在廣播操作中,所有進程指定相同的根進程,其緩沖器內容會被發送。除了根之外的進程指定接收緩沖器。操作之后,所有緩沖器含有來自根進程的消息。
分散操作,類似于廣播操作,也是一對多集群操作。所有進程指定相同的接收計數。發送參數只對根進程有意義,其緩沖器實際包含發送計數*N個指定數據類型的單元,其中N是指定計算節點組中的進程的數量。發送緩沖器將被等分,并且被分散給所有進程(包含其本身)。每個計算節點被分配了稱作‘等級(rank)’的順序標識符。操作之后,根按照升高的等級次序已將發送計數數據單元發送給每個進程。等級0接收來自發送緩沖器的第一個發送計數數據單元。等級1接收來自發送緩沖器的第二發送計數數據單元,如此類推。
收集操作是多對一集群操作,其為分散操作的描述的完全相反情況。即,收集是多對一集群操作,其中一數據類型的單元被從排定等級的計算節點收集到根節點的接收緩沖器中。
歸約操作也是多對一集群操作,其包含對兩個數據單元執行的算術或邏輯功能。所有進程指定相同的‘計數’和相同的算術或邏輯功能。歸約之后,所有進程已經將來自計算節點發送緩沖器的計數數據單元發送到根進程。在歸約操作中,來自相應發送緩沖器位置的數據單元通過算術或邏輯操作被成對組合以在根進程的接收緩沖器中產生單個對應單元。專用歸約操作可以在運行時刻定義。并行通信庫可支持預定的操作。例如,MPI提供以下預先定義的歸約操作MPI_MAX 最大MPI_MIN 最小MPI_SUM 和MPI_PROD 乘積MPI_LAND 邏輯與MPI_BAND 逐位與MPI_LOR 邏輯或MPI_BOR 逐位或MPI_LXOR 邏輯異或MPI_BXOR 逐位異或組成圖1圖解的示例性系統的節點、網絡和I/O設備的布局只是為了說明,而不是對本發明的限制。根據本發明的實施例的能夠定位并行計算機中的硬件故障的數據處理系統可包含圖1中未示出的附加節點、網絡、設備和結構,如那些本領域技術人員所想到的。圖1的例子中的并行計算機(100)包含16個計算節點(102);根據本發明的實施例的能夠定位硬件故障的并行計算機有時包含數以千計的計算節點。除了以太網和JTAG之外,這樣的數據處理系統中的網絡可支持包含例如TCP(傳輸控制協議)、IP(網際協議)以及如那些本領域技術人員將想到的其它協議的許多數據通信協議。除了圖1中圖解的那些硬件平臺之外,可在各種硬件平臺上實現本發明的各種實施例。
根據本發明的實施例的定位硬件故障通常在包含多個計算節點的并行計算機上實現。事實上,這樣的計算機可包含數以千計這樣的計算節點。每個計算節點本身則是一種由一或多個計算機處理器、其自身計算機存儲器和其自身輸入/輸出適配器組成的計算機。因此,為進一步說明,圖2根據本發明的實施例示出了用于能夠定位硬件故障的并行計算機中的示例性計算節點的模塊圖。圖2的計算節點包含至少一個計算機處理器以及隨機存取存儲器(‘RAM’)(156)。處理器(164)通過高速存儲器總線(154)被連接到RAM(156),并且通過總線適配器(194)和擴展總線(168)連接到計算節點的其它部件。
存儲在RAM(156)中的是診斷應用程序(158),即利用并行算法執行并行、用戶層數據處理的計算機程序指令的模塊。診斷應用程序(158)包含計算機程序指令,根據本發明的實施例,所述計算機程序指令與并行計算機中的其它計算節點上的其它程序一起操作,以通過以下操作來定位硬件故障在并行計算機的樹形網絡內定義網絡計算節點的兩個或更多非重疊測試層次集合,所述非重疊測試層次集合一起包含網絡的所有數據通信鏈路,其中由樹的兩個或更多相鄰層組成每個非重疊測試層次;在每個非重疊測試層次內定義測試單元,其中每個測試單元包含樹的子樹,所述子樹則包含非重疊測試層次內的子樹根計算節點和該子樹根計算節點的所有后代計算節點;分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試;以及分別從上行鏈路測試,并且分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試。
存儲在RAM(156)中的還有并行通信庫(160),即執行計算節點之間的并行通信的計算機程序指令的庫,其包含點對點操作以及集群操作。應用程序(158)通過調用并行通信庫(160)中的軟件程序來執行集群操作。利用諸如C程序設計語言的常規程序語言,并且利用常規編程方法來編寫在兩個獨立的數據通信網絡上的節點之間發送和接收數據的并行通信程序,根據本發明的實施例,可從頭開發用于定位并行計算機中的硬件故障的并行通信程序的庫。或者,可使用存在的現有技術庫。根據本發明的實施例,可被改進用于定位并行計算機中的硬件故障的現有技術并行通信庫的例子包括‘消息傳送接口’(‘MPI’)庫和‘并行虛擬機’(‘PVM’)庫。然而對其進行開發,根據本發明的實施例改進并行通信庫(160)的并行通信程序以通過以下操作來定位硬件故障在并行計算機的樹形網絡內定義網絡計算節點的兩個或更多非重疊測試層次集合,所述非重疊測試層次集合一起包含網絡的所有數據通信鏈路,其中由樹的兩個或更多相鄰層組成每個非重疊測試層次;在每個非重疊測試層次內定義測試單元,其中每個測試單元包含樹的子樹,所述子樹則包含非重疊測試層次內的子樹根計算節點和該子樹根計算節點的所有后代計算節點;分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試;以及分別從上行鏈路測試,并且分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試。
存儲在RAM(156)中的還有操作系統(162),其為用于應用程序訪問計算節點的其它資源的計算機程序指令和程序的模塊。因為線程有資格完成對節點的所有資源的訪問,所以并行計算機的計算節點中的應用程序和并行通信庫通常不用用戶登錄以及不用安全提交就運行執行的單線程。因此,由操作系統在并行計算機中的計算節點上執行的任務的數量和復雜度比許多線程同時運行的串行計算機上的操作系統的任務的數量和復雜度要小并且復雜度要低。此外,圖2的計算節點(152)上沒有視頻I/O,其為降低對操作系統要求的另一個因素。因此,與通用計算機的操作系統相比,操作系統可以是相當輕型的,是原來的縮減版本,或是針對特定并行計算機上的操作具體開發的操作系統。可為計算節點中的使用而改進、簡化的操作系統包括UNIXTM、LINUXTM、Microsoft XPTM、AIXTM、IBM的i5/OSTM,以及本領域的技術人員將想到的其他操作系統。
圖2的示例性計算節點(152)包括若干用于實現與并行計算機的其他節點進行數據通信的通信適配器。此類數據通信可以通過RS-232連接、通過諸如USB的外部總線、通過諸如IP網絡的數據通信網絡以及本領域的技術人員將想到的其他方式串行地實現。通信適配器實現硬件級數據通信,計算機通過所述通信適配器直接或通過網絡將數據通信發送給另一個計算機。根據本發明的實施例用于定位硬件故障的系統中可使用的通信適配器的例子包括用于有線通信的調制解調器、用于有線網通信的以太網(IEEE 802.3)適配器,以及用于無線網絡通信的802.11b適配器。
圖2的例子中的數據通信適配器包括千兆位以太網適配器(172),其將用于數據通信的示例性計算節點(152)連接到千兆位以太網(174)。千兆位以太網是以IEEE 802.3標準定義的網絡傳輸標準,其提供每秒千兆位的數據速率(一千兆位)。千兆位以太網是通過多模式光纜、單模光纜或非屏蔽雙絞線工作的以太網的變型。
圖2的例子中的數據通信適配器包括將用于數據通信的示例性計算節點(152)連接到JTAG主電路的JTAG從電路(176)。JTAG是用于IEEE 1149.1標準的常見名,該標準被稱作標準測試訪問端口以及邊界掃描結構,其被用來利用邊界掃描來測試印刷電路板的測試訪問端口。JTAG被如此廣泛地采用,使得此時邊界掃描或多或少與JTAG同義。JTAG不僅被用于印刷電路板,而且還用于執行集成電路的邊界掃描,并且還被用作調試嵌入式系統的機制,其提供進入系統的方便的“后門”。圖2的示例性計算節點可以是所有的以下三種其通常包括安裝在印刷電路板上的一個或多個集成電路,并且可被作為具有其自己的處理器、其自己的存儲器及其自己的I/O能力的嵌入式系統實現。根據本發明的實施例,通過JTAG從設備(176)的JTAG邊界掃描可有效地配置用于定位硬件故障的計算節點(152)中的處理器寄存器和存儲器。
圖2的例子中的數據通信適配器包括將用于數據通信的示例性計算節點(152)連接到網絡(108)的點對點適配器(180),所述網絡對于點對點消息傳送操作是最優的,例如配置成三維環或網格的網絡。點對點適配器(180)沿三個通信軸x,y和z上的6個方向,通過6個雙向鏈路提供數據通信+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186)。
圖2的例子中的數據通信適配器包括將用于數據通信的示例性計算節點(152)連接到網絡(106)的集群操作適配器(188),所述網絡對于集群消息傳送操作是最優的,例如配置成二進制樹的網絡。集群操作適配器(188)通過三個雙向鏈路提供數據通信兩個到子節點(190)以及一個到父節點(192)。
示例性計算節點(152)包括兩個算術邏輯單元(‘ALU”)。ALU(166)是處理器(164)的部件,而獨立的ALU(170)專用于集群操作適配器的獨占使用,用來執行歸約操作的算術和邏輯功能。并行通信庫(160)中的歸約程序的計算機程序指令可將算術或邏輯功能的指令鎖存到指令寄存器(169)中。例如,當歸約操作的算術或邏輯功能為‘求和’或‘邏輯或’時,通過利用處理器(164)中的ALU(166)或通過利用專用ALU(170)(通常更快速地),集群操作適配器可執行算術或邏輯操作。
為進一步說明,圖3A根據本發明的實施例圖解了用于定位硬件故障的系統的示例性點對點適配器(180)。點對點適配器(180)被設計成用于針對點對點操作而優化的數據通信網絡,即將計算節點組織成三維環或網格的網絡。圖3A的例子中的點對點適配器(180)沿著x-軸通過四個單向數據通信鏈路提供數據通信,沿著-x方向(182)到達和來自下一節點,沿著+x方向(181)到達和來自下一節點。點對點適配器(180)還沿著y-軸通過四個單向數據通信鏈路提供數據通信,沿著-y方向(184)到達和來自下一節點,沿著+y方向(183)到達和來自下一節點。點對點適配器(180)還沿著z軸通過四個單向數據通信鏈路提供數據通信,沿著-z方向(186)到達和來自下一節點,沿著+z方向(185)到達和來自下一節點。
為進一步說明,圖3B根據本發明的實施例圖解了用于定位硬件故障的系統的示例性集群操作適配器(188)。集群操作適配器(188)被設計成用于針對集群操作而優化的網絡,即將并行計算機的計算節點組織二進制樹的網絡。圖3B的例子中的集群操作適配器(188)通過四個單向數據通信鏈路(190)提供到達和來自兩個子節點的數據通信。集群操作適配器(188)還通過兩個單向數據通信鏈路(192)提供到達和來自父節點的數據通信。
為進一步說明,圖4圖解了為點對點操作(106)優化的示例性數據通信網絡。在圖4的例子中,點代表并行計算機的計算節點(102),而點之間的虛線代表計算節點之間的數據通信鏈路。利用類似于圖3A中的例子所圖解的點對點數據通信適配器,利用三個軸x,y和z上的數據通信鏈路,并且沿著6個方向+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186)來回實現數據通信鏈路。由針對點對點操作優化的數據通信網絡將鏈路和計算節點組織成環繞以形成環(107)的3維網格(105)。環中的每個計算節點在環中具有由一組x,y,z坐標唯一指定的位置。為清楚說明,圖4的數據通信網絡僅用27個計算節點來圖解,但是讀者將認識到,用于根據本發明的實施例定位硬件故障的針對點對點操作優化的數據通信網絡可僅包含少數計算節點,或可包含數以千計的計算節點。
為進一步說明,圖5圖解了為集群操作(108)優化的示例性數據通信網絡。圖5的示例性數據通信網絡包括連接到計算節點以便將計算節點組織成樹的計算節點數據通信鏈路。在圖5的例子中,點代表并行計算機的計算節點(102),而點之間的虛線代表計算節點之間的數據通信鏈路。利用類似于圖3B中的例子所圖解的集群操作數據通信適配器,實現數據通信鏈路,例外的是,其中每個節點通常提供到達和來自兩個子節點的數據通信和到達和來自父節點的數據通信。二進制樹中的節點可以通過根節點(202)、分支節點(204)和葉節點(206)來表征。根節點(202)具有兩個子節點,但是沒有父節點。葉節點(206)每個具有父節點,但是葉節點沒有子節點。分支節點(204)每個既具有父節點又具有兩個子節點。從而,由該針對集群操作優化的數據通信網絡將鏈路和計算節點組織成二進制樹(108)。為清楚說明,圖5的數據通信網絡僅用31個計算節點來圖解,但是讀者將認識到,用于根據本發明的實施例定位硬件故障的針對集群操作優化的數據通信網絡可僅包含少數計算節點或可包含數以千計的計算節點。
圖5的例子中,樹中的每個節點被分配稱為‘等級’(250)的單元標識符。節點的等級唯一地標識樹形網絡中用于點對點和集群操作的樹形網絡中的節點的位置。該例子中的等級被分配為從分配給根節點(202)的0,分配給樹的第二層中的第一個節點的1,分配給樹的第二層中的第二節點的2,分配給樹的第三層中的第一個節點的3,分配給樹的第三層中的第二節點的4起的整數,如此類推。為便于說明,這里僅示出樹的前三個層的等級,但是樹形網絡中的所有計算節點都被分配了唯一等級。
圖5的例子中,樹形網絡(108)被表征為根計算節點(202)、以及層0、層1等等的多層計算節點。計算節點的層由層的計算節點與根計算節點(202)之間的數據通信鏈路的數量來定義。層0中的計算節點具有層0中的計算節點與根節點(202)之間的零個數據通信鏈路-其為層0中僅有的計算節點。層1中的每個計算節點具有其與根節點(202)之間的一個數據通信鏈路。層2中的每個計算節點具有其與根節點(202)之間的兩個數據通信鏈路。如此類推。
圖5的網絡樹的層被以從包含根節點的層(作為層0)開始的整數序列進行編號,并且繼之以層1、層2,如此類推。以整數序列來對層進行編號的事實意味著圖5的例子中的計算節點的層包括偶數層計算節點和奇數層計算節點。偶數層包括層0、層2,如此類推。奇數層包括層1、層3,如此類推。
為進一步說明,圖6根據本發明的實施例示出了圖解定位并行計算機中的硬件故障的示例性方法的流程圖。圖6的方法在包括多個計算節點和數據通信網絡(108)的并行計算機(100)中實現,所述網絡包含連接到計算節點以便將計算節點組織成樹的數據通信鏈路。圖6中的點代表計算節點,而點之間的虛線代表計算節點之間的數據通信鏈路。圖6中的每個計算節點標有其等級,即從0起并繼續至6的整數值。通過根計算節點(具有0等級的節點)以及多層計算節點(層0、層1和層2)來表征。為便于說明,這里僅示出樹的前三個層,但是樹形網絡中的所有計算節點都被分配了唯一等級。為清楚說明,圖6的數據通信網絡(108)僅以6個計算節點和三個層進行說明,但是讀者將認識到,根據本發明的實施例,用于能夠定位硬件故障的并行計算機、組織成樹的數據通信網絡可包含任意數量的計算節點和任意數量的層,僅有少數或數千。
讀者將注意到,利用二進制基數(binary radix),即所謂的二進制樹、根和具有兩個子節點的每個分支節點,組織圖6中圖解的樹形網絡(108)。然而,這里使用二進制基數僅僅是為便于說明,而不作為本發明的限制。在根據本發明的實施例將計算節點組織成樹的并行計算機的數據通信網絡中,如本領域的技術人員可想到的,此類網絡中的根節點和分支節點可以具有任意數量的子節點。如該說明書所使用的術語‘子節點’是指父節點的直接子節點-不是指孫節點、曾孫節點等。如該說明書所使用的術語‘后代’是指父節點的所有子節點、孫節點、曾孫節點等。
圖6的方法包括在樹內定義(302)網絡的計算節點的兩個或更多非重疊測試層次集合,所述非重疊測試層次集合一起包含網絡的所有數據通信鏈路,其中每個非重疊測試層次包括樹的兩個或更多相鄰層。圖7A圖解了組織成樹的網絡(108),其中定義計算節點的一個非重疊測試層次集合(702,704),其中每個非重疊測試層次(702,704)包括樹的兩個或更多相鄰層。圖7A中,點代表計算節點,而虛線代表連接到計算節點以便將計算節點組織成樹的數據通信鏈路。測試層次(702)包括樹的兩個相鄰層,層0和層1。測試層次(704)包括樹的兩個相鄰層,層2和層3。測試層次(702,704)不相重疊,即兩者都不包括任何還在另一個測試層次中的數據通信鏈路。測試層次(702,704)一起代表計算節點的一個非重疊測試層次集合(706)。
圖7B圖解了相同的網絡(108),這次利用計算節點的第二非重疊測試層次集合(718,720)來定義,其中每個非重疊測試層次(718,720)包括樹的兩個或更多相鄰層。測試層次(718)包括樹的兩個相鄰層,層1和層2。測試層次(720)包括樹的兩個相鄰層,層3和層4。測試層次(718,720)不相重疊,即兩者都不包括任何還在另一個測試層次中的數據通信鏈路。測試層次(718,720)一起代表計算節點的一個非重疊測試層次集合(722)。測試層次(702,704,718,720)代表網絡(108)的計算節點的兩個非重疊測試層次集合(706,722),其一起包含網絡的所有數據通信鏈路。
再次參考圖6圖6的方法包括在每個非重疊測試層次內定義(304)測試單元,其中每個測試單元包含樹的子樹,所述子樹包含非重疊測試層次內的子樹根計算節點和該子樹根計算節點的所有后代計算節點。圖7A和7B圖解了非重疊測試層次內所定義的測試單元。非重疊測試層次(702)具有在其內定義的測試單元(708)。非重疊測試層次(704)具有在其內定義的測試單元(710,712,714,716)。非重疊測試層次(718)具有在其內定義的測試單元(724,726)。以及非重疊測試層次(720)具有在其內定義的測試單元(728,730,732,734,736,738,740,742)。
讀者的注意力被引到利用用于說明的附圖標記被特別標記的測試單元(716)上。類似圖7A和7B中的所有測試單元,測試單元(716)由代表樹形網絡(108)的子樹的三個計算節點組成。測試單元(716)包含子樹根計算節點(705)和兩個分支節點(707)。分支節點(707)是子樹根計算節點(705)的直接子節點。分支節點(707)也是非重疊測試層次內的子樹根計算節點(705)的全部后代計算節點。類似地,測試單元(710,712,714)每個包含樹(108)的子樹,該子樹則包含非重疊測試層次(704)內的子樹根計算節點和子樹根計算節點的所有后代計算節點。測試單元(708)包含樹(108)的子樹,該子樹則包含非重疊測試層次(702)內的子樹根計算節點和子樹根計算節點的所有后代計算節點。測試單元(724,726)每個包含樹(108)的子樹,該子樹則包含非重疊測試層次(718)內的子樹根計算節點和子樹根計算節點的所有后代計算節點。并且測試單元(728,730,732,734,736,738,740,742)每個包含樹(108)的子樹,該子樹則包含非重疊測試層次(720)內的子樹根計算節點和子樹根計算節點的所有后代計算節點。
再次參考圖6圖6的方法包含分別在每個非重疊測試層次集合上對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試。即,以兩個階段執行該例子中的上行鏈路測試再次參考7A和7B,首先,對非重疊測試層次集合(706)中的所有測試單元執行上行鏈路測試。其次,對非重疊測試層次集合(722)中的所有測試單元執行獨立的上行鏈路測試。
圖7A的樹形網絡呈現了一個非重疊測試層次集合(706)的例子,其中每個非重疊測試層次(702,704)包含具有偶數層計算節點中的子樹根計算節點的測試單元。測試層次(702)包含具有層0中的子樹根計算節點的測試單元,并且測試層次(704)包含具有層2中的子樹根計算節點的測試單元。因此,通過對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試,來實現對該例子中的一個非重疊測試層次集合中的所有測試單元的上行鏈路測試,其中每個非重疊測試層次包含具有偶數層計算節點中的子樹根計算節點的測試單元。
圖7B的樹形網絡呈現了一個非重疊測試層次集合(722)的例子,其中每個非重疊測試層次(718,720)包含具有奇數層計算節點中的子樹根計算節點的測試單元。測試層次(718)包含具有層1中的子樹根計算節點的測試單元,并且測試層次(720)包含具有層3中的子樹根計算節點的測試單元。因此,通過對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試來實現對該例子中的一個非重疊測試層次集合中的所有測試單元的上行鏈路測試,其中每個非重疊測試層次包含具有奇數層計算節點中的子樹根計算節點的測試單元。
在圖6的方法中,對測試單元執行(306)上行鏈路測試可通過測試沿著從子樹根計算節點的后代計算節點到子樹根計算節點的方向傳送通信數據的數據通信鏈路來實現。在該討論的情況中,‘向上’是指從后代分支或葉節點到父節點或根節點的傳送方向。類似地,‘向下’是指從父節點或根節點到父節點或根的后代的傳送方向。圖3B的例子中,上行鏈路(752)是能夠向上,即從后代分支或葉節點向父節點或根節點傳送通信數據的數據通信鏈路。如同圖7A上的參考(705)所示的計算節點,如果計算節點(152)被當作子樹根的后代計算節點,并且其父節點(192)被當作子樹根計算節點,則上行鏈路(750)是能夠沿著從子樹根計算節點的后代計算節點到子樹根計算節點的方向傳送通信數據的數據通信鏈路。
在圖6的方法中,執行(306)上行鏈路測試可包含測試一個非重疊測試層次集合中的所有測試單元中的每個子樹根計算節點的ALU。樹(108)的每個計算節點,并且因此每個子樹根計算節點可包含專用于執行歸約操作的算術和邏輯功能的獨立的ALU-例如參考圖2中的(170)如上所圖解和所描述的獨立專用的ALU。測試每個子樹根計算節點的ALU可通過存儲MPI收集指令的正確結果到每個子樹根計算節點的存儲器中來實現,MPI收集指令利用ALU來執行算術或邏輯功能,從而執行收集和將收集的結果與正確結果相比較。
圖6的方法還包含分別從上行鏈路測試以及分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行(308)下行鏈路測試。即,以兩個階段執行該例子中的下行鏈路測試再次參考7A和7B,首先,對非重疊測試層次集合(706)中的所有測試單元執行下行鏈路測試。其次,對非重疊測試層次集合(722)中的所有測試單元執行獨立的下行鏈路測試。分別執行上行鏈路測試和下行鏈路測試減少了下行鏈路測試期間死鎖的風險,例如,當相關的上行鏈路有缺陷時。
圖7A的樹形網絡呈現了一個非重疊測試層次集合(706)的例子,其中每個非重疊測試層次(702,704)包含具有偶數層計算節點中的子樹根計算節點的測試單元。測試層次(702)包含具有層0中的子樹根計算節點的測試單元,以及測試層次(704)包含具有層2中的子樹根計算節點的測試單元。因此,通過對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試來實現對該例子中的一個非重疊測試層次集合中的所有測試單元的下行鏈路測試,其中每個非重疊測試層次包含具有偶數層計算節點中的子樹根計算節點的測試單元。
圖7B的樹形網絡呈現了一個非重疊測試層次集合(722)的例子,其中每個非重疊測試層次(718,720)包含具有奇數層計算節點中的子樹根計算節點的測試單元。測試層次(718)包含具有層1中的子樹根計算節點的測試單元,并且測試層次(720)包含具有層3中的子樹根計算節點的測試單元。因此,通過對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試來實現對該例子中的一個非重疊測試層次集合中的所有測試單元的下行鏈路測試,其中每個非重疊測試層次包含具有奇數層計算節點中的子樹根計算節點的測試單元。
在圖6的方法中,對測試單元執行(308)下行鏈路測試可通過測試沿著從子樹根計算節點到子樹根計算節點的后代計算節點的方向傳送通信數據的數據通信鏈路來實現。在圖3B的例子中,下行鏈路(750)是能夠向下,即從父節點或根節點向父節點或根的后代傳送通信數據的數據通信鏈路。如同圖7A上的參考(705)所示的計算節點,如果計算節點(152)被當作子樹根的后代計算節點,并且其父節點被當作子樹根計算節點,則下行鏈路(750)是能夠沿著從子樹根計算節點到子樹根計算節點的后代計算節點的方向傳送通信數據的數據通信鏈路。樹形網絡(108)中的所有數據通信鏈路可以是由類似參考圖3B所圖解和描述的那些鏈路(752,750)的上行鏈路和下行鏈路組成的雙向鏈路。
在圖6的方法中,執行(306)上行鏈路測試可包含測試一個非重疊測試層次集合中的所有測試單元中的每個子樹根計算節點的后代計算節點的ALU。樹(108)的每個計算節點,并且因此每個子樹根計算節點的每個后代計算節點可包含專用于執行歸約操作的算術和邏輯功能的獨立的ALU-例如參考圖2中的(170)如上所圖解和描述的獨立專用的ALU。測試后代計算節點的ALU可通過存儲參數數值和并行計算廣播指令的正確結果到每個后代計算節點的存儲器中來實現,并行計算廣播指令利用ALU對參數數值和廣播值執行算術或邏輯功能,從而執行廣播和將廣播的結果與每個后代計算節點中的正確結果相比較。常規的MPI廣播不執行算術或邏輯功能。因此,該例子中的廣播功能被改進以用于此處所示的根據本發明的實施例的定位并行計算機中的硬件故障broadcast(void*buf,int count,Datatype dtype,int root,Op op,Comm comm);該廣播通信中,所有計算節點將子樹根計算節點指定為功能‘root’,利用先前存儲的參數數值,將通過ALU發送并且操作其緩沖器內容。后代計算節點在緩沖器指針‘buf’中指定其接收緩沖器。操作之后,所有后代計算節點包含由‘op’指定的操作的結果。如本領域的技術人員可想到的,操作可以是任何有用的算術或邏輯操作,例如求和、乘積、邏輯與、邏輯或等等。
當診斷運行期間檢測到缺陷時,由于在具體測試單元的范圍內,對測試單元執行上行鏈路和下行鏈路測試具有立即定位硬件故障的好處。已知硬件故障在具體測試單元中是并行計算中的極大的好處,所述并行計算中具體計算機可包含數以千計計算節點和數以千計數據通信鏈路。對非重疊測試層次集合執行上行鏈路和下行鏈路測試提供了好處如果一個測試層次中的鏈路是有缺陷的,則有缺陷鏈路不能妨礙其它測試層次中的測試操作。
因為下行鏈路測試是對并行計算機中的計算節點的一個非重疊測試層次集合中的測試單元執行的,所以對一個非重疊測試層次集合中的所有測試單元可同時執行下行鏈路測試。對一個非重疊測試層次集合中的所有測試單元同時執行下行鏈路測試提供了好處每次測試需要恒定的時間量。
主要在用于定位并行計算機中的硬件故障的全功能計算機系統的情況中描述了本發明的示范實施例。然而,本領域技術人員將認識到,本發明也可被實現在用于任何適當數據處理系統的信號承載介質上所布置的計算機程序產品中。此類信號承載介質可以是傳輸介質或機器可讀信息的可記錄介質,包括磁介質、光學介質或其它適當介質。可記錄介質的例子包括硬盤驅動器中的磁盤或軟盤、光學驅動器的光盤、磁帶以及本領域的技術人員將想到的其它可記錄介質。傳輸介質的例子包括用于音頻通信的電話網絡和數字數據通信網絡,例如EthernetsTM,以及利用網際協議和World Wide Web通信的網絡。所屬技術領域的專業人員會立即認識到,具有適合程序的任何計算機系統意指如程序產品中所實現的,將能夠執行本發明的方法的步驟。所屬技術領域的專業人員將立即認識到,盡管該說明書中所描述的一些示范實施例是以在計算機硬件上安裝并執行的軟件為目標的,然而作為固件或如硬件實現的可選實施例在本發明的范疇內也可行。
從上述描述中將理解,在不偏離其真正宗旨的情況下,在本發明的各種實施例中可作出修改和改變。該說明書中的描述僅為了說明的目的,而不被視為限制的意義。本發明的范圍僅受限于以下權利要求書的語言。
權利要求
1.一種定位并行計算機中硬件故障的方法,所述并行計算機包括多個計算節點,和包含連接到計算節點以便將計算節點組織成樹的數據通信鏈路的數據通信網絡,所述樹通過根計算節點和多層計算節點來表征,該方法包括在樹內定義網絡的計算節點的兩個或更多非重疊測試層次集合,所述非重疊測試層次集合一起包含網絡的所有數據通信鏈路,每個非重疊測試層次包括樹的兩個或更多相鄰層;在每個非重疊測試層次內定義測試單元,每個測試單元包括樹的子樹,所述子樹包含非重疊測試層次內的子樹根計算節點和該子樹根計算節點的所有后代計算節點;分別在每個非重疊測試層次集合上對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試;以及分別從上行鏈路測試以及分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試。
2.根據權利要求1的方法,其中對測試單元執行上行鏈路測試進一步地包括測試沿著從子樹根計算節點的后代計算節點到子樹根計算節點的方向傳送通信數據的數據通信鏈路;以及對測試單元執行下行鏈路測試進一步地包括測試沿著從子樹根計算節點到子樹根計算節點的后代計算節點的方向傳送通信數據的數據通信鏈路。
3.根據權利要求1的方法,其中執行上行鏈路測試進一步地包括測試一個非重疊測試層次集合中所有測試單元中的每個子樹根計算節點的算術邏輯單元(‘ALU’);以及執行下行鏈路測試進一步地包括測試一個非重疊測試層次集合中所有測試單元中的每個子樹根計算節點的后代計算節點的ALU。
4.根據權利要求1的方法,其中執行上行鏈路測試進一步地包括對一個非重疊測試層次集合中的所有測試單元同時執行上行鏈路測試;以及執行下行鏈路測試進一步地包括對一個非重疊測試層次集合中的所有測試單元同時執行下行鏈路測試。
5.根據權利要求1的方法,其中各層計算節點進一步包括偶數層計算節點和奇數層計算節點;在樹內定義網絡的計算節點的兩個或更多非重疊測試層次集合進一步包括定義一個非重疊測試層次集合,該集合中每個非重疊測試層次包括具有偶數層計算節點中的子樹根計算節點的測試單元;對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試進一步包括對該非重疊測試層次集合集合中的所有測試單元執行上行鏈路測試,該集合中每個非重疊測試層次包括具有偶數層計算節點中的子樹根計算節點的測試單元;以及對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試進一步包括對該非重疊測試層次集合集合中的所有測試單元執行下行鏈路測試,該集合中每個非重疊測試層次包括具有偶數層計算節點中的子樹根計算節點的測試單元。
6.根據權利要求1的方法,其中各層計算節點進一步包括偶數層計算節點和奇數層計算節點;在樹內定義網絡的計算節點的兩個或更多非重疊測試層次集合進一步包括定義一個非重疊測試層次集合,該集合中每個非重疊測試層次包括具有奇數層計算節點中的子樹根計算節點的測試單元;對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試進一步包括對該非重疊測試層次集合中的所有測試單元執行上行鏈路測試,該集合中每個非重疊測試層次包括具有奇數層計算節點中的子樹根計算節點的測試單元;以及對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試進一步包括對該非重疊測試層次集合中的所有測試單元執行下行鏈路測試,該集合中每個非重疊測試層次包括具有奇數層計算節點中的子樹根計算節點的測試單元。
7.一種并行計算機,包括多個計算節點,和包含連接到計算節點以便將計算節點組織成樹的數據通信鏈路的數據通信網絡,所述樹通過根計算節點和多層計算節點來表征,該并行計算機進一步包括計算機處理器,在操作中連接到計算機處理器的計算機存儲器,計算機存儲器在其內存儲有能夠執行以下操作的計算機程序指令在樹內定義網絡的計算節點的兩個或更多非重疊測試層次集合,所述非重疊測試層次集合一起包含網絡的所有數據通信鏈路,每個非重疊測試層次包括樹的兩個或更多相鄰層;在每個非重疊測試層次內定義測試單元,每個測試單元包括樹的子樹,所述子樹包含非重疊測試層次內的子樹根計算節點和該子樹根計算節點的所有后代計算節點;分別在每個非重疊測試層次集合上對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試;以及分別從上行鏈路測試以及分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試。
8.如權利要求7所述的并行計算機,其中對測試單元執行上行鏈路測試進一步地包括測試沿著從子樹根計算節點的后代計算節點到子樹根計算節點的方向傳送通信數據的數據通信鏈路;以及對測試單元執行下行鏈路測試進一步地包括測試沿著從子樹根計算節點到子樹根計算節點的后代計算節點的方向傳送通信數據的數據通信鏈路。
9.如權利要求7所述的并行計算機,其中執行上行鏈路測試進一步地包括測試一個非重疊測試層次集合中所有測試單元中的每個子樹根計算節點的算術邏輯單元(‘ALU’);以及執行下行鏈路測試進一步地包括測試一個非重疊測試層次集合中所有測試單元中的每個子樹根計算節點的后代計算節點的ALU。
10.如權利要求7所述的并行計算機,其中執行上行鏈路測試進一步地包括對一個非重疊測試層次集合中的所有測試單元同時執行上行鏈路測試;以及執行下行鏈路測試進一步地包括對一個非重疊測試層次集合中的所有測試單元同時執行下行鏈路測試。
11.如權利要求7所述的并行計算機,其中各層計算節點進一步包括偶數層計算節點和奇數層計算節點;在樹內定義網絡的計算節點的兩個或更多非重疊測試層次集合進一步包括定義一個非重疊測試層次集合,該集合中每個非重疊測試層次包括具有偶數層計算節點中的子樹根計算節點的測試單元;對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試進一步包括對該非重疊測試層次集合集合中的所有測試單元執行上行鏈路測試,該集合中每個非重疊測試層次包括具有偶數層計算節點中的子樹根計算節點的測試單元;以及對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試進一步包括對該非重疊測試層次集合集合中的所有測試單元執行下行鏈路測試,該集合中每個非重疊測試層次包括具有偶數層計算節點中的子樹根計算節點的測試單元。
12.如權利要求7所述的并行計算機,其中各層計算節點進一步包括偶數層計算節點和奇數層計算節點;在樹內定義網絡的計算節點的兩個或更多非重疊測試層次集合進一步包括定義一個非重疊測試層次集合,該集合中每個非重疊測試層次包括具有奇數層計算節點中的子樹根計算節點的測試單元;對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試進一步包括對該非重疊測試層次集合中的所有測試單元執行上行鏈路測試,該集合中每個非重疊測試層次包括具有奇數層計算節點中的子樹根計算節點的測試單元;以及對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試進一步包括對該非重疊測試層次集合中的所有測試單元執行下行鏈路測試,該集合中每個非重疊測試層次包括具有奇數層計算節點中的子樹根計算節點的測試單元。
全文摘要
定位并行計算機中的硬件故障,包含在并行計算機的樹形網絡內定義網絡計算節點的兩個或更多非重疊測試層次集合,所述非重疊測試層次集合一起包含網絡的所有數據通信鏈路,其中由樹的兩個或更多相鄰層組成每個非重疊測試層次;在每個非重疊測試層次內定義測試單元,其中每個測試單元包含樹的子樹,所述子樹則包含非重疊測試層次內的子樹根計算節點和該子樹根計算節點的所有后代計算節點;分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行上行鏈路測試;以及分別從上行鏈路測試,并且分別在每個非重疊測試層次集合上,對一個非重疊測試層次集合中的所有測試單元執行下行鏈路測試。
文檔編號G06F15/163GK101055535SQ20071000445
公開日2007年10月17日 申請日期2007年1月23日 優先權日2006年4月13日
發明者查爾斯·J.·阿奇, 馬克·G.·梅格里安, 約瑟夫·D.·拉特曼, 布賴恩·E.·史密斯 申請人:國際商業機器公司