TWI285818B - Method and system and computer-readable medium having encoded therein logic for on-demand instantiation in a high-performance computing (HPC) system - Google Patents
Method and system and computer-readable medium having encoded therein logic for on-demand instantiation in a high-performance computing (HPC) system Download PDFInfo
- Publication number
- TWI285818B TWI285818B TW094111491A TW94111491A TWI285818B TW I285818 B TWI285818 B TW I285818B TW 094111491 A TW094111491 A TW 094111491A TW 94111491 A TW94111491 A TW 94111491A TW I285818 B TWI285818 B TW I285818B
- Authority
- TW
- Taiwan
- Prior art keywords
- node
- service
- nodes
- try
- scheduler
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1006—Server selection for load balancing with static server selection, e.g. the same server being selected for a specific client
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
1285818 .1年^4贿簡正替换π 九、發明說明: t發明所屬之技術領域1 發明領域 概略言之,本發明係有關於一高效能運算(HPC)系統之 5資料處理以及特別係有關隨選例示技術。 L ]| 發明背景 南效犯運算(HPC)經常係由科學家及工程師使用運算 系統對複雜的實體現象或演繹法則現象進行模型化、模 10擬、與分析,來加以決定特徵。目前,HPC機器典型係使 用一或多個稱作為節點之處理器組成之大量Hpc叢集而設 計。對大部分大型科學應用及工程應用而言,效能主要係 由並列擴充性決定,而非由個別節點之速度決定;因此, 擴充性經常係此種高效能叢集建置上或構買上的限制因 15素。擴充性之考量一般係以下列為基準:i}硬體;n)記憶體、 參 輸出入(1/0)裝置、及通訊頻寬;Hi)軟體;iv)架構;及賴 用程式。在大部分習知HPC環境中,處理、記憶體、及ι/〇 頻寬經常平衡得不夠良好,因而無法充分擴充。許多赃 環境不具有1/0頻寬來滿足高階資料處理需求,或許多HPC 2〇環境係以安裝有過量不必要之組成元件之刀鋒(仙㈣建 置,結果導致系統之可靠度大減。如此,多種環境益 法提供可於製造導向環境中有效操作的強勁的叢集管理軟 1285818 l 24~--- 年月曰修(更)正替换貝 發明概要 本發明可減少或消除與HPC系統相關之缺點、問題或 —者° 5 於一具體例中,一種於一高效能運算(HPC)系統中之隨 選例示技術之方法,包括接收來自一客端之一連結請求其 載明一第一埠號碼以及一第一主機名稱,就包括一節點叢 集之一南效能運算(HPC)伺服器做外部公開;於該hpc伺服 器,識別與該第一埠號碼及該第一主機名稱相對應之一服 1〇務;決定是否可取得所識別之服務;以及若該識別之服務 可取得,則於該叢集之一或多個節點,例示可提供該所識 別之服務之一主機。 本發明之特定具體例可提供一或多項技術優勢。舉例 言之,特定具體例讓客端可於HPC伺服器請求服務。特定 '、體例中’唯有來自客端之請求存取該項服務符合存取該 魏:之一或多項標準時,於HPC伺服器之服務才可由客 端取侍肖疋具體例提供於一虛擬叢集之主機之高度利用 性。特疋具體例動態監視網際網路之服務請求,以及將此 等明求映射至主機,以及例示提供該所請求之服務之主 j本I明之特定具體例提供全部、部分、或未提供任何 &述優勢。特定具體例可提供—或多項其它技術優 勢,其中一或多項技術優勢對熟請技藝人士由此處附圖、 詳細說明部分及申請專利範圍將顯然自明。 圖式簡單說明 1285818 為求更完整了解本揭示及其優點,現在參照後文說明 連同附圖說明如後,附圖者: 第1圖顯示根據本揭示之-具體例,一種範例高效能運 算系統; 第2圖顯示於苐1圖所示HPC系統之一實例節點; 第3圖顯示於一郎點之一實例中央處理單元(cpu); 第4圖顯示一實例節點對;
第5A-5D圖顯示於第1圖之系統之格網之各個具體例 及其用途; 第6A-6B圖顯示根據第1圖之系統,圖形使用者介面之 各個具體例; 第7圖顯示根據第1圖之系統,叢集管理軟體之一具體 例; 第8圖顯示於y維度摺疊之一實例一維請求; 第9圖顯示使用y軸作為内迴圈組構而成之兩個自由網 第10圖顯示使用X軸作為内迴圈組構而成之兩個自由 網袼; 第11圖顯示第1圖所示HPC系統之實例介面; 第12圖為流程圖,顯示根據第1圖之高效能運算系統, 一種提交一批次式工作之方法; 第13圖為流程圖,顯示根據第!圖之高效能運算系統, 一種動態回填格網之方法;以及 第14圖為流程圖,顯示根據第1圖之高效能運算系統, 1285818
一種動態管理一節點故障之方法;以及 第15圖顯示於第1圖所示之HPC系統之一種隨選例示 技術之實例方法。
t實施方式;J 5 較佳實施例之詳細說明
第1圖為方塊圖,顯示使用HPC技術來執行軟體應用程 式及處理程序,例如執行大氣、氣候、或墜毁模擬之高效 能運算(HPC)系統1〇〇。系統丨〇〇對使用者提供於各個運算節 點115間動態配置之HPC功能,I/O效能實質上係類似處理效 10能。通常此等節點115由於輸入/輸出(I/O)效能的增高以及 組織結構延遲的縮短,因此容易擴充。例如於分散式架構 之節點115之擴充性可以安達爾氏法則(Amdahl’s law)之導 數表不· S(N)= 1 /((EP/N)+FS)*( 1 -Fc*( 1 -RR/L)) ^ 15 此處S(N)=N個處理器之加速,Fp=並列節點之分量,Fs=非 並列節點之分量,Fc=用於通訊之處理分量,以及RR/L=遠 端/近端記憶體頻寬比。因此經由HPC系統100提供實質上等 於處理效能或接近處理效能之I/O效能,HPC系統100可提高 HPC應用用途之總體效率,允許系統之行政管理更為容易。 20 HPC系統100為分散式賓/主系統,其允許使用者(例如 科學家及工程師)於HPC伺服器102進行工作150之處理。例 如,系統100可包括HPC伺服器102,其係經由網路106而連 結至一或多個行政工作站或本地客端120。但系統1〇〇可為 8 1285818 孤立運开从或為任何其它適當環境。簡言之,系統1⑽為 任何HP=運#環境,其包括高度可擴充之節點115,且允許 使用者提父工作15〇,將可擴充之節點ιΐ5動態配置於工作 150 ’以及使用酉己置之節點115來動態執行工作150。工作150 5叮為任何了使用HPc技術處理操作之批次工作或線上工作 且可由任何適當使用者提交之工作。例如工作150可為模擬 研求、模型、或任何其它高效能要求。工作15〇也可為請求 執行一資料中心應用程式,諸如叢集化資料庫、線上異動 處理系統、或叢集化應用词服器。如此處使用「動態」一 10詞通常表不某些處理於回合時間方面,至少部分係基於一 或多項變數而決定。如此處使用,「自動」一詞通常表示適 當處理實質上係經由至少部分Hpc系統1〇〇而進行。須瞭解 「自動」進一步包含任何適當使用者或行政管理者與系統 100之互動,而未悖離本揭示範圍。 15 HPC伺服器102包含可使用多數平衡節點115及叢集管
理引擎130,可操作來處理工作15〇之任何本地電腦或遠端 電腦。通常HPC伺服器1〇2包含分散式電腦諸如刀鋒飼服器 (blade server)或其它分散式伺服器。但就組態結構而言,伺 服器102包括多數節點115。節點115包含任何電腦或處理裝 20置諸如刀鋒、通用個人電腦(PC)、麥金塔電腦、工作站、 基於Unix之電腦、或任何其它適當裝置。通常第1圖僅提供 可用於本揭示之電腦實例。例如,雖然第1圖顯示可用於本 揭示之伺服器102,但系統1〇〇可使用伺服器以外之電腦以 及伺服器區(server pool)實作。換言之,本揭示涵蓋通用電 1285818
腦以外之電腦、及不含習知操作系統之電腦。如本文件使 用,「電腦」一詞意圖涵蓋個人電腦、工作站、網路電腦、 或任何其它適當處理裝置。HPC伺服器102或組成節點115 適合執行任何操作系統,包括Linux、UNIX、Windows伺服 器、或任何其它適當操作系統。根據一具體例,HPC伺服 器102也包括遠端網路伺服器或可以通訊方式耦接遠端網 路伺服器。因此伺服器102包含任何具有軟體及/或硬體之 任一種組合之電腦,其適合用於動態配置節點115來處理 HPC工作 150 〇 10 於高階,HPC伺服器102包括一管理節點105、包含多 個節點115之一袼網(grid) 110及叢集管理引擎130。特別, 伺服器102可為標準19吋框架,包括多個刀鋒(節點115),且 有部分或全部以下各組成元件:i)雙重處理器;Π)大型高頰 寬記憶體;iii)雙主機通道配接器(HCA) ; iv)整合式組織結 15構交換器;V)FPGA支援;以及vi)冗餘電源輸入或N+1電源 供應器。此等各項組成元件允許讓故障侷限於節點層級。 但須瞭解HPC伺服器1〇2及節點115可未包括全部此等組成 元件。 管理節點105包含專用於管理或輔助行政管理者之至 20少一個刀鋒。舉例言之,管理節點105可包含二刀鋒,二刀 鋒之一為冗餘(諸如主動/被動組配結構)。一具體例中,管 理節點1〇5可為與HPC節點lb同型刀鋒或運算裝置。但管 理節點105可為任何節點,包括任何數目之電路且以住一種 適當方式組配之節點,只要維持可操作來至少部分管理格 10 1285818 網110即可。經常管理節點105於實體上或邏輯上係與多個 HPC節點115結合表示於格網11〇。該具體實施例中,管理 節點105可透過鏈路108而通訊式耦接至格網11()。述及「鍵 路」一詞涵蓋任何可實作適當通訊協定之適當通訊回路。 5 舉例言之,但非限制性,鏈路可包括於一或多電路板之一 或多導線、一或多内部匯流排或外部匯流排、一或多區域 網路(LAN)、一或多都會區域網路(man)、一或多廣域網路 (WAN)、網際網路之一或多個部分、或兩種或兩種以上此 等網路之組合,視何者為適當決定。一具體例中,鏈路ι〇8 10包含管理節點105與袼網110間之十億位元或10十億位元乙 太網路通訊。 格網110為互連來提高處理功率之-組節點115。典型 地,格網11〇為三維圓環(3D τ咖),但也可為網格、超方 塊、或任何其它形狀或組態配置,而未雜本揭示之範圍。 I5格網110之各個節點115間之鏈路可為串列類比鍵路或並列
類比鏈路、數⑽路、餘何其它型狀可傳輸電氣信號 或電磁信號之鏈路,諸如域或峨線。各個節點115組配 有整口式又換器。如此,允許節點出更容易成為三維圓 衮的基本、、减且辅助縮短其它節點η〗間之距離。此 20外如此銅佈線可以南達十億位元之速率用於大型系統, 右干具體例中,最長麗線係少於5米,簡言之,節點ιΐ5通 ㊉對最接狀相及較冑1/()頻寬調整為最佳化。 各個即點m包括_個叢集代理器m,其係通訊式箱 接叢集吕理引擎130。通常,代理器⑶接收來自管理節點 11 1285818 105及/或叢集管理引擎13〇之請求或命令。代理器132可包 括任何硬體、軟體、韌體、或其組合,其可操作來決定節 點115之實體狀態,且通訊處理後之資訊例如經由「心搏」 通訊處理後之資訊給管理節點105。另一具體例中,管理節 5點105可定期輪詢代理器132來決定相關聯之節點115之狀 態。代理态132可以任一種適當電腦語言寫成,該等電腦語 έ,諸如C語言、C++語言、組合語言、爪哇語言、虛擬基 本浯s、及其它語言、或其任一種組合,只要代理器132維 持與至少部分叢集管理引擎130可相容即可。 10 叢集管理引擎130可包括任一種硬體、軟體、韌體、或 其組合,其可操作來動態配置與管理節點115,以及使用節 點115來執行工作150。例如叢集管理引擎13〇可以任一種適 當電腦語言書寫或敘述,該等電腦語言包括c語言、c+十語 言、爪哇語言、虛擬基本語言、組合語言、4GL之任何適 15當版本、以及其它語έ或其任一種組合。須瞭解雖然叢集 管理引擎130於第1圖係以單一多任務型模組來舉例說明了 但由此種引擎所執行之特色及功能可藉多重模組執行,該 等模組例如實體層模組、虛擬層模組、工作排程器、及^ 現引擎(如第7圖顯示其進一步細節)。此外雖然於圖中顯示 20於管理節點外部,但管理節點105典型執行與叢集管理 引擎130相關聯之一或多項處理程序,且可儲存叢集管理引 擎130。此外’叢集管理引擎130可為另一軟體模組之子模 組或次模組,而未悖離本揭不之範圍。因此叢集管理引擎 130包含可智慧型管理節點115及工作15〇之一或多個軟體 12 1285818 板組。特定具體例中,叢集管理引擎包括如後文說明之為 工作150配置節點115之一排程器515。排程器515可使用排 耘廣繹法則來為工作15〇配置節點115,容後詳述。 伺服器102包括介面104,來於賓主環境或其它分散式 5 兄中,透過網路106而與其它電腦系統諸如客端120通 訊。若干具體例中,伺服器1〇2由網路1〇6接收工作15〇或工 作策略用來儲存於碟片場(disk farm) 14〇。碟片場刚也可 使用互連各個節點之相同寬頻介面來直接連結至運算陣 列。通吊,介面1〇4包含以適當組合以軟體及/或硬體編碼 之邏輯且可操作來與網路1〇6通訊。特別,介面1〇4包含 支援與通訊網路106相關聯之一或多項通訊協定之軟體,或 介面104包含可操作來通訊實體信號之硬體。 眉路106可辅助電腦伺服器1〇2與任何其它電腦諸如客 端120間之無線通訊或有線通訊。確實,雖然網路106於圖 15中顯示為駐在伺服器1〇2與客端120間,但網路106也可駐在 各個即點115間,而未惊離本揭示之範圍。換言之,網路1〇6 涵蓋任何可操作來輔助各個運算組成元件間之通訊之任何 網路、多數網路、或次網路。網路106例如可介於各個網址 間通訊例如網際網路協定(IP)封包、訊框傳送(Frame Relay) 20訊框、異步傳輸模型(ATM)單元、語音、視訊、資料及其它 適當貝汛。網路106包括一或多個區域網路(LAN)、無線存 取網路(RAN)、都會區域網路(MAN)、廣域網路(WAN)、稱 作為網際網路之全球電腦網路之全部或部分、及/或於一或 多個位置之任何其它通訊系統。MAC於適當時表示媒體存 ⑧ 13 1285818 取控制。 通常碟片場MO為儲存·工作15〇、側繪圖、開機影像、 或其它HPC資訊之任何記憶體、資料庫、或儲存_路 (SAN)。根據所示之具體例’碟片場14〇包括—或多個儲存 5客端M2。碟片場⑽可根據多項通訊協定之任—者,來處 理資料封包及路由資料封包,該等通訊協定例如為無線頻 寬(IB)協定、十億位元乙太網路(GE)協定、或光纖通道㈣ 協定。資料封包典型係用來於碟片場M〇内部傳輪資料。— 個資料封包包括-標頭,該標頭有一來源識別符以及—目 10的地識別符。來源識別符例如為來源網址,來源識別符可 識別資訊發送者;目的地識別符例如目的地網址,可識別 資訊之接收者。 客端120為可透過使用者圖形介面(GUI) 126對使用者 呈現一工作提交晝面,或可操作來進行行政管理之任何裝 15置。於高階,圖示之客端120包括至少GUI 126,以及包含 電子運算裝置,其可操作來接收、發送、處理、以及儲存 任何與系統100相關聯之適當資料。須瞭解可有任何數目之 客端120麵接至伺服器102。此外「客端12〇」及「客端12〇 之使用者」可視情況而互換使用,並未悖離本揭示之範圍。 20此外,為求方便舉例說明,各個客端係以由一位使用者使 用來說明。但本揭示涵蓋多數使用者使用同一部電腦來以 相同GUI 126通訊多項工作150。 如本揭示使用’客端120意圖涵蓋個人電腦、觸控螢幕 終^裝置、工作站、網路電腦、資訊服務站、無線資料埠、 1285818
行動電話、個人資料助理器(PDA)、此等裝置或其它裝置内 部之一或多種處理器、或任何其它適當處理裝置。例如客 端120可包含具有輸入裝置之電腦’輸入裝置諸如數字小鍵 盤、觸控式面板、滑鼠、或其匕可接收^訊之裝置,以及 5 客端120包含可傳輸與伺服器102或客端之操作相關聯 之資訊之輸出裝置,該專負5凡包括數位資料、視訊資訊、 或GUI 126。輸入裝置及輸出裝置包括固定式儲存媒體或活 動式儲存媒體,諸如電腦磁碟、CD-R0M、或其它適當媒 體來接收來自使用者之輸入;以及經由行政管理顯示器及 10 工作提交顯示器,亦即GUI 126,而提供輸出信號給客端120 使用者。 GUI 126包含圖形使用者介面,該GUI 126可操作來允 許i)客端120使用者與系統100介接,來提交一或多項工作 150 ;及/或ii)系統(或網路)行政管理者使用客端12〇來與系 15 統1〇〇介接用於任何適當之監督目的。通常GUI 126對客端 120使用者提供,由HPC系統100所提供的資料的有效且為 使用者友善之呈現。GUI 126可包含多數可客製訊框或視 圖,其具有可由使用者操作之互動式欄位、下拉表單、及 按鈕。一具體例中,GUI 126呈現工作提交顯示畫面,該顯 20示畫面呈現多個工作參數欄位;以及GUI透過輸入裝置之一 而接收來自客端丨2〇使用者之命令。GUI 126另外或組合呈 現節點115之實體狀態與邏輯狀態給系統行政管理者,如第 6A-6B圖所示;以及GUU26接收來自行政管理者之各項命 令。打政管理者之各項命令可包括可使用(不可使用)之標記 15 1285818 郎”:、έ 、准修用之關機卽點、再開機節點、或任何其它適當 命令。此外,須瞭解,圖形使用者介面一詞可以單數形使 用或複數形使用,來描述一或多個圖形使用者介面、以及 一個特定圖形使用者介面之各個顯示晝面。因此,GUI 126 5涵蓋任何可於系統1〇〇處理資訊,且有效呈現結果給使用者 之任何圖形使用者介面,例如俗稱之網路瀏覽器。伺服器 102可透過網路瀏覽器(例如微軟公司網際網路探索者 (Microsoft lnternet Expl〇rer)或網景公司瀏覽器(N故叱邛㊁
Navigator))接收資料,以及使用網路1〇6送返適當的町机 10 回應或XML回應。 於一操作方面,HPC伺服器1〇2首先經過初始化或開 機。於此過程中,叢集管理引擎13〇判定格網11〇中之節^ 115之存在、狀態、所在位置及/或其它特性。如前文說明, 如此,可基於當各個節點初始化時,或由管理節點輪珣 I5時,幾乎為即刻通訊之「心搏」。其次,叢集管理?丨擎咖 例如可基於預定策略而動態配置格網丨1〇之各個部分終一 或多個虛擬叢集220。一具體例中,叢集管理引擎13〇連蟑 監視節點115是否可能發生故障,·而當判定其中有一 μ點 115故障時,使用多種復原技術之任一者來有效管理故障。 20叢集管理引擎130也可對虛擬叢集220之各個配置節點管理 且提供獨特執行環境。執行環境包含主機名稱、汗網址、 作業系統、組配之服務、本地檔案系統與共享檔案系統 及一組安裝之應用程式之資料集合。叢集管理引擎13〇可栌 據相關聯之策略,且根據叢集間策略,例如優先順位而< 16 1285818 由虛擬叢集220加減節點。 當一使用者登入至客端120時,使用者可透過GUI 126 而被呈現一工作提交晝面。一旦使用者進入該等工作參數 及所提交之工作150時,叢集管理引擎130處理與工作150、 5使用者、或使用者群相關聯之工作提交、相關參數、及任
何預定策略。然後,叢集管理引擎130至少部分基於此項資 訊來決定適當虛擬叢集220。然後,叢集管理引擎130於虛 擬叢集220内部動態配置工作空間23〇,以及使用HPC技術 跨所配置之節點115來執行工作150。至少部分基於較高I/O 10效能,HPC伺服器102可更快速完成工作150的處理。當完 成時,叢集管理引擎將結果160通訊告知使用者。 15
20 第2圖顯示一實例節點(或刀鋒)115。節點115包括任何 方向性之運算裝置用於處理一或多項工作15〇之全部或部 分,諸如工作之執行緒或處理程序。舉例言之,但非限制 性’節點115可包括XEON主機板、OPTERON主機板、或其 匕運异裝置。郎點115具有可提供整合式組織結構,讓交換 功能可於格網110跨多數節點115分散之架構。特定具體例 中,於格網110跨節點115分散此等功能可免除格網11〇之集 中式交換。其又可增加袼網110之錯誤容許度,因而讓袼網 110之各個節點間,允許從事並列通訊。 節點115包括二中央處理單元(cpu) 164以及一交換器 (或組織結構)116。述及節點115可涵蓋二cpu 164以及一交 換器166 ,視情況適當決定。於適合時,述及節點115可只 涵蓋CPU 164。交換器166可為整合式交換器。特定具體例
17 1285818 中,交換器166有24個埠 接至管理節點105供輪7 輪入至節點115或由節點115輸出。此 交換器166之二埠可將節點115耦
器166之其它埠可於格網11〇,麵接節點115至其它節點 來輔助於格網110實作多維拓樸結構(例如4D圓環或其 10匕包括多於二維之非傳統拓樸結構)。特定具體例中,交換 器166之或夕埠可沿格網11^之_或多對角轴線,來麵接 即點115至一或多個其它節點115,如此減少節點115與相對 遠離節點115之一或多個其它節點115間之通訊跨接或交 換。舉例έ之,但非限制性,交換器166之埠可將節點115 15耦接至駐在沿袼網U0之東北軸線,且距離節點115數個3D 跨接遠離處的另一節點115。特定具體例中,交換器166為 無限頻寬(InfiniBand)交換器。雖然此處舉例說明特定交換 器166 ’但本發明預期涵蓋任何適當交換器166。 鏈路168a耦接CPU 164a至交換器166。鏈路168b耦接 20 CPU 164a至另一節點115之另一交換器166,容後詳述。鏈 路168c耦接CPU 164b至交換器166。鏈路168d耦接CPU 164b至另一交換器166,容後詳述。鏈路l68e及168f耗接交 換器166至其它節點115之另二cpu 164,容後詳述。特定具 體例中,鏈路168包括於一方向每秒可通訊約1十億位元組 (§) 1285818 之無限頻寬4X鏈路。雖然以特定鏈路168舉例說明,但本發 明涵蓋任一種適當鏈路168。鏈路170為節點115之1/〇鏈 路。鏈路170可包括於一方向每秒可通訊約丨十億位元組之 無限頻寬4X鏈路。雖然以特定鏈路17〇舉例說明,但本發明 5涵蓋任一種適當鏈路170。鏈路Π2耦接交換器166至其它節 點115之其它交換器166,容後詳述。特定具體例中,鏈路 172包括於一方向每秒可通訊約丨十億位元組之無限頻寬 12X鏈路。雖然以特定鏈路172舉例說明,但本發明涵蓋任 一種適當鏈路172。 10 第3圖顯示於節點115之範例CPU 164。雖然以一範例
CPU 164來舉例說明,但本發明涵蓋任一種適當CPU 164。 CPU 164包括一處理器174、一記憶體控制器集線器(MCH) Π6、一記憶體單元178、及一主機通道配接器(HCA) 18〇。 處理器174包括硬體、軟體、或嵌置式邏輯組成元件,或兩 15種或兩種以上之此等組成元件之組合。特定具體例中,處 理器174為得自英代爾公司(INTEL)之NOCONA XEON處理 器174。特定具體例中,處理器174為由約丨百萬位元組快取 記憶體之約3.6十億赫茲處理器,且每秒可作約72十億反 轉。特定具體例中,處理器174提供超執行緒 20 (HyPerThreading)。特定具體例中,處理器i 74包括可有效 使用記憶體頻寬之記憶體捏制器。雖然舉例說明特定處理 器174,但本發明涵蓋任何適當處理器174。 匯流排182耦接處理器174與記憶體控制器集線器 (MCH) 176彼此。特定具體例中,匯流排182為每秒可通訊 19 1285818 約6.4十億位元組之約800 MHz前端匯流排(FSB)。雖然以一 特定匯流排182舉例說明,但本發明涵蓋任何適當匯流排 182。MCH 176包括硬體、軟體、或嵌置式邏輯組成元件或 兩種或兩種以上此等元件之組合來輔助處理器174與fjpc 5系統100之一或多個其它元件諸如記憶體單元178間之通 訊。特定具體例中,MCH 176為CPU 164之北橋,其控制處 理器174與記憶體單元178、匯流排182、第二階(L2)快取記 憶體、及CPU 164之一或多個其它組成元件中之一或多者間 之通訊。特定具體例中,MCH 176為LINDENHURST E7520 10 MCH 176。特定具體例中,記憶體單元178包括8十億位元 組隨機存取記憶體(RAM)。特定具體例中,記憶體單元178 包括二分開耦接至MCH 176之雙倍資料速率(DDR)記憶體 裝置。舉例言之,但非限制性,記憶體單元178可包括各自 具有每秒每通道約3 · 2十億位元組之兩蟑d D R2-400記憶體 15裝置。雖然舉例說明特定記憶體單元178,但本發明涵蓋任 一種適當記憶體單元178。
特定具體例中,一鏈路耦接MCH 176至I/O控制器集線 器(ICH),ICH包括一或多硬體、軟體、或嵌置式邏輯組成 元件,其可辅助處理器174與HPC系統100之一或多個其它 20元件間之1/0 ,諸如基本I/O系統(BIOS)耦接至ICH、十億位 元乙太網路(GbE)控制器,或其它乙太網路介面耦接至該 ICH或二者。特定具體例中,ICH為可控制cpu 164之I/O功 能之CPU 164之南橋接器。輕接至之乙太網路介面可輔 助該ICH與耦接至該乙太網路介面之一母板管理控制器 ⑧ 20 1285818 (BMC)間之通訊。特定具體例中,管理節點105或HPC系統 100之其它組成元件包含一或多個此種BMC。特定具體例 中,一鏈路耦接該乙太網路介面至一交換器來提供存取至 一或多個GbE管理璋。 5 匯流排184耦接MCH 176與HCA 180彼此。特定具體例
中,匯流排184為周邊組件互連(PCI)匯流排184,諸如每秒 可通訊約4十億位元組之PCI-Express 8X匯流排184。雖然此 處係以特定匯流排184舉例說明,但本發明涵蓋任一種適當 匯流排184。HCA 180包括硬體、軟體、或嵌置式邏輯組成 10 元件或可提供基於通道之I/O至CPU 164之兩個或兩個以上 此等元件之組合。特定具體例中,HCA180為MELLANOX 無限頻寬HCA 180。特定具體例中,HCA 180可提供每秒約 2.65十億位元組之頻寬,允許每個處理元件(PE)約1·85十億 位元組至節點115之交換器166,以及允許每ΡΕ約800百萬位 15 元組至I/O,諸如基本I/O系統(BIOS)、乙太網路介面及其它 I/O。特定具體例中,HCA 180允許對每秒尖峰約13.6十億 反轉之於交換器166之頻寬達約3.7十億位元組/秒,對約每 反轉0·27位元組之於交換器166之I/O速率到達約50百萬位 元組/十億反轉,或二者。雖然以特定HCA 180舉例說明, 20 但本發明意圖涵蓋任何適當HCA 180。各鏈路168搞接HCA 180至一交換器166。鏈路168a耦接HCA 180至第一交換器 166,其就HCA 180而言為一次交換器166,容後詳述。特 定具體例中,包括HCA 180之節點115包括第一交換器166。 鏈路168b耦接HCA 180至第二交換器166,該交換器就HCA
21 1285818 180而言為二次交換器,容後詳述。特定具體例中,未包括 HCA 180之節點115包括第二交換器166,容後詳述。
第4圖顯示包括二交換器166及四處理器174之一實例 節點對186。於節點對186之交換器166相對於彼此為冗餘, 5 如此可提高節點對186之錯誤容許度。若節點對186之第一 交換器166之功能不當,則節點對186之第二交換器166可對 節點對186之全部四個CPU提供交換。於節點對186,交換 器166a相對於CPU 164a及164b為一次交換器166,以及相對 於CPU 164c及164d為二次交換器166。交換器166b相對於 10 CPU 164c及164d為一次交換器166,以及相對於CPU 164a 及164b為二次交換器166。若二交換器166a及166b之功能適 當,則交換器166a可對CPU 164a與164b提供交換,以及交 換器166b可對CPU 164c與164d提供交換。若交換器166a之 功能適當,但交換器166b則否,則交換器i66a可對CPU 15 164a、164b、164c及164d提供交換。若交換器166b之功能 適當’但交換器166a則否,則交換器166b可對CPu 164a、 164b、164c及164d提供交換。 鏈路172耦接節點對186之各個節點115至格網11〇之節 點對186外侧之六個節點115。舉例言之,但非限制性,於 20父換之鍵路172a麵接節點U5a至格網110中節點115a 北方節點對186外側之一第一節點115,於交換器祕之鍵 路172b麵接喊點1 i5aj_格網丨1G中節點丨以南方節點對186 外側之一第二節點115 ’於交換器166a之鏈路172c耦接節點 115a至格網11G中節點U5a東方節點對傷外側之一第三節 22 1285818 點115,於交換器166&之鏈路172d耦接節點115a至格網ι10 中卽點115a西方節點對186外侧之一第四節點115,於交換 器166a之鏈路I72e耦接節點115a至格網110中節點115a上方 節點對186外側之一第五節點115,以及於交換器166a之鏈 5 路172搞接節點115a至格網110中節點115a下方節點對186 外側之一第六節點115。特定具體例中,鏈路172耦接於節 點對186之節點115a及115b至節點對186外側之彼此不同之 節點115集合。舉例言之,但非限制性,於交換器166a之鏈 路172可耦接節點115a至節點對186外側之一第一六個節點 10 115集合,該集合包括於節點對186外側之一第一節點115、 節點對186外側之一第二節點115、節點對186外側之一第三 節點115、節點對186外側之一第四節點115、節點對186外 側之一第五節點115、以及節點對186外側之一第六節點 115。於交換器166b之鏈路172可耦接節點115a至節點對186 15外側之一第二六個節點115集合,該集合包括於節點對186
外側之一第七節點115、節點對186外側之一第八節點115、 節點對186外側之一第九節點115、節點對186外側之一第十 郎點115、節點對186外側之一第十一節點115、以及節點對 186外側之一第十二節點115。 特定具體例中,鏈路172可耦接相鄰於格網ho之第一 緣之第一節點115至相鄰於格網11〇之與第一緣相對之第二 緣之第二節點115。舉例言之,但非限制性,考慮相鄰於格 網110之左緣之第一節點115、以及相鄰於格網110之右緣而 與格網110之左緣相對之第二節點115。鏈路172可耦接第一 1285818 即點出及第二節點115彼此,讓第一節點li5係於第二節點 115之東方,而第二節點115係於第—節點115之西方,而盘 於格網U0内部第-節點115之位置相對於第二節點出之 位置無關。至於另一實例,考慮相鄰於格網110之前緣之第 5 一節點115、以及相鄰於格網⑽之後緣而與格網削之前緣 相對之第二節點115。鏈路172可麵接第—節點出及第二節 點二5彼此,讓第一節點115係於第二節點115之南方,而第 -:點115係於第-節點115之北方,而與於格網丨動部第 一^點115之位置相對於第二節點出之位置無關。至於又 10另一實例,考慮相鄰於格網110之頂緣之第—節點115、以 及相鄰於格網11G之底緣而與格網11()之_相對之第二節 點路172可麵接第一節點115及第二節點出彼此, 讓第1點115係於第二節點115之下方,而第二節點115係 於第一節點115之上方,而與於格網11〇内部第一節點115之 15位置相對於第二節點115之位置無關。 第5A-5D圖顯示於系統100之格網丨1〇之各個具體例及 ,、使用或其拓樸結構。第5A圖顯示使用多型節點之格網11〇 之一種組配結構,亦即三維圓環。舉例言之,所示節點型 別包括外部I/O節點、檔案系統(FS)伺服器、fs母資料飼服 2〇料庫飼服器、及運算節點。第5B圖顯示格網11〇之「摺 且」貝例摆燮通常允許格網11〇之一個實體緣連結至相對 應之軸向緣,藉此提供更為強勁或無邊之抬樸結構。本具 體例中,節點115經包裹來提供藉節點鍵路216所連結之接 近無接縫式抬樸結構。節點鏈路抓可為實作任何通訊協定 24 1285818 來互連二或二以上節點115之任何適#硬體。例如節點鏈路 加可為實作十億㈣乙太網路之銅窥線或光纖麟。特定 具體例中,節點線216包括一或多鏈路172,如前文說明。
10 15
第5C圖顯示具有一虛擬叢集22〇配置於其内部之格網 110。雖然只以-個虛擬叢集2 2峰例說明,♦於格網⑽可 有任何數目(包括零個)虛擬叢集22〇,而轉離本揭示之範 圍。虛擬叢集22G為處理相關工作15()之節點出之邏輯組 群。舉例言之,虛擬叢集22〇可與—研究小級、—部門、 實驗室、或任何其它可提交類似工作15()之_者__ 聯。虛擬叢集220可為任何雜,且於格網1ι〇内部包含任 何數目之節點115。確實,雖然:舉例說明之虛擬叢集22〇包 括多數實體上相鄰之節點115 ’但叢集⑽可為可操作來處 理工作150之邏輯相關節點115的分散式叢集。 虛擬叢集220可於任何適當時間配置。例如叢集可 於系統100初始化時,例如基於起動參數配置;或叢集咖 可例如基於變化中之飼服器1()2之需求而動態配置。此外, 虛擬叢集22G可隨時間之經過,改變其形狀及大小,來對變 化中之請求、需求、及情況做快速回應。例如虛擬叢集咖 可響應於第二節點出(输為叢集22()之一部分)故障,而自 動改變為含括-個自動配置之第—節點115。若干呈體例 中,叢集220可視處理需求而共享多個節點出。特^具體 例中,排程器515可根據排程演繹法則,配置—或多個虛擬 叢集220給一或多個工作150,說明如後。 第5D圖顯示配置於範例虛擬叢集22〇内部之各個工作 20 1285818 空間230a及230b。通常工作空間230係動態配置來完成所接 收之工作150之虛擬叢集220内部之節點115集合。典型地, 每個執行工作150有一工作空間230,反之亦然,但工作空 間230可共享各節點115,而未悖離本揭示之範圍。工作空 5 間230之尺寸可由使用者或管理者以手動輸入,或基於工作 參數、策略、及/或任何其它適當特性而動態決定。特定具 體例中,排程器515可根據排程演繹法則來決定一工作空間 230之一或多維,說明如後。
第6Α-6Β圖顯示根據系統100之管理圖形使用者介面 10 400之各具體例。經常管理GUI 4〇〇係使用GUI i 26而呈現給 客端120。通常,管理GUI 400係呈現多個管理互動式畫面 或顯示晝面給系統行政管理者,及/或呈現多個工作提交書 面或工作側繪圖畫面給使用者。此等畫面或顯示幕包含組 繹成為所收集之資訊之各個面相之圖形元件。舉例言之, 15 GUI 400可呈現格網實體健康顯示畫面(顯示於第6八圖)、或 格網110之節點U5之邏輯配置或拓樸結構(顯示於第6β 圖)〇 第6A圖顯示範例顯示畫面400a。顯示畫面4〇〇a包括呈 如現給行政管理者用於有效管理節點115之資訊。所示具體例 包括標準網路瀏覽器,具有格網110之邏輯「圖像」或螢幕 2照。舉例言之,本圖像可提供格網110其組成節點115之 實體狀態。各個節點115可為多種色彩之任_種,各個色彩 表示各種不同狀態。舉例言之,不合格的節點ιΐ5為紅色: 已經被使用3戈已經被配置之節點115為黑色,而未經配置之 ⑧ 26 1285818
節點115可加影線。此外,顯示晝面4〇〇a允許行政管理者移 動指標裔於即點115-者,以及觀視節點115之各種實體屬 性。舉例吕之,行政管理者可被提供包括下列資訊:「節 點」、「利用性」、「處理器之利用」、「記憶體之利用」、「溫 5度」、「實體位置」、及「網址」。當然此等僅為資料搁位範 例,任何適當實體節點資訊或邏輯節點資訊皆可顯示給行 政官理者。顯示畫面4〇〇a也允許行政管理者旋轉格網ιι〇之 觀視角度,或允許執行任何其它適當功能。 第6B圖顯示範例顯示畫面4〇仙。顯示晝面400b呈現格 1〇網110之邏輯態之一視圖或圖像。該具體例呈現配置於格 網110内部之虛擬叢集220。顯示畫面4〇〇b進一步顯示配置 於叢集220内部用來執行一或多項工作15〇之二範例工作 空間230。顯示畫面4〇〇b允許行政管理者移動指標器於圖 形虛擬叢集220上方,來觀視藉各個狀態而分組之多個節 點115 (諸如經配置或未經配置)。此外,行政管理者可移 動指標器於工作空間230之一上方,因而可呈現適當工作 資訊。舉例言之,行政管理者可觀視工作名稱、開始時間、 郎點數目、估計結束時間、處理器之使用情況、I/O使用情 況等。 〇 須瞭解管理GUI 126 (前文分別以顯示晝面400a及400b 表不)僅供舉例說明之用,而可包括所示圖形元件以及其它 未顯示之管理元件中之無任一者、部分或全部。 第7圖顯示根據系統100之叢集管理引擎130之一具體 例。本具體例中,叢集管理引擎130包括複數個子模組或組 ⑧ 27 1285818 成元件:實體管理器505、虛擬管理器51〇、工作排程器515、 及本地記憶體或變數520。 實體管理器505為可操作來決定各個節點115之實體健 康情況之任何軟體、邏輯、勒體、或其它模組,以及實體 5管理器5〇5可基於此等測定之「健康情況」來有效管理節點 II5。貫體管理器可使用此等資料來有效判定節點115之故 障,與對節點115之故障做回應。一具體例中,實體管理器 505係通訊式耦接至複數個代理器132,各個代理器132係駐 在一個節點115。如前文說明,代理器132集合至少實體資 10訊且將該資訊通訊給實體管理器505。實體管理器505進一 步可操作來透過網路106通訊警告於客端12〇之系統行政管 理者。 虛擬管理器510為可管理虛擬叢集22〇及節點115之邏 輯狀態之任何軟體、邏輯、動體、或其它模組。通常虛擬 15管理器510鏈接表示節點115之邏輯電路與節點115之實體 狀悲。基於此等鏈路,虛擬管理器51〇可產生虛擬叢集22〇, 且對虛擬叢集220處理各項變化,諸如響應於節點故障或 (系統或使用者)請求加速Η p c處理而做出回應。虛擬管理器 510也可將虛擬叢集220之狀態諸如未經配置之節點115通 20訊給工作排程器515,俾便動態回填未經執行的、或佇列等 候的HPC程序及工作15〇。虛擬管理器51〇可進一步判定工 作150與特定節點115之相容性,且將此資訊通訊給工作排 程器515。若干具體例中,虛擬管理器51〇可為呈現個別虛 擬叢集220之物件。 m ⑧ 28 1285818 特定具體例中’叢集營理引擎13〇包括排程器515。排 程器515包括硬體、軟體、或嵌置式邏輯組成元件或一或多 個此種組成元件可根據排程演繹法則來配置節點丨15給工 作150。特定具體例中,排程器515係插入即用。特定具體 5例中,響應於叢集管理?丨擎130之接收工作150,叢集管理 引擎130呼叫排程器515來配置一或多個節點115給工作 150。特定具體例中,當叢集管理引擎130呼叫排程器515配 置一或多個節點115給工作15〇時,叢集管理引擎13〇對排程 器515識別於格網110中可供用來配置給工作15〇之節點 10 115。舉例言之,但非限制性,當叢集管理引擎13〇呼叫排 程器515來配置一或多個節點ι15給工作150時,叢集管理引 擎130可將格網110中可供用來配置給工作150之全部節點 115之串列通訊給排程器515。特定具體例中,唯有在可供 用來配置給工作150之節點115之數目係大於或等於請求用 15 於工作150之節點115之數目時,叢集管理引擎130才呼叫排 程器515來配置一或多個節點115給工作150。
如前文說明,特定具體例中,格網110為各自耦接至四 埠CPU 164之交換器166之三維圓環。排程器515邏輯組配格 網110為節點115之圓環。尺寸[x,y,z]之交換器166之圓環可提 2〇 供六種可能之邏輯組配狀態:[4x,y,z]、[X,4y,z]、[X,y,4z]、 [2x,2y,z]、[2x,y,2z]、以及[x,2y,2z]。當排程器 515 配置 一或多個節點115給一工作150時,排程器515可選擇最適合 於工作150之邏輯組態。 訊息進送介面(MPI)為工作150之多項處理程序之通訊 (S) 29 1285818 標準。特定具體例中,排程器515對配置給一工作15〇之各 個節點115指定一個ΜΠ等級。對包括]^項處理程序之一工 作150而言,排程器515對各項程序指定〇與N]間的一個獨 特整數等級。為了通訊訊息給工作15〇之第一程序,工作15〇 5之第二程序可載明第-程序之第一等級。同樣地,為了接 收來自工作15G之第-程序之訊息,卫作⑼之第二程序可 載明第-程序之等級。排程器515也界定一或多個廣播群, 個別辅助由該廣播群之程序通訊訊息給該廣播群之全部其 它程序。欲由-廣播群之第—程序接收訊息,該廣播群之 10 第二程序可載明該廣播群。 特定具體例中,排程器515可處理三種型別之請求:「空 間」^精簡」、及「任何」。述及「請求」涵蓋工作150(若 屬適當),及反之亦然(若屬適當)。當使用者提交一工作1S0 給HPC伺服器102時,使用者可載明請求型別。「空間」請 15求涵蓋以空間方式描述之工作15〇。一類現有刪應用程式 假設於一工作150之多項程序間之空間關係。例如氣候模型 屬於八巾例A 了處理包括氣候模型之工作⑼,册C伺 服器1〇2可使用涵蓋經度及緯度(或類似之座標系)之二維格
20 網來區隔地表,且將時間週期劃分成為分散之時階。工作 150之各項處理模型化—特定區之氣候。於各個時階之起 占々u處理相鄰之四項其它處理個別交換邊界值, 然後運算特區之氣候。為了處理包括氣候模型U作 150,HP_議可使料聽度、緯度及高度(或類似 之座標系)之三維格網來替代二維格網綠隔地表。 ⑧ 30 I285818 用於一工作150之各項程序假設為空間關係之MPI應 用程式’使用者可對工作150請求節點115之三聯碼{Sx, Sy, Sz}。若全部維度s皆係大於丨,則請求為三維請求。若維度 S之一係等於1,則該請求為二維請求。若維度S之二者皆等 5於1 ’則該請求為一維請求。為了配置節點115給該項請求, 排程器515可映射空間座標至Μρβ級如後:[X, y,ζ]—χ χ
Sy X SZ + y X Sz + z ° Sx、Sy及Sz指示請求之大小,χ為〇至 Sx’ y為0至Sy及ζ為〇至&。為了配置節點115給二維請求, 排程器515可映射空間座標至Μρι等級如後:[x,y]yx χ办 0 +y °特定具體例中,為了映射空間座標至⑽〗等級,排程 态515首先係沿格網11〇之2軸遞增,然後沿格網11〇之丫軸遞 增’及接著沿格網110之又軸遞增。為了配合有關排程器515 映射空間座標至MPI等級之不正確假設,例如首先沿格網 U〇之X轴遞增,然後沿格網110之y軸遞增,以及接著沿格 15網11〇之2軸遞增,叢集管理引擎130可將所請求的工作15〇 例如呈{Sz,Sy,Sx}呈現給排程器515。 精簡」請求涵蓋未做空間描述之工作15〇。排程器 515可配置節點115給一精簡請求來最小化配置給該精簡請 求之各對節點115間之最大通訊距離(或交換次數)。一「任 2〇何」請求涵蓋極少要求或未要求處理間通訊之工作150。排 程器515可配置任何節點115集合來滿足一項任何請求。此 種工作150給排程器515提供機會來填補於格網110由於分 段所造成的孔洞。 當使用者提交工作150給HPC伺服器102時,使用者也 ⑧ 31 1285818 於工作150載明激進旗標。特定具體例中,激進旗標為〇至1 間之浮動點數目,指示分配給排程器515用於配置節點115 給工作150之餘裕度。數目較高,則比較數目較低給予排程 器515較大餘裕度。若使用者提交一空間請求給^^^伺服器 5 1〇2且於該空間請求設定激進旗標為零,則唯有於節點115
可供用於配合該空間請求時,排程器515才排程該工作 150。特疋具體例中,右使用者提交空間請求給Hpc伺服器 102,且設定於該空間請求之激進旗標為大於零之數目,則 排程器515嘗試配合該空間請求;但若排程器515無法配合 1〇該空間請求,則將工作150排程為精簡請求。特定具體例 中,一精簡請求允許配置給該精簡請求之成對節點115間有 不受限制之交換次數。排程器515經常性配合此項請求,原 因在於如别文說明’唯有於可用於配置之節點115之數目係 大於或等於所請求之節點115之數目時,叢集管理引擎13〇 15才呼叫排程器。特定具體例中,於精簡請求之激進旗標 指示配置給該精簡請求之成對節點115間之交換次數限 制。此種具體例中,對交換次數之限制可等於i,此處a l — a 為激進旗標。 特定具體例中,當叢集管理引擎130呼叫排程器515來 20 配置一或多個節點115給一工作150時,叢集管理引擎13〇提 供下列輸入信號給排程器515 :請求之節點115數目;請求 型別;工作150之尺寸;工作150之激進旗標;格網11〇之基 於交換器之大小(排程器515後來調整來決定格網110之基 ⑧ 32 1285818 於節點之大小);每個交換器166之節點115數目(於特定具體 例係等於4);可供配置給工作150之節點115數目;以及可 供配置給工作150之一或多個節點115之ID(例如可供配置 給工作150之全部節點115之串列)。特定具體例中,
5 RecluestedNodes指示請求之節點115數目,RequestType指示 請求型別,RequestedSize(包括一陣列)指示工作150之大 小,AggressiveFlag指示工作150之激進旗標,TomsSize(包 括陣列)指示格網110之基於交換器之大小,NodesPerSwitch 指示每個交換器166之節點115數目,NumFreeNodes指示可 10 供配置給工作150之節點115數目以及FreeNodeList(包括一 陣列)識別可供配置給工作150之一或多個節點115。 特定具體例中,當排程器515排程(或嘗試排程)一工作 150時,排程器515提供下列輸出信號:配置給工作150之節 點115之ID(諸如配置給工作150之節點115串列);配置給工 15 作150之各個節點之MPI等級;以及一回覆值指示(1)排程器 515排程工作150,(2)排程器515未排程工作150或(3)排程器 515未曾排程工作150。 特定具體例中,為了配置節點115給一工作150,排程 器515首先初始化排程工作150之變數,然後根據該等變數 2〇 來排程工作150,以及接著轉換於叢集管理引擎13〇處理之 時程(或結果)。三項變數亦即SpatialAllowed、 CompactAllowed及AnyAllowed指示容許之排程型別。排程 器515可使用下列實例邏輯來初始化SpatialAllowed、 CompactAllowed及AnyAllowed : ⑧ 33 !285818
15
• If the NodesRequested = 1 〇 Spatial Allowed = False 〇 Compact Allowed = False 〇 Any Allowed = True • Else If RequestedType = SPATIAL 〇 Spatial Alio wed = True 〇 Any Allowed = False 〇 If AggressiveFlag > 0 • CompactAllowed = True 〇 Else • ComPactAllowed = False • Else If RequestedType = Compact 〇 SpatialAllowed = False 〇 CompactAllowed = True 〇 Any Alio wed = False • Else If RequestedType = Any 〇 SpatialAllowed = False 〇 CompactAllowed = False 〇 Any Alio wed = True 特定具體例中,排程器515定向格網no之基於交換器 之大小,指出較大格網110尺寸係排於較小格網110尺寸之 前。TorusMap(包括一陣列)指示定向來指出較大格網110尺 寸排在較小格網110尺寸前方之格網110之基於交換器之大 小。排程器515施加TorusMap至於FreeNodeList中所識別之 全部節點115。InverseTorusMap(包括一陣列)為TorusMap之 倒數,排程器515施加InverseTorusMap至配置給一工作150 之節點115串列,隨後送返該串列給叢集管理引擎130供處 理。舉例言之,但非限制性,若叢集管理引擎130通訊 14x16x15之基於交換器之圓環大小給排程器515,則排程器 34 1285818 515設定丁〇1118]\^9為{2,0,1}。然後基於交換器之圓環大小 變成16x15x14,對FreeNodeList中具有指標{x,y,z}之一節 點115而言,於排程器515施加TomsMap後,節點115之指標 為{y,z,x}。前述實例之InverseTorusMap為{1,2, 0}。 5 特定具體例中,NumMapDimensions指示當將基於交換 器之圓環轉成基於節點之圓環時之修改維度數目。 MapDimensions[2]及MapMod[2]提供修改維度指標及修改 維度個別之乘數。排程器515可將修改維度之一乘以4,或 將修改維度二者個別乘以2。排程器515決定施加何種乘 10法,然後據此來修改圓環大小(最初係以交換器作說明)。排 程器515根據RequestType決定應用何種乘法。 特疋具體例中’排程器515施加一或多幾何轉換給一請 求來產生可滿足該請求之網格串列。一網格包括嵌置於格 網110内部之一框。一起點[Sx,Sy,Sz]及一終點[Ex,Ey,Ez] 15界疋一網格。若一網格具有一或多維之起點大於終點,則 該網格「包裹」於一或多維。舉例言之,但非限制性,具 有起點於[3,7,5]及終點於[2,9,4]之網格包裹於x維及y 維。右[Sx把Ex]、[Sy%Ey]、及[SzwEz],則於格網 11〇 之點[x,y,z]係駐在一非包裹網袼。於排程器515產生可滿足 2〇該項請求之一網格串列後,排程器515迴圈通過該串列,直 到排程器515識別-網格,其就可供配置給該請求之節點 115之集合而言為可排程。通常三維請求可獲得六個滿足該 -月求之、、周格—維睛求可獲得數十個滿足該請求之網格, 、及u可獲得數百個滿足該請求之網格。特定具體 ⑧ 35 1285818 例中,排程器515對二維請求或三維請求設定基於節點之圓 環,來最大化可滿足該項請求之網袼數目。 欲初始化排程(或配置一或多個節點115給)一維請求之 變數’排程器515設定格網11〇之交換器166之y轴及z軸為 5 2x2卽點115組態。排程器515映射工作15〇,讓格網11〇之交 換器166之z軸為未被使用之維度。然後排程器515沿2軸將 工作150摺疊成y軸。因此特定具體例中,下述應用於一維 請求:
NumMapDimensions=2 10 MapDimension[0]=l
MapDimensionf 1 ]=2 MapMod[0]=2 MapMod[l]=2 [n]表示具有指數於〇至ΐ·η(視何者適當而定)之一維陣列。舉 15例言之而非限制性,a=={4,6,2}若屬適當係對應於a[0]=4、 a[l]=6及a[2]=2 〇 特定具體例中,排程器515也設定格網11〇之交換器166 之y軸及z轴為2x2郎點115組態,來初始化排程二維請求之 變數。特定具體例中,排程器515將一二維請求摺疊至第三 20維未被使用維,來產生較為精簡之形狀供排程之用。由於 可實施多項此種摺疊,排程器515可選擇一組態(與2x2節點 115組態不同)其產生最大摺疊數目。排程器515對一二維請 求檢查六種可能組態之各個組態,以及對六種可能組態個 別計算可能之摺疊數目。特定具體例中,排程器515選出允 25許獲得最大可能摺疊數目之組態。特定具體例中,當兩個 36 1285818 1x4組態間有連繫時,排程器515首先選擇修改z軸之1χ4組 態,以及接著選擇修改y軸之1x4組態。特定具體例中,當 1x4組態與2x2組態間有連繫時,排程器515選擇2x2組態。 特定具體例中’當兩個或兩個以上之2x2組態間有連繫時, 5排程器515首先選擇修改y軸及z軸之2x2組態,然後選擇修 改X軸及z轴之2x2組悲以及然後選擇修改\軸及y軸之2X2組 態。特定具體例中,排程器515初始化排程三維請求之變 數,如同排程器515初始化排程二維請求之變數般,只有當 三維請求允許六個方向(或旋轉)其相對於彼此各自為獨 10 特,而非三維請求允許摺疊時除外。 特定具體例中,為了初始化排程精簡請求之變數,排 程器515將精簡請求之z軸乘以4來產生1 χ4組態。使用1 x4 組態來處理精簡請求,將有助於使用耦接至一交換器166配
置給該精簡請求的全部節點115,如此又減少於格網11 〇之 15交換點之分段。特定具體例中,同樣地,排程器315初始化 排程任何請求之變數。 一個區隔是包括可用於排程之格網110之全部節點115 的最小網格。PartStart[3]指示該區隔之起點座標,partEnd[3] 指示該區隔之終點座標,PartSize[3]指示該區隔之大小及 20 PartWraps[3]指示該區隔是否包裹。排程器515可組成一區 隔來縮短搜尋可滿足一請求之節點115之搜尋長度。一區隔 可遠小於格網110。對i=0、1及2而言,PartStart[i]包括於 FreeMesh(包括一陣列)之全部可能的i座標之最小值;以及
PartEnd[i]包括於FreeMesh之全部可能的i座標之最大值。
37 1285818
PartSize[i] = PartEnd[i] - PartStart[i]。若PartSize[i]係等於 TorusSize[i],則PartWraps[i]為真。排程器 515對FreeMesh 之全部節點設定NodelnUse(包括一陣列)為 NODE—NOT_IN_USE,以及對全部其它節點設定為 5 NODE—INJJSE。 特定具體例中,FreeY[i, j,k]含有沿線{i,j,k}至{i, TorusSize[l]-l,k}之自由節點115數目。FreeX[i, j,k]包括沿 線{i,j,k}至{TorusSize[0]_l,j,k}之自由節點115數目。排程 器515使用FreeY[i,j5 k]及FreeX[i,j,k]來執行掃描演繹法 10貝J,說明如後。特定具體例中,唯有於SpatialAllowed或
CompactAllowed為真時,排程器515才組成FreeY[i,j,k]及 FreeX[i,j,k]。 若SpatialAllowed為真,則排程器515嘗試排程一請求 至多種結構。尺寸S={Sx,Sy,Sz}之空間工作有高達六個獨
15 特方向{Sx,Sy,Sz}、{Sx,Sz,Sy}、{Sy,Sx,Sz}、{Sy,Sz, Sx}、{Sz,Sx,Sy}、及{Sz,Sy,Sx}。六個方向係對應於排 程器515可施用至一網格之四個獨特9〇度旋轉以及兩個獨 特180度旋轉。若有任二維度彼此相對,則只可利用三個獨 特方向。排程器515於排程一網格時考慮全部可能的方向。 20若一工作150為二維,換言之,工作150之一維係等於1,則 排程器515可將工作150之二使用維度亦即工作15〇之大於i 之維度之任一者,以手風琴之方式摺疊成為工作15〇之未被 使用維度,亦即工作150之等於丨之維度,來產生較為精簡 之三維網袼。若排程器515摺疊一維,其非為該摺疊長度之 38 1285818 整數倍數,則末稽將比先前之全部各褶皆更短,結果導致 -、准耽鏈接至二維網格。若工作15〇為一維,則排程器仍 可將工作15G摺疊入二未被使用維之任—者。然後排程器 515可將所得_維之任_者摺疊人剩餘—個未被使用之維 5度、、、。果所得之網袼形狀通常為四個網格之鍵接。 第8圖顯示將-維請求摺疊入y維之實例。第8圖中,排 程515使用稽長度為4,來將該-維請求{1,1,11}摺疊入y 維,來產生一個二維網格{丨,2,4丨,以及一個一維網格{1,i, 3}鏈接於該二維網袼。排程器515可將第一褶編號為〇,第 10二褶編號為1,以及第三短褶編號為2。當排程器515指定 MPI等級給沿-稽之多個節點115時,該Μρι等級隨著沿偶 編號褶之z值之増加而遞增,以及沿奇編號褶之z值之減少 而遞增。舉例έ之,但非限制性,節點115之等級於[〇, 0]可為0 ’節點115之MI>I等級於[0, 1]可為1,節點115之MPI 15等級於[〇,2]可為2,節點115之MPI等級於[0,3]可為3。節點 115之MPI等級於[1,3]可為4,節點115之Μρι等級於2]可 為5等。由於該褶具有偶編號,故鏈接係始於2=〇。若排程 器515係使用完整褶之奇編號來摺疊請求,則鏈接將始於 z=3,持續朝向x==0向内。特定具體例中,排程器515之考慮 20手風琴狀之褶。可存在有其它型別之褶。舉例言之,但非 限制性’一稽可產生樓梯間之形狀。排程器515可於一維工 作150禁止某種褶。如前文說明,特定具體例中,排程器515 將一維工作150摺疊兩次。第二褶係摺疊排程器515首次摺 疊之一維,或將排程器515摺疊之一維摺成第一褶。第8圖
39 1285818 中,排程器515已經摺疊z維且摺疊成為7維。若第二褶摺疊 排程器515首次已經摺疊之一維,則排程器515將對共有四 個網格產生多達二個鏈接。特定具體例中,排程器515允許 不多於二鏈接。結果當排程器515排程一維工作15〇時,除 5非第一褶未能獲得鏈接,否則第二褶係限於摺疊排程器515 首次已經摺疊之一維。若一工作15〇之大小為褶長度之整數 倍數,則無法獲得鏈接。特定具體例中,此種限制確保排 程器515不允許多於二鏈接。特定具體例中,排程器515最 初組成可滿足一項請求之全部可能網格。若該請求為一維 10或二維,則排程器515組構成各個可能之手風琴狀褶、以及 各個此種褶之個別可能之方向。若該請求為三維,則排程器 515組構該請求之各種可能方向。特定具體例中,排程器515 使用Try Structures串列來記錄各個此種組成,說明如後。 若CompactAllowed為真,則排程器515組構含有所請求 15節點115數目之精簡網格。排程器515指定該網格為最佳匹 配,且儲存該網格於BestFit(包括於陣列)。舉例言之,但非 限制性,設N為所請求之節點115數目,以及卩為^^截頭為整 數之立方根。排程器初步設定BestFit為{Q,Q,Q}。若 N=Q3,則排程器515完成。否則,排程器515將根據 20 BuildCompactFits函數而遞增BestFit之一維或多維,說明如 後。然後排程器515組構具有維度大於或等於BestFit維度, 而小於或專於格網110維度之全部網格,以及排程器515使 用Fit(包括一陣列)來記錄該等網袼。 然後排私器515由Fit去除非期望之網格。如前文說明,
40 1285818 特定具體例中,格網1 ίο為各自耗接至四部cpu 164之交換 器166之三維圓環。排程器515藉一維使用因數4或一二維使 用因數2來修改圓環,來考慮包括每個交換器166包括四部 CPU 164之袼網11〇。為了提高排程器515滿足請求之機率, 5因此當交換器166之一部CPU 164執行一程序時,於交換器 166之全部CPU 164將執行程序,排程器515只維持具有於一 或多修改維度具有乘法因數之整數倍數之大小之網格。舉 例έ之’但非限制性,若排程器515於y維將交換器166之圓 環乘以2,而於z維乘以2,則排程器515將只維持具有偶^維 10 及z維之網格於Fit。
然後排程器515根據其餘網格之最大交換次數來分類 於Fit中之其餘網格。於尺寸(sx+i)+(sy-i)+(sz_i)之一網格 之;I於一郎點間之最大距離為{Sx,Sy,Sz}。若二網格具有 彼此相同之最大交換次數,則排程器515將該網格置於比其 15它網袼更接近立方塊。舉例言之,但非限制性,]^尸{4, 6, 16} 及M2={8, 9, 9}具有相等最大距離,但排程器515將m2置於 之前。 即使排程器515並未由Fit去除非期望的網格,排程器 515將不會產生包含至少N節點115之全部網袼。舉例言之, 20但非限制性,若N=27及BestFit={3, 3, 3},則Fit將不含網袼 1,27}。網袼{1,1,27}無法獲得合理的網格數目,經常 性獲得滿足一項請求之至少一個網格,原因在於Fit包含等 於格網110之一網袼,以及唯有N係小於或等於格網110内部 之節點115數目時,叢集管理引擎丨3〇才呼叫排程器515。 ⑧ 41 1285818 若AnyAllowed為真,為了組構一或多個自由網格,排 程器515迴圈通過NodelnUse,以X轴作為外迴圈,y軸作為 次迴圈,以及z軸作為内迴圈,直到排程器515識別出自由 節點115為止。自由網格包括只含自由節點115之一個網 5 格,自由節點115包括可配置給一工作150之節點115。排程 器 515 組成 NumFreeMeshes 及 FreeMesh[NumFreeMeshes] 〇
NumFreeMeshes表示於格網110之自由網格數目,以及
FreeMesh為對格網110之各個自由網格,識別格網110之一 或多個自由網格結構之一串列。舉例言之,但非限制性, 10 節點115之指標可為{il,jl,kl}。排程器515可遞增z軸,直 到排程器515識別出一個非自由節點115為止,諸如{il,jl, k2}。排程器515可將FreeMesh.start[2]設定為kl及 FreeMesh.end[2]設定為k2-l。FreeMesh.start[2]係對應於沿 該z軸之一自由網格之起點值,以及FreeMesh.end[2]係對應 15 於自由網格之結束值。排程器515隨後遞增y軸,始於jl, 來識別第一值j2,故線{il,j2, kl}至{il,jl,k2-l}包括至少 一個非自由節點。排程器515隨後將FreeMesh.start[l]設定 為jl及FreeMesh.end[2]設定為j2-l。然後排程器515遞增X 軸,始於il,來識別第一值i2,故平面{i2, jl,kl}至{i2, j2-l, 20 k2-l}包括至少一個非自由節點。然後排程器515設定
FreeMesh.start[0]為il及FreeMesh.end[0]設定為i2-l。排程器 515重複前述處理至排程器515涵蓋格網110内部的全部節 點115為止。前述程序無法獲得獨特之自由網格集合。以不 同順序迴圈傾向於產生不同之自由網格集合,但唯有二或 ⑧ 42 1285818 二以上之自由網格彼此共享—邊界。完全由節點ιΐ5包圍於 其中之-自由網格經常為獨特。第9圖及第1G圖顯示於二維 情況下’使用y軸作為内迴圈與使用χ軸作為内迴圈間之差 異。第9圖顯示使用y軸作為内迴圈所組成之兩個自㈣ 5格,以及第_顯示使用乂轴作為内迴圈所組成之兩個自由 網格。第9圖中,區530包括使用中之節點115,區^ 一自由網格,以及區532b為第二自由網格。同樣地,第1〇 圖中’區530包括使用巾之節點115,區532&為第—自由網 格,以及區532b為第二自由網格。 ^ 10 肖定具體例中,排程器515使用第-排程演繹法則來排 程空間請求,使用第二排程演繹法則來排程精簡請求,以 及使用第二排程演繹法則來排程任何請求。第一排程演繹 法則與第二排程演繹法則彼此類似,但使用之掃描演繹法 則彼此有相對差異。若排程器515排程一工作15〇,則排程 15器515根據MPI等級而將配置給工作150之節點Π5列舉於 AssignedNodeList,換言之,AssignedNodeLi^i]具有 Μρι 等級i。 為了排程具有大小{Sx,Sy,Sz}之一空間請求,排程器 515使用一掃描演繹法則來搜尋該空間請求於N〇dehiUue之 20起點。下述實例邏輯提供一掃描演繹法則實例之範例說 明。PartStart為一區隔之起點,PartEnd為一區隔之終點, 以及Tx、Ty及Tz分別為於χ、y及z維之圓環尺寸。
For χ = PartStart[0] to PartEnd[0]
For;; = PartStart[l] to PartEnd[l] 25 For z = PartStart[2] to PartEnd[2]
1285818 10
15
Hit = True For/ = xtox+5x-l ¥〇Tj =y to y^-SyA For A: = ztoz+&-l If (NodeInUse[/ mod TxJ mod Ty,kmo& Tz)= NODE—IN—USE Hit = False End If End For End For End For If (Hit = True) Return True End If End For End For End For Return False 特定具體例中,可施用於精簡請求之掃描演繹法則可 20 以Count值替代前述Hit旗標,Count值於最内圈遞增如後:
25
Count = 0 For / = x to x+Sx-l For j = y to y-^-SyA For k = z to z+&-l If (NodeInUse[/ mod TxJ mod Ty, k mod Tz)= NODE_NOT_IN_USE Count = Count + 1 End If End For End For End For 44 30 1285818
If (Count > RequestedNodes) Return True End If 前述邏輯相當無效,原因在於排程器515評估於 5 NodelnUue中的各點局達Sx X Sy X Sz次。於前述精簡請求 之掃描中,當z迴圈例如由zl遞增至zi + 1時,丨及j内迴圈不 變,以及k迴圈只於終點改變。結果,由{χ,γ,ζ1}至{χ+8χ, y+Sy-l,zl}之二維網格由進一步計算中被排除,排程器515 增加由{X,y,(zl + l)+Sz-l}至{x+Sx-1,y+sy-i,+ 10 之二維網格來進一步計算。i、j及k内迴圈沿2轴計數尺寸(Sx Sy,1}之二維網格之序列中之自由節點115。z迴圈去除一個 網格,加上另一個網格。y迴圈時出現類似沿y軸之效果。 FreeX及FreeY(皆包括陣列)可輔助縮短處理時間。特定具體 例中,排程器515使用下列演繹法則來掃描一精簡請求: 15
20 • Define an array, zPlane[TorusSize[2]]? to store two dimensional mesh counts. • Compute an end point of x, γ9 and z loops as follows: 〇 For / = 0 to 2 • If PartWraps[/] = True, end[/] = PartEnd[/] • Else end[/] = PartEnd[/] - Size[z] 〇 Now x will loop from PartStart[0] to End[0] and so on. • x loop 〇 For each z = PartStart[2] to PartEnd[2], re-compute zPlane for meshes {jc?PartStart[l]?z} to {x+5x-l?PartStart[l]+^-l,z} • In particular embodiments, scheduler 515 would use three loop here. FreeY used here reduces a Number of loops to two: one loop for x and one lop for z. FreeY|XPartStart[l],z] - FreeY[x,PartStart[l]+办,2] 45 25 1285818 10
15 20
25 provides a Number of free nodes 115 along line {jc,PartStart[l],z} to {x,PartStart[l]+办_l,z} inclusively. 〇 Set NewX = True for the below .y loop. • y loop 〇 IfNewX = True • Do nothing. 〇 Else • Update zPlane • For each z = PartStart[2] to PartEnd[2]? • Subtract free nodes 115 in line segment from {χ,γ-Ι,ζ} to {x+Sx-l,y-l,z} from Zplane[z] o Use FreeX[x,3;-l5z] - FreeX[x+6!x5ty-l5z] to avoid looping over x • Add free nodes 115 in line segment from {x^y+Sy-l^} to {x-^-SxA,y-^Sy-l9z} to zPlane[z] o Use FreeX[Xy+办-1,z]- ¥rQ〇X[x^-Sx9y+Sy-l,z] to avoid looping over x 〇 Set NewX = False for a next;; increment 〇 Set NewY = True for the below z loop .z loop 〇 IfNewY = True • Sum zPlane from z = PartStart[2] to z = PartEnd[2] and record results in Count 〇 Else • Subtract zPlane[z-l] from Count • Compute zPlane[z+&-l],which is a sum of free nodes 115 in a two dimensional mesh from {χ,γ,ζ-^ΞζΛ} to {x-\-sX-l9y-^Sy-l,z+SzA}. As described above, use FreeX to reduce a Number of loops from two to one. • Add zPlane[z+&-l] to Count 〇 If Count ^ RequestedNodes, Return True ⑧ 46 30 1285818 特定具體例中,排程器515施加下列修改之一或多者來 定址包裹於一維之一區隔··(丨)若該維之指標超過陣列極 限,則排程器515於任何陣列參照前施加一模量函數至指 私,以及(2)若該區隔係包裹於χ維或y維,為了對應線段例 5如由點a至點b運算自由節點m,排程器515對二線段運算 自由玲點II5 ’其中一線段係由點a至該區隔於X維或y維之 終點,以及另一線段係由該區隔起點至點b。 特定具體例中,施用於空間請求之掃描演繹法則係類 似則文之適用於精簡請求之掃描演繹法則。特定具體例 10中it用於空間請求之掃描演繹法則與適用於精簡請求之 刖述掃描演繹法則間之差異包括下列··⑴替代排程器515 識別一網格之一點有特殊c〇unt,排程器515尋找於該網格 之點於該點全部郎點115皆為自由,如此可減少記憶體 之參照;以及(2)排程器515需要處理一或多個鏈接的網袼, 15原因在於如前文說明,排程器515可處理一維請求或二維請 求摺且來產生一基本網格,其具有至多兩個額外網袼鏈接 於該基本網袼上。特定具體例中,此種對掃描演繹法則之 修改傾向於縮短排程器515排程16><16><16組態相關聯之最 大回合時間達一或多個次羃幅度。 為了排程一空間請求,排程器515使用排程演繹法則, 該排程演繹法則將掃描演繹法則施用至Try結構串列中的 各個Try結構,直到排程器515識別出一個可排程之Try結構 為止。若該串列中並無任何Tiy結構可排程,以及空間請求 之激進旗標為0,則排程器515返回叢集管理引擎13〇,而未
47 1285818 排程該空間请求。否則,排程哭51 $蚀田姓μ 併柱斋515使用精簡排程演繹法則 來嘗試排程該空間請求。 特定具體例中,根據空間演繹法則排程一請求涉及多 達三次轉換:兩次摺疊與一次旋轉。排程器515係使用^ 5 中之下列欄位來追蹤該等轉換: • TryiMap為旋轉之映射函數〜说叩為$有映射一 點之指標之具有3元體之-陣列。舉例言之,但非限制性, Try.rMap={l,0, 2}表示指標〇映射至i,指標i映射至〇,以 及指標2映射至2,故於該映射下,{x,y,z} — {y,x,z}。 10 · Try.irMap為 Try.rMap之倒數。 • Tiy.NumFoldMaps指示可產生Try結構之褶數。 • Try.foldLength為指示褶長度之陣列。 • Try.foldFrom為指示經摺疊維度之指標之陣列。舉例 言之,但非限制性Try.f〇ldFrom[i]:=2指示z軸摺疊i褶。 15 · Try.foldTo為指示摺疊後之維度指標之陣列。
• Try.foldFix為指示維持固定之維度指標之陣列。 特定具體例中,於排程器515使用Try結構判定一工作 150於格網110之一起點為可排程後,排程器515指定旭朽等 級如後: 2〇 •排程器515施加反轉映射至起點,來映射該起點至一 預先轉換後之網格。排程器515組成稽,留下該網格之起點 為固定,故排程器515無需施加反褶。 •排程器515迴圈通過該經過前置轉換之網格,來產生 MPI等級。如前文說明,特定具體例中,x軸為外迴圈,y ⑧ 48 1285818 轴為中迴圈,以及Z軸為内迴圈。 •排程器515將施加至該經前置轉換之網格之轉換施 加至該迴圈中的各點{X’ y,z},其施加順序係根據排程= 515施加轉換至該經前置轉換之網袼之順序,換古之 5器515摺疊〇,然後摺疊卜接著旋轉該點來獲得 轉換網格之一點{X,,y’,z’}。然後排程器515將該節點伏,, y’,z’}插入 AssignedNodeList 之末端。
特定具體例中,精簡排程演繹法則將掃描演繹法則施 加至Try結構串列中的各個網格,直到該精簡排程演绎法則 10識別出一個有效Try結構為止。該串列之網格數目相當大。 舉例言之,但非限制性,對包括16χ16χ16節點115之一圓環 以及對1〇〇郎點115之一請求而言,BestFit = {4, 4, 5}導致於 T ry結構串列中超過二千個網袼。雖然可能需要應用二元搜 尋至該Try結構串列,但特定具體例中Try結構串列之二元 15搜尋無效。除非下述情況,否則包括條件C之二進制搜尋將 無法操作:(1)若對元件i、C為真,對全部大於或等於丨之j、 C為真;以及(2)若對元件i、C為偽,對全部小於或等於i之j、 C為偽。特定具體例中,Try結構串列之二進制搜尋無法操 作’原因在於存在有一種可能性··例如使用網格Ml = {4, 4, 4} 掃描將找到足量節點來滿足一項請求;但例如使用網格 M2H 2, 10}來掃描則否,儘管M2於Try結構串列中係高於 Ml °特定具體例中,最大距離之二進制搜尋可發揮效果。 若根據最大距離,排程器515於Try結構串列中將網袼分 群’則若全部大於或等於i之j而言,排程器515可於有最大 49 1285818 距離i之串列中識別出一網格匹配,則於串列中有最大距離 j之至少一個網格也將匹配。若於串列中並無具有最大距離 1之網格匹配,則串列中有最大距離係小於或等於i之網格將 皆不匹配。舉例言之而非限制性,假設{x,y,z}為具有最大 5距離i之匹配網格。因此,{x,y,z+l}有最大距離i+i且因{x, y,z+i}涵蓋{χ,y,Z},故{X,y,2+1}也可操作。感應施加至 全部大於或等於i之j。若串列中有最大距離i之網格皆無法 操作’則就任何有最大距離i-l之網格{X,y,z}而言,{χ,y, z+l}有最大距離i,{x,y,z+l}也無法匹配。{χ,y,z}也無法 10匹配,原因在於{X,y5 z+l}涵蓋{x,y,z}之故。如此,排程 器 515 於初始化期間組構 MaxDistance[NumMaxDistances, 2]。 特定具體例中,於Fit網格之二進制搜尋無法保證最佳 匹配,但於隶佳匹配可提供合理良好之上限。特定具體例 15中,於Fit之網格之二進制搜尋為有效,例如可對約一千個 網袼產生約十次掃描。排程器515也可使用上限來對最大長 度執行二進制搜尋,或由上限向下而進行線性搜尋。特定 具體例中,向下之線性搜尋較為有效。 排程器515於Fit執行二進制搜尋,以及迴送出钟^^及 2〇 HighStart[3]。HighFit為滿足一項請求之Fit指標,出非阶 為格網110之匹配起點。執行向下線性搜尋之演繹法則係始 於HighFit及HighStart。特定具體例中,排程器515遞減目前 HighFit網格之最大距離。然後排程器515迴圈通過全部包括 最大距離的網格,直到排程器515識別出可滿足該項請求之 ⑧ 50 Ϊ285818 一網格為止。若排程器515識別出可滿足該項請求之一網 格,則排程器515將該網格設定為HighFit,再度遞減最大距 離,且重複處理程序。若排程器515未識別出此種網格,則 演繹法則退出,以目前HighFit為最佳匹配。若排程器515 無法對特定最大距離識別出匹配,則排程器515無法對較短 的最大距離識別出匹配。 排程器515迴圈通過Fit網格,且將一或多個節點115插 入AssignedNodeList之一端。三次迴圈之順序係依據排程器 515如何映射基於交換器之圓環至基於節點之圓環來決 10定。若排程器於一維使用4x1組態來映射基於交換器之圓 環,則該一維為内迴圈。若排程器515係於二維使用2χ2組 態、來映射基於交換器之圓環,則該二維為最内迴圈。 為了排程任何請求,排程器515迴圈通過FreeMesh,填 補任何晴求,直到排程器515已經指定所請求的節點115數 15目給任何請求為止。
當排程器515迴圈通過FreeMesh時,排程器515將節點 115遞增插入AssignedNodeList。特定具體例中,排程器515 迴圈通過FreeMesh如後: • z軸為最内迴圈。當排程器515將基於交換器之圓環 2〇轉換成為基於節點之圓環時,排程器515以因數4擴充z軸。 使用z軸作為最内迴圈,可防止耦接至交換器166之cpu 164 的分段。 •於FreeMesh之其餘二維之較小維為中迴圈,其餘二 維之較大維為最外迴圈。 ⑧ 51 1285818
10 15
排程器515根據MPI等級來於AssignedNodeList使用基 於節點之座標來列舉選定之節點115。AssignedNodeList[i,〇] 為具有MPI等級i之節點115之X座標,AssignedNodeList[i,1] 為具有MPI等級i之節點115之y座標,以及 AssignedNodeList[i,2]為具有MPI等級i之節點115之z座 標。FreeNodeList為以基於交換器之座標表示,進送給排程 器515之可用節點115之串列。特定具體例中,為了設定於 FreeNodeList之mpiRank欄位,排程器515使用如下實例演繹 法則:
For / = 0 to NumFreeNodes - 1 〇 Convert AssignedNodeList[z] to switch-based coordinates and add them to To [4] 〇 Apply InverseTorusMap to first three elements of To 〇 Fory = 0 to NumFreeNodes - 1 • If To[A:] = FreeNodeList[/].coordinate[A:] for all k = 05152?3 • FreeNodeList[/] .mpiRank = i • Exit j loop 下述實例邏輯描述排程器515之特定具體例。特定具體 例中,當叢集管理引擎130呼叫排程器515來排程工作150 20 時,叢集管理引擎130將下列輸入參數值通訊給排程器515: RequestedNodes :指示所請求之節點115號碼。 RequestType :指示請求之型別,設定為SPATIAL、 COMPACT 或 ANY。
RequestSize :指示之請求之大小之有三個元素之陣 25 列。只對 SPATIAL requests有效。
AggressiveFlag : 0與1間之浮點數目,指示用於配置節
(S 52 1285818 點115給工作150之分配給排程器515之餘裕度。
TomsSize:指示格網11〇之基於交換器之大小之有三個 元素之陣列。
NodesPerSwitch :袼網11〇中耦接至各個交換器166之 5 CPU 164之號碼。
NumFreeNodes : FreeNodeList之節點 115之號碼。 FreeNodeList: FreeNode結構串列,指示可供排程用之 節點115之基於交換器之座標。 Φ 特定具體例中,於排程器515嘗試排程一工作150後, 10 排程器515迴送下列之一: PQS—ASSIGNED :指示排程器515已經排程工作150。 PQS_N0—ASSIGNMENT—AT—SPECIFIEDJTIME :指示 排程器515尚未排程工作150。 PQS—NO—ASSIGNMENT—FOR—JOB—CATEGORY :指 15 示即使格網110之全部節點115皆可供利用,排程器515也未 曾排程工作150。
20 若排程器515排程工作150,則排程器515據此來設定 FreeNode結構之mpiRank攔位。特定具體例中,叢集管理引 擎130與排程器515間之包裹器功能將來自叢集管理引擎 130之輸入信號轉換成排程器515所期望的格式,以及將來 自排程器515之輸出信號轉換成叢集管理引擎130期望的格 式0 特定具體例中,判定工作150是否理論上可排程之 setSchedulable涵蓋下述實例邏輯· ⑧ 53 工285818 5 10
15
If setSchedulable() = False Return PQS一NO一ASSIGNMENT一FOR-JOB CATEGORY End If If initScheduler() = False Return PQS_NO—ASSIGNMENT—AT_SPECIFIED_TIME End If If RequestedNodes > NumFreeNodes ret = False Else ret = scheduleJob() End If If ret = True setMpiRank() Return PQS一ASSIGNED Else Return PQS_NO__ASSIGNMENT AT__SPECIFIED__TIME End If 一
特定具體例中,排程器515呼叫來排名工作大小之Rank 涵蓋下述實例邏輯。Rank之輸入信號包括具有三個元素之 一維陣列In[3]。Rank之輸出信號包含一維陣列Rank[3],其 具有3元素來以尺寸增加之順序,指示In之指標In[Rank[〇] < In[Rank[l]] S In[Rank[2]。特定具體例中,Rank包括泡沫演 繹法則。
Rank[0] = 〇 25 Rank[l] = 1 Rank[2] = 2 For / = 0 to 2 For j = /+1 to 2 If In[Rank[/*] < In[Rank[/] 30 k = Rank[/] 54 1285818
Rank[/] = Rank[/] Rank[/] = k End If End For 5 End For 特定具體例中,判定工作150是否為理論上可排程之 setSchedulable涵蓋下述實例邏輯:
10 15 20
25
For i = 0 to 2 If TorusSize[/] < 1 Return False End For If RequestedNodes > TorusSize[0] x TorusSize[l] x TorusSize[2] x NodesPerSwitch Return False End If If NodesPerSwitch not equal to four Return False; End If If RequestType = SPATIAL factor[0] = 2 factor[l] = 2 Rank(TorusSize,/Rank) Rank(RequestedSize? yRank) NumJobDim = 0 NumExceed = 0 For / = 0 to 2 If RequestedSize[/] >1) NumJobDim = NumJobDim + 1 Else If RequestedSize[/] < 1 Return False End If
55 30 1285818 5 10
15 20 25
If RequestedSize[/Rank[/]] > TorusSize[iRank[/]] Exceed[NumExceed] = i NumExceed = NumExceed + 1 End If End For If NumExceed = 0 Return True Else If NumExceed = 1 If RequestedSize[/Rank[Exceed[0]] ^ NodesPerSwitch x TorusSize[iRank[Exceed[0]] Return True End If If NumJobDim < 3 Return True End If Return False Else If RequestedSize[/Rank[Exceed[0]] < factor[0] x TorusSize[iRank[Exceed[0] and RequestedSize[/Rank[Exceed[l]] < factor[l] x TorusSize[iRank[Exceed[ 1 ]] Return True End If If NumJobDim < 3 and (RequestedSize[/Rank[Exceed[0]] < NodesPerSwitch x TorusSize[iRank[Exceed[0]] or RequestedSize[/Rank[Exceed[l]] < NodesPerSwitch x TorusSize[iRank[Exceed[l]]) Return True End If return False End If return True 56 30 1285818 特定具體例中,設定容許的排程型別之initScheduler 涵蓋如下實例邏輯。若一工作150只請求一個節點115,則 無論原先請求為何,initScheduler設定容許的型別為Any: 5
15 20
25
If RequestedNodes = 1 or RequestType = Any Any Allowed = True Spatial Allowed = False Compact Allowed = False Else If RequestType = Compact Compact Alio wed = True AnyAllowed = False SpatialAllowed = False Else If RequestType = Spatial SpatialAllowed = True AnyAllowed = False If AggressiveFlag > 0 Compact Alio wed = True Else Compact Allowed = False End If End If factor[0] = 2 factor[l] = 2 Rank(TorusSize, iRank) TorusMap[0] = iRank[2] TorusMap[l] = iRank[l] TorusMap[2] = iRank[0] InverseTorusMap[iRank[0]] = 2 InverseTorusMap[iRank[l]] = 1 InverseTorusMap[iRank[2]] = 0 If SpatialAllowed = True If setTorusForSpatial() = False Return False 57 30 1285818 10
15 20 25
End If Else If CompactAllowed = True If setTorusForCompactl() = False Return False End If Else If setTorusForAny() = False Return False End If End If For / = 0 to NumMapDimensions TorusSize[mapDiminsions[/]] = mapMod[/]xTorusSize [mapDiminsions [/]] End For SetPartition() If SpatialAllowed = True buildSpatialTries() End If If compactAllowed = True buildCompactFits() End If If AnyAllowed = True buildFreeMeshes() End If If SpatialAllowed = True or CompactAllowed = True InitScan() End If return True 特定具體例中,對一空間請求,映射基於交換器之圓 30 環至基於節點之圓環之setTorusForSpatial涵蓋下述實例邏 輯: 58 1285818
Rank(RequestedSize? yRank) NumDim = 0 dNdx = 0 For / = 0 to 2
If RequestedSize[z] > 1) twoD [NumDim] = i NumDim = NumDim + 1 Else 10
15 oneD[dNdx] = i dNdx = dNdx + 1 End If End For If NumDim = 1
Return setTorusForlD()
Else If NumDim = 2
Return setTorusFor2D()
Else
Return setTorusFor3D()
End If 20 特定具體例中,於工作150之二最大維度將格網110乘 以兩個因數jRank[2]及jRank[l],亦即setTorusForlD涵蓋下 述實例邏輯:
NumMapDiminsions = 2 mapDiminsions[0] =yRank[2] 25 mapDiminsions[l] =yRank[l] mapMod[0] = factor[0] mapModfl] = factor[0]
For / = 0 to 3 ntSize[/] = TorusSize[TorusMap[/]] 30 End For
For / = 0 to 3 59 1285818
TorusSize[/] = ntSize[/]
End For For / = 0 to 3
RequestedSize[/] = OriginalSize[/Rank[/]] JobMap[/Rank[/]] = i End For Return True 特定具體例中,setTorusFor2D係以如下六種方式之一 來映射基於交換器之圓環至基於節點之圓環: 10 1. {Τ[〇],Τ[1],τ[2]}4 {Τ[0],2χΤ[1],2χΤ[2]} 2· {Τ[0],Τ[1],Τ[2]}~> {2χΤ[0],Τ[1],2χΤ[2]} 3. _,Τ[1],Τ[2]}— {2χΤ[0],2χΤ[1],Τ[2]} 4· {Τ[0],Τ[1],Τ[2]}-> {Τ[0],Τ[1],4χΤ[2]} 5· {Τ[0],Τ[1],Τ[2]}4 {Τ[0],4χΤ[1],Τ[2]} 15 6· {Τ[0],Τ[1],Τ[2]}— {4χΤ[0],Τ[1],Τ[2]}
Τ為TomsSize。前三個組態係來自於排程器515將每個交換 器166之節點115組配為2x2節點115所得結果。末三個組態 係來自於排程器515將每個交換器166之節點115組配為1χ1 節點115所得結果。特定具體例中,setT〇rusFor2D計數排^ 20器515對各次映射所產生之Try結構,以及選出可產生最夕 Try結構之映射。以繫結為例,setTorusFor2D係根據前述川員 序來設定映射圖。排程器515將pSize[6, 4]組構為包括:、 pSize[i,〇]=組態i之X維之區隔大小。 pSize[i,1]=組態i之y維之區隔大小。 pSize[i,2]=組態i之z維之區隔大小。 pSize[i, 3]=對組態i產生之繫結數目。
60 1285818 特定具體例中,setTorusFor2D涵蓋下述實例邏輯:
10
15 20
25 max = -1 maxNdx = -1 For / = 0 to 2 For j = /+1 to 3 NumMapDiminsions = 2 mapDiminsions[0] = (/+/) mod 3 mapDiminsions[l] = (/+/+1) mod 3 mapMod[0] = factor[0] mapMod[l] = factor[l] setTestPartSize(testPartSize) pSizes[/ +y-1? 2] = testPartSize[2] pSizes[/ +y -1? 1] = testPartSize[l] pSizes[/ +7· -1,0] = testPartSize[0] pSizes[/ + y-l][3] = cnt2DTries(testPartSize, RequestedSize) If pSizes[/ - 1][3] > max max = pSizes[z - 1][3] maxNdx = / +y — 1 End If End For End For For / = 0 to 3 NumMapDiminsions = 1 mapDiminsions[0] = 2 - / mapMod[0] = NodesperGrid setTestPartSize(testPartSize) pSizes[/+3? 2] = testspSize[2] pSizes[/+3, 1] =testspSize[l] pSizes[/+3? 0] = testspSize[0] pSizes[/+3][3] = cnt2DTries(testPartSize? RequestedSize) if pSizes[/+3][3] > max max = pSizes[/+3][3] maxNdx = /+3
61 30 1285818
End If End For 10
15 20 25
If max < 0 if CompactAllowed = True SpatialAllowed = False Return setTorusForCompact() Else return False End If Else For / = 0 to 2 ntSize[/] = TorusSize[TorusMap[z]] End For For / = 0 to 2 TorusSize[/] = ntSize[z] End For If maxNdx < 3 NumMapDiminsions = 2 mapDiminsions[0] = (maxNdx+1) mod 3 mapDiminsions[l] = (maxNdx+2) mod 3 mapMod[0] = factor[0] mapModfl] = factor[l] RequestedSize[mapDiminsions[0]] = OriginalSize[/Rank[l]] RequestedSize[mapDiminsions[l]] = OriginalSize[/Rank[2]] RequestedSize[3 - mapDiminsions[0] - mapDiminsions[l]]= OriginalSize[/*Rank[0]] JobMap[/Rank[l]] = mapDiminsions[0] JobMap[/Rank[2]] = mapDiminsions[l] JobMap[/Rank[0]] = 3- mapDiminsions[0] - mapDiminsions[l] Else NumMod = 1 NumMapDiminsions = 1 mapDiminsions[0] = (5 - maxNdx) mod 3 mapMod[0] = NodesperGrid
62 30 1285818 10
15
If mapDiminsions[0] = 2 /=1 Else / = 2 End If RequestedSize[mapDiminsions[0]] = OriginalSize[/Rank[2]] RequestedSize[z] = OriginalSize[/Rank[l]] RequestedSize[3 - mapDiminsions[0] - /] = OriginalSize [/•Rank[0]]; JobMap[/Rank[2]] = mapDiminsions[0] JobMap[/Rank[l]] = i JobMap[/Rank[0]] = 3 - mapDiminsions[0] - i End If End If Return True 特定具體例中,setTorusFor3D涵蓋下述實例邏輯: 20 25 max = -1 maxNdx = -1 For / = 0 to 2 For j = /+1 to 2 NumMapDiminsions = 2 mapDiminsions[0] = (i+j) mod 3 mapDiminsions[l] = (ί+y+l) mod 3 mapMod[0] = factor[0] mapMod[l] = factor[l] setTestPartSize(testPartSize) pSizes[/ +y-l92]= testPartSize[2] pSizes[/ +y- 1? 1] = testPartSize[l] pSizes[/ - 1, 〇] = testPartSize[0] pSizes[/ +y - 19 3] = cnt2DTries(testPartSize9 RequestedSize) If (pSizes[i +) - 1,3] > max) max = pSizes[/ +/ - 1,3] 63 30 1285818 5 10
15 20
25 maxNdx = i +j - l End If End For End For For / = 0 to 2 NumMapDiminsions = 1 mapDiminsions[0] = 2-/ mapMod[0] = NodesperGrid; setTestPartSize(testPartSize) pSizes[/+35 2] = testPartSize[2] pSizes[/+39 1] = testPartSize[l] pSizes[/+3? 0] = testPartSize[0] pSizes[/+3]? 3] = cnt2DTries(testPartSize? RequestedSize If pSizes[/+3][3] > max max = pSizes[/+3, 3] maxNdx = /+3 End If End For If max < 0 If CompactAllowed = True SpatialAllowed = False Return setTorusForCompact() Else return False End If Else For / = 0 to 2 ntSize[/] = TorusSize[TorusMap[/]] End For For / = 0 to 2 TorusSize[/] = ntSize[/] End For If maxNdx < 3 NumMod = 2 64 30 1285818 10
15 20
25 mod[0] = (maxNdx+l)mod 3 mod[l] = (maxNdx+2) mod 3 NumMapDiminsions = 2 mapDiminsions[0] = (maxNdx+1) mod 3 mapDiminsions[l] = (maxNdx+2) mod 3 mapMod[0] = factor[0] mapMod[l] = factor[l] RequestedSize[mapDiminsions[0]] = OriginalSize[/Rank[l]] RequestedSize[mapDiminsions[l]] = OriginalSize[/Rank[2]] RequestedSize[3 - mapDiminsions[0] - mapDiminsions[l]]= OriginalSize[/Rank[0]] JobMap[/Rank[l]] = mapDiminsions[0] JobMap[/Rank[2]] = mapDiminsions[l] JobMap[/Rank[0]] = 3 - mapDiminsions[0] - mapDiminsions[l] Else NumMod = 1 mod[0] = 2 - (maxNdx - 3) NumMapDiminsions = 1 mapDiminsions[0] = (5 - maxNdx) mod 3 mapMod[0] = NodesperGrid If mapDiminsions[0] = 2 i=l Else / = 2 End If RequestedSize[mapDiminsions[0]] = OriginalSize[/Rank[2]] RequestedSize[/] = OriginalSize[/Rank[l]] requestedSize[3 - mapDiminsions[0] - /] = originalSize[/Rank[0]]; JobMap[/Rank[2]] = mapDiminsions[0] JobMap[/Rank[l]] = i JobMap[/Rank[0]] = 3 - mapDiminsions[0] - i End If
End If Return True 65 30 1285818 特定具體例中,將一個精簡請求之Z維設定為4x1組態 之setTorusForCompact涵蓋下述實例邏輯:
For / = 0 to 3 ntSize[/] = TorusSize[tMap[/]] End For For / = 0 to 3
TorusSize[z] = ntSize[/]
End For 10
NumMapDiminsions = 1 mapDiminsions[0] = 2 mapMod[0] = NodesperGrid Return True 特定具體例中,將一個任何請求之z維設定為4x1組態 之setTorusForAny涵蓋下述實例邏輯: 15 For / = 0 to 3 ntSize[/] = TorusSize[tMap[z]] End For For / = 0 to 3
TorusSize[/] = ntSize[/] 20 End For
NumMapDiminsions = 1 mapDiminsions[0] = 2 mapMod[0] = NodesperGrid Return True 25 特定具體例中,setPartition涵蓋如下實例邏輯:
For / = 0 to TorusSize[0] - 1 Fory = 0 to TorusSize[l] - 1 For A: = 0 to TorusSize[2] - 1
NodeInUse[/j^] -NODE_IN_USE
66 1285818 10
15 20 25 30
End For End For End For For / = 0 to 2 PartStart[/] = TorusSize[z] PartEnd[/] = 0 End For For / = 0 to NumFreeNodes - 1 To[0] = FreeNodes[/].coordinate[TorusMap[0]] To[l] = FreeNodes[/].coordinate[TorusMap[l]] To[2] = FreeNodes[/].coordinate[TorusMap[2]] If NumMapDimensions = 1 To[MapDimension[0]] = To[MapDimension[0]] x MapMod[0] + FreeNodes[/].coordinate[3] Else To[MapDimension[0]] = To[MapDimension[0]] x MapMod[0] + FreeNodes[/].coordinate[3] / MapMod[ 1 ] To[MapDimension[l]] = To[MapDimension[l]] x MapMod[l] + FreeNodes[/].coordinate[3] mod MapMod[l] End If NodeInUse[To[0]],To[l],To[2]] = NODE一NOT—IN—USE Fory = 0 to 2 If To[/] < PartStart[/] PartStart]j] = To[/] End If If To[/] < PartStart[/] PartStart]j] = To[/] End If End For End For For / = 0 to 2 If PartStart[/] = 0 and PartEnd[z] = TorusSize[/] - 1 PartWraps[/] = True Else PartWraps[/] = False 67 35 1285818
End If
PartSize[/] = PartEnd[/] - PartStart[/] + 1 End For 特定具體例中,組構FreeY及FreeX之initScan涵蓋如下 5 實例邏輯:
For / = 0 to TorusSize[0] - 1 For A: = 0 to TorusSize[2]- 1 Count = 0
For j = TorusSize[l] - 1 to 0 by -1
• 10 If NodeInUse[/,j,々]=NODE—NOT—IN_USE
Count = Count + 1 End If
FreeY[/j?A:] = Count End For 15 End For
End For
Fory = 0 to TorusSize[l] - 1 For A: = 0 to TorusStSize[2]- 1 Count = 0 餐^ 20 For i = TorusSize[0] - 1 to 0 by -1
If NodelnUseWA] = NODE—NOT_IN_USE Count = Count + 1 End If
FreeXf/j/^] = Count 25 End For
End For End For 特定具體例中,決定一請求之維度數目之 buildSpatialTries涵蓋如下實例邏輯: 68 1285818
NumDim = Ο For / = 0 to 2
If RequestedSize[/] > 1) NumDim = NumDim + 1 5 End If
End For If NumDim = 1 buildlDTry()
Else If NumDim = 2 10 build2DTry()
for / = 0 to 2
Try.baseSize[/] RequestedSize[/] End For 15 Try.NumConcats = 0
Try.NumFoldMaps = 0 NumberOfTries = 0 build3Dtry(Try, NumberOfTries) End If
特定具體例中,對一三維請求建置TryList以及對—— 維請求或一二維請求之各個褶建置Try結構之build3Dtry涵 蓋如下實例邏輯: setOrient(Try, NumOrient,orient) if NumOrient > 0 25 For (/ = 0 to NumOrient - 1 ++NumTries;
Fory = 0 to 2
TryList[NumberOfTries].baseSize[/] = Tty.baseSize[orient[/9y]] End For 30 TryList[NumberOfTries].NumConcats = Try.NumConcats;
Fory = 0 to TryList[NumberOfTries].NumConcats - 1 69 1285818
For A: = 0 to 2
TryList[NumberOfTries.concatSize[/, k]= Try.concatSize[/5orient[/? k]]; TryList[NumberOfTries].concatStartNode[/9 k]= Try.concatStartNode[/? orient[/? A:]];
End For End For
TryList[NumberOfTries].NumFoldMaps = Try.NumFoldMaps; Fory = 0 to TryList[NumberOfTries].NumFoldMaps 10
15
TryList[NumberOfTries].foldLength[/] = Try.foldLength[/] TryList[NumberOfTries].foldFrom[/] = Try.foldFrom[/] TryList[NumberOfTries].foldTo[/] = Try.foldTo[/] TryList[NumberOfTries].foldFix[/] = Try.foldFix[/]
End For For A: = 0 to 2
TryList[NumberOfTries].rMap[A:] = orient[/9 k] TryList[NumberOfTries].irMap[orient[/5 k]]=;
End For
NumberOfTries = NumberOfTries + 1 20 特定具體例中,對一 Try結構計算獨特旋轉數目
NumOrient,以及對各次旋轉計算指標映射圖之setOrient涵 蓋如下實例邏輯:
NumOrient = 0;
If try.NumberOfConcatanations > 0 25 For / = 0 to 2 size[/] = try.baseSize[/];
Fory = 0 to try.NumConcats - 1
Iftry.concatStartNode[/9/] ^ size[z] size[/] = Try.concatStartNode[/5 i] + Try.concatSize[/? /]; 30 Else If Try.concatStartNode[/,/·] < 0 size[/] = size[/] - try.concatStartNode[/5 i] 70 1285818 5 10
15 20 25
End If End For End For If size[0] < PartSize[0] and size[l] < PartSize[l] andsize[2] < PartSize[2] orient[NumOrient5 0] = 0 orient[NumOrient,1] = 1 orient[NumOrient? 1] = 2 NumOrient = NumOrient + 1 End If If size[0] < PartSize[0] and size[2] < PartSize[l] andsize[l] < PartSize[2] orient[NumOrient,0] = 0 orient[NumOrient9 1] = 2 orient[NumOrient? 2] = 1 NumOrient = NumOrient + 1 End If If size[l] < PartSize[0] and size[0] < PartSize[l] andsize[2] < PartSize[2] orient[NumOrient,0] = 1 orient[NumOrient5 1] = 0 orient[NumOrient? 2] = 2 NumOrient = NumOrient + 1 End If If size[l] < PartSize[0] and size[2] < PartSize[l] andsize[0] < PartSize[2] orient[NumOrient,0] = 1 orient[NumOrient, 1] = 2 orient [NumOrient, 2] = 0 NumOrient = NumOrient + 1 End If If size[2] < PartSize[0] and size[0] < PartSize[l] andsize[l] < PartSize[2] orient[NumOrient? 0] = 2 71 30 1285818 5 10
15 20
25 orient[NumOrient? 1] = 0 orient[NumOrient? 2] = 1 NumOrient = NumOrient + 1 End If If size[2] < PartSize[0] and size[l] < PartSize[l] andsize[0] < PartSize[2] orient[NumOrient? 0] = 2 orient[NumOrient,1] = 1 orient[NumOrient? 2] = 0 NumOrient = NumOrient + 1 End If Else If Try.baseSize[0] = Try.baseSize[l] If try.baseSize[0] = try.baseSize[2] IfTry.baseSize[0] < PartSize[0] andTry.baseSize[l] < PartSize[l] and Try.baseSize[2] < PartSize[2] orient[NumOrient? 0] = 0 orient[NumOrient,1] = 1 orient[NumOrient,2] = 2 NumOrient = NumOrient + 1 End If Else IfTry.baseSize[0] < PartSize[0] andTry.baseSize[l] < PartSize[l] and Try.baseSize[2] < PartSize[2] orient[NumOrient? 0] = 0 orient[NumOrient5 1] = 1 orient[NumOrient,2] = 2 NumOrient = NumOrient + 1
End If IfTry.baseSize[0] < PartSize[0] and Try.baseSize[2] < PartSize[l] andTry.baseSize[l] < PartSize[2] orient[NumOrient? 0] = 0 orient[NumOrient,1] = 2 orient[NumOrient? 2] = 1 NumOrient = NumOrient + 1
72 30 1285818 5 10
15 20
25
End If If Try.baseSize[2] < PartSize[0] and Try.baseSize[0] < PartSize[l] and Try.baseSize[l] < PartSize[2] orient[NumOrient,0] = 2 orient[NumOrient? 1] = 0 orient[NumOrient, 2] = 1 NumOrient = NumOrient + 1 End If End if Else if Try.baseSize[0] = Try.baseSize[2] IfTry.baseSize[0] < PartSize[0] andTry.baseSize[l] < PartSize[l] and Try.baseSize[2] < PartSize[2] orient[NumOrient, 0] = 0 orient[NumOrient,1] = 1 orient[NumOrient,2] = 2 NumOrient = NumOrient + 1 End If If Try.baseSize[0] < PartSize[0] and Try.baseSize[l] PartSize[2] andTry.baseSize[l] < PartSize[2] orient[NumOrient? 0] = 0 orient[NumOrient,1] = 2 orient[NumOrient,2] = 1 NumOrient = NumOrient + 1 End If If Try.baseSize[l] < PartSize[0] and Try.baseSize[0] < PartSize[l] and Try.baseSize[2] < PartSize[2] orient[NumOrient5 0] = 1 orient[NumOrient? 1] = 0 orient [NumOrient, 2] = 2 NumOrient = NumOrient + 1 End If Else Tf Try.baseSize[l] = Try^baseSize[2]) If Try.baseSize[0] < PartSize[0] and Try.baseSizefl] < PartSize[l] and Try.baseSize[2] < PartSize[2] 73 30 1285818 10
15 20 25 orient[NumOrient,0] = 0 orient[NumOrient,1] = 1 orient[NumOrient,2] = 2 NumOrient = NumOrient + 1 End If If Try.baseSize[l] < PartSize[0] and Try.baseSize[0] < PartSize[l] and Try.baseSize[2] < PartSize[2] orient[NumOrient? 0] = 1 orient[NumOrient? 1] = 0 orient[NumOrient,2] = 2 NumOrient = NumOrient + 1 End If If Try.baseSize[l] < PartSize[0] and Try.baseSize[2] < PartSize[l] and Try.baseSize[0] < PartSize[2] orient[NumOrient,0] = 1 orient[NumOrient,1] = 2 orient[NumOrient5 2] = 0 NumOrient = NumOrient + 1 End If Else If Try.baseSize[0] < PartSize[0] and Try.baseSize[l] < PartSize[l] and Try.baseSize[2] < PartSize[2] orient[NumOrient? 0] = 0 orient[NumOrient,1] = 1 orient[NumOrient,2] = 2 NumOrient = NumOrient + 1 End If If Try.baseSize[0] < PartSize[0] and Try.baseSize[2] < PartSize[l] and Try.baseSize[l] < PartSize[2] orient[NumOrient,0] = 0 orient[NumOrient,1] = 2 orient [NumOrient, 2] = 1 NumOrient = NumOrient + 1
End If 74 30 1285818 5 10
15 20
25
If Try.baseSize[l] <PartSize[0] and Try.baseSize[0] < PartSize[l] and Try.baseSize[2] <PartSize[2] orient[NumOrient,0] = 1 orient[NumOrient, 1] = 0 orient[NumOrient? 2] = 2 NumOrient = NumOrient + 1 End If If Try.baseSize[l] < PartSize[0] and Try.baseSize[2] < PartSize[l] and Try.baseSize[2] < PartSize[0] orient[NumOrient? 0] = 1 orient[NumOrient,1] = 2 orient[NumOrient5 2] = 0 NumOrient = NumOrient + 1 End If If Try.baseSize[2] < PartSize[0] and Try.baseSize[0] < PartSizefl] and Try.baseSize[2] < PartSize[l] orient[NumOrient,0] = 2 orient[NumOrient5 1] = 0 orient[NumOrient,2] = 1 NumOrient = NumOrient + 1 End If If Try.baseSize[2] < PartSize[0] and Try.baseSize[l] < PartSize[l] and Try.baseSize[2] < PartSize[0] orient[NumOrient? 0] = 2 orient[NumOrient,1] = 1 orient[NumOrient? 2] = 0 NumOrient = NumOrient + 1 End If End If 30 特定具體例中,build2Dtry涵蓋如下實例邏輯: Rank(PartSize? pRank) build2DFold(PartSize,pRank,RequestedSize,NumFolds,FoldList) ⑧ 75 1285818 10
15 20 25
For / = 0 to NumFolds - 1 dl = RequestedSize[FoldList[/].fixDimension] + FoldList[/]. foldLengtht + FoldList[/] .NumFolds If FoldList[/].remainder not equal 0 dl = dl + 1 End If Fory = / + 1 to NumFolds - 1 D2 = RequestedSize[FoldList[/].fixDimension] + FoldList[/]. foldLengtht + FoldList[/] .NumFolds If FoldList[/].remainder not equal 0 D2 = d2 + 1 End If Ifd2<dl TempFold = FoldList[/] FoldList[/·] = FoldList[/] FoldList[/] = tempFold dl=d2 End If End For End For NumberOfTries = 0 For / = 0 to NumFolds - 1 try.baseSize[FoldList[/].fixDimension] = RequestedSize [F oldList [/]. fixDimension] try.baseSize[FoldList[/].foldDimension = FoldList[/].foldLength try.baseSize[FoldList[/].oneDimension] = FoldList[/] .NumFolds If FoldList[/].remainder not equal 0 try.NumConcats = 1 If FoldList[/].NumFolds is odd Try.concatStartNode[09 FoldList[/]. foldDimension]= FoldList[/].foldLength - FoldList[/] .remainder Else Try.concatStartNode[0? FoldList[/]. foldDimension] = 0 End If 76 30 1285818 try.concatStartNode[0?FoldList[/]. fixDimension] = 0 try.concatStartNode[0?FoldList[/]. oneDimension]= FoldList[/].NumFolds try.concatSize[0?FoldList[/]. fixDimension] = try.baseSize 5 [FoldList[z]. fixDimension] try.concatSize[0? FoldList[/]. foldDimension] = FoldList[/]. remainder try.concatSize[0,FoldList[/]. oneDimension] = 1 Else 10 try.NumConcats = 0
End If
try.NumFoldMaps = 1 try.foldLength[0] = FoldList[z].foldLength try.foldFrom[0] = FoldListf/]. foldDimension 15 try.foldTo[0] = FoldList[/]. oneDimension try.foldFix[0] = FoldList[/]. fixDimension build3Dtry(Try? NumberOfTries)
End For 特定具體例中,建置一二維網格之全部可能摺疊之 20 build2Dfold涵蓋如下實例邏輯:
oneD = -1 For / = 0 to 2
If size[/] = 1 and oneD = -1 25 oneD = i
Else
twoD[/] = I 7=7+1 End If 30 End For
If size[twoD[l]] > size[twoD[0]] bigD = twoD[l] 77 1285818 5 10
15 20
25
littleD = twoD[0] Else bigD = twoD[0] littleD = twoD[l] End If startFoldB = sqrt(size[bigD]) If startFoldB x startFoldB not equal size[bigD] or startFoldB = 1 StartFoldB = startFoldB + 1 End If endFoldB = size[bigD] / 2 startFoldL = sqrt(size[littleD]) If startFoldL x startFoldL not equal size [littleD] or startFoldL = 1 StartFoldL = startFoldL + 1 if size[bigD] not equal size[littleD] endFoldL = size [littleD] / 2 else endFoldL = 1 End If NumFolds = 1 If endFoldB > startFoldB NumFolds= NumFolds +(endFoldB - startFoldB+1) End If If endFoldL > startFoldL NumFolds= NumFolds +(endFoldL - startFoldL+1) End If foldlndex = 0; FoldList[foldIndex] .foldLength =size [littleD] FoldList [foldlndex] .NumFolds = 1 FoldList [foldlndex] .remainder = 0 FoldList [foldlndex]. foldD = littleD FoldList [foldlndex]. fixD = bigD FoldList [foldlndex]. oneD = oneD ⑧ 78 30 1285818 根據如下實例邏輯所組構成之陣列t為所得Tiy之網格 大小。排程器515將t之Rank記錄於一陣列tRank。 10
15 20
25 i[littleD] = size[bigD] i[bigD] = FoldList[foldIndex].foldLength i[oneD] = FoldList[foldIndex].NumFolds rank(i,iRank) hit = False For /1 = 0 to 2 while hit = False If i[iRank[/l]] > PartSize[pRank[zl]] hit = True End If If hit = False foldlndex = foldlndex + 1 End If For / = startFoldB to endFoldB FoldList [foldlndex]. foldLength = i FoldList[foldIndex].NumFolds = size[bigD] / i FoldList[foldIndex] .remainder = size[bigD] mod i FoldList [foldlndex]. foldD = bigD FoldList [foldlndex]. fixD = littleD FoldList [foldlndex]. oneD = oneD i[littleD] = size[littleD] i[bigD] = FoldList [foldlndex]. foldLength If (FoldList[foldIndex].remainder not equal 0 i[oneD] = FoldList[foldIndex].NumFolds + 1 Else i[oneD] = FoldList[foldIndex].NumFolds End If Rank(,,,Rank) hit = False For /1 = 0 to 2 while hit = False If i[iRank[/l]] > PartSize[pRank[/l]] 79 30 1285818 5 10
15 20
25 hit = True End If End For if hit = False foldlndex = foldlndex + 1 End If End For For / = startFoldL to endFoldL FoldList[foldIndex].foldLength = i FoldList[foldIndex].NumFolds = size[littleD] / i FoldList[foldIndex] .remainder = size[littleD] mod i FoldList[foldIndex].foldD = littleD FoldList [foldlndex]. fixD = bigD FoldList[foldIndex].oneD = oneD i[bigD] = size[bigD] i[littleD] = FoldList [foldlndex]. foldLength If FoldList[foldIndex] .remainder not equal 0 i[oneD] = FoldList [foldlndex] .NumFolds + 1 Else i[oneD] = FoldList[foldIndex] .NumFolds End If Rank(t,,Rank) hit = False for /1 = 0 to 2 while hit = False If i[iRank[/l]] > PartSize[pRank[/l]] hit = True End If End For If hit = False Foldlndex == foldlndex + 1 End If End For
80 30 1285818 特定具體例中,buildlDTry產生一維請求之摺疊串列, 且對各個褶呼叫build2DFold來產生一或多個額外褶之串 列。buildlTry將摺疊串列記錄於OneDFoldList,且涵蓋如 下實例結構:
Structure oneDFold Fold Structure Fold Structure integer integer End Structure
10
oneD twoD[x]
NumTwoDFolds twoDFoldSize[3] 特定具體例中,oneD包括第一褶。特定具體例中,twoD 包括由該第一褶所產生之褶串列。NumTwoDFolds指示於 twoD之褶數目。特定具體例中,twoDFoldSize指示進送至 build2Dfold之網格大小。排程器515對twoD之元素產生Try 15 結構,且呼叫build3Dtry來對各次Try結構建置全部可能的 旋轉。特定具體例中,buildlTry涵蓋如下實例邏輯:
20
Rank(PartSize? pRank)
Rank(RequestedSize5 yRank[0]) end = sqrt(RequestedSize[/Rank[2]]) start = 2
OneDFoldList[0].oneD.foldLength = RequestedSize[/Rank[2]] OneDFoldList[0].oneD.NumFolds = 1 OneDFoldList[0].oneD.remainder = 0 OneDFoldList[0].oneD.foldD = yRank[2]
OneDFoldList[0].oneD.oneD = yRank[l] OneDFoldList[0].oneD.fixD = yRank[0]
OneDFoldList [0] .twoDFoldS ize[/Rank[2]]= 81 25 1285818
15
25
RequestedSize[/Rank[2]] OneDFoldList[0].twoDFoldSize[/Rank[l]] = 1 OneDFoldList[0].twoDFoldSize[/*Rank[0]] = 1 hit = False Fory = 0 to 2 while hit = False if RequestedSize[/Rank[/]] > PartSize[pRank[/]] hit = True End If End For If hit = False build2DFold(PartSize? pRank, RequestedSize, OneDFoldList[0].twoD? OneDFoldList[0] .nTwoDFolds) OneDFoldList[0].nTwoDFolds = 1 NumlDFolds = 1; Else NumlDFolds = 0 End If gotRemZero = False For i = start to end OneDFoldList[NumlDFolds].oneD.foldLength = i OneDFoldList[NumlDFolds].oneD.NumFolds = RequestedSize [/Rank[2]] / i OneDFoldList[NumlDFolds].oneD.remainder = RequestedSize [/Rank[2]] mod i OneDF oldList [Num 1DF olds]. oneD. foldD = yRank[2 ] (OneDF oldList[Num 1DF olds]. oneD. oneD = yRank[ 1 ] OneDF oldList [Num 1 DF olds]. oneD. fixD = yRank[0] OneDFoldList[NumlDFolds].twoDFoldSize[/Rank[2]]= OneDFoldList[Num 1 DFolds] .oneD.foldLength OneDFoldList[NumlDFolds].twoDFoldSize[/Rank[l]]=
82 30 1285818 5 10
15 20
25
OneDF oldList [Num 1DF olds]. oneD .NumFolds OneDFoldList[NumlDFolds].twoDFoldSize[/Rank[0]] = 1 If OneDFoldList[NumlDFolds].oneD.remainder not equal 0 or gotRemZero = False If OneDFoldList [Num lDFolds].oneD.remainder = 0 gotRemZero = True End If build2DFold(PartSize, pRank? RequestedSize, OneDF oldList [Num 1 DF olds]. twoDF oldSize, OneDF oldList [Num 1 DF olds]. twoD ? OneDF oldList [Num 1 DF olds] .nT woDF olds) NumlDFolds = NumlDFolds + 1 End If End For NumberOfTries = 0 For / = 0 to NumlDFolds Fory = 0 to OneDFoldList[/J.nTwoDFolds If OneDFoldList[/].oneD.foldD not equal OneDFoldList[/].twoD[/].foldD or OneDFoldList[/].oneD.remainder = 0 try.baseSize[OneDFoldList[/].twoD[/].fixD]= OneDF oldList [/] .twoDF oldSize[OneDF oldLi st[/].twoD[/].fixD] try.baseSize[OneDFoldList[/].twoD[/].foldD]= OneDFoldList[/] .twoD[/] .foldLength try.baseSize[OneDFoldList[/].twoD[/].oneD]= OneDFoldList[/].twoD[/].NumFolds; if OneDFoldList[/].twoD[/].remainder not equal 0 try.NumConcats = 1 if OneDFoldList[/].twoD[/].NumFolds is odd try.concatStartNode[0, ⑧ 83 30 1285818 5 10
15 20 25
OneDFoldList[/].twoD[/].foldD]= OneDFoldList[/].twoD[/].foldLength -OneDFoldList[z].twoD[/].remainder Else try.concatStartNode[0, OneDFoldList[/].twoD[/*].foldD] = 0 End If try.concatStartNode[0? OneDFoldList[/].twoD[/].fixD] = 0 try.concatStartNode[0? OneDFoldList[z].twoD[/].oneD] =OneDFoldList[/].twoD[/].NumFolds try.concatSize[09 OneDFoldList[/].twoD[/].fixD]= try.baseSize[OneDFoldList[/].twoD[/].fixD] try.concatSize[09 OneDFoldList[/].twoD[/].foldD]= OneDFoldList[/].twoD[/].remainder try.concatSize[0 OneDFoldList[/].twoD[/].oneD] = 1; Else try.NumConcats = 0 End If If OneDFoldList[/].oneD.remainder not equal 0 if OneDFoldList[/].oneD.NumFolds is odd try.concatStartNode[try.NumConcats? OneDFoldList[z].oneD.foldD]= OneDF oldList [/]. oneD. foldLength -OneDFoldList[z].oneD.remainder Else try.concatStartNode[try.NumConcats? OneDFoldList[/].oneD.foldD] = 0 End If try.concatStartNode[try.NumConcats? OneDFoldList[/].oneD.fixD] = 0 try.concatStartNode[try.NumConcats? 84 30 1285818 10
15 20 25
OneDFoldList[/].oneD.oneD]= OneDFoldList[/].oneD.NumFolds try. concat S ize [try .NumC oncats ? OneDFoldList[/].oneD.fixD] = 1 try.concatSize[try.NumConcats9 OneDFoldList[z].oneD.foldD]= OneDFoldList[/] .oneD.remainder try.concatSize[try.NumConcats5 OneDFoldList[/].oneD.oneD] = 1 oneDEnd[0] = try.concatStartNode[try.NumConcats? 0] + try.concatSize[try.NumConcats,0] - 1 oneDEnd[l] = try.concatStartNode[try.NumConcats? 1] + try.concatSize[try.NumConcats? 1] - 1 oneDEnd[2] = try.concatStartNode[try.NumConcats9 2] + try.concatSize[try.NumConcats? 2] - 1 k = try.concatStartNode[try.NumConcats? OneDFoldList[/] .twoD[/] .foldD] / = oneDEnd[OneDFoldList[z].twoD[/].foldD] If OneDFoldList[z].twoD[/].NumFolds is odd try.concatStartNode[try.NumConcats? OneDFoldList[/].twoD[/].foldD]= OneDFoldList[/].twoD[/].foldLength - 1 - (k mod OneDFoldList[/].twoD[/].foldLength) oneDEnd[OneDFoldList[/].twoD[/]. foldD]= OneDFoldList[/].oneD.foldLength - 1-(1 mod OneDF oldList [ /]. oneD. foldLength) Else try.concatStartNode[try.NumConcats9 OneDFoldList[/].twoD[/]. foldD] = k mod OneDFoldList[/].twoD[/]. foldLength oneDEnd[OneDFoldList[/].twoD[/]. foldD] = 1 mod OneDFoldList[/].oneD.foldLength 85 30 1285818 10
15 20
25
End If try.concatStartNode[try.NumConcats5OneDFoldList[/]. oneD.oneD] = k / OneDFoldList[/].twoD. foldLength oneDEnd[OneDFoldList[/].oneD.oneD] = 1 / OneDFoldList [i]. oneD. foldLength try.concatSize[try.NumConcats? 0] = oneDEnd[0]- try.concatStartNode[try.NumConcats9 0] + 1 try.concatSize[try.NumConcats? 1] = oneDEnd[l]- try.concatStartNode[try.NumConcats? 1] + 1 try.concatSize[try.NumConcats? 2] = oneDEnd[2]- try.concatStartNode[try.NumConcats9 2] + 1 try.NumConcats = try.NumConcats + 1 End If try.NumFoldMaps = 2 try.foldLength[0] = OneDFoldList[/].oneD.foldLength try.foldFrom[0] = OneDFoldList[/].oneD.foldD try.foldTo[0] = OneDFoldList[/].oneD.oneD try.foldFix[0] = OneDFoldList [/].oneD.fixD try.foldLength[l] = OneDFoldList[/].twoD[/].foldLength try.foldFrom[l] = OneDFoldList[/].twoD[/].foldD try.foldTo[l] = OneDFoldList[/].twoD[/].oneD try.foldFix[l] = OneDFoldList[/].twoD[/].fixD build3Dtry(Try, NumberOfTries) End For End For NumDeleted = 0 For / = 0 to NumberOfTries - 1 curMax = TryList[/].baseSize[0] + TryList[/].baseSize[l] + TryList[/] .baseSize[2] if TryList[/].NumConcats > 0
86 30 1285818 curMax = curMax + 1 End If
For j = i +ltoNumberOfTries - 1 duplicate = True 5 For /1 = 0 to 2 while duplicate = True
If TryList[/].baseSize[/l] not equal TryList[/].baseSize[/] duplicate = False End If End For 10 If duplicate = True and TryList[/].NumConcats =
TryList[/] .NumConcats)
For /1 = 0 to TryList[z].NumConcats while duplicate =
True
For jl = 0 to 2 while duplicate = True 15
If TryList[/].concatStartNode[/l? jl] not equal TryList[/].concatStartNode[/l? j 1] duplicate = False 20
Else If TryList[/].concatSize[/l? jl] not equal TryList[/].concatSize[/l9 j 1] duplicate = False End For End For End If 25
If duplicate = True For /1 = 0 to 2
TryList[/].baseSize[/l] = TorusSize[/l] + 1 End For
NumDeleted = NumDeleted + 1 Else nxtMax = TryList[/].baseSize[0] + TryList[/].baseSize[l] + TryList[/].baseSize[2]
30 87 1285818
If TryList[/].NumConcats > 0 nxtMax = nxtMax + 1 End If
If nxtMax < curMax 5 TempTry = TryList[/]
TryList[/] = TryList[z]
TryList[/] = tempTry curMax = nxtMax End If 10 End If ^ End For
End For
NumberOfTries = NumberOfTries - NumDeleted 特定具體例中,建置BestFit[3]之buildCompactFits涵蓋 15 如下實例邏輯:
Rank(PartSize?PariRank) / = QubeRoot(ResuestedNodes) hit = False
25
For / = 1 to /+1 while hit = False For j = i to /+1 while hit = False For (k =j to /+1 while hit = False Ifixj xk> RequestedNodes _ = i i[l]=j t[2] = k hit = True End If End For End For End For 88 30 1285818 10
15 20
25
If ί[0] < PartSize[PariRank[0]] If ί[1] > PartSize[Par/Rank[l]] hit = False For t[2] = RequestedNodes / (i[0] x i[l]) to PartSize[PariRank[2]] while hit = False If i[0] x i[l] x t[2] > RequestedNodes Hit = True End If End For End If Else i[0] = PartSize[PariRank[0]] / = sqrt(RequestedNodes / i[0]) hit = False; Fory = / to / + 1 while hit = False For (k to / + 1 while hit = False itmxjxk > RequestedNodes i[i] =j t[2] = k hit = True End If End For End For if i[l] > PartSize[PariRank[l]] /[1] = PartSize[Par^Rank[l]] t[2] = RequestedNodes / (t[0] x i[l]) If i[0] x /[1] x t[2] < RequestedNodes t[2] = t[2] + 1 End If End If End If bestFit[pRank[0]] = i[0]; bestFit[pRank[l]] = t[l];
89 30 1285818 10
15 20 25 bestFit[pRank[2]] = t[2]; NumberOfFits = 0 For i = BestFit[0] to PartSize[0] For j = BestFit[l] to PartSize[l] For k = BestFit[2] to PartSize[2] Fit[NumberOfFits,0] = / Fit[NumberOfFits?l] = j Fit[NumberOfFits52] = k Hit = True If (/ not equal to PartSize[0]) and(/ not equal to PartSize[0]) and (A: not equal to PartSize[0]) For m = 0 to NumMapDimensions While Hit = True If Fit[NumberOfFits?MapDimension[m]] mod MapModf/w] not equal to 0 Hit = False End If End For End If If Hit = True NumberOfFits = NumberOfFits + 1 End If End For End For End For For / = 0 to NumBerOfFits - 1 dl = Fit[/? 0] + Fit[/? 1] + Fit[/? 2] For y = / + 1 to NumBerOfFits - 1 d2 = Fit[/,0] + Fit[/,l] + Fit[/,2] ifd2<dl k=Vit\j\ 0] Fit[/; 0] = Fit[/? 0] Fit[/? Q] = k k = Vit\j, 1] Fit[/; l]=Fit[/? 1] 90 30 1285818 10
15 20 25
Fit[/? l]=k k = ¥it\j\U Fit[/,l] = Fit[i,l] Fit[/? l]= k dl = d2 Else If d2 = dl Rank(Fit[/]5 iRank) Rank(F it [/] ? yRank) hit = 0 For (A: = 0 to 2 while hit = 0 If Fit[/?yRank[^] > Fit[/9 iRank[A:] hit= 1 Else If Fit[/?yRank[A:] < Fit[/5 iRank[A:] Hit = -1 End For If hit = 1k=m\ 〇] Fit[/·,0] = Fit[/·,0] Fit[/? 0]= k Fit[/,l] = Fit[i,l] Fit[/? l]=k k=¥itU,l]Fit[/,l] = Fit[U] Fit[z? l] = k dl =d2 End If End If End For End For lastMax = 0 NumMaxDistances = 0 For / = 0 NumberOfFits - 1 currentMax = Fit[/,0] + Fit[/,1] + Fit[z·,2]
91 30 1285818
If currentMax not equal lastMax
MaxDistance[NumberOfMaxDistance5 0] = i MaxDistance[NumberOfMaxDistance5 1] = currentMax NumberOfMaxDistance = NumberOfMaxDistance + 1 5 End If
End For 特定具體例中,buildFreeMeshes Function涵蓋如下實 例邏輯z
NumFreeMeshes = 0
15 20 25
For / = parts tart [0] to PartEnd[0]
For j =PartStart[l] to PartEnd[l]
For A: = PartStart[2] to PartEnd[2]
If NodeInUse[zV,A:] = NODE一NOT一 IN一USE NodeInUset/,/Λ] = NODE_ON_HOLD meshStart[0] = i meshStart[l] =j meshStart[2] = k inMesh = True
for mz = A: + 1 to PartEnd[2] and inMesh = True if NodeInUse[/j/?mz] not equal NODE—NOT 一IN—USE inMesh = False End If End For
If inMesh = True mEnd[2] = mz - 1 Else mEnd[2] = mz - 2
If PartWraps[2] and meshStart[2] = 0 and meshEnd[2] not equal PartEnd[2] inMesh = True;
For mz = PartEnd[2 to meshEnd[2] by -1 and 92 30 1285818 inMesh = True 10
15
If NodelnUse [i,j,mz] not equal NODE 一NOT_IN_USE inMesh = False End If End For If inMesh = True mz = mz + 1 Else mz = mz + 2 End If if mz ^ PartEnd[2] meshStart[2] = mz; meshEnd[2] =meshEnd|^2] + TorusSize[2] End If End If 20 25 inMesh = True For my =7 + 1 to PartEnd[l] and inMesh = True For mz = meshStart[2 tomeshEnd[2] an inMesh = True If NodeInUse[z·,mj, mz mod TorusSize|7]] not equal NODE一NOT一IN-USE inMesh = False End If End For If inMesh = True meshEnd[l] = my - 1 Else meshEnd[l] = my - 2 End If If PartWraps[l] and meshStart[l] = 0 and meshEnd[l] not equal PartEnd[l] inMesh = True For my = PartEnd[l] to meshEnd[l] by -1 and inMesh = True 93 30 1285818 10
15 20 25
For mz = meshStart[2] to meshEnd[2] and inMesh = True If NodeInUse[/?my?mz mod Torus Size[2] not equal NODE 一NOT 一 IN_USE inMesh = False End If End For End For If inMesh = True My = my + 1 Else my = my + 2 End If if my < PartEnd[l] meshStart[l] = my meshEnd[l] =meshEnd[l] + TorusSize[l] End If End If End For inMesh = True for mx = / + 1 to PartEnd[0] and inMesh = True for my = meshStart[l] to meshEnd[l] and inMesh = True for mz = mStart[2] to mEnd[2] and inMesh = True If NodeInUse[mjc?my mod TorusSize[l]?mz mod TorusSize[2]] not equal NODE 一NOT 一 IN—USE inMesh = False End If End For End For End For If inMesh = True meshEnd[0] = mx - 1 94 30 1285818 10
15 20 25
Else meshEnd[0] = mx - 2 End If If partWraps[0] and meshStart[0] = 0 and meshEnd[0] not equal PartEnd[0] inMesh = True For mx = partEnd[0] to meshEnd[0] by -1 and inMesh = True For my = meshStart[l] to meshEnd[l] and inMesh = True For mz = meshStart[2] to meshEnd[2] and inMesh = True If NodeInUse[mjc?my mod TorusSize[l]?mz Mod TorusSize[2]] not equal NODE-NOT—IN_USE inMesh = False End If End For End For End For If inMesh = True Mx = nuc + 1 Else Mx: = mx + 2 End If If mx < PartEnd[0] meshStart[0] = mx meshEnd[0] = meshEnd[0] + TorusSize[0] End If End If FreeMesh[NumFreeMeshes].Start[0] = meshStart[0] FreeMesh[NumFreeMeshes].Start[l] = meshStart[l] FreeMesh[NumFreeMeshes].Start[2] = meshStart[2] rs) 95 30 1285818
FreeMesh[NumFreeMeshes].end[0] = meshEnd[0] FreeMesh[NumFreeMeshes].end[l] = meshEnd[l] FreeMesh[NumFreeMeshes].end[2] = meshEnd[2] FreeMesh[NiiinFreeMeshes].NumNodes = (meshEnd[0]-5 meshStart[0] + 1) x (meshEnd[l]- meshStart[l] + 1) x (meshEnd[2]-meshStart[2] + 1)
For mx = meshStart[0] to meshEnd[0] mxl = mx mod TorusSize[0] 10 For my = meshStart[l] to meshEnd[l]
myl = my mod TorusSize[l]
For mz = meshStart[2] to meshEnd[2] mzl = mz mod TorusSize[2]
NodeInUse[mjd]? myl], mzl]=
15 NODE 一 ON一 HOLD
End For End For End For For z· = 0 to 2 20 FreeMesh[NumFreeMeshes].Rank[z] = 2-1;
End For For / = 0 to 2
For m = /+1 to 3 /1 = FreeMesh[NumFreeMeshes].Rank[/] 25 ml = FreeMesh[NumFreeMeshes].Rank[m]
If meshEnd[ml] - meshStart[ml] <meshEnd[/l]-meshStart[/l]
FreeMesh[NumFreeMeshes].Rank[/] = ml FreeMeshRank[m] = /1 30 End If
End For End For
NumFreeMeshes = NumFreeMeshes + 1 96 1285818 10
15 20 25
End If End For End For End For For / = partStart[0] to PartEnd[0] For j =PartStart[l] to PartEnd[l] For A: = PartStart[2] to PartEnd[2] IfNodelnUseW,幻=NODE 一 ON 一HOLD NodeInUse[zV,^|=NODE—NOT_INJJSE End If End For End For End For For / = 0 to NumFreeMeshes ~ 1 Fory = / +1 to NumFreeMeshes - 1 hit = False if FreeMesh[/].NumNodes < freeMesh[/].NumNodes hit = True; Else If FreeMesh[/].NumNodes = freeMesh[/].NumNodes hit = True For / = 0 to 2 while hit = True If FreeMesh[/].Rank[/] > freeMesh[/].Rank[/]) Hit = False End If End For End If If hit = True TempMesh = FreeMesh[/] FreeMesh[/] = FreeMesh[z] FreeMesh[/] = TempMesh End If End For End For 97 30 1285818 特定具體例中,若排程器515成功地排程一工作150則 迴送True之ScheduleJob涵蓋如下實例邏輯: 5
10
If SpatialAllowed = True If scheduleSpatial() = True return True Else If CompactAllowed = True return scheduleCompact() End If Else If CompactAllowed = True return scheduleCompact() Else Return scheduleAny() End If 特定具體例中,scheduleSpatial涵蓋如下實例邏輯: 15
20
GotFit = False For / = 0 to NumberOfTries - 1 while GotFit = False If scanSpatial(TryList[/]?Start) = True GotFit = True setSpatialNodeInUse(Try,Start) End If End For Return GotFit 特定具體例中,建置AssignedNodeList之 setSpatialNodelnUse涵蓋如下實例邏輯: 25 Nodeindex = 0 For (cNode[0] = 0 to OriginalSize[0] - 1 For cNode[l] = 0 to OriginalSize[l] - 1 For cNode[2] = 0 to OriginalSize[2] - 1 ⑧ 98 1285818 10
15 20 25
For / = 0 to 2 ycNode[jobMap[/]] = cNode[/] End For If Try.NumFoldMaps = 1 mNode[0, Try.foldFix[0]] =ycNode[Try.foldFix[0]] mNode[0? Try.foldTo[0]] =ycNode[Try.foldFrom[0]] / Try.foldLength[0] If mNode[0? Try.foldTo[0]] is odd mNode[0? Try.foldFrom[0]] = Try.foldLength[0]- 1 ~ (/cNode[Try.foldFrom[0]] mod Try.foldLength[0]) Else mNode[0? Try.foldFrom[0]] =ycNode[Try.foldFrom[0]] mod Try.foldLength[0] End If For / = 0 to 2 node[/] = mNode[0? Try.rMap[/]] End For Else mNode[0, Try.foldFix[0]] =ycNode[Try.foldFix[0]] mNode[0?Try.foldTo[0]] =ycNode[Try.foldFrom[0]] / Try—foldLnt[0] If mNode[0? Try.foldTo[0]] is odd mNode[0? Try.foldFrom[0]] = Try.foldLength[0]- 1 - (/cNode[Try.foldFrom[0]] mod Try.foldLength[0]) Else mNode[0, Try.foldFrom[0]]= ycNode[Try.foldFrom[0]] mod Try.foldLength[0] End If mNode[l, Try.foldFix[l]] =mNode[0, Try.foldFix[l]] mNode[l? Try.foldTo[l]] = mNode[0? Try.foldFrom[l]] / Try.foldLength[l] ⑧ 99 30 1285818
10
15 20
If mNode[l,Try.foldTo[l]] is odd mNode[l? Try.foldFrom[l]] = Try.foldLength[l] - 1 - (mNode[0, Try.foldFrom[l]] mod Try.foldLength[l])
Else mNode[l,Try.foldFrom[l]] = mNode[0, Try.foldFrom[l]] modTry ^ foldLnt[ 1 ] For i = 0 to 2 node[/] = mNodefl, Try.rMap[z]] End For End If For / = 0 to 2 Node[/] = node[/] mod TorusSize[/] End For NodeInUse[node[0],node[l],node[2]] = NODE-INJJSE AssignedNodeList[NodeIndex? 0] = node[0] AssignedNodeList[NodeIndex,1] = node[2] AssignedNodeList[NodeIndex? 2] = node[2] Nodeindex = Nodeindex + 1 End For End For * End For 特定具體例中,scanSpatial涵蓋如下實例邏輯: 25 For / = 0 to 2
If PartWraps[/])
End[/] =PartEnd[/]
Else
End[/] = PartEnd[/] - Try.baseSize[/] + 1 30 End If
End For zPlaneCnt = Try.baseSize[0] x Try.baseSize[l];
100 1285818 5 10
15 20 25
For / = PartStart[0] to End[0] newX = True For (n = PartStart[2] to PartEnd[2] zPlane[/z] = 0 End For For 1 = / to z+try.baseSize[0] For n = PartStart[2] to PartEnd[2] /1=/ mod TorusSize[0] ml = PartStart[l] m2 = (ml + Try.baseSize[l]) mod TorusSize[l] If PartStart[l] + Try.baseSize[l] < PartEnd[l] ZPlane[w] = zPlane[n] + FreeY[/l?ml?w] - FreeY [ll9m2,n] Else ZPlane[n] = zPlane[w]+ FreeY[zl,ml?w] End If End For End For For j = PartStart[l] to End[l] if newX = False /1 = i mod TorusSize[0] /2 = (/ + Try.baseSize[0]) mod TorusSize[0] ml = (/· — 1) modTorusSize[l] if PartWraps[0] = False or Z+try.baseSize[0]) PartEnd[0] For w = PartStart[2] to PartEnd[2] If /+Try.baseSize[0] < PartEnd[0] zPlane[n] = zPlane[w] - (FreeX[/l?ml?w]- FreeX[/2,ml,《]) Else zPlane[«] = zPlane[/2] - FreeX[/l,ml,/z] End If End For Else For n = PartStart[2] to PartEnd[2] zPlane[/7] = zPlane[«] - (FreeX[/l9ml?w] + (FreeX 101 30 1285818 10
15 20 25 [0,ml,w] - FreeX[/2,/nl,n])) End For End If /1 = i mod TorusSize[0] /2 = (/ + Try.baseSize[0]) mod TorusSize[0] ml =(/ + Try.baseSize[l]) mod TorusSize[l] If PartWraps[0] = False or /+try.baseSize[0]) < PartEnd[0] For w = PartStart[2] to PartEnd[2] If i + Try.baseSize[0] < PartEnd[0] ZPlane[«] = zPlane[w] + FreeX[/l9ml?w] - FreeX [ll^m2,n] Else ZPlane|)z] = zPlane[«] + FreeX[/l,ml,n] End If End For Else For n = PartStart[2] to PartEnd[2] ZPlane[w] = zPlaneM + FreeX[/l,ml,”]) + FreeX [0,m2,/2]) - FreeX[/l,m2,/z] End For End If Else newX = False; PartStart[2]; while H End[2]) hit = True; For n = k;to k + Try.baseSize[2] - 1 while hit = True If zPlane[/i mod TorusSize[2]] not equal zPlaneCnt hit = False; End If End For if hit = True Start[0] = i; Start[l] =j; 102 30 1285818 10
15 20
25
Start[2] = k; For cNdx = 0 to try.NumConcats - 1 while hit = True For m = 0 to 2 while hit = True cStart[m] = Start[m] + Tiy.concatStartNode [cNdx, m] cEnd[m] = cStart[m] + Try.concatSize[cNdx? m] - 1; if (cEnd[m] > TorusSize[m] && PartWraps[m] = False hit = False; End For For 1 = cStart[0] to cEnd[0] while hit = True For m = cStart[l] to cEnd[l] while hit = True For n = cStart[2] to cEnd[2] while hit = True /1=/ mod TorusSize[0] ml = m mod TorusSize[l] n\= n modTorusSize[2] If NodeInUse[/l,ml,nl] not equal NODE一NOT 一INJJSE hit = False; End If End For End For End For If hit = True Return True; Else K= k+ 1 End If Else k = n + \ End If End If End For End For Return False 103 30 1285818 特定具體例中,於Fit執行二進制搜尋之 scheduleCompactFunction涵蓋如下實例邏輯:
HighFit = NumberOfFits - 1 For / = 0 to 2
HighStart[z] = PartStart[/]
End For LowFit = -1 While True
15 20 25
CurrentFit = LowFit + (HighFit - LowFit) / 2 If scanCompact(NumberOfNodes, Fit[CurrentFit]? HighStart) = True HighFit = CurrentFit Else
LowFit = CurrentFit End If
If HighFit = LowFit + 1 Return End If End While Hit == False
For / = 0 to NumMaxDistances - 1 While Hit = False If HighFit ^ MaxDistance[/?0]
HigMaxDistance = i Hit = True End If End For Hit = True
For / = HighMaxDistance - 1 to 0 by -1 StartFit = MaxDistance[/?0]
If i =NumMaxDistance - 1 EndFit = NumberOfFits - 1 Else
EndFit = MaxDistance[z+l?0] - 1 104 30 1285818
End If Hit = False
For j = StartFit to EndFit While Hit = False
If scanCompact(NumberOfNodes, Fit[/]? HighStart)= True HighFit = j HighMaxDistance = / 10
Hit = True End If End For End For setCompactNodelnUse(Fit(HighFit),HighStart) 特定具體例中,setComPactNodelnUse涵蓋如下實例邏 輯: node = 0 15 For / = 0 to 2 if Start[/] > TorustSize[/]
Start[/] = Start[z] mod TorusSize[z] End[/] = Start[/] + Size[/] — 1 End If 20 End For
If NumMapDiminsions = 1 If MapDiminsion[0] = 0 order[0] = 1 order[l] = 2 25 order [2] = 0
Else If MapDiminsion[0] = 1 order[0] = 0 order[l] = 2 order[2] = 1 30, Else order[0] = 0 order[l] = 1 105 1285818 5 10
15 20
order[2] = 2 End If Else order[0] = 3 - MapDiminsion[0] - MapDiminsion[l] order[l] = MapDiminsion[0] order[2] = MapDiminsion[l] End If count = 0 For i = Start[order[0]] to end[order[0]] and count < RequestedNodes index[order[0]] = i mod TorusSize[order[0]] For j = Start[order[l]] to end[order[l]] and count < RequestedNodes index[order[l]] = j mod TorusSize[order[l]] For k = Start[order[2]] to end[order[2]] and count < RequestedNodes index[order[2]] = k mod TorusSize[order[2]] IfNodeInUse[index[0]? index[l]? index[2]] = NODE^_NOT_IN__USE NodeInUse[index[0]? index[l]5 index[2]] = NODE_IN_USE AssignedNodeList[node5 order[0] = index[order[0]] AssignedNodeList[node,order[l] = index[order[2]] AssignedNodeList[node? order[2] = index[order[2]] node = node + 1 End If End For End For End For 25 特定具體例中,ScanCompact涵蓋如下實例邏輯: For / = 0 to 2 If PartWraps[/] = True end[/] =PartEnd[/] Else 30 end[/] = PartEnd[/] - Start[/] + 1 End If For / = PartStar[0] to end[0] 106 1285818 10
15 20 25 newX = True For n = 0 to TorusSize[2] ZPlane[w] = 0 End For for (/ = i to i + size[0] for (n = pStart[2]; n < pEnd[2]; «++) /1=/ mod TorusSize[0]; ml = PartStart[l] m2 = (PartStart[l] + size[l]) modTorusSize[l] If PartStart[l]+size[l] < PartEnd[l]) ZPlane[n] = zPlane[w] +FreeY[/l9ml5n] - FreeY [/l,m2,w] Else ZPlane[w] = zPlaneM +FreeY[/l,ml,/2] End If End For End For For j = PartStart[l] to End[l] newY = True If newX = False /1 = i 12 = (/ + size[0]) mod TorusSize[0] ml =j — l If PartWraps[0] = False or /+Start[0] < PartEnd[0] For n = PartStart[2] to PartEnd[2] If z+size[0] < PartEnd[0] ZPlane[w] = zPlane[w] - (FreeX [ΙΙ,τηΙ,η]-FreeX[/2,ml,/2]) else zPlane[/z] = zPlane[w] - FreeX End If End For Else For w = PartStart[2] to PartEnd[2] 107 30 1285818 5 10
15 20 25 zPlane[w] = zPlane[w] - (FreeX [ll,ml,n] + (FreeX [0,ml^] - FreeX [/2,ml,w])) End For End If /1=/ /2 = (i + Start[0]) mod TorusSize[0] ml = (/ + size[l] - 1) modTorusSize[l] If PartWraps[0] = False or i + Start[0]) < PartEnd[0] For ^ = PartStart[2] to PartEnd[2] If (/ + Start[0] < PartEnd[0]) ZPlane[w] = zPlane[w] + (FreeX[/l?ml?w]-FreeX[/l,/w2,w] Else ZPlane[/z] = zPlane[«] + FreeX[/l,ml?«] End If End For Else For n = PartStart[2] to PartEnd[2] ZPlane[w] = zPlane[/z] + (FreeX[/l9ml?«] + (FreeX [0,ml,n] - FreeX[/l?m2?w])) End For End If Else newX = False End If For A: = PartStart[2] to end[2] if newY = True newY = False count = 0; For n-ktok + size[2] count = count + zPlane[n mod TorusSize[2]] End For Else
108 30 1285818 5 10
15 20 count = count - zPlane[A: - 1] A:1 = (A: + size[2] - 1) mod TorusSize[2] zPlane[A:l] = 0 /1 = i 12 = (/ + size[0]) mod TorusSize[0] If PartWraps[0] = False or i + size[0]) < PartEnd[0] For m =j to j + size[l] ml = m mod TorusSize[l] If i + size[0] < PartEnd[0] ZPlane[A:l] = zPlane[A:l] + (FreeX[/l,ml,A:l] -FreeX[/2,ml,H]) Else ZPlanepl] = zPlaneRl] + FreeX[/l,ml,A:l] End For Else For m =j to j + size[l] ZPlane[A:l] = zPlane[A:l] + FreeX[/l,ml,A:l] + (FreeX[0,ml,A:l] -FreeX [/2,ml,免 1]) End For End If
count= count + zPlane[A:l] End If If count > NumberOf Nodes 25
Start[0] = i Start[l] =j Start[2] = k return True End If End For End For End For End For return False 109 30 1285818 特定具體例中,scheduleAny涵蓋如下實例邏輯:
15 20
25
Node = 0 Remainder = RequestedNodes For m = 0 to NumFreeMeshes while Remainder > 0 If FreeMesh[m].Rank[0] = 2 /Ndx = FreeMesh[m].Rank[2] yNdx = FreeMesh[m].Rank[l] Else If FreeMesh[m].Rank[l] = 2 /Ndx = FreeMesh[m].Rank[2] yNdx = FreeMesh[m].Rank[0] Else /Ndx = FreeMesh[m].Rank[l] yNdx = FreeMesh[m].Rank[0] End If For i = FreeMesh[m].Start[/Ndx] toFreeMesh[m].end[/Ndx] while Remainder > 0 For j = FreeMesh[/w].Start[/Ndx] to FreeMesh[m].end[/Ndx] while Remainder > 0 For A:= FreeMesh[m].Start[2] to FreeMesh[m].end[2] while Remainder > 0 /1 = i mod TorusSize[/Ndx] j\ = j mod TorusSize[iMod] kl = k mod TorusSize[2] If/Ndx = 0 NodelnUseDVUl] =NODE—IN一USE Else NodeInUse[/Ul#l] =NODE 一 IN—USE End If AssignedNodeList[Node].[/Ndx] = /1 AssignedNodeList [Node]. [/N dx] =jl AssignedNodeList[Node9 2] = k\ 110 30 1285818
Node = Node + 1 End For End For End For 5 End For 特定具體例中,setMpiRank涵蓋如下實例邏輯:
15
25
For node = 0 to RequestedNodes - 1 to[0] = AssignedNodeList[node? 0] to[l] = AssignedNodeList[node? 1] to[2] = AssignedNodeList[node? 2]
If NumMapDiminsions = 1 to[MapDiminsion[0]] = AssignedNodeList[node,
MapDimension[0]] / MapMod[0] to [3] = AssignedNodeList[node? MapDiminsion[0]] mod
MapMod[0]
Else to[MapDiminsion[0]] = AssignedNodeList[node,
MapDiminsion[0]] / MapMod[0] to[MapDiminsion[l]] = AssignedNodeList[node,
MapDiminsion[l]] / MapMod[l] to[3] = (AssignedNodeList[node? MapDiminsion[0]] mod
MapMod[0]) x MapMod[l] +
AssignedNodeList[node9 MapDiminsion[l]] mod MapMod[l] End If hit = False for (nodel = 0 to NumFreeNodes - 1 while hit = False lfto[0] = FreeNodeList[nodel]?coordinate[0] and to[l] = FreeNodeList[nodel].coordinate[l] and to[2] = FreeNodeList[nodel].coordinate^] and to[3] = FreeNodeList[nodel].coordinate[3] 111 ⑧ 30 1285818
FreeNodeList[nodel].mpiRank = node Hit = True End If End For 5 End For 特定具體例中,排程器515使用如下實例結構來配置節 點115給工作150,實例結構定義如後。如前文說明,叢集 管理引擎130連同一工作150而將一FreeNode結構串列通訊 給排程器515。該串列包括全部可供排程之節點115。該串 1〇 列中,基於交換器之座標識別串列中之全部可用節點115。 若排程器515排程工作150,則排程器515於迴送之前設定 mpiRank 〇
Structure FreeNode integer coordinate[4] 15 integer mpiRank
End Structure
特定具體例中,排程器515使用一Fold structure來記錄 排程器515如何摺疊一維空間請求及二維空間請求。
Structure Fold 20 integer foldLength integer numFolds integer remainder integer foldDimension integer fixDdimension 25 integer oneDimension End Structure
112 1285818 特定具體例中,排程器515使用Try結構來儲存資訊於 網格用來排程一空間工作150。Try結構包括一基本網格以 及至多二鏈接網格之資訊。 5 Structure Try integer baseSize[3] integer numConcats integer concatSize[2,3] integer concatStartNode[2?3] integer rMap[3] 10 integer irMap[3] integer numFoldMaps integer foldLength[2] integer foldFrom|^2] integer foldTo[2] 15 integer foldFix[2] End Structure
特定具體例中,排程器515使用FreeMesh結構來儲存資 訊於格網110中可供用於排程之網格。排程器515使用
FreeMesh來排程「任何」請求。 20
Structure FreeMesh integer start [3] integer end[3] integer size[3] integer rank[3] integer numberOfNodes
End Structure 特定具體例中,排程器515使用下列實例變數來配置節 點115給工作150,各變數定義如後。 113 25 1285818 • RequestedNodes:對一工作150請求之節點數目。 • RequestType:工作請求型別:SPATIAL、COMPACT 或 ANY。 • OriginalSize[3]:若RequestType=SPATIAL,則工作 5 150之大小。 • AggressiveFlag:0與1間之浮點數目,指示分派給排 程器515用於配置節點115給一工作150之餘裕度。
15
20 • JobMap[3]:若 RequestType=SPATIAL ,則 Original Size指標映射為更加適合排程器515之順序。 • RequestedSize[3]:若ReqUestType=SPATIAL,則於 排程器515已經施加JobMap後之一工作150之大小。 • TorusSize[3]:以CPU 164表示之格網110之大小。 • NodesPerSwitch:每個交換器166之節點115之號碼。 • NumFreeNodes: 可供排程用之節點115之數目。 • FreeNodeList[NumFreeNodes]··進送至排程器 515之 可供用於排程之節點115之串列。 • SpatialAllowed:若空間排程允許則設定為真。 • CompactAllowed :若允許精簡排程則設定為真。 • AnyAllowed:若允許任何排程則設定為真。 • TorusMap[3]:由基於交換器之圓環至更加適合排程 器515之順序之指標之映射圖。 • InverseTorusMap[3] : TorusMap之倒數;於迴送至叢 集管理引擎130前,施加至全部輸出節點115。 • NumMapDimesions:當由基於交換器之圓環進送至 114 1285818 基於節點之圓環時,被修改之維度數目;可能之值為丨及2。 • MapDimensions[2]:當由基於交換器之圓環進送至 基於節點之圓環時被,修改之維度指標。 • MapMod[2]:使用之乘數;可能之值對 5 NumMapDimesions=l 為 MapMod[0]=4 , 以及對
NumMapDimesions=2,MapMod[0]=2及MapMod[l]=2。 • PartSize[3]:區隔之大小。 • PartStart[3]:區隔之起點座標。 Φ · PartEnd[3]:區隔之終點座標。 10 · PartWraps[3]:若一區隔包裹於維度i,則
PartWraps[i]=True 〇 • NodeInUse[TorusSize[0]5 TorusSize[l]? TorusSize[2]]: NodeInUse[i,j,k]指示節點115之狀態;可能之值包括 NODE—IN—USE(指定給另一工作150之節點115、 15 NODE一NOT一IN_USE(可資利用之節點115)及 NODE—ON—HOLD(當指定節點115給一工作150使用的暫
• FreeY[TorusSize[0], TorusSize[l], TorusSize[2]]:
FreeY[i,j,k]指示於線{i,j,k}至{i,TorusSize[l]_l,k}(含)之 20自由節點115之數目。掃描常式係使用FreeY 〇 • FreeX[TorusSize[〇]? TorusSize[l]5 TorusSize[2]]:
FreeX[i,j,k]指示於線{i,j,k}至{TorusSize[0]_l,j5 k}(含)之 自由節點之數目。掃描常式係使用FreeX。 • NumberOfTries·•對一空間請求所組構之Try結構數 ⑧ I2858l8 目0 • TryList[NumberOfTries]:用於一空間請求之Try結構 串歹。 • NumberOfFits:對一精簡請求所組構之網袼數目。 • Fit[NumberOfFits,3]:對一精簡請求所組構之網格 串列。 • Fit[i,0]=網格i與X維之大小。 • Fit[i,1]=網格i與y維之大小。 • Fit[i,2]=網格i與z維之大小。 • NumMaxDistances:於Fit之獨特最大距離數目。 • MaxDistance[NumMaxDistances, 2]:於Fit之獨特最 大距離串列。對任何0€i<NumMaxDistances而言, MaxDistance[i,0]=具有最大距離之一第一網格進入pit之指 標=MaxDistance[l,1] 〇 15
• NumFreeMeshes :於格網110之自由網格數目。自由 網格為只含括自由節點115之網格。 • FreeMesh[NumFreeMeshes] : FreeMesh結構陣列。 • AssugnedNodeList[RequestedNode,3]:以 MPI等級順 序指派給一項工作150之節點115串列。 叢集管理引擎130例如經由工作排程器515可進一步操 作來執行有效檢查點檢查。重新起動的轉存典型包含超過 75%寫至碟片之資料。此種I/O之進行方式讓處理不會因平 台故障而遺失。基於此點,檔案系統的I/O可分隔為二部分: 生產性I/O及防禦性I/O。生產性I/O為使用者呼叫之資料的 ⑧ 116 1285818 寫入’例如虛擬轉存、隨時間之經過之關鍵實體變數之執 跡等。防禦性I/O係用來管理經過一段相當時間之大量模擬 回合。如此加大I/O頻寬將可大為縮短於檢查點檢查時所涉 及之時間及風險。 5 回頭述及引擎130,本地記憶體520包含系統100之多項
特色之邏輯描述(或資料結構)。本地記憶體52〇可儲存於任 何實體或邏輯資料儲存裝置,該資料儲存裝置可操作來由 可相容碼而定義、處理或取還。例如本地記憶體520可包含 一或多個可擴充標記語言(XML)表格或文件。各個元件可 10以SQL陳述或稿本、虛擬儲存存取方法(VSAM)檔案、平坦 檔案、二元資料檔案、Btrieve檔案、資料庫檔案或逗點分 開值(CSV)檔案描述。須了解各個元件可包含一變數、一表 格、或任何其它適當資料結構。本地記憶體520也包含多個 表格或檔案儲存於一部伺服器102或儲存跨多個伺服器或 15 節點。此外,雖然於附圖係以駐在叢集管理引擎130内部舉 例說明,但若干或全部本地記憶體520可於内部或外部,而 未脖離本揭示之範圍。 舉例說明之本地記憶體520包括實體串列521、虛擬串 列522、組群檔案523、策略表524、及工作佇列525。雖然 20於圖中未顯示,但本地記憶體520可包括其它資料結構,包 括工作表及稽核記錄’而未悖離本揭示之範圍。回頭參照 附圖舉例說明之結構’實體串列521可^呆作來儲存有關節點 115之識別資訊及實體管理資訊。實體串列521可為每個節 點115包括至少一項記錄之多維資料結構。例如實體記錄可 117 1285818 =列t個糊位’諸如「節點」、「利用性」、「處理器之 卿」記憶體之利用率」、「溫度」、「實體位置」、「網 :=像」等。須了解各個記錄可未包括該等範 =立,可包括部分或全部該等範例攔位…具體例中,兮 實體記錄可提供至另一表格例如至虛擬串列切之外來輪: 10 15 20 虛擬串列522可操作來儲存㈣節點115之邏輯資 虛擬管理資訊。虛擬串列522可為每個節點ιΐ5包括至^ 項記錄之多維資料結構。例如,虛擬記錄可包括諸如二節 點」、「利用性」、「工作」、「虛擬叢集」、「二次節點」、「邏 輯位置」、「相容性」等攔位。須了解各項記錄可未包括任 何範例攔位,或包括全部或部分範例搁位。一具體例中, 虛擬記錄可包括至另-表格勤__523之鏈路。 組群檔案⑵包含可操作來儲存使用者轉資訊及安 全性資訊之-或多項表袼或記錄,諸如存取控制串列(或 ACL)。例如各個組群記錄可包括使用者可利用之服務、節 點115或工作串列。各個邏輯組群可關聯一個業務小組或 業務單元、一個部門、一項計劃、一個安全性組群、或可 提交工作150或與管理至少部分系統1〇〇之一或多個使用者 之任何其它集合相關聯。基於此項資訊,叢集管理引擎13〇 可判疋提乂工作150的使用者是否為有效使用者,若是,則 執行該工作之最佳參數。此外,組群表523可將各個使用者 組群與虛擬叢集220或與一或多個實體節點115,諸如駐在 特定組群領域内部之節點相闕聯。如此允許各組群有其個 別的處理空間而不會競爭資源。但如前文說明,虛擬叢集
118 1285818 220之形狀及大小可為動態,虛擬叢集22〇之形狀及大小可 依據需求、時間或任何其它參數而改變。 策略表524包括一或多項策略。須了解策略表524與策 略524可視情況需要而互換使用。策略表524通常係儲存有 5關工作150及/或虛擬叢集22〇之處理資訊及管理資訊。例如 策略表524可包括多項參數或變數之任一者,該等參數或變 數包括問題大小、問題回合時間、時槽、前置占用、使用 者配置之節點115或虛擬叢集220分享等。 工作仔列525表示等候執行之一或多項工作15〇流。通 10常工作佇列525包含任何適當資料結構諸如氣泡陣列、資料 庫表、或指標器陣列來儲存任何數目(包括零個)工作15〇或 參照工作。可有一佇列525關聯格網110或有多佇列525關聯 袼網110,各個佇列525係關聯於袼網11〇内部之獨特虛擬叢 集220之'—〇 15 於一操作方面,叢集管理引擎130接收由N項任務組成 的工作150,N項任務可經由執行計算與交換資訊來協力解 決問題。叢集管理引擎13〇配置N個節點115,以及使用任一 種適當技術,分派N項任務之各項任務給一個特定節點 U5,因而讓問題可有效解決。例如叢集管理引擎130可利 0用由使用者供給的工作參數,例如工作任務配置方策。雖 5如此,叢集管理引擎13〇嘗試探勘伺服器1〇2之架構,其 有對使用者提供更快速的週轉率,且可能改良系統100的整 體產出量。 一具體例中,叢集管理引擎13〇接著根據下述範例拓樸 119 1285818 結構來選擇與配置節點115 : 規定2D(x,y)或3D(x,y,z)-節點115經過配置,任務可於 規定維度排序藉此保有有效的鄰居對鄰居通訊。規定之拓 樸結構管理多項工作150,希望實體通訊拓樸結構可匹配問 5題拓樸結構,讓工作15〇之協力合作之任務可頻繁與鄰居之 任務通訊。舉例言之,於2x2x2維度(2, 2, 2)請求八項任務 將被配置為方塊。為了達成最佳匹配目的,2d配置可被「摺 疊」成為三維,同時仍然保有有效鄰居對鄰居通訊。叢集 官理引擎130可以任何取向自由配置規定之維度形狀。例如 10 2X2X8框可配置於垂直或水平可利用之實體節點内部。 最佳匹配方塊-叢集管理引擎13〇於立方體積内部配置 N個節點115。此種拓樸結構有效處理工作15〇,允許經由縮 短任二節點115間之距離來讓協力工作之任務與任何其它 任務交換資訊。 最佳匹配球體-叢集管理引擎於球狀體積配置州固 節點115。例如第一任務被置於球體的中心節點出,而其 餘任務被置於環繞該中心節點115之各個節點ιΐ5。須了解 其餘各項任務之配置順序典型並無特殊限制。此項拓樸結 構可縮短第-任務與全部其它任務間之距離。如此有效處 20理一大類問題,此處任務2至任務N係與第一任務通訊,但 其間並未彼此通訊。 隨機-叢集管理引擎13〇以較少考慮節點出之邏輯配 置位置或實體配置位置來配置雜節點出。一具體例中, 此種拓樸結構可鼓勵積極使用格網110用於回填目的,而極 120 5 少坶其它工作〗50造成衝擊。 屑了解先别拓樸結構及伴隨之說明僅供 ,而非闡述實際使用之拓 ’、♦例說明之 構之技術。^樸結構或用於配置此等扭樸結 叢集管理引擎130可利用配 參數或策略524參數。於— 錯存作為工作_ 修飾值,其絲叢集管理配置權值為G與1間之 你務(或程序)之配置方策來^何積極依據所請求之 唯有最佳方策(或维声)=γγ點出。本例中,g值表示 、隹又)為可月b時才安置節點lls; 即刻安置節點ιΐ5,只要有足量之自由節點或其它可2示 節點115來處理該韻求即可。典型地,配置權值不合^ 行政管理策略524 ’諸如資源保留,以防止大型工作 乏資源,且保有HPC系統_之玉作產出量。 、 前文舉例說明及伴隨之說明提供管理節點115及工作 150之邏輯體系實作用之叢集管理引擎130之範例模組圖。 但本圖僅絲例朗之肖,祕·涵蓋制邏輯元件之任 -種適當組合及配置來實作此等及其它演繹法則。如此此 等軟體模組可包括有效管理節點115及工作15G之各項元件 之任一種適當組合及配置。此外,若屬適當,可組合及/或 分離各項所示模組之操作。 第11圖顯示一實例介面104。介面104包括硬體、軟體、 或欲置式邏輯組成元件、或兩種或兩種以上此等組成元件 之組合來提供網路106與11?(:伺服器1〇2間之介面。特定具 體例中’介面104包括一例示管理器534以及例示資料536。 1285818 例示管理器534包括硬體、軟體、或嵌置式邏輯組成元件、 或兩種或兩種以上此等組成元件之組合,其可響應於來自 客端120之連結請求而動態例示主機於節點ns。特定具體 例中,來自客端120之連結請求為傳輸控制協定(tCP)連結 5請求。雖然係以TCP連結請求做說明,但本發明涵蓋任一 種適當連結請求。舉例言之而非限制性,來自客端12〇之連 結請求可為使用者資料封包協定(UDP)或其它基於IP之連 結請求。 特定具體例中,例示管理器534可作為路由器或介接路 10由器之介面,來映射就HPC伺服器102而言,公開於外部之 主機名稱及埠號碼至HPC伺服器102内部的主機名稱及璋 號碼。例示管理器534可與叢集管理引擎13〇之一或多個組 成元件(例如實體管理器505、虛擬管理器510、或二者)互 動,來根據特定需求,響應於來自客端12〇之連結請求,而 15 動態例示一或多部主機於一或多個節點115。
例示資料536包括響應於來自客端12〇之連結請求,而 例示主機於卽點115之資料。特定具體例中,例示資料Mg 包括就HPC伺服器102而言,公開於外部之一或多服務串 列。述及一項服務若屬適當涵蓋一應用程式;若屬適當則 2〇反之亦然。述及就HPC飼服器102而言廣播於外部之服務串 列,若屬適當可涵蓋一路由表;若屬適當則反之亦然。特 定具體例中,例示管理器534設定且維持此路由表。特定具 體例中,相對於HPC伺服器1 〇2公開於外部之服務串列之一 分錄載明:⑴服務,(2)與該服務相對應之、就HPC饲服器 122 1285818 102而言,公開於外部之主機名稱及埠編號,以及⑺與一主 機相對應,該主機當被例示時可提供該項服務,於Hpc伺 服器102内部之主機名稱及埠號碼。該分錄也載明法則、條 件、或二者管控何時主機變成可資利用、何時須進行主機 5的例示、以及何時主機變成無法利用。舉例言之,但非限 制性,主機可設置網路伺服器。若於營業時間,例示管理 器534未於HTTP埠接收到與該網路伺服器相對應2Ηττρ 請求,則於營業時間主機可維持未被例示,若例示可供其 它主機、服務、或二者使用,則主機將使用一或多項資源(例 ίο如於格網11〇之節點115)。若於營業時間,一客端12〇之使 用者使用網路瀏覽器來存取該網路伺服器,則例示管理器 534可例示該主機,提供該網路伺服器給客端12〇。若於客 ‘ 120之使用者係於營業時間以外使用網路劉覽器來接取 該網路伺服态,則例示管理器534封阻與該網路伺服器相對 15應之HTTP埠,來阻擋主機提供網路伺服器給客端12〇。 特定具體例中’例示資料536包括一或多開機影像用來 例示主機於節點115來提供服務。特定具體例中,例示資料 536也包括一或多檔案系統來例示主機於節點丨15來提供服 務。特疋具體例中’例示資料536也包括一或多〇s組態檔案 2〇 來例不主機於節點115來提供服務。舉例言之,但非限制 性’響應於例示管理器534接收到來自客端丨2〇之連結請求 載明公開於HPC飼服器102外部之一埠號碼,其係與公開於 HPC祠服器102外部之一服務相對應,例示管理器534可使 用開機影像及該服務之一或多稽案系統來開機於格網
123 1285818 之可用節點115,來初始化一主機用於節點115之該項服 務。例示管理器534也更新本地路由表及一或多〇8組態檔案 中之一或多者,來路由ip資料流量由客端120至節點115。 特定具體例中,響應於來自客端120之連結請求,為了縮短 5與HPC伺服器102相關聯的時間需求,例示管理器534取得 目標主機之IP/MAC網址,且代表該目標主機來開始丁(:1>/11> 連結順序。當目標主機被開機時,客端120與例示管理器534 間之tcp/ip連結順序發生。雖然以1[〇?/11>連結順序來做說 明,但本發明涵蓋任一種適當之連結順序。舉例言之而非 10限制性,例示管理器可代表目標主機起動使用者資料封 包協定(UDP)/IP (UDP/IP)或其它基於IP之連結順序。 特疋具體例中’例示管理器534追縱於hpc伺服器102 之各個主機是否可動作或不可動作。特定具體例中,例示 管理器534也控制於HPC伺服器102之各個主機是否為可動 15作或不可動作。特定具體例中,例示管理器534判定是否可 取得服務。若例示管理器534判定無法再取得服務,則例示 管理器534關閉、閒置、或以其它方式讓一或多個節點 115(例不管理器534於該等節點例示主機來提供服務)變成 無法利用,且據此來更新一或多路由表。 20 第12圖為流程圖,顯示根據本揭示之一具體例,動態 處理工作提父之貫例方法6〇〇。概略言之,第12圖描述方 法600,方法600接收一批次式工作提交,基於工作參數及 相關聯之策略524來將節點115動態配置於一個工作空間 230,以及使用所配置之空間來執行工作15()。後文說明之
124 1285818 注意重點集中於執行方法600之叢集管理模組13〇之操作。 但系統100涵蓋使用實作部分或全部所述功能之該等邏輯 元件之任一種適當組合及配置,只要其功能維持適當即可。
方法600始於步驟㈧弘犯^飼服器1〇2由使用者接收工 5作提父15()。如前文討論,一具體例中,使用者可使用客端 120提父工作150。另一具體例中,使用者可使用HPC伺服 器102直接提交工作150。其次於步驟61〇,叢集管理引擎13〇 基於使用者選擇組群523。一旦證實使用者,叢集管理引擎 130於步驟615比較該使用者與組群存取控制串列(ACL)。但 10須了解,叢集管理引擎130可使用任何適當安全性技術來驗 證使用者。基於所測定之組群523,叢集管理引擎130判定 使用者是否已經存取該所請求的服務。基於所請求的服務 及主機名稱,叢集管理引擎130於步驟620選擇虛擬叢集 220。典型地,虛擬叢集220可於工作150提交之前識別與配 15置。但若尚未建立虛擬叢集220,則叢集管理引擎130可使 用前述任一項技術來自動配置虛擬叢集22〇。其次,於步驟 625,叢集管理引擎130基於工作15〇的提交來取還策略 524。一具體例中,叢集管理引擎13〇可判定與使用者、工 作150、或任何其它適當標準相關聯之適當策略524。然後, 2〇叢集管理引擎130於步驟630測定工作150之維度,或以其它 方式計算工作15〇之維度。須了解適當維度包括長度、寬 度、高度或任何其它適當參數或特性。如前文說明,此等 維度用來判定於虛擬叢集220内部之適當工作空間230(或 節點115子集)。於建立初步參數後,叢集管理引擎13〇嘗試 125 1285818 於步驟635至步驟665於HPC祠服器1〇2執行工作⑼。 於判定步驟635,叢集管理引擎13〇使用已經建立的參 數,來判定是否有足夠可用之節點來配置期望的工作空間 23〇。若節點115之數量不足,則於步驟64〇,叢集管理引擎 5 130决定於虛擬叢集220最容易取得之節點115子集230。然 後於步驟645,叢集管理引擎13〇增加工作⑼至工作仔列 125,直到子集23〇為可利用為止。然後處理返回決定步驟 635 旦有足夠節點115可資利用,則於步驟65〇,叢集管 理引擎130動態決定得自可利用之節點115之最佳子集 1〇 230。須了解最佳子集230可使用任何適當標準決定,包括 取快速處理時間、最可靠節點115、實體位置或虛擬位置、 或第一可用節點115。於步驟655,叢集管理引擎13〇由所選 定之虛擬叢集220中選出決定之子集230。其次於步驟66〇, 叢集管理引擎13〇使用所選定之子集23〇來配置選定之節點 15 U5給工作150。根據一具體例,叢集管理引擎130可將虛擬 節點串列522内的節點115狀態由「未經配置」改變成「經 配置」。一旦子集230經過適當配置,於步驟665,叢集管理 引擎130基於工作參數、取還策略524、及任何其它適當來 數,使用所配置的空間來執行工作150。於任何適當時間, 2〇叢集管理引擎130可通訊或以其它方式呈現工作結果16〇給 使用者。例如結果160可經格式化且透過GUI 126來呈現給 使用者。 弟13圖為流程圖顯示根據本揭示之一具體例,動態回 填於格網11〇内部之一虛擬叢集220之範例方法7〇〇。於高 126 1285818 階,方法700描述決定於虛擬叢集220之可用空間,決定可 與該空間相容之最佳工作150,以及於可利用空間執行所決 疋之工作1。後文說明之重點將集中於執行此項方法之叢 集管理引擎130之操作。但如同先前流程圖,系統1〇〇涵蓋 5使用邏輯元體之任一種適當組合及排列來實作部分或全部 所述功能。
方法700始於步驟7〇5,叢集管理引擎130分類工作佇列 525。所示具體例中,叢集管理引擎130係基於儲存於佇列 525之工作150之優先順位,來分類仔列525。但須了解叢集 10管理引擎130可使用任一種適當特性來分類>(宁列525,因而 可執行適當工作150或最佳工作150。其次於步驟γιο,叢集 管理引擎130判定於虛擬叢集220之一之可用節點ns的數 目。當然,叢集管理引擎130也可決定於格網11〇或於虛擬 叢集220之任一者或多者之可用節點115數目。於步驟715, 15叢集管理引擎130由分類後之工作佇列525來選出第一工作 150。其次於步驟72〇,叢集管理引擎13〇動態決定所選定之 工作150之最佳形狀(或其它維度)。一旦已經決定所選定之 工作150之最佳形狀或維度,然後於步驟725至745,叢集管 理引擎130判定是否可於適當虛擬叢集220回填工作150。 2〇 於判定步驟725,叢集管理引擎130判定是否有足量節 點115可供用於所選定之工作15〇。若有足量可利用之節點 115,則於步驟73〇,叢集管理引擎13〇使用任一種適當技術 對所選定之工作150動態配置節點115。例如,叢集管理引 擎130可使用第6圖所述技術。其次於步驟735,叢集管理引
127 1285818 擎130重料胁虛㈣集2料肖1减目。於步驟 740’叢㈣則擎⑽於所配置之節點ιΐ5來執行工作 150 — i作150已經執行(或若對所選定之工作⑼而 言’節點115之數目不足)’則於步驟%,叢集管理引擎13〇 選擇於經過分類^^細巾之下1工作以及 處理返回步驟720。須了解軸以迴路舉例說明,但叢集管 理引擎13G可於任何騎時間祕化、執行、以及結束於方 法700所示技術。
第14圖為流程圖,顯示根據本揭示之一具體例,動態 Π)管理格網11〇内部之-節點115故障之實例方法動。於高 階,方法800描述決定節點115故障,自動執行工作復原與 工作官理’且以-個二次節點115來替換該故障的節點 II5。後文說明重點將集中於叢集管理引擎13〇執行此項方 法之操作。但如同先前流程圖,系統100涵蓋使用邏輯元體 15之任一種適當組合及排列來實作部分或全部所述功能。 方法800始於步驟805 ,叢集管理引擎13〇判定節點115 已經故障。如前文說明,叢集管理引擎13〇可使用任一種適 s技術來判疋卽點115已經故障。例如,叢集管理引擎13 〇 可於不同時間挽出節點115(或代理器132),基於缺乏來自節 20點115的回應,判定節點115已經故障。於另一例中,存在 於節點115之代理器132可通訊「心搏」,若無此種「心搏」 則表示節點115已經故障。其次於步驟81〇,叢集管理引擎 130由虛擬叢集220去除已經故障的節點115。一具體例中, 叢集管理引擎130可將虛擬串列522内部的節點115之狀態
128 1285818
由「經配置」改成「故障」。然後於決定步驟815,叢集管 理引擎130決定工作150是否與故障的節點115相關聯。若無 任何工作150係與節點Π5相關聯,則處理結束。如前文說 明,於處理結束前,叢集管理引擎13〇可將錯誤訊息通知行 5政管理者,可自動決定替換節點115,或可自動決定任何其 它適當處理。若有與故障節點115相關聯之工作15〇,則於 步驟820,叢集管理引擎130決定與工作150相關聯之其它節 點115。其次於步驟825,叢集管理引擎13〇消滅於全部適當 節點115之工作150。舉例言之,叢集管理引擎13〇可執行消 10滅工作命令,或叢集管理引擎130可使用任何其它適當技術 來結束工作150。其次於步驟830,叢集管理引擎130使用虛 擬串列522來解除節點115之配置。例如,叢集管理引擎13〇 可將虛擬串列522中之節點115之狀態由「已配置」改成「可 利用」。一旦已經結束工作,以及全部適當節點115皆已經 15解除配置,則於步驟835至步驟850,叢集管理引擎130試圖 使用可用節點115來再度執行工作15〇。 於步驟835,叢集管理引擎丨3〇取還策略524以及對被消 滅之工作150取還參數。然後於步驟84〇,叢集管理引擎13〇 基於所取還之策略524以及工作參數,來判定於虛擬叢集 20 220之節點115之最佳子集230。一旦已經決定節點115之子 集230 ’則於步驟845,叢集管理引擎13〇動態配置節點115 之子集230。例如,叢集管理引擎130可將虛擬串列522中之 節點115的狀態由「未經配置」改成「已經配置」。須了解 此一節點115子集可與曾經執行該項工作15〇之原先節點子 129 1285818 ~^ ,年月曰修.(更)正替换頁; !_」」 ' -----I Μ 集不同。舉例言之,叢集管理引擎130可決定不同節點子集 為最佳,原因在於節點故障而提示從事此項執行。於另一 實例中,叢集管理引擎130判定二次節點115可操作來替換 故障節點115,新子集230實質上係類似舊工作空間230。一 5旦已經決定且已經配置經配置之子集230,然後於步驟 85〇,叢集管理引擎130執行工作15〇。 先前各個流程圖及隨附之說明舉例說明範例方法 • 600、700及800。簡言之,系統1〇〇涵蓋使用任一種適當技 術來執行此等及其它任務。如此本流程圖之多個步驟可以 10類似方式進行,及/或以與所示順序不同之順序進行。此 外,系統100使用有額外步驟、較少步驟、及/或不同步驟 之方法只要該等方法維持適當即可。
第15圖顯示於HPC系統1〇〇之隨選例示之範例方法。該 方法始於步驟900,此處介面104接收來自客端120之連結請 15 求,請求載明就HPC伺服器102而言,公開於外部之一蜂號 碼及一主機名稱。於步驟902,響應於該連結請求,例示管 理器534存取例示資料536,提供就HPC伺服器102而言,公 開於外部之服務串列。於步驟904,例示管理器534使用該 服務串列來識別與載明於該連結請求之該埠號碼及主機名 20 稱相對應之一項服務。於步驟906,根據該服務串列,例示 管理器534判定所識別之服務是否可由客端120利用。如前 文說明,所識別之服務是否可由客端120利用係依據該連結 請求相關聯之時間、於客端120之使用者的身分、或連結請 求之其它面相來決定。於步驟906,若所識別之服務可為客 130 1285818 鳊120利用,則方法前進至步驟908。於步驟9〇8,例示營硬 器534使用例示資料536,指#與該識別之服務相對應之於 ΗΡΟί司服器102内部之-主機名稱及一埠號碼,來例示該主 機於格網11G之-或多㈣點115,來提供該削之服務給 5客端120。如前文說明,例示管理器534也使用包括開機影 像、檔案系統、及作業系統組態之例示資料536,來例示該 主機於節點115,此時該方法結束。於步驟9〇6,若所識別 之服務無法被客端120利用,則該方法前進至步驟91〇。於 步驟910,例示管理器534阻擋於該連結請求所載明之該 10埠,來防止客端120接取該識別之服務,此時方法結束。雖 然以特定出現之順序來舉例說明於第15圖舉例說明之方法 之特定步驟,但第15圖所示方法之任何適當步驟皆可以任 一種適當順序進行。 雖然已經就若干具體例及概略相關方法說明本揭示, 15但热諸技藝人士顯然易知可對此等具體例及方法做出多項 變更及修改。如此前文具體實施例之說明絕非界限或約束 本揭示。可未悖離本揭示之精髓及範圍而可做出其它變 化、取代、與變更。 【圖式簡單說明】 20 第1圖顯示根據本揭示之一具體例,一種範例高效能運 算系統; 第2圖顯示於第i圖所示HPC系統之一實例節點; 第3圖顯示於一節點之一實例中央處理單元(CPU); 第4圖顯示一實例節點對; 131
1285818 第5A-5D圖顯示於第1圖之系統之格網之各個具體例 及其用途; 第6A-6B圖顯示根據第1圖之系統,圖形使用者介面之 各個具體例; 5 第7圖顯示根據第1圖之系統,叢集管理軟體之一具體 例; 第8圖顯示於y維度摺疊之一實例一維請求;
第9圖顯示使用y軸作為内迴圈組構而成之兩個自由網 格; 10 第10圖顯示使用X軸作為内迴圈組構而成之兩個自由 網格; 第11圖顯示第1圖所示HPC系統之實例介面; 第12圖為流程圖,顯示根據第1圖之高效能運算系統, 一種提交一批次式工作之方法; 15 第13圖為流程圖,顯示根據第1圖之高效能運算系統, 一種動態回填格網之方法;以及 第14圖為流程圖,顯示根據第1圖之高效能運算系統, 一種動態管理一節點故障之方法;以及 第15圖顯示於第1圖所示之HPC系統之一種隨選例示 20 技術之實例方法。 【主要元件符號說明】 100…高效能運算(HPC)系統 104…介面 102··.高效能運算伺服器,HPC 105···管理節點 伺服器 106...網路 132 1285818 108.. .鏈路 110.. .格網 115…運算節點(或刀鋒) 120.. .行政管理工作站或本地 客端
Π6...圖形使用者介面,GUI 130.. .叢集管理引擎 132…叢集代理器 140.. .碟片場 142.. .儲存客端 150…工作 160.. .結果
164、164a-b…中央處理單元, CPU 166.. .交換器,或組織結構 168a_f、170、172a-f·.·鏈路 174.. .處理器 176.. .記憶體控制器集線器 (MCH) 178.. .記憶體單元 180···主機通道配接器(HCA) 182、184...匯流排 186·.·節點對 210.. .格網 215…節點 216···節點鍵路 220.. .虛擬叢集 230、230a-b···工作空間
400.. .管理圖形使用者介面,管 理GUI 400a-b...顯示器 500···叢集管理引擎 505…實體管理器 510.. .虛擬管理器 515.. .工作排程器 520.. .本地記憶體或變數 521.. .實體串列 522.. .虛擬串列 523.. .組群檔案 524.. .策略、策略表 525.. .工作佇列 530、532a-b··.區 534.. .例示管理器 536.. .例示資料 600、700、800·.·方法 605-665、705-745、805-850、 900-910···步驟 133
Claims (1)
- ^285818 J. 24 ; • -, ;▲ ·τ' ’ -〆 十、申請專利範圍: L一一 一 一 〃 第94111491號申請案申請專利範圍修正本96.01.24. 1· -種編碼有驗高效能運算(HPC)系崎選例示之邏輯 的電月自了 4媒體’該邏輯當被執行時可操作來進行下列 5 動作:10 、·諺 15接收來自一客端之一連結請求,其載明一第一埠號 碼及一第一主機名稱,該就— Hpc伺服器而言公開於外 部之該第一埠號碼及該第一主機名稱包含一節點叢集; 於該HPC伺服器識別與該第一埠號碼及該第一主 機名稱相對應之一服務; 判定是否可取得該經識別之服務;以及 若可取得該經識別之服務,則例示可提供該經識別 之服務之一主機於該叢集之一或多個節點。 2·如申請專利範圍第1項之電腦可讀媒體,其中該連結請 求為一傳輸控制協定(TCP)連結請求或一使用者資料封 包協定(UDP)連結請求。 3·如申請專利範圍第1項之電腦可讀媒體,其中該邏輯進 一步可操作來: 存取於該HPC伺服器之一服務串列,該服務串列包 2〇 括多數分錄,其各自載明: 一服務;以及 一與該服務相對應之,就該HPC伺服器而言,公開 於外部之一埠號碼及一主機名稱;以及 根據於該HPC伺服器之該服務串列,於該HPC伺服 134 1285818^6Γ 年 器’識別與該第一埠號碼及該第一主機名稱相對 務0 4·如申請專利範圍第1項之電腦可讀媒體,其中該邏輯進 一步可操作來: 存取於該HPC伺服器之一服務串列,該服務串列包 括多數分錄,其各自載明: 一服務;以及 % 於該HPC伺服器内部之與一主機相對應之一埠號 碼及一主機名稱,其當於該叢集之一或多個節點執行時 10 可提供該項服務;以及 根據於該HPC伺服器之服務串列,例示提供該所識 別之服務之主機於該叢集之一或多個節點。 5·如申請專利範圍第1項之電腦可讀媒體,其中該邏輯進 一步可操作來: 15存取於該HPC伺服器之一服務串列,該服務串列包 括多數分錄,其各自載明一服務,以及一或多法則指示 該項服務是否可資利用;以及 根據該服務串列,來判定所識別之服務是否可資利 用0 20 6·如申請專利範圍第5項之電腦可讀媒體,其中基於與來 自客端之該連結請求相關聯之時間,該等法則指示該項 服務是否可資利用。 7·如申請專利範圍第1項之電腦可讀媒體,其中若該識別 之服務無法利用,則該遞輯進一步可操作來封阻於該 135 1285818HPC伺服器之與該第一埠號碼相對應之一埠,來阻止客 端接取該經識別之服務。 8.如申請專利範圍第1項之電腦可讀媒體,其中該邏輯進 一步可操作來: 於該HPC伺服器,存取與於該叢集之一或多個節點 提供所識別之服務之該主機相對應之、一開機影像、一 檔案系統、及一作業系統(OS)組態檔案;以及10 15使用該開機影像、檔案系統、及作業系統組態檔案 來例示提供所識別之服務之該主機於該叢集之一或多 個節點。 9·如申請專利範圍第1項之電腦可讀媒體,其中該所識別 之服務為一網路伺服器。 10. 如申請專利範圍第1項之電腦可讀媒體,其中該邏輯進 一步可操作來取得於該叢集之一或多個節點提供所識 別之服務之該主機之網址,以及當該主機正在開機時, 代表該主機來初始化一連結順序。 11. 如申4專利範圍第1項之電腦可讀媒體,其中: 該網址為一網際網路協定/媒體存取控制(IP/MAC) 網址;以及 20 该連結順序為一傳輸控制協定/IP (TCP/IP)連結順 序或一使用者資料封包協定(UDP)/IP (UDP/IP)連結順 序0 12·如申睛專利範圍第丨項之電腦可讀媒體,其中該等節點 叢集包含多數節點根據組成三維圓環之拓樸結構來彼 136 1285818 510 1520 Γ%_ LM 此耦接。 13.如申請專利範圍第1項之電腦可讀媒體,其中於該節點 叢集之一節點為耦接至二交換器之一中央處理單元 (CPU)。 14. 一種用於高效能運算(HPC)系統隨選例示之方法,該方 法包含下列步驟: 接收來自一客端之一連結請求,其載明一第一埠號 碼及一第一主機名稱,該就一HPC伺服器而言,公開於 外部之該第一埠號碼及該第一主機名稱包含一節點叢 集; 於該Η P C伺服器識別與該第一埠號碼及該第一主 機名稱相對應之一服務; 判定是否可取得該經識別之服務;以及 若可取得該經識別之服務,則例示可提供該經識別 之服務之一主機於該叢集之一或多個節點。 15. 如申請專利範圍第14項之方法,其中該連結請求為一傳 輸控制協定(TCP)連結請求或一使用者資料封包協定 (UDP)連結請求。 16. 如申請專利範圍第14項之方法,其中該方法進一步包 含·· 存取於該HPC伺服器之一服務串列,該服務串列包 括多數分錄,其各自載明: 一服務;以及 一與該服務相對應之,就該HPC伺服器而言,公開 1371285818 於外部之一璋號碼及一主機名稱’以及 根據於該HPC伺服器之該服務串列’於該HPC伺服 器,識別與該第一埠號碼及該第一主機名稱相對應之服 務。 5 17·如申請專利範圍第14項之方法,其中該方法進一步包 含: 存取於該HPC伺服器之一服務串列,該服務串列包 φ 括多數分錄,其各自載明: 一服務;以及 10 於該Η P C伺服器内部之與一主機相對應之一埠號 碼及一主機名稱,其當於該叢集之一或多個節點執行時 可提供該項服務;以及 根據於該HPC伺服器之服務串列,例示提供該所識 別之服務之主機於該叢集之一或多個節點。 1520 18·如申請專利範圍第14項之方法,其中該方法進一步包 含: 存取於該HPC伺服器之一服務串列,該服務串列包 括多數分錄’其各自載明一服務,以及一或多法則指示 該項服務是否可資利用;以及 根據該服務串列,來判定所識別之服務是否可資利 用0 19·如申請專利範圍第18項之方法,其中基於與來自客端之 該連結請求相關聯之時間,該等法則指示該項服務是否 可資利用。 138 .1285818 ' 20.如申請專利範圍第14項之方法’其中若該識別之服務無 法利用’ m法進一步可操作來封阻於該Hpc祠服器 之與該第-埠料相對應之H阻止客端接取該經 識別之服務。 21·如申4專利|&圍第14項之方法,其巾該方法進一步包 含: 於該HPC伺服器,存取與於該叢集之一或多個節點 k供所識別之服務之該主機相對應之、一開機影像、一 檔案系統、及一作業系統(OS)組態檔案;以及 10 使用該開機影像、檔案系統、及作業系統組態檔案 來例示提供所識別之服務之該主機於該叢集之一或多 個節點。 22·如申請專利範圍第14項之方法,其中該所識別之服務為 一網路伺服器。 1523·如申請專利範圍第14項之方法,其中進一步包含取得於 該叢集之一或多個節點提供所識別之服務之該主機之 網址,以及當該主機正在開機時,代表該主機來初始化 /連結順序。 24·如申請專利範圍第14項之方法,其中·· 該網址為一網際網路協定/媒體存取控制(IP/MAC) 網址;以及 該連結順序為一傳輸控制協定/IP (TCP/IP)連結順 序或一使用者資料封包協定(UDP)/IP (UDP/IP)連結順 序。 139 v 3 J2858181025. 如申請專利範圍第14項之方法,其中該等節點叢集包含 多數節點根據組成三維圓環之拓樸結構來彼此辆接。 26. 如申請專利範圍第14項之方法,其中於該節點叢集之一 節點為耦接至二交換器之一中央處理單元(CPU)。 5 27.—種用於高效能運算(HPC)系統隨選例示之系統,該系 統包含: 接收裝置,其係接收來自一客端之一連結請求,其 載明一第一埠號碼及一第一主機名稱,該就一HPC伺服 器而言,公開於外部之該第一埠號碼及該第一主機名稱 包含一節點叢集; 識別裝置,其係於該HPC伺服器識別與該第一埠號 碼及該第一主機名稱相對應之一服務; 判定裝置,其係判定是否可取得該經識別之服務; 以及 例示裝置,其係若可取得該經識別之服務,則例示 可提供該經識別之服務之一主機於該叢集之一或多個 節點。 140 1285818 七、指定代表圖: (一) 本案指定代表圖為:第(1 )圖。 (二) 本代表圖之元件符號簡單說明: 126···圖形使用者介面,GUI 130···叢集管理引擎 132···叢集代理器 140…碟片場 142…儲存客端 150···工作 160…結果 102…高效能運算伺服器,Hpc伺服器 104…介面 105···管理節點 106···網路 108…鏈路 110…格網 115···運算節點120···行政管理工作站或本地客端 八、本案騎化學鱗,請财最_示發明特_化學式:
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/991,994 US8244882B2 (en) | 2004-11-17 | 2004-11-17 | On-demand instantiation in a high-performance computing (HPC) system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200619962A TW200619962A (en) | 2006-06-16 |
TWI285818B true TWI285818B (en) | 2007-08-21 |
Family
ID=34966364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094111491A TWI285818B (en) | 2004-11-17 | 2005-04-12 | Method and system and computer-readable medium having encoded therein logic for on-demand instantiation in a high-performance computing (HPC) system |
Country Status (10)
Country | Link |
---|---|
US (1) | US8244882B2 (zh) |
EP (1) | EP1662388B1 (zh) |
JP (1) | JP4451806B2 (zh) |
KR (1) | KR101159386B1 (zh) |
CN (1) | CN1777107B (zh) |
CA (1) | CA2503781C (zh) |
IL (1) | IL178610A (zh) |
MY (1) | MY151525A (zh) |
TW (1) | TWI285818B (zh) |
WO (1) | WO2006055027A1 (zh) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782654B2 (en) | 2004-03-13 | 2014-07-15 | Adaptive Computing Enterprises, Inc. | Co-allocating a reservation spanning different compute resources types |
US8413155B2 (en) | 2004-03-13 | 2013-04-02 | Adaptive Computing Enterprises, Inc. | System and method for a self-optimizing reservation in time of compute resources |
US8335909B2 (en) | 2004-04-15 | 2012-12-18 | Raytheon Company | Coupling processors to each other for high performance computing (HPC) |
US7711977B2 (en) * | 2004-04-15 | 2010-05-04 | Raytheon Company | System and method for detecting and managing HPC node failure |
US9178784B2 (en) * | 2004-04-15 | 2015-11-03 | Raytheon Company | System and method for cluster management based on HPC architecture |
US8190714B2 (en) * | 2004-04-15 | 2012-05-29 | Raytheon Company | System and method for computer cluster virtualization using dynamic boot images and virtual disk |
US8336040B2 (en) * | 2004-04-15 | 2012-12-18 | Raytheon Company | System and method for topology-aware job scheduling and backfilling in an HPC environment |
US20050235055A1 (en) * | 2004-04-15 | 2005-10-20 | Raytheon Company | Graphical user interface for managing HPC clusters |
US20070266388A1 (en) | 2004-06-18 | 2007-11-15 | Cluster Resources, Inc. | System and method for providing advanced reservations in a compute environment |
US8176490B1 (en) | 2004-08-20 | 2012-05-08 | Adaptive Computing Enterprises, Inc. | System and method of interfacing a workload manager and scheduler with an identity manager |
WO2006053093A2 (en) | 2004-11-08 | 2006-05-18 | Cluster Resources, Inc. | System and method of providing system jobs within a compute environment |
US7433931B2 (en) * | 2004-11-17 | 2008-10-07 | Raytheon Company | Scheduling in a high-performance computing (HPC) system |
US7475274B2 (en) * | 2004-11-17 | 2009-01-06 | Raytheon Company | Fault tolerance and recovery in a high-performance computing (HPC) system |
US8244882B2 (en) | 2004-11-17 | 2012-08-14 | Raytheon Company | On-demand instantiation in a high-performance computing (HPC) system |
JP4291281B2 (ja) * | 2005-02-03 | 2009-07-08 | 富士通株式会社 | 情報処理システム、計算ノード、情報処理システムの制御方法 |
US8495411B2 (en) * | 2005-02-07 | 2013-07-23 | International Business Machines Corporation | All row, planar fault detection system |
US7451342B2 (en) * | 2005-02-07 | 2008-11-11 | International Business Machines Corporation | Bisectional fault detection system |
US7437595B2 (en) * | 2005-02-07 | 2008-10-14 | International Business Machines Corporation | Row fault detection system |
US7827435B2 (en) * | 2005-02-15 | 2010-11-02 | International Business Machines Corporation | Method for using a priority queue to perform job scheduling on a cluster based on node rank and performance |
US8863143B2 (en) | 2006-03-16 | 2014-10-14 | Adaptive Computing Enterprises, Inc. | System and method for managing a hybrid compute environment |
US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
WO2006107531A2 (en) | 2005-03-16 | 2006-10-12 | Cluster Resources, Inc. | Simple integration of an on-demand compute environment |
CA2603577A1 (en) | 2005-04-07 | 2006-10-12 | Cluster Resources, Inc. | On-demand access to compute resources |
US20110258320A1 (en) * | 2005-04-07 | 2011-10-20 | Adaptive Computing Enterprises, Inc. | Elastic management of compute resources between a web server and an on-demand compute environment |
US7478278B2 (en) * | 2005-04-14 | 2009-01-13 | International Business Machines Corporation | Template based parallel checkpointing in a massively parallel computer system |
EP2134043A4 (en) * | 2007-03-09 | 2012-02-22 | Fujitsu Ltd | RELAY DEVICE, CONTROL METHOD, INTER-ATM COMMUNICATION SUPPORT SYSTEM, AND COMPUTER PROGRAM |
US8041773B2 (en) | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
WO2009096971A1 (en) * | 2008-01-31 | 2009-08-06 | Cluster Resources, Inc. | System and method for managing a hybrid compute environment |
US8108466B2 (en) * | 2008-05-01 | 2012-01-31 | Microsoft Corporation | Automated offloading of user-defined functions to a high performance computing system |
JP5531420B2 (ja) * | 2009-02-27 | 2014-06-25 | 日本電気株式会社 | プロセス割当システム、プロセス割当方法、プロセス割当プログラム |
US8411684B1 (en) * | 2009-10-26 | 2013-04-02 | Mcafee, Inc. | System, method, and computer program product for determining a hop count between network devices utilizing a binary search |
US10877695B2 (en) | 2009-10-30 | 2020-12-29 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
JP5532849B2 (ja) * | 2009-11-20 | 2014-06-25 | 富士通株式会社 | コンピュータ、プロセス間通信プログラム、およびプロセス間通信方法 |
US9710595B2 (en) * | 2010-02-24 | 2017-07-18 | International Business Machines Corporation | Multi-view user interface for server cabling display |
US8402139B2 (en) * | 2010-02-26 | 2013-03-19 | Red Hat, Inc. | Methods and systems for matching resource requests with cloud computing environments |
TWI423039B (zh) * | 2010-07-23 | 2014-01-11 | Quanta Comp Inc | 伺服器系統與其操作方法 |
WO2012151692A1 (en) * | 2011-05-06 | 2012-11-15 | Sierra Wireless, Inc. | Method and apparatus for management of network communications |
US9026630B2 (en) * | 2011-06-14 | 2015-05-05 | Vmware, Inc. | Managing resources in a distributed system using dynamic clusters |
US8856784B2 (en) | 2011-06-14 | 2014-10-07 | Vmware, Inc. | Decentralized management of virtualized hosts |
US8706869B2 (en) * | 2011-06-14 | 2014-04-22 | International Business Machines Corporation | Distributed cloud placement software |
US8701107B2 (en) | 2011-06-14 | 2014-04-15 | Vmware, Inc. | Decentralized management of virtualized hosts |
US9129124B2 (en) * | 2012-04-12 | 2015-09-08 | Hewlett-Packard Development Company, L.P. | Dynamic provisioning of virtual systems |
US9275007B2 (en) * | 2013-03-12 | 2016-03-01 | International Business Machines Corporation | Identifying logical planes formed of compute nodes of a subcommunicator in a parallel computer |
US9519518B2 (en) * | 2013-05-15 | 2016-12-13 | Citrix Systems, Inc. | Systems and methods for deploying a spotted virtual server in a cluster system |
US9390054B2 (en) * | 2013-10-14 | 2016-07-12 | International Business Machines Corporation | Identifying a largest logical plane from a plurality of logical planes formed of compute nodes of a subcommunicator in a parallel computer |
US10382527B2 (en) | 2013-10-16 | 2019-08-13 | International Business Machines Corporation | Performing optimized collective operations in an irregular subcommunicator of compute nodes in a parallel computer |
US9692649B2 (en) | 2014-02-26 | 2017-06-27 | International Business Machines Corporation | Role assignment for servers in a high performance computing system based on measured performance characteristics |
MY170681A (en) * | 2014-06-19 | 2019-08-26 | Mimos Berhad | System and method for distributed secure data storage in torus network topology |
JP6446989B2 (ja) * | 2014-10-16 | 2019-01-09 | 富士通株式会社 | 計算機システム,処理方法及びジョブ処理プログラム |
US10009248B2 (en) | 2014-12-12 | 2018-06-26 | International Business Machines Corporation | System with on-demand state for applications |
US10754494B2 (en) * | 2015-06-23 | 2020-08-25 | Dell Products, L.P. | Method and control system providing one-click commissioning and push updates to distributed, large-scale information handling system (LIHS) |
KR101995056B1 (ko) * | 2015-12-30 | 2019-07-02 | 한국전자통신연구원 | 분산 파일 시스템 및 이의 운영방법 |
US9990230B1 (en) * | 2016-02-24 | 2018-06-05 | Databricks Inc. | Scheduling a notebook execution |
US10356008B2 (en) * | 2017-06-28 | 2019-07-16 | International Business Machines Corporation | Large scale fabric attached architecture |
US20200389352A1 (en) * | 2019-06-04 | 2020-12-10 | Microsoft Technology Licensing, Llc | Automated upgrade of multiple hosts |
CA3143231A1 (en) * | 2019-06-12 | 2020-12-17 | New York University | System, method and computer-accessible medium for a domain decomposition aware processor assignment in multicore processing system(s) |
Family Cites Families (119)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4885770A (en) | 1987-09-04 | 1989-12-05 | Digital Equipment Corporation | Boot system for distributed digital data processing system |
US4868818A (en) * | 1987-10-29 | 1989-09-19 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Fault tolerant hypercube computer system architecture |
US5020059A (en) * | 1989-03-31 | 1991-05-28 | At&T Bell Laboratories | Reconfigurable signal processor |
US5396635A (en) * | 1990-06-01 | 1995-03-07 | Vadem Corporation | Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system |
US5301104A (en) * | 1990-08-07 | 1994-04-05 | Honeywell Inc. | Method for allocating processing elements interconnected in a hypercube topology |
US5280607A (en) * | 1991-06-28 | 1994-01-18 | International Business Machines Corporation | Method and apparatus for tolerating faults in mesh architectures |
CA2106280C (en) * | 1992-09-30 | 2000-01-18 | Yennun Huang | Apparatus and methods for fault-tolerant computing employing a daemon monitoring process and fault-tolerant library to provide varying degrees of fault tolerance |
US5781715A (en) * | 1992-10-13 | 1998-07-14 | International Business Machines Corporation | Fault-tolerant bridge/router with a distributed switch-over mechanism |
US5513313A (en) * | 1993-01-19 | 1996-04-30 | International Business Machines Corporation | Method for generating hierarchical fault-tolerant mesh architectures |
US5450578A (en) * | 1993-12-23 | 1995-09-12 | Unisys Corporation | Method and apparatus for automatically routing around faults within an interconnect system |
US6408402B1 (en) | 1994-03-22 | 2002-06-18 | Hyperchip Inc. | Efficient direct replacement cell fault tolerant architecture |
KR100391805B1 (ko) * | 1994-03-22 | 2003-10-22 | 하퍼칩, 인코포레이티드 | 직접대체셀(cell)을갖는결함허용(faulttolerance)아키텍쳐자료처리시스템 |
US5682491A (en) * | 1994-12-29 | 1997-10-28 | International Business Machines Corporation | Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier |
US5603044A (en) * | 1995-02-08 | 1997-02-11 | International Business Machines Corporation | Interconnection network for a multi-nodal data processing system which exhibits incremental scalability |
US5872928A (en) * | 1995-02-24 | 1999-02-16 | Cabletron Systems, Inc. | Method and apparatus for defining and enforcing policies for configuration management in communications networks |
US5889953A (en) * | 1995-05-25 | 1999-03-30 | Cabletron Systems, Inc. | Policy management and conflict resolution in computer networks |
US5805785A (en) * | 1996-02-27 | 1998-09-08 | International Business Machines Corporation | Method for monitoring and recovery of subsystems in a distributed/clustered system |
US6006242A (en) | 1996-04-05 | 1999-12-21 | Bankers Systems, Inc. | Apparatus and method for dynamically creating a document |
US5805786A (en) * | 1996-07-23 | 1998-09-08 | International Business Machines Corporation | Recovery of a name server managing membership of a domain of processors in a distributed computing environment |
US6393581B1 (en) * | 1996-08-29 | 2002-05-21 | Cornell Research Foundation, Inc. | Reliable time delay-constrained cluster computing |
US5933631A (en) * | 1997-03-17 | 1999-08-03 | International Business Machines Corporation | Dynamic boot filesystem selection |
US6029246A (en) * | 1997-03-31 | 2000-02-22 | Symantec Corporation | Network distributed system for updating locally secured objects in client machines |
US5991877A (en) * | 1997-04-03 | 1999-11-23 | Lockheed Martin Corporation | Object-oriented trusted application framework |
US6088330A (en) * | 1997-09-09 | 2000-07-11 | Bruck; Joshua | Reliable array of distributed computing nodes |
US6167502A (en) | 1997-10-10 | 2000-12-26 | Billions Of Operations Per Second, Inc. | Method and apparatus for manifold array processing |
US6230252B1 (en) * | 1997-11-17 | 2001-05-08 | Silicon Graphics, Inc. | Hybrid hypercube/torus architecture |
US6633945B1 (en) * | 1997-12-07 | 2003-10-14 | Conexant Systems, Inc. | Fully connected cache coherent multiprocessing systems |
US6477663B1 (en) * | 1998-04-09 | 2002-11-05 | Compaq Computer Corporation | Method and apparatus for providing process pair protection for complex applications |
US6189100B1 (en) * | 1998-06-30 | 2001-02-13 | Microsoft Corporation | Ensuring the integrity of remote boot client data |
US6195760B1 (en) | 1998-07-20 | 2001-02-27 | Lucent Technologies Inc | Method and apparatus for providing failure detection and recovery with predetermined degree of replication for distributed applications in a network |
US6466932B1 (en) * | 1998-08-14 | 2002-10-15 | Microsoft Corporation | System and method for implementing group policy |
US6683696B1 (en) * | 1998-10-27 | 2004-01-27 | Hewlett-Packard Development Company, L.P. | Filter based data imaging method for an image forming device |
US6158010A (en) | 1998-10-28 | 2000-12-05 | Crosslogix, Inc. | System and method for maintaining security in a distributed computer network |
US6691165B1 (en) * | 1998-11-10 | 2004-02-10 | Rainfinity, Inc. | Distributed server cluster for controlling network traffic |
US6496941B1 (en) | 1998-12-29 | 2002-12-17 | At&T Corp. | Network disaster recovery and analysis tool |
US6480972B1 (en) | 1999-02-24 | 2002-11-12 | International Business Machines Corporation | Data processing system and method for permitting a server to remotely perform diagnostics on a malfunctioning client computer system |
US6453426B1 (en) * | 1999-03-26 | 2002-09-17 | Microsoft Corporation | Separately storing core boot data and cluster configuration data in a server cluster |
US6408326B1 (en) * | 1999-04-20 | 2002-06-18 | Microsoft Corporation | Method and system for applying a policy to binary data |
US6718486B1 (en) * | 2000-01-26 | 2004-04-06 | David E. Lovejoy | Fault monitor for restarting failed instances of the fault monitor |
US6597956B1 (en) * | 1999-08-23 | 2003-07-22 | Terraspring, Inc. | Method and apparatus for controlling an extensible computing system |
US6779016B1 (en) * | 1999-08-23 | 2004-08-17 | Terraspring, Inc. | Extensible computing system |
US6415323B1 (en) * | 1999-09-03 | 2002-07-02 | Fastforward Networks | Proximity-based redirection system for robust and scalable service-node location in an internetwork |
US6741983B1 (en) * | 1999-09-28 | 2004-05-25 | John D. Birdwell | Method of indexed storage and retrieval of multidimensional information |
US6629266B1 (en) * | 1999-11-17 | 2003-09-30 | International Business Machines Corporation | Method and system for transparent symptom-based selective software rejuvenation |
US6748437B1 (en) * | 2000-01-10 | 2004-06-08 | Sun Microsystems, Inc. | Method for creating forwarding lists for cluster networking |
US6714980B1 (en) * | 2000-02-11 | 2004-03-30 | Terraspring, Inc. | Backup and restore of data associated with a host in a dynamically changing virtual server farm without involvement of a server that uses an associated storage device |
WO2001061930A1 (fr) * | 2000-02-21 | 2001-08-23 | Kabushiki Kaisha Toshiba | Dispositif de commande de moniteur et procede d'installation d'une voie de communication |
US6460149B1 (en) * | 2000-03-03 | 2002-10-01 | International Business Machines Corporation | Suicide among well-mannered cluster nodes experiencing heartbeat failure |
EP1301865A4 (en) | 2000-03-22 | 2009-04-01 | Yotta Yotta Inc | METHOD AND SYSTEM FOR PROVIDING MULTIMEDIA INFORMATION ON DEMAND THROUGH LONG DISTANCE NETWORKS |
US6785713B1 (en) * | 2000-05-08 | 2004-08-31 | Citrix Systems, Inc. | Method and apparatus for communicating among a network of servers utilizing a transport mechanism |
US6658504B1 (en) | 2000-05-16 | 2003-12-02 | Eurologic Systems | Storage apparatus |
US20040034794A1 (en) * | 2000-05-28 | 2004-02-19 | Yaron Mayer | System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages |
JP4292693B2 (ja) * | 2000-07-07 | 2009-07-08 | 株式会社日立製作所 | 計算機資源分割装置および資源分割方法 |
US7032119B2 (en) * | 2000-09-27 | 2006-04-18 | Amphus, Inc. | Dynamic power and workload management for multi-server system |
JP2002108839A (ja) | 2000-09-28 | 2002-04-12 | Mitsubishi Electric Corp | 通信ネットワークシステム、ジョブ割当方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
KR20010000624A (ko) | 2000-10-10 | 2001-01-05 | 최은석 | 고성능 컴퓨터를 이용한 연산기능 제공방법 |
US7428583B1 (en) * | 2000-10-31 | 2008-09-23 | Intel Corporation | Network policy distribution |
US7055148B2 (en) * | 2000-12-07 | 2006-05-30 | Hewlett-Packard Development Company, L.P. | System and method for updating firmware |
US6735660B1 (en) * | 2000-12-21 | 2004-05-11 | International Business Machines Corporation | Sideband signal transmission between host and input/output adapter |
WO2002084509A1 (en) * | 2001-02-24 | 2002-10-24 | International Business Machines Corporation | A novel massively parrallel supercomputer |
US7107337B2 (en) * | 2001-06-07 | 2006-09-12 | Emc Corporation | Data storage system with integrated switching |
US6952766B2 (en) * | 2001-03-15 | 2005-10-04 | International Business Machines Corporation | Automated node restart in clustered computer system |
US7028228B1 (en) * | 2001-03-28 | 2006-04-11 | The Shoregroup, Inc. | Method and apparatus for identifying problems in computer networks |
US6918051B2 (en) * | 2001-04-06 | 2005-07-12 | International Business Machines Corporation | Node shutdown in clustered computer system |
US6820221B2 (en) | 2001-04-13 | 2004-11-16 | Hewlett-Packard Development Company, L.P. | System and method for detecting process and network failures in a distributed system |
US7231430B2 (en) * | 2001-04-20 | 2007-06-12 | Egenera, Inc. | Reconfigurable, virtual processing system, cluster, network and method |
US6675264B2 (en) * | 2001-05-07 | 2004-01-06 | International Business Machines Corporation | Method and apparatus for improving write performance in a cluster-based file system |
US7155512B2 (en) * | 2001-05-23 | 2006-12-26 | Tekelec | Methods and systems for automatically configuring network monitoring system |
US6950833B2 (en) * | 2001-06-05 | 2005-09-27 | Silicon Graphics, Inc. | Clustered filesystem |
US8010558B2 (en) * | 2001-06-05 | 2011-08-30 | Silicon Graphics International | Relocation of metadata server with outstanding DMAPI requests |
US6988193B2 (en) * | 2001-06-28 | 2006-01-17 | International Business Machines Corporation | System and method for creating a definition for a target device based on an architecture configuration of the target device at a boot server |
US20030005039A1 (en) * | 2001-06-29 | 2003-01-02 | International Business Machines Corporation | End node partitioning using local identifiers |
US8032625B2 (en) * | 2001-06-29 | 2011-10-04 | International Business Machines Corporation | Method and system for a network management framework with redundant failover methodology |
GB0116310D0 (en) | 2001-07-04 | 2001-08-29 | New Transducers Ltd | Contact sensitive device |
US7065764B1 (en) * | 2001-07-20 | 2006-06-20 | Netrendered, Inc. | Dynamically allocated cluster system |
US7016299B2 (en) * | 2001-07-27 | 2006-03-21 | International Business Machines Corporation | Network node failover using path rerouting by manager component or switch port remapping |
EP1283464A1 (en) * | 2001-08-06 | 2003-02-12 | Hewlett-Packard Company | A boot process for a computer, a boot ROM and a computer having a boot ROM |
US6922791B2 (en) * | 2001-08-09 | 2005-07-26 | Dell Products L.P. | Failover system and method for cluster environment |
JP2003099412A (ja) | 2001-09-21 | 2003-04-04 | Hitachi Eng Co Ltd | 超並列コンピュータ |
US7027413B2 (en) * | 2001-09-28 | 2006-04-11 | Sun Microsystems, Inc. | Discovery of nodes in an interconnection fabric |
US7073053B1 (en) * | 2001-10-11 | 2006-07-04 | Cisco Technology, Inc. | Method and apparatus for a boot progression scheme for reliably initializing a system |
GB2381713A (en) * | 2001-11-01 | 2003-05-07 | 3Com Corp | Failover mechanism involving blocking of access of a malfunctioning server and continuing monitoring to enable unblocking of access if server recovers |
US6904482B2 (en) * | 2001-11-20 | 2005-06-07 | Intel Corporation | Common boot environment for a modular server system |
EP1318453A1 (en) * | 2001-12-07 | 2003-06-11 | Hewlett-Packard Company | Scheduling system, method and apparatus for a cluster |
CA2365729A1 (en) * | 2001-12-20 | 2003-06-20 | Platform Computing (Barbados) Inc. | Topology aware scheduling for a multiprocessor system |
US7046687B1 (en) * | 2002-01-16 | 2006-05-16 | Tau Networks | Configurable virtual output queues in a scalable switching system |
US7093004B2 (en) * | 2002-02-04 | 2006-08-15 | Datasynapse, Inc. | Using execution statistics to select tasks for redundant assignment in a distributed computing platform |
US6918063B2 (en) * | 2002-02-04 | 2005-07-12 | International Business Machines Corporation | System and method for fault tolerance in multi-node system |
US7640547B2 (en) * | 2002-02-08 | 2009-12-29 | Jpmorgan Chase & Co. | System and method for allocating computing resources of a distributed computing system |
DE10214067B4 (de) * | 2002-03-28 | 2010-01-21 | Advanced Micro Devices, Inc., Sunnyvale | Integrierter Schaltkreischip mit Hochgeschwindigkeitsdatenschnittstelle sowie zugehöriges Southbridgebauelement und Verfahren |
US7043539B1 (en) * | 2002-03-29 | 2006-05-09 | Terraspring, Inc. | Generating a description of a configuration for a virtual network system |
US6996728B2 (en) * | 2002-04-26 | 2006-02-07 | Hewlett-Packard Development Company, L.P. | Managing power consumption based on utilization statistics |
US7139798B2 (en) | 2002-05-17 | 2006-11-21 | Groove Networks, Inc. | Method and apparatus for connecting a secure peer-to-peer collaboration system to an external system |
US7161904B2 (en) | 2002-06-04 | 2007-01-09 | Fortinet, Inc. | System and method for hierarchical metering in a virtual router based network switch |
JP3932994B2 (ja) * | 2002-06-25 | 2007-06-20 | 株式会社日立製作所 | サーバ引継システムおよびその方法 |
DE10234992A1 (de) * | 2002-07-31 | 2004-02-19 | Advanced Micro Devices, Inc., Sunnyvale | Retry-Mechanismus für blockierende Schnittstellen |
US7765299B2 (en) * | 2002-09-16 | 2010-07-27 | Hewlett-Packard Development Company, L.P. | Dynamic adaptive server provisioning for blade architectures |
US7127597B2 (en) * | 2002-09-24 | 2006-10-24 | Novell, Inc. | Mechanism for controlling boot decisions from a network policy directory based on client profile information |
US20040210656A1 (en) * | 2003-04-16 | 2004-10-21 | Silicon Graphics, Inc. | Failsafe operation of storage area network |
US7287179B2 (en) * | 2003-05-15 | 2007-10-23 | International Business Machines Corporation | Autonomic failover of grid-based services |
US7007125B2 (en) | 2003-06-24 | 2006-02-28 | International Business Machines Corporation | Pass through circuit for reduced memory latency in a multiprocessor system |
US7379983B2 (en) * | 2003-06-25 | 2008-05-27 | International Business Machines Corporation | Merging scalable nodes into single-partition merged system using service processors of nodes |
US7644153B2 (en) * | 2003-07-31 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Resource allocation management in interactive grid computing systems |
JP2007508623A (ja) * | 2003-10-08 | 2007-04-05 | ユニシス コーポレーション | 複数のノードにわたってシステムリソースを割り当てて管理する仮想データセンタ |
US7207039B2 (en) * | 2003-12-24 | 2007-04-17 | Intel Corporation | Secure booting and provisioning |
US7685597B1 (en) * | 2004-02-20 | 2010-03-23 | Sun Microsystems, Inc. | System and method for management of characterized resources |
US8484348B2 (en) * | 2004-03-05 | 2013-07-09 | Rockstar Consortium Us Lp | Method and apparatus for facilitating fulfillment of web-service requests on a communication network |
US20050256942A1 (en) * | 2004-03-24 | 2005-11-17 | Mccardle William M | Cluster management system and method |
US8335909B2 (en) * | 2004-04-15 | 2012-12-18 | Raytheon Company | Coupling processors to each other for high performance computing (HPC) |
US20050235055A1 (en) * | 2004-04-15 | 2005-10-20 | Raytheon Company | Graphical user interface for managing HPC clusters |
US9178784B2 (en) | 2004-04-15 | 2015-11-03 | Raytheon Company | System and method for cluster management based on HPC architecture |
US7711977B2 (en) | 2004-04-15 | 2010-05-04 | Raytheon Company | System and method for detecting and managing HPC node failure |
US8190714B2 (en) * | 2004-04-15 | 2012-05-29 | Raytheon Company | System and method for computer cluster virtualization using dynamic boot images and virtual disk |
US8336040B2 (en) * | 2004-04-15 | 2012-12-18 | Raytheon Company | System and method for topology-aware job scheduling and backfilling in an HPC environment |
US20050256977A1 (en) * | 2004-05-14 | 2005-11-17 | Dehaemer Eric J | Integrated circuit having processor and switch capabilities |
US8244882B2 (en) | 2004-11-17 | 2012-08-14 | Raytheon Company | On-demand instantiation in a high-performance computing (HPC) system |
US7475274B2 (en) * | 2004-11-17 | 2009-01-06 | Raytheon Company | Fault tolerance and recovery in a high-performance computing (HPC) system |
US7433931B2 (en) * | 2004-11-17 | 2008-10-07 | Raytheon Company | Scheduling in a high-performance computing (HPC) system |
JP2007141305A (ja) | 2005-11-16 | 2007-06-07 | Hitachi Global Storage Technologies Netherlands Bv | 磁気ディスク装置 |
-
2004
- 2004-11-17 US US10/991,994 patent/US8244882B2/en active Active
-
2005
- 2005-04-05 MY MYPI20051526 patent/MY151525A/en unknown
- 2005-04-07 CA CA2503781A patent/CA2503781C/en active Active
- 2005-04-09 EP EP05252240.6A patent/EP1662388B1/en not_active Not-in-force
- 2005-04-12 TW TW094111491A patent/TWI285818B/zh not_active IP Right Cessation
- 2005-04-12 KR KR1020067021323A patent/KR101159386B1/ko active IP Right Grant
- 2005-04-12 WO PCT/US2005/012489 patent/WO2006055027A1/en active Application Filing
- 2005-04-14 JP JP2005117406A patent/JP4451806B2/ja active Active
- 2005-04-15 CN CN2005100878553A patent/CN1777107B/zh active Active
-
2006
- 2006-10-15 IL IL178610A patent/IL178610A/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
US8244882B2 (en) | 2012-08-14 |
KR101159386B1 (ko) | 2012-06-28 |
TW200619962A (en) | 2006-06-16 |
EP1662388B1 (en) | 2018-01-10 |
CN1777107B (zh) | 2013-07-17 |
IL178610A (en) | 2012-07-31 |
US20060117208A1 (en) | 2006-06-01 |
JP4451806B2 (ja) | 2010-04-14 |
CA2503781A1 (en) | 2006-05-17 |
JP2006146865A (ja) | 2006-06-08 |
CA2503781C (en) | 2013-07-16 |
KR20070085089A (ko) | 2007-08-27 |
WO2006055027A1 (en) | 2006-05-26 |
CN1777107A (zh) | 2006-05-24 |
IL178610A0 (en) | 2007-02-11 |
EP1662388A1 (en) | 2006-05-31 |
MY151525A (en) | 2014-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI285818B (en) | Method and system and computer-readable medium having encoded therein logic for on-demand instantiation in a high-performance computing (HPC) system | |
US10769088B2 (en) | High performance computing (HPC) node having a plurality of switch coupled processors | |
TWI287195B (en) | Method, system and computer-readable medium storing thereon logic instructions for scheduling in a high-performance computing (HPC) system | |
US10621009B2 (en) | System and method for topology-aware job scheduling and backfilling in an HPC environment | |
JP4986844B2 (ja) | Hpcノード障害の検出及び管理を行うシステム及び方法 | |
JP4833965B2 (ja) | Hpcアーキテクチャに基づいたクラスタ管理のシステム及び方法 | |
JP2007533034A (ja) | Hpcクラスタを管理するためのグラフィカル・ユーザ・インタフェース |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |