專利名稱:高性能計算集群中分發(fā)數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明一般涉及計算機領域,具體涉及一種在高性能計算集群中分發(fā)數(shù)據(jù)的方法和系統(tǒng)。
背景技術:
計算機集群,簡稱集群,是一種計算機系統(tǒng),其通過多個計算機(又稱為計算資源,諸如軟件和/或硬件資源)連接起來協(xié)作完成計算作業(yè)。這些計算資源位于同一管理域中,其具有統(tǒng)一的管理策略并且作為一個整體向用戶提供服務。集群系統(tǒng)中的單個計算機通常稱為節(jié)點。集群系統(tǒng)有諸多優(yōu)點。例如,當集群系統(tǒng)采用負載均衡方式工作時,通過由多臺計算機完成同一工作,其能夠達到更高的效率。高性能計算(High-Performance Computing)是計算機科學的一個分支,它致力于開發(fā)超級計算機,研究并行算法和開發(fā)相關軟件。高性能計算主要研究的問題包括大規(guī)??茖W問題,如天氣預報、地形分析和生物制藥等;以及存儲和處理海量數(shù)據(jù),如數(shù)據(jù)挖掘、圖象處理和基因測序。高性能計算集群,顧名思義,就是采用集群技術來研究高性能計算。高性能計算通常把一個作業(yè)(job)分成若干可以并行的子任務(task),各子任務間共同協(xié)作完成該作業(yè)。在高性能計算集群中,計算節(jié)點的規(guī)模非常大,例如IBM Cluster 包含了超過16000個節(jié)點。高性能計算集群中存在一個中控節(jié)點(Home node)和若干計算節(jié)點(Computation node) 0中控節(jié)點負責和用戶交互,控制和信息管理。中控節(jié)點存儲有收集到的高性能計算集群中所有節(jié)點的連接信息,當高性能計算集群接收到一個作業(yè)時, 首先由中控節(jié)點為該作業(yè)分配資源,也就是將該作業(yè)分成若干任務,為每個任務找到合適的計算節(jié)點,構建該作業(yè)的網(wǎng)絡連接表;網(wǎng)絡連接表是指每一個子任務的Infiniband的連接信息。當高性能計算中的某一個子任務和另外一個子任務通訊的時候,該子任務必須知道對方子任務的連接信息。這些信息有些類似于UDP協(xié)議中的IP+端口號。所以對于大規(guī)模的作業(yè),比如說有一百萬子任務的作業(yè),全部的網(wǎng)絡連接信息表就有一百萬個表項,每一個表項對應于一個子任務。對于Infiniband,每個表項至少要包含以下信息適配器地址 (adapter address),窗口 ID (windowID),網(wǎng)絡 id (network id),邏輯 id (logical id) ,LID 掩碼控制的掩碼(LID mask control mask),端口 id (port id)。每個表項大小大概在50 字節(jié)左右。因此全部100萬個子任務所需要的網(wǎng)絡連接表大小就是大概50MB左右。接下來中控節(jié)點與找到的為該任務服務的全部計算節(jié)點建立連接,傳遞計算任務;在傳遞任務過程中,中控節(jié)點需要傳遞很多信息,一個重要的需要傳遞的信息就是網(wǎng)絡連接表,這樣,各個計算節(jié)點間才能連接并交換數(shù)據(jù)。圖1示出了在高性能計算集群中現(xiàn)有技術的分發(fā)數(shù)據(jù)示意圖,如圖1所示,在高性能計算集群中,將計算節(jié)點分為兩層,由中控節(jié)點向第一層計算節(jié)點傳遞該作業(yè)的網(wǎng)絡連接表,再由第一層的計算節(jié)點將該作業(yè)的網(wǎng)絡連接表向第二層的計算節(jié)點傳遞,每個計算節(jié)點接收到該作業(yè)的網(wǎng)絡連接表后,向中控節(jié)點發(fā)通知,中控節(jié)點接收到全部計算節(jié)點的關于網(wǎng)絡連接表的確認,并且收到全部計算節(jié)點的其它相關信息后,才指示全部計算節(jié)點開始計算。
很多高性能計算作業(yè)都使用幾乎高性能計算集群中的全部節(jié)點,并且這些節(jié)點間密集交互。例如,對于圖1中使用128女128個節(jié)點的高性能計算集群,如果網(wǎng)絡連接表的大小為50M字節(jié),使用兩層的計算節(jié)點,IOG的網(wǎng)絡帶寬,則僅從中控節(jié)點將網(wǎng)絡連接表傳遞到所有的計算節(jié)點,就需要(50M女/(128+128)/(10G/8) = 10秒的網(wǎng)絡連接表的傳輸時間。一個作業(yè)從中控節(jié)點分配資源開始,到各個計算節(jié)點開始計算這段時間稱為作業(yè)啟動時間,顯然,上述傳輸一個作業(yè)的網(wǎng)絡連接表的時間過長會造成該作業(yè)啟動時間過長的問題。
發(fā)明內容
為了解決現(xiàn)有技術中的問題,本發(fā)明提出了一種在高性能計算集群中分發(fā)數(shù)據(jù)的方法和系統(tǒng)。根據(jù)本發(fā)明的一個方面,提供了一種在高性能計算集群中分發(fā)指定數(shù)據(jù)的方法, 該高性能計算集群包括一個中控節(jié)點和M個計算節(jié)點,M為大于等于2的整數(shù),該中控節(jié)點向該M個計算節(jié)點分發(fā)指定數(shù)據(jù),該方法包括將M個計算節(jié)點分為m層,m為大于等于2的整數(shù);將所述指定數(shù)據(jù)分成k份,k為大于等于2的整數(shù);該中控節(jié)點將所述k份數(shù)據(jù)分發(fā)給作為其子節(jié)點的第一層計算節(jié)點,第一層的每個計算節(jié)點獲得其中的至少一份數(shù)據(jù);各計算節(jié)點把其父節(jié)點分發(fā)的所述至少一份數(shù)據(jù)分發(fā)給其子計算節(jié)點;以及各計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所述指定數(shù)據(jù)。根據(jù)本發(fā)明的另一個方面,提供了一種在高性能計算集群中分發(fā)指定數(shù)據(jù)的系統(tǒng),該高性能計算集群包括一個中控節(jié)點和M個計算節(jié)點,M為大于等于2的整數(shù),該中控節(jié)點向該M個計算節(jié)點分發(fā)指定數(shù)據(jù),該系統(tǒng)中,M個計算節(jié)點被分為m層,m為大于等于2 的整數(shù),所述指定數(shù)據(jù)被分成k份,k為大于等于2的整數(shù),該系統(tǒng)包括中控節(jié)點分發(fā)器,用于該中控節(jié)點將所述k份數(shù)據(jù)分發(fā)給作為其子節(jié)點的第一層計算節(jié)點,第一層的每個計算節(jié)點獲得其中的至少一份數(shù)據(jù);位于多個計算節(jié)點的多個計算節(jié)點分發(fā)器,用于該多個計算節(jié)點把其父節(jié)點分發(fā)的所述至少一份數(shù)據(jù)分發(fā)給其子計算節(jié)點;位于多個計算節(jié)點的多個數(shù)據(jù)請求器,用于該計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所述指定數(shù)據(jù)。使用本發(fā)明的方法,可以在高性能計算集群中迅速將數(shù)據(jù)分發(fā)到各個計算節(jié)點, 分發(fā)時間比現(xiàn)有技術大大減少。
通過對附圖中本發(fā)明示例實施例方式的更詳細描述,本發(fā)明的上述、以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,相同的參考標號通常代表本發(fā)明示例實施例方式中的相同部件。圖1示出了在高性能計算集群中現(xiàn)有技術的分發(fā)數(shù)據(jù)示意圖;圖2示意性地示出了本發(fā)明的一種在高性能計算集群中分發(fā)數(shù)據(jù)的方法;
6
圖3示意性地示出了根據(jù)本發(fā)明的一種實施方式的一個計算節(jié)點如何獲得其余的指定數(shù)據(jù)的方法過程;圖4示意性地示出了根據(jù)本發(fā)明的另一種實施方式的一個計算節(jié)點如何獲得其余的指定數(shù)據(jù)的方法過程;圖5示意性地示出了優(yōu)選實施方式的節(jié)點傳輸示意圖;圖6示意性地示出了在一個特定時刻,本發(fā)明優(yōu)選實施方式的各節(jié)點間的數(shù)據(jù)傳輸;以及圖7示意性地示出了一種在高性能計算集群中分發(fā)數(shù)據(jù)的系統(tǒng)框圖。
具體實施例方式將參照附圖更加詳細地描述本發(fā)明的優(yōu)選實施方式,在附圖中顯示了本發(fā)明的優(yōu)選實施例。然而,本發(fā)明可以以各種形式實現(xiàn)而不應該理解為被這里闡述的實施例所限制。 相反,提供這些實施例是為了使本發(fā)明更加透徹和完整,并且,完全將本發(fā)明的范圍傳達給本領域的技術人員。高性能計算集群由于包含的節(jié)點數(shù)很多,并且在該集群中運行的作業(yè)一般都使用集群中包含的大部分或者全部節(jié)點,因此,一個包含了運行一個作業(yè)所涉及的所有節(jié)點的連接信息的網(wǎng)絡連接表,通常很大,例如在背景技術中給出的例子為50M字節(jié)。這樣的大的網(wǎng)絡連接表傳輸需要較長的時間;對于高性能計算集群來說,有很多要運行的作業(yè),每個作業(yè)都要傳輸該作業(yè)的網(wǎng)絡連接表,因此,從整體來說,網(wǎng)絡連接表的傳輸時間不能忽略, 尤其是對于頻繁調度作業(yè)的集群來說,減少作業(yè)的網(wǎng)絡連接表的傳輸時間更是非常有必要的。在本發(fā)明中,考慮到現(xiàn)有技術中是通過將所有作業(yè)涉及的計算節(jié)點分成兩層,由中控節(jié)點向第一層計算節(jié)點發(fā)送作業(yè)的網(wǎng)絡連接表,再由第一層計算節(jié)點向第二層計算節(jié)點發(fā)送作業(yè)的網(wǎng)絡連接表。過程中傳輸?shù)氖侨康木W(wǎng)絡連接表。本發(fā)明的基本思想是仍然將計算節(jié)點分層,但是不傳輸全部的網(wǎng)絡連接表,而是將作業(yè)的網(wǎng)絡連接表分成若干份,由中控節(jié)點對第一層的每個計算節(jié)點依次傳輸網(wǎng)絡連接表的一份,再由第一層的計算節(jié)點將接收到的一份部分網(wǎng)絡連接表向其下層傳輸,一個計算節(jié)點接到屬于本分支的一份部分網(wǎng)絡連接表后,可以隨機向其它計算節(jié)點請求屬于其它計算節(jié)點分支的一份部分網(wǎng)絡連接表,這樣,一個節(jié)點就可以獲得分成若干份的部分網(wǎng)絡連接表,可以將所有的部分網(wǎng)絡連接表組成一個完整的作業(yè)網(wǎng)絡連接表,并向中控節(jié)點匯報。中控節(jié)點得到所有計算節(jié)點的匯報后,就可以確認作業(yè)的網(wǎng)絡傳輸表傳輸完畢。本領域技術人員通過以下的描述可以知道,本發(fā)明的數(shù)據(jù)分發(fā)方法和系統(tǒng)不僅限于分發(fā)作業(yè)的網(wǎng)絡連接表,還可以在高性能計算集群中分發(fā)任意需要的數(shù)據(jù),只要是分發(fā)所有計算節(jié)點都需要的同樣的數(shù)據(jù),就可以大大減少分發(fā)時間。具體來說,圖2示意性地示出了本發(fā)明的一種在高性能計算集群中分發(fā)數(shù)據(jù)的方法,該高性能計算集群包括一個中控節(jié)點和M個計算節(jié)點,M為大于等于2的整數(shù),該中控節(jié)點向該M個計算節(jié)點分發(fā)指定數(shù)據(jù),該方法包括在步驟S201,將M個計算節(jié)點分為m層,m為大于等于2的整數(shù);在步驟S202,將所述指定數(shù)據(jù)分成k份,k為大于等于2的整數(shù);
在步驟S203,中控節(jié)點將所述k份數(shù)據(jù)分發(fā)給作為其子節(jié)點的第一層計算節(jié)點, 第一層的每個計算節(jié)點獲得其中的至少一份數(shù)據(jù);在步驟S204,各計算節(jié)點把其父節(jié)點分發(fā)的所述至少一份數(shù)據(jù)分發(fā)給其子計算節(jié)點。在步驟S205,各計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所述指定數(shù)據(jù)。下面將詳細描述圖2中的各個步驟的具體實現(xiàn)方式。在步驟S201中,M個計算節(jié)點被分為m層,m為大于等于2的整數(shù),假設第一層計算節(jié)點數(shù)為叫,第二層計算節(jié)點數(shù)為n2,……,第m層計算節(jié)點數(shù)為nm,則ni+n2+. . . +nffl = M,這樣,全部的節(jié)點可以看成是一個樹的結構,其中,中控節(jié)點為樹的根(root),每個第一層計算節(jié)點及其各層子節(jié)點構成樹的一個分支。這里,計算節(jié)點組成的樹可以分為多層,但是,多層的計算會較為復雜,而且由中控節(jié)點向子節(jié)點傳遞的時間也變長,因此,根據(jù)本發(fā)明的一個優(yōu)選實施方式,m = 2,也就是說,計算節(jié)點只被分為兩層,每個第一層計算子節(jié)點的個數(shù)可以隨意設定,例如,可以每個第一層計算節(jié)點的子節(jié)點的個數(shù)完全相同,也可以各不相同,如果各不相同,后續(xù)的處理會比較復雜,因此,根據(jù)本發(fā)明的一個優(yōu)選實施方式,每個第一層計算節(jié)點的子節(jié)點的個數(shù)相同。在步驟S202中,指定數(shù)據(jù)被分成k份,k為大于等于2的整數(shù)。這里,指定數(shù)據(jù)可以分成不等大小的k份,也可以分成相等大小的k份,其處理方式是相似的,但是,分成相等大小的k份由于傳輸時間更容易估算,所以在本發(fā)明的一個優(yōu)選實施例中,指定數(shù)據(jù)被分成相等大小的k份。在步驟S203中,中控節(jié)點將所述k份數(shù)據(jù)分發(fā)給作為其子節(jié)點的第一層計算節(jié)點,第一層的每個計算節(jié)點獲得其中的至少一份數(shù)據(jù)。這樣,第一層的計算節(jié)點就獲得了其所在分支的一份或者多份數(shù)據(jù)。優(yōu)選地,中控節(jié)點還將分發(fā)起始時間、全部計算節(jié)點的樹結構、每份指定數(shù)據(jù)的大小分發(fā)給第一層計算節(jié)點,以便全部的計算節(jié)點都了解分發(fā)起始時間、全部計算節(jié)點的樹結構以及每份指定數(shù)據(jù)的大小,從而便于后續(xù)數(shù)據(jù)處理。當?shù)谝粚佑嬎愎?jié)點的個數(shù)H1大于k時,中控節(jié)點可以對前k個計算節(jié)點,每個計算節(jié)點分發(fā)一份數(shù)據(jù), 對剩余的計算節(jié)點,再從第一份數(shù)據(jù)開始,每個計算節(jié)點發(fā)一份數(shù)據(jù);或者對剩余的計算節(jié)點,選擇若干份數(shù)據(jù)發(fā)送;在另一個實施方式中,也可以每個計算節(jié)點發(fā)送多份數(shù)據(jù),循環(huán)發(fā)送,等等。在一個優(yōu)選的實時方式中,H1 = k,也就是說,第一層計算節(jié)點的個數(shù)與指定數(shù)據(jù)分成的份數(shù)相同,這樣,中控節(jié)點就可以依次將每份數(shù)據(jù)分發(fā)給每個第一層的計算節(jié)點, 每個計算節(jié)點正好獲得一份數(shù)據(jù)。如果能夠使每個第一層的計算節(jié)點的子節(jié)點的個數(shù)也相同,并且第一層計算節(jié)點個數(shù)與k相同,將會使這個分發(fā)過程更容易。在進一步的優(yōu)選實施方式中,不僅第一層計算節(jié)點的個數(shù)與指定數(shù)據(jù)分成的份數(shù)相同,而且每個第一層節(jié)點的子節(jié)點的個數(shù)相同,后續(xù)為了敘述方便,將經常采用此優(yōu)選實施方式進行比較。在步驟S204中,各計算節(jié)點把其父節(jié)點分發(fā)的至少一份數(shù)據(jù)分發(fā)給其子節(jié)點。則各計算節(jié)點都獲得其分支的至少一份數(shù)據(jù)。優(yōu)選地,各計算節(jié)點還向其子節(jié)點分發(fā)分發(fā)起始時間、全部計算節(jié)點的樹結構、每份指定數(shù)據(jù)的大小,這樣全部的計算節(jié)點都獲得了全部計算節(jié)點的樹結構、每份指定數(shù)據(jù)的大小,以便后續(xù)的數(shù)據(jù)傳輸更方便。雖然高性能計算運行時候子任務是通過Infiniband來傳遞數(shù)據(jù),但是整個節(jié)點的控制信息還是通過TCPIP協(xié)議。因此在廣播過程中每一個節(jié)點都需要知道樹的結構,以及樹中每一個節(jié)點的IP地址, 也就是上文所述的全部計算節(jié)點的樹結構。樹的結構可以有不同的表示結構,比如可以用 [ml, m2, m3]來表示一個有m2個分枝,m3層,全部節(jié)點數(shù)為ml的m2叉樹。每個節(jié)點的IP 地址信息也連續(xù)存放,比如2層的樹,第一層第il個節(jié)點的第jl個子節(jié)點(il,jl都從0 開始)在IP信息表中的索引位置就是il *m2+jl。節(jié)點數(shù)最多有16K個,因此全部IP地址信息表就是64KB。這個數(shù)據(jù)和樹結構數(shù)據(jù)會在廣播開始時分發(fā)到每一個節(jié)點上。由此可見,全部節(jié)點的數(shù)結構信息量要遠遠小于網(wǎng)絡連接表的信息量。在一個優(yōu)選實施方式中,當計算節(jié)點中有兩層時,也就是第一層的計算節(jié)點將其從中控節(jié)點獲得的一份或者多份數(shù)據(jù)發(fā)送給其子節(jié)點。在更進一步的優(yōu)選實施方式中,第一層計算節(jié)點的個數(shù)與指定數(shù)據(jù)分成的份數(shù)相同,并且每個第一層子節(jié)點的子節(jié)點的個數(shù)相同時,該步驟就是第一層的計算節(jié)點將其從中控節(jié)點獲得的一份數(shù)據(jù)發(fā)送給其子節(jié)點。在步驟S205中,各計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所述指定數(shù)據(jù)。在優(yōu)選的實施方式中,每個計算節(jié)點已經獲得了分發(fā)起始時間、全部計算節(jié)點的樹結構,并且獲得了每份指定數(shù)據(jù)的大小,根據(jù)網(wǎng)絡帶寬,就可以估計步驟S203和步驟S204的數(shù)據(jù)傳輸時間,以及計算出當前哪些計算節(jié)點具有哪些份數(shù)據(jù)。具體來說,對于一個計算節(jié)點,該計算機點已經獲得其所在的分支的一份數(shù)據(jù),圖3示意性地示出了根據(jù)本發(fā)明的一種實施方式的一個計算節(jié)點如何獲得其余的指定數(shù)據(jù)的方法過程,根據(jù)圖3,該方法包括在步驟S301,判斷該計算節(jié)點,還有哪些份數(shù)據(jù)沒有獲得;在步驟S302,根據(jù)分發(fā)起始時間和當前時間,估算沒有獲得的數(shù)據(jù)中哪些份數(shù)據(jù)已經可以被請求;在步驟S303,從已經可以被請求的數(shù)據(jù)中選擇一份將要獲得的數(shù)據(jù)。在步驟S304,確定該份將要獲得的數(shù)據(jù)已經被那些計算節(jié)點獲得,并把這些計算節(jié)點作為候選節(jié)點。在一個優(yōu)選的實施方式中,全部計算節(jié)點被分為兩層,指定數(shù)據(jù)被分成大小相等的k份,假設每份的大小為s位(bit),第一層計算節(jié)點的個數(shù)與指定數(shù)據(jù)分成的份數(shù)相同,并且每個第一層計算節(jié)點的子節(jié)點的個數(shù)相同,假設為h,如果網(wǎng)絡帶寬為g,則在分發(fā)起始時間開始后的Ο-ks/g的時間段內,為中控節(jié)點向第一層計算節(jié)點分發(fā)數(shù)據(jù)的時間,在中控節(jié)點分發(fā)開始后s/g秒后,第一層的第一個計算節(jié)點就開始向其子節(jié)點分發(fā)自己所獲得的一份數(shù)據(jù)。在中控節(jié)點分發(fā)開始后的第i * s/g時間后,第一層的第i個計算節(jié)點獲得了自己分支所屬的第一份數(shù)據(jù),然后就開始向其子節(jié)點一次分發(fā)該份數(shù)據(jù)。也就是說,每個計算節(jié)點根據(jù)獲得的分發(fā)起始時間、全部計算節(jié)點的樹結構,每份指定數(shù)據(jù)的大小,以及網(wǎng)絡帶寬,能夠估算某一時間后那些計算節(jié)點具有中控節(jié)點分發(fā)給本分支的數(shù)據(jù)。 分發(fā)期間,該第一層計算節(jié)點可以同時接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求,并向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求,優(yōu)選地,該第一層節(jié)算節(jié)點僅向其子節(jié)點分發(fā)數(shù)據(jù),不接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求并且不向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求,直至本分支計算節(jié)點的數(shù)據(jù)分發(fā)完畢,才接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求及向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求,對于多層的樹結構,優(yōu)選地,任何一個中間層的計算節(jié)點都具有上述特性,這樣數(shù)據(jù)傳輸?shù)秸麄€網(wǎng)絡的時間更容易估計,并且傳輸效率會更高。而對于每一個第二層計算節(jié)點,在還沒有接收到本節(jié)點所屬分支的數(shù)據(jù),就可以向其它分支的計算
9節(jié)點發(fā)送數(shù)據(jù)請求,當接收到本節(jié)點所屬分支的數(shù)據(jù)后,就可以接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求。優(yōu)選地,每一個第二層計算節(jié)點當接收到本計算節(jié)點所屬分支的數(shù)據(jù)后, 才接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求,對于多層的樹結構,優(yōu)選地,任何一個葉子計算節(jié)點都具有上述特性,這樣,更容易估計每個計算節(jié)點獲得其所屬分支數(shù)據(jù)的時間,傳輸效率較高。對于上面的優(yōu)選實時方式,可以知道第一層的第i個節(jié)點,其第j個子節(jié)點獲得第一份數(shù)據(jù)的時間大約是在整個分發(fā)過程開始后的第(i+j) * s/g秒。則每個計算節(jié)點可以根據(jù)當前時間與分發(fā)起始時間的時間差與上述各個計算節(jié)點的分發(fā)時間估算哪些份數(shù)據(jù)已經可以被請求,哪些計算節(jié)點已經獲得該計算節(jié)點對應的分支的該份數(shù)據(jù)。這樣,才可以對于選擇的將要獲得的一份數(shù)據(jù),確定該份數(shù)據(jù)已經被哪些計算節(jié)點獲得。在步驟S305,從候選節(jié)點中選擇一個計算節(jié)點。該選擇步驟中,一種優(yōu)選的實施方式為通過隨機選擇的方式來選取計算節(jié)點,這樣可以使整個高性能計算集群的負載更平衡。當然本領域技術人員可以知道,還可以采用多種方式進行選取,例如,對計算節(jié)點編號, 選擇中間編號的計算節(jié)點,選擇最大編號的計算節(jié)點等等。在步驟S306,向選擇的計算節(jié)點請求并接收一份將要獲得的數(shù)據(jù)。上述各個計算節(jié)點獲得本分支的數(shù)據(jù)是根據(jù)分發(fā)起始時間、全部計算節(jié)點的樹結構,每份指定數(shù)據(jù)的大小,以及網(wǎng)絡帶寬等信息估算出來的,網(wǎng)絡中常常出現(xiàn)很多難以預料的狀況,例如,網(wǎng)絡擁堵造成帶寬降低等,因此,這種估算有時會不夠準確,這時,如果向估算出的某一時間后具有中控節(jié)點分發(fā)給本分支的數(shù)據(jù)的計算節(jié)點發(fā)送請求時,就會收到不存在該份數(shù)據(jù)的應答。這時,可以對估算出的計算節(jié)點具有中控節(jié)點分發(fā)給本分支的數(shù)據(jù)的時間加一個修正量,即認為該節(jié)點估計的整個樹分發(fā)的狀態(tài)有些超前。加上修正量后,該節(jié)點會將整個分發(fā)過程的預測做一定程度的推遲,以避免之后的請求再次出現(xiàn)請求失敗。在步驟S307,返回步驟S301,直至獲得全部所述指定數(shù)據(jù)。圖4示意性地示出了根據(jù)本發(fā)明的另一種實施方式的一個計算節(jié)點如何獲得其余的指定數(shù)據(jù)的方法過程。根據(jù)圖4,在步驟S401,判斷該計算節(jié)點,還有哪些份數(shù)據(jù)沒有獲得,這里,該計算節(jié)點可能有一份或者多份數(shù)據(jù)沒有獲得;在步驟S402,根據(jù)分發(fā)起始時間和當前時間,估算哪些節(jié)點擁有該計算節(jié)點所沒有的數(shù)據(jù)片段,作為候選節(jié)點;這里,估算方法和圖3中的估算方法類似。得到的是從數(shù)據(jù)份到節(jié)點的對應關系。在步驟S403,從候選節(jié)點中選擇一個計算節(jié)點,和圖3不同的是,圖3的方法是從數(shù)據(jù)份選擇計算節(jié)點,而本實施例,直接選擇計算節(jié)點來獲得該計算節(jié)點上的數(shù)據(jù)份;在步驟S404,向選擇的計算節(jié)點請求并接收要獲得的至少一份數(shù)據(jù);以及在步驟S405,返回判斷步驟,直至獲得全部指定數(shù)據(jù)。本實施例與圖3實施例一樣,也存在估算的修正量的問題,解決方法相同。對于從候選節(jié)點中選擇一個計算節(jié)點的步驟中,一種優(yōu)選的實施方式為通過隨機選擇的方式來選取計算節(jié)點,這樣可以使整個高性能計算集群的負載更平衡。當然本領域技術人員可以知道,還可以采用多種方式進行選取,例如,對計算節(jié)點編號,選擇中間編號的計算節(jié)點,選擇最大編號的計算節(jié)點等等。圖5示意性地示出了上述優(yōu)選實施方式的節(jié)點傳輸示意圖。圖5中,每個計算節(jié)點的上的號碼是指該計算節(jié)點收到第一份數(shù)據(jù)的時間??梢允褂眯蛄刑朳i,j]表示每個計算節(jié)點在樹中的位置,i表示該結點在第幾個分支,j表示該計算節(jié)點是其父節(jié)點的第幾個子節(jié)點。假設第一層計算節(jié)點有k個,其中,i < k,i為非負整數(shù);假設每個第一層計算節(jié)點的第二層子節(jié)點有5個,如圖5中所示,每個第一層計算節(jié)點[i,0]的第二層子節(jié)點的序列號分別為[i,l],[i,2],[i,3],[i,4],[i,5]。則根據(jù)上述優(yōu)選實施方式,計算節(jié)點 [3,2]接收被分發(fā)到本分支計算節(jié)點的數(shù)據(jù)后,參考節(jié)點號碼上的時間數(shù)據(jù),可知,計算節(jié)點[1,1],[1,2], [1,3], [1,4], [2,1], [2,2], [2,3]已經接收到被分發(fā)的本分支計算節(jié)點的數(shù)據(jù),則計算節(jié)點[3,2]就可以向計算節(jié)點[1,0],[1,1],[1,2],[1,3],[1,4]之一請求第一份指定數(shù)據(jù),或者向計算節(jié)點[2,0],[2,1], [2,2], [2,3]之一請求第二份指定數(shù)據(jù), 等等。而對于其它計算節(jié)點,計算節(jié)點[3,2]可以估算出其它節(jié)點沒有獲得本分支的一份數(shù)據(jù),就不會向它們發(fā)出數(shù)據(jù)請求。通過上述步驟,計算節(jié)點就可以獲得全部指定數(shù)據(jù)的每一份,然后將各份數(shù)據(jù)組成一份完整的指定數(shù)據(jù)。使用本發(fā)明的方法,全部的計算節(jié)點就可以在更短的時間內獲得全部的指定數(shù)據(jù),減少了指定數(shù)據(jù)傳遍高性能計算集群的全部計算節(jié)點的時間。然后,每當一個計算節(jié)點獲得完整的指定數(shù)據(jù)后,向中控節(jié)點匯報,當全部的計算節(jié)點后匯報結束,中控節(jié)點就可以指揮高性能計算集群的計算節(jié)點進行進一步的操作。圖6示意性地示出了在一個特定時刻,本發(fā)明優(yōu)選實施方式的各節(jié)點間的數(shù)據(jù)傳輸。下面估計使用本發(fā)明的方法傳輸數(shù)據(jù)的時間假設第一層計算節(jié)點數(shù)為128,第一層的每個節(jié)點的子節(jié)點數(shù)也為128,數(shù)據(jù)被分為128份,如果每份數(shù)據(jù)大小是50MB/128 ; 第二層的最后一個節(jié)點,也就是第一層的最后一個節(jié)點的最后一個子節(jié)點,接到自己父節(jié)點分發(fā)給自己的第一份數(shù)據(jù)的時間是在整個分發(fā)過程開始后的50MB/128女(128+128)/ (10G/8) = 10/128 = 0. 078secOnd,其中一份數(shù)據(jù)大小為50MB/128。中控節(jié)點將每份數(shù)據(jù)一次分發(fā)給第一層的節(jié)點,分發(fā)一個節(jié)點所用時間為50MB/128/(10G/8);第一層最后一個節(jié)點收到第一份數(shù)據(jù)的時間是在分發(fā)開始后的50MB/128/(10G/8) * 128 ;然后第一層最后一個節(jié)點將自己收到的一份數(shù)據(jù)分發(fā)給自己的128個子節(jié)點。最后一個子節(jié)點收到第一份數(shù)據(jù)的時間是在整個分發(fā)過程開始的50MB/128/(10G/8) ± 128+50MB/128/(10G/8) ± 128 =50MB/128 * (128+128)/(10G/8) = 10/128 = 0. 078second。當?shù)谝粚幼詈笠粋€節(jié)點的最后一個子節(jié)點收到自己的第一份數(shù)據(jù)后,他需要向其他節(jié)點請求剩余的127份數(shù)據(jù)。傳遞剩余的127份數(shù)據(jù)所需要的時間是50MB/128 * 127/(10G/8) = 0. 039secondo當該節(jié)點收到全部的128份數(shù)據(jù)后,因為該節(jié)點是整個樹結構的最后一個節(jié)點,因此此時其他節(jié)點應該都接收到了全部128份數(shù)據(jù)。所以總的傳輸時間就是0. 078+0. 039 = 0.117秒。顯然,比現(xiàn)有技術中使用的傳輸方法,大大減少了特定數(shù)據(jù)的傳輸時間。根據(jù)同一個發(fā)明構思,本發(fā)明還公開一種在高性能計算集群中分發(fā)指定數(shù)據(jù)的系統(tǒng)700,該系統(tǒng)框圖如圖7所示,根據(jù)圖7,該高性能計算集群包括一個中控節(jié)點和M個計算節(jié)點,M為大于等于2的整數(shù),該中控節(jié)點向該M個計算節(jié)點分發(fā)指定數(shù)據(jù),該系統(tǒng)中, M個計算節(jié)點被分為m層,m為大于等于2的整數(shù),所述指定數(shù)據(jù)被分成k份,k為大于等于2的整數(shù),該系統(tǒng)包括中控節(jié)點分發(fā)器701,用于中控節(jié)點將所述k份數(shù)據(jù)分發(fā)給作為其子節(jié)點的第一層計算節(jié)點,第一層的每個計算節(jié)點獲得其中的至少一份數(shù)據(jù);位于多個
計算節(jié)點的多個計算節(jié)點分發(fā)器702a,702b,...... 702f,用于該多個計算節(jié)點把其父節(jié)
點分發(fā)的至少一份數(shù)據(jù)分發(fā)給其子計算節(jié)點;位于多個計算節(jié)點的多個數(shù)據(jù)請求器703a703b,...... 703g,用于該計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所
述指定數(shù)據(jù)。在一種優(yōu)選的實施方式中,系統(tǒng)700的中控節(jié)點分發(fā)器還將分發(fā)起始時間、全部計算節(jié)點的樹結構、以及每份指定數(shù)據(jù)的大小分發(fā)給其子節(jié)點,以及多個計算節(jié)點分發(fā)器還將分發(fā)起始時間、全部計算節(jié)點的樹結構、以及每份指定數(shù)據(jù)的大小分發(fā)給其子節(jié)點。在進一步的優(yōu)選實施方式中,系統(tǒng)700的一個數(shù)據(jù)請求器703進一步包括(圖7 未示出)判斷裝置,用于判斷該計算節(jié)點,還有哪些份數(shù)據(jù)沒有獲得;第一估算裝置,用于根據(jù)分發(fā)起始時間和當前時間,估算沒有獲得的數(shù)據(jù)中哪些份數(shù)據(jù)已經可以被請求;數(shù)據(jù)選擇裝置,用于從已經可以被請求的數(shù)據(jù)中選擇一份將要獲得的數(shù)據(jù);第二估算裝置,用于估算該份將要獲得的數(shù)據(jù)已經被那些計算節(jié)點獲得,并將這些計算節(jié)點作為候選節(jié)點;節(jié)點選擇裝置,用于從候選節(jié)點中選擇一個計算節(jié)點;請求接收裝置,用于向選擇的計算節(jié)點請求并接收一份將要獲得的數(shù)據(jù)。其中,在所述第一確定裝置和第二確定裝置中,每個計算節(jié)點根據(jù)獲得的分發(fā)起始時間、全部計算節(jié)點的樹結構,每份指定數(shù)據(jù)的大小,以及網(wǎng)絡帶寬,估算出那些計算節(jié)點具有哪些份數(shù)據(jù)。在另一進一步的優(yōu)選實施方式中,系統(tǒng)700的一個數(shù)據(jù)請求器703進一步包括 (圖7未示出)判斷裝置,用于判斷該計算節(jié)點,還有哪些份數(shù)據(jù)沒有獲得;第三估算裝置,用于根據(jù)分發(fā)起始時間和當前時間,估算哪些計算節(jié)點擁有該計算節(jié)點所沒有的數(shù)據(jù), 作為候選節(jié)點;節(jié)點選擇裝置,用于從候選節(jié)點中選擇一個節(jié)點;請求接收裝置,用于向選擇的計算節(jié)點請求并接收至少一份將要獲得的數(shù)據(jù)。系統(tǒng)700的所述節(jié)點選擇裝置7005中,計算節(jié)點的選擇優(yōu)多種方式,一種優(yōu)選的方式為隨機選擇。并且其中,第一估算裝置、第二估算裝置以及第三估算裝置根據(jù)獲得的分發(fā)起始時間、全部計算節(jié)點的樹結構,每份指定數(shù)據(jù)的大小,以及網(wǎng)絡帶寬,估算某一時間后那些計算節(jié)點具有中控節(jié)點分發(fā)給本分支的數(shù)據(jù)。優(yōu)選地,請求接收裝置發(fā)送請求后,如果被請求節(jié)點返回不存在該份數(shù)據(jù)的應答,則對估算結果進行修正,一種簡單的方式為對估算出的計算節(jié)點具有中控節(jié)點分發(fā)給本分支的數(shù)據(jù)的時間加一個修正量。系統(tǒng)700中,計算節(jié)點組成的樹結構的中控節(jié)點分發(fā)器中,一種優(yōu)選的實時方式為中間節(jié)點向其子節(jié)點分發(fā)本分支的至少一份數(shù)據(jù)時,不接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求并且不向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求,直至本分支計算節(jié)點的數(shù)據(jù)分發(fā)完畢,才接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求及向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求。其中葉子計算節(jié)點接收到本節(jié)點所屬分支的數(shù)據(jù)后,才接收來自其它分支的節(jié)點的數(shù)據(jù)請求向其它分支的節(jié)點發(fā)送數(shù)據(jù)請求。在優(yōu)選的實施方式中,系統(tǒng)700還包括位于多個計算節(jié)點的多個匯報器,用于各計算節(jié)點獲得完整的指定數(shù)據(jù)后,向所述中控節(jié)點匯報。為了使系統(tǒng)更容易估計計算節(jié)點獲得其所在分支的數(shù)據(jù),并且系統(tǒng)設計簡單,系統(tǒng)700中所述M個計算節(jié)點滿足下列全部條件:m = 2 ;第一層計算節(jié)點的個數(shù)與k相同; 所述k份數(shù)據(jù)的大小相同;以及各第一層計算子節(jié)點的子節(jié)點的個數(shù)完全相同。雖然這里參照附圖描述了本發(fā)明的示例性實施例,但是應該理解本發(fā)明不限于這些精確的實施例,并且在不背離本發(fā)明的范圍和宗旨的情況下,本領域普通技術人員能對實施例進行各種變化的修改。所有這些變化和修改意欲包含在所附權利要求中限定的本發(fā)
12明的范圍中。并且根據(jù)上述描述,所屬技術領域的技術人員知道,本發(fā)明可以體現(xiàn)為裝置、方法或計算機程序產品。因此,本發(fā)明可以具體實現(xiàn)為以下形式,即,可以是完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等)、或者本文一般稱為“電路”、“模塊”或“系統(tǒng)”的軟件部分與硬件部分的組合。此外,本發(fā)明還可以采取體現(xiàn)在任何有形的表達介質(medium of expression)中的計算機程序產品的形式,該介質中包含計算機可用的程序碼??梢允褂靡粋€或多個計算機可用的或計算機可讀的介質的任何組合。計算機可用的或計算機可讀的介質例如可以是——但不限于——電的、磁的、光的、電磁的、紅外線的、或半導體的系統(tǒng)、裝置、器件或傳播介質。計算機可讀介質的更具體的例子(非窮舉的列表)包括以下有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器 (RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、諸如支持因特網(wǎng)或內部網(wǎng)的傳輸介質、或者磁存儲器件。注意計算機可用的或計算機可讀的介質甚至可以是上面印有程序的紙張或者其它合適的介質,這是因為,例如可以通過電掃描這種紙張或其它介質,以電子方式獲得程序,然后以適當?shù)姆绞郊右跃幾g、解釋或處理,并且必要的話在計算機存儲器中存儲。在本文件的語境中,計算機可用的或計算機可讀的介質可以是任何含有、存儲、傳達、傳播、或傳輸供指令執(zhí)行系統(tǒng)、裝置或器件使用的或與指令執(zhí)行系統(tǒng)、裝置或器件相聯(lián)系的程序的介質。計算機可用的介質可包括在基帶中或者作為載波一部分傳播的、由其體現(xiàn)計算機可用的程序碼的數(shù)據(jù)信號。計算機可用的程序碼可以用任何適當?shù)慕橘|傳輸,包括——但不限于——無線、 電線、光纜、RF等等。用于執(zhí)行本發(fā)明的操作的計算機程序碼,可以以一種或多種程序設計語言的任何組合來編寫,所述程序設計語言包括面向對象的程序設計語言——諸如Java、Smalltalk, C++之類,還包括常規(guī)的過程式程序設計語言——諸如” C”程序設計語言或類似的程序設計語言。程序碼可以完全地在用戶的計算上執(zhí)行、部分地在用戶的計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶的計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在后一種情形中,遠程計算機可以通過任何種類的網(wǎng)絡——包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)——連接到用戶的計算機,或者,可以(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng))連接到外部計算機。此外,本發(fā)明的流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產出一種機器,使得通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行的這些指令,產生實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能 /操作的裝置(means)。也可以把這些計算機程序指令存儲在能指令計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質中,這樣,存儲在計算機可讀介質中的指令產生一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means) 的制造品,也可以把計算機程序指令加載到計算機或其它可編程數(shù)據(jù)處理裝置上,使得在計算機或其它可編程數(shù)據(jù)處理裝置上執(zhí)行一系列操作步驟,以產生計算機實現(xiàn)的過程,從而在計算機或其它可編程裝置上執(zhí)行的指令就提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。 附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實施例的系統(tǒng)、方法和計算機程序產品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個接連地表示的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
權利要求
1.一種在高性能計算集群中分發(fā)指定數(shù)據(jù)的方法,該高性能計算集群包括一個中控節(jié)點和M個計算節(jié)點,M為大于等于2的整數(shù),該中控節(jié)點向該M個計算節(jié)點分發(fā)指定數(shù)據(jù), 該方法包括將M個計算節(jié)點分為m層,m為大于等于2的整數(shù); 將所述指定數(shù)據(jù)分成k份,k為大于等于2的整數(shù);該中控節(jié)點將所述k份數(shù)據(jù)分發(fā)給作為其子節(jié)點的第一層計算節(jié)點,第一層的每個計算節(jié)點獲得其中的至少一份數(shù)據(jù);各計算節(jié)點把其父節(jié)點分發(fā)的所述至少一份數(shù)據(jù)分發(fā)給其子計算節(jié)點;以及各計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所述指定數(shù)據(jù)。
2.根據(jù)權利要求1所述的方法,其中,該中控節(jié)點將所述k份數(shù)據(jù)分發(fā)給第一層計算節(jié)點還包括該中控節(jié)點將分發(fā)起始時間、全部計算節(jié)點的樹結構、以及每份指定數(shù)據(jù)的大小分發(fā)給其子節(jié)點,以及各計算節(jié)點把其父節(jié)點分發(fā)的所述至少一份數(shù)據(jù)分發(fā)給其子計算節(jié)點還包括各計算節(jié)點將分發(fā)起始時間、全部計算節(jié)點的樹結構、以及每份指定數(shù)據(jù)的大小分發(fā)給其子節(jié)點。
3.根據(jù)權利要求2所述的方法,其中所述各計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所述指定數(shù)據(jù)的步驟中,一個計算節(jié)點執(zhí)行的步驟包括判斷該計算節(jié)點,還有哪些份數(shù)據(jù)沒有獲得;根據(jù)分發(fā)起始時間和當前時間,估算沒有獲得的數(shù)據(jù)中哪些份數(shù)據(jù)已經可以被請求; 從已經可以被請求的數(shù)據(jù)中選擇一份將要獲得的數(shù)據(jù);估算該份將要獲得的數(shù)據(jù)已經被哪些計算節(jié)點獲得,并把這些計算節(jié)點作為候選節(jié)占.^ w\ 從所述候選節(jié)點中選擇一個計算節(jié)點;以及向選擇的計算節(jié)點請求并接收一份將要獲得的數(shù)據(jù)。
4.根據(jù)權利要求2所述的方法,其中所述各計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所述指定數(shù)據(jù)的步驟中,一個計算節(jié)點執(zhí)行的步驟包括判斷該計算節(jié)點,還有哪些份數(shù)據(jù)沒有獲得;根據(jù)分發(fā)起始時間和當前時間,估算哪些計算節(jié)點擁有該計算節(jié)點所沒有的數(shù)據(jù),作為候選節(jié)點;從所述候選節(jié)點中選擇一個計算節(jié)點;以及向選擇的計算節(jié)點請求并接收要獲得的至少一份數(shù)據(jù)。
5.根據(jù)權利要求3或4所述的方法,其中所述從候選節(jié)點中選擇一個計算節(jié)點的步驟中,計算節(jié)點是從候選節(jié)點中隨機選擇的。
6.根據(jù)權利要求3或4所述的方法,其中,所述多個估算步驟是通過每個計算節(jié)點根據(jù)獲得的分發(fā)起始時間、全部計算節(jié)點的樹結構,每份指定數(shù)據(jù)的大小,以及網(wǎng)絡帶寬,來進行估算的。
7.根據(jù)權利要求6所述的方法,其中向選擇的計算節(jié)點請求并接收一份將要獲得的數(shù)據(jù)后,如果被請求節(jié)點返回不存在該份數(shù)據(jù)的應答,則對所述多個估算步驟的結果進行修正。
8.根據(jù)權利要求1所述的方法,其中計算節(jié)點組成的樹結構中,中間節(jié)點向其子節(jié)點分發(fā)本分支的一份或者多份數(shù)據(jù)時,不接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求并且不向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求,直至本分支計算節(jié)點的數(shù)據(jù)分發(fā)完畢,才接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求及向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求。
9.根據(jù)權利要求8所述的方法,其中計算節(jié)點接收到本計算節(jié)點所屬分支的數(shù)據(jù)后, 才接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求。
10.根據(jù)權利要求1所述的方法,其中所述M個計算節(jié)點滿足下列全部條件 (Dm= 2 ;(2)第一層計算節(jié)點的個數(shù)與k相同;(3)所述k份數(shù)據(jù)的大小相同;以及(4)各第一層計算子節(jié)點的子節(jié)點的個數(shù)完全相同。
11.一種在高性能計算集群中分發(fā)指定數(shù)據(jù)的系統(tǒng),該高性能計算集群包括一個中控節(jié)點和M個計算節(jié)點,M為大于等于2的整數(shù),該中控節(jié)點向該M個計算節(jié)點分發(fā)指定數(shù)據(jù), 該系統(tǒng)中,M個計算節(jié)點被分為m層,m為大于等于2的整數(shù),所述指定數(shù)據(jù)被分成k份,k 為大于等于2的整數(shù),該系統(tǒng)包括中控節(jié)點分發(fā)器,用于該中控節(jié)點將所述k份數(shù)據(jù)分發(fā)給作為其子節(jié)點的第一層計算節(jié)點,第一層的每個計算節(jié)點獲得其中的至少一份數(shù)據(jù);位于多個計算節(jié)點的多個計算節(jié)點分發(fā)器,用于該多個計算節(jié)點把其父節(jié)點分發(fā)的所述至少一份數(shù)據(jù)分發(fā)給其子計算節(jié)點;位于多個計算節(jié)點的多個數(shù)據(jù)請求器,用于該計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所述指定數(shù)據(jù)。
12.根據(jù)權利要求11所述的系統(tǒng),其中,該中控節(jié)點分發(fā)器還將分發(fā)起始時間、全部計算節(jié)點的樹結構、以及每份指定數(shù)據(jù)的大小分發(fā)給其子節(jié)點,以及多個計算節(jié)點分發(fā)器還將分發(fā)起始時間、全部計算節(jié)點的樹結構、以及每份指定數(shù)據(jù)的大小分發(fā)給其子節(jié)點。
13.根據(jù)權利要求12所述的系統(tǒng),其中所述一個數(shù)據(jù)請求器包括 判斷裝置,用于判斷該計算節(jié)點,還有哪些份數(shù)據(jù)沒有獲得;第一估算裝置,用于根據(jù)分發(fā)起始時間和當前時間,估算沒有獲得的數(shù)據(jù)中哪些份數(shù)據(jù)已經可以被請求;數(shù)據(jù)選擇裝置,用于從已經可以被請求的數(shù)據(jù)中選擇一份將要獲得的數(shù)據(jù); 第二估算裝置,用于估算該份將要獲得的數(shù)據(jù)已經被哪些計算節(jié)點獲得,并把這些計算節(jié)點作為候選節(jié)點;節(jié)點選擇裝置,用于從所述候選節(jié)點中選擇一個計算節(jié)點;以及請求接收裝置,用于向選擇的計算節(jié)點請求并接收一份將要獲得的數(shù)據(jù)。
14.根據(jù)權利要求12所述的系統(tǒng),其中所述一個數(shù)據(jù)請求器包括 判斷裝置,用于判斷該計算節(jié)點,還有哪些份數(shù)據(jù)沒有獲得;第三估算裝置,用于根據(jù)分發(fā)起始時間和當前時間,估算哪些計算節(jié)點擁有該計算節(jié)點所沒有的數(shù)據(jù),作為候選節(jié)點;節(jié)點選擇裝置,用于從所述候選節(jié)點中選擇一個計算節(jié)點; 請求接收裝置,用于向選擇的計算節(jié)點請求并接收將要獲得的至少一份數(shù)據(jù)。
15.根據(jù)權利要求13或14所述的系統(tǒng),其中所述節(jié)點選擇裝置中,計算節(jié)點是從候選節(jié)點中隨機選擇的。
16.根據(jù)權利要求13或14所述的系統(tǒng),其中,所述第一估算裝置、第二估算裝置以及第三估算裝置根據(jù)獲得的分發(fā)起始時間、全部計算節(jié)點的樹結構,每份指定數(shù)據(jù)的大小,以及網(wǎng)絡帶寬,來進行估算的。
17.根據(jù)權利要求16所述的系統(tǒng),其中請求接收裝置發(fā)送請求后,如果被請求節(jié)點返回不存在該份數(shù)據(jù)的應答,則所述第一估算裝置、第二估算裝置以及第三估算裝置對估算結果進行修正。
18.根據(jù)權利要求11所述的系統(tǒng),其中計算節(jié)點組成的樹結構中,中間節(jié)點向其子節(jié)點分發(fā)本分支的至少一份數(shù)據(jù)時,不接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求并且不向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求,直至本分支計算節(jié)點的數(shù)據(jù)分發(fā)完畢,才接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求及向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求。
19.根據(jù)權利要求18所述的系統(tǒng),其中計算節(jié)點接收到本計算節(jié)點所屬分支的數(shù)據(jù)后,才接收來自其它分支的計算節(jié)點的數(shù)據(jù)請求向其它分支的計算節(jié)點發(fā)送數(shù)據(jù)請求。
20.根據(jù)權利要求11所述的系統(tǒng),其中所述M個計算節(jié)點滿足下列全部條件(1)m= 2 ;(2)第一層計算節(jié)點的個數(shù)與k相同;(3)所述k份數(shù)據(jù)的大小相同;以及(4)各第一層計算子節(jié)點的子節(jié)點的個數(shù)完全相同。
全文摘要
本發(fā)明公開了一種在高性能計算集群中分發(fā)數(shù)據(jù)的方法和系統(tǒng),該高性能計算集群包括一個中控節(jié)點和M個計算節(jié)點,M為大于等于2的整數(shù),該中控節(jié)點向該M個計算節(jié)點分發(fā)指定數(shù)據(jù),該方法包括將M個計算節(jié)點分為m層,m為大于等于2的整數(shù);將所述指定數(shù)據(jù)分成k份,k為大于等于2的整數(shù);該中控節(jié)點將所述k份數(shù)據(jù)分發(fā)給作為其子節(jié)點的第一層計算節(jié)點,第一層的每個計算節(jié)點獲得其中的至少一份數(shù)據(jù);各計算節(jié)點把其父節(jié)點分發(fā)的所述至少一份數(shù)據(jù)分發(fā)給其子計算節(jié)點;以及各計算節(jié)點向其它計算節(jié)點請求其余的指定數(shù)據(jù),從而獲得全部所述指定數(shù)據(jù)。該方法和系統(tǒng)能夠在高性能計算集群中快速將數(shù)據(jù)分發(fā)到各個計算節(jié)點。
文檔編號G06F9/50GK102486739SQ200910225838
公開日2012年6月6日 申請日期2009年11月30日 優(yōu)先權日2009年11月30日
發(fā)明者劉偉, 李廣磊, 李獲鼎, 賀軍, 陳琦 申請人:國際商業(yè)機器公司