TWI287195B - Method, system and computer-readable medium storing thereon logic instructions for scheduling in a high-performance computing (HPC) system - Google Patents

Method, system and computer-readable medium storing thereon logic instructions for scheduling in a high-performance computing (HPC) system Download PDF

Info

Publication number
TWI287195B
TWI287195B TW094111493A TW94111493A TWI287195B TW I287195 B TWI287195 B TW I287195B TW 094111493 A TW094111493 A TW 094111493A TW 94111493 A TW94111493 A TW 94111493A TW I287195 B TWI287195 B TW I287195B
Authority
TW
Taiwan
Prior art keywords
nodes
cluster
request
node
spatial
Prior art date
Application number
TW094111493A
Other languages
English (en)
Other versions
TW200622673A (en
Inventor
Anthony N Richoux
Original Assignee
Raytheon Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Raytheon Co filed Critical Raytheon Co
Publication of TW200622673A publication Critical patent/TW200622673A/zh
Application granted granted Critical
Publication of TWI287195B publication Critical patent/TWI287195B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Description

1287195 九、發明說明: C明所屬冬好領3 發明領域 概略言之,本揭示係有關資料處理,特別係有關於一 5 高效能運算(HPC)系統之排程技術。 C先前技術3 發明背景 15
高效能運算(HPC)經常係由科學家及工程師使用運算 系統對複雜的實體現象或演繹法則現象進行模型化、模 10擬、與分析,來加以決定特徵。目前,HPC機器典型係使 用一或多個稱作為節點之處理器組成之大量HPC叢集而設 計。對大部分大型科學應用及工程應用而言,效能主要係 由並列擴充性決定,而非由個別節點之速度決定;因此, 擴充性經㈣此種高效能叢集建置上或購買上的限制因 素。擴充性之考量-般係以下列為基準:i}硬體;⑴記憶體、 輪出入(I/O)裝置、及通訊頻寬;iii)軟體;iv)架構;及V) 應用程式。在大部分習知則環境中,處理、記憶體、及ι/〇
=經常平衡得不夠良好,因而無法充分擴充。許多HPC %境不具有1/0頻寬來滿足高階資料處理 環境係以安裝有過量不必要之組成 1許夕 里^ 双凡件之刀鋒(blades)建 ^、、、°果導致純之可靠敍減。如此,多種HPC環境益 ^供可於製造導向環境中有效操作的強勁的叢集管理軟、 20 【發明内容】 發明概要 ^明可減少或消除與HPC系統之排程相關聯之缺 點、問題、或二者。 、、於具體例中,—種於一高效能運算(HPC)系統排程之 、、匕括接收來自_管理引擎之呼叫,該管理引擎管理該 =系ά之1點叢集。辦叫載明包括-欲排程之工作 2求。該項1作包括—或多項於該叢集之一或多個節點 。仃之知序。該項,叫進_步載明執行該 工作之一或多項 *心卩點數目。該方法進-步包括判定該請求是否為-工ϋ -精簡請求、或_非空間且非精簡請求。若該 了該作之處理程序之各冑關為空間關係則 該1為”請求。若社作假設執行紅狀處理程序 1即點間相鄰近,則該請求為精簡請求。若該工作假設 ^ '作之各項處理程序之節關不具有空間關係也 勺目則該請求為非空間且非精簡請求 。該方法進二步 ^ ’若該請求為空間請求,則產生該叢集之節點之一或 夕^間組合來配合於該呼啊載明之節點數目,以及進 ΖΓ所贱之執行紅作之處鄉狀各節點間之空 間關係,以及選擇該等空間組 根據叢隼中可用㈣… 一空間組合係可 最集打料私之㈣串⑽難。該方法進一步 該請求為精簡,則產生於該叢集之節點之一或多 里=間組合,其配合於來自該管理引擎之呼叫中載明之節 數目,以及選擇該等精簡組合之-,該-精簡組合係可 1287195 集中可供用於排程之節點串列而排程,以及該一精 =二,較根據叢集中可供用於排程之節點串列而可排 主/、匕精簡組合更為精簡。該方 精簡’則—叢集二= :節二::=之-或多個節點,以及產生於該叢集 呼叫中載/ 非_組合來配合於來自鮮理引擎之 ㈣叢集= φ 、 ”、串列而排程之一或多個經 ::;之:或多者。該方法進-步包括通訊-回覆 間組合、精簡二Γ別於該叢集之節點之經選定之空 該工作之且非精簡組合中之用於執行 忒夕項程序之一或多個節點。 15
20 言之,特定體例可提供-或多項技術優勢。舉例 型相關聯之時間—工作供於HPC系統執行典 於,統執:典型二广-工作㈣ 且體例接徂入if? #茜求。本發明之特定 勢。特定二分前述技術優勢或未提供前述技術優 = = = ::其一^ 請專利範圍將顯然自明。1、柏說明部分、及申 圖式簡單說明 連同==解本揭示及其優點,現在參照後文說明 連同附圖祝明如後,附圖者: 第1圖顯不根據本揭示之一具體例,一種範例高效能運 (S) 7 1287195 算系統; 第2圖顯示於第1圖所示HPC系統之一實例節點; 第3圖顯示於一節點之一實例中央處理單元(CPU); 第4圖顯示一實例節點對; 5 第5A-5D圖顯示於第1圖之系統之格網之各個具體例 及其用途; 第6A-6B圖顯示根據第1圖之系統,圖形使用者介面之 各個具體例; 第7圖顯示根據第1圖之系統,叢集管理軟體之一具體 10 例; 第8圖顯示於y維度摺疊之一實例一維請求; 第9圖顯示使用y軸作為内迴圈組構而成之兩個自由網 格; 第10圖顯示使用X軸作為内迴圈組構而成之兩個自由 15 網格;
20 第11圖為流程圖,顯示根據第1圖之高效能運算系統, 一種提交一批次式工作之方法; 第12圖為流程圖,顯示根據第1圖之高效能運算系統, 一種動態回填格網之方法;以及 第13圖為流程圖,顯示根據第1圖之高效能運算系統, 一種動態管理一節點故障之方法。 較佳實施例之詳細說明 第1圖為方塊圖,顯示使用HPC技術來執行軟體應用程
Cs) 8 1287195 式及處理程序,例如執行大氣、氣候、或墜毀模擬之高效 能運算(HPC)系統1〇〇。系統1〇〇對使用者提供於各個運算節 點115間動態配置之HPC功能,I/O效能實質上係類似處理效 能。通常此等節點115由於輸入/輸出(I/O)效能的增高以及 5 組織結構延遲的縮短,因此容易擴充。例如於分散式架構 之節點115之擴充性可以安達爾氏法則(Amdahl’s law)之導 數表示: S(N)=1/((EP/N)+FS)*(1-Fc*(1-RR/L)) 此處S(N)=N個處理器之加速,Fp=並列節點之分量,fs=非 10並列節點之分量,Fc=用於通訊之處理分量,以及^^/1/=遠 端/近端記憶體頻寬比。因此經由HPC系統1〇〇提供實質上等 於處理效能或接近處理效能之I/O效能,HPC系統1〇〇可提高 HPC應用用途之總體效率,允許系統之行政管理更為容易。
HPC系統100為分散式賓/主系統,其允許使用者(例如 15科學家及工程師)於HPC伺服器1〇2進行工作150之處理。例 如,系統100可包括HPC祠服器1〇2,其係經由網路106而連 結至一或多個行政工作站或本地客端12〇。但系統1〇〇可為 孤立運算環境或為任何其它適當環境。簡言之,系統1〇〇為 任何HPC運算環境,其包括高度可擴充之節點115,且允許 20使用者提交工作15〇,將可擴充之節點115動態配置於工作 150,以及使用配置之節點115來動態執行工作15〇。工作15〇 可為任何可使用HPC技術處理操作之批次工作或線上工作 且可由任何適當使用者提交之工作。例如工作15〇可為模擬 9 1287195 請求、模型、或任何其它高效能要求。工作150也可為請求 執行一資料中心應用程式,諸如叢集化資料庫、線上異動 處理系統、或叢集化應用伺服器。如此處使用「動態」一 詞通常表示某些處理於回合時間方面,至少部分係基於一 5或多項變數而決定。如此處使用,「自動」一詞通常表示適 當處理實質上係經由至少部分HPC系統100而進行。須瞭解 「自動」進一步包含任何適當使用者或行政管理者與系統 100之互動,而未悖離本揭示範圍。 HPC伺服器102包含可使用多數平衡節點115及叢集管 10理引擎丨3〇,可操作來處理工作150之任何本地電腦或遠端 電腦。通常HPC伺服器1〇2包含分散式電腦諸如刀鋒伺服器 (blade server)或其它分散式伺服器。但就組態結構而言,伺 服器102包括多數節點115。節點115包含任何電腦或處理裝 置諸如刀鋒、通用個人電腦(PC)、麥金塔電腦、工作站、 15基於Unix之電腦、或任何其它適當裝置。通常第1圖僅提供
可用於本揭示之電腦實例。例如,雖然第1圖顯示可用於本 揭示之伺服器102,但系統1〇〇可使用伺服器以外之電腦以 及伺服器區(server pool)實作。換言之,本揭示涵蓋通用電 腦以外之電腦、及不含習知操作系統之電腦。如本文件使 20用,「電腦」一詞意圖涵蓋個人電腦、工作站、網路電腦、 或任何其它適當處理裝置。HPC伺服器102或組成節點115 適合執行任何操作系統,包括Linux、UNIX、Windows伺服 器、或任何其它適當操作系統。根據一具體例,HPC伺服 器102也包括遠端網路伺服器或可以通訊方式耦接遠端網 1287195 路伺服器。因此伺服器102包含任何具有軟體及/或硬體之 任一種組合之電腦,其適合用於動態配置節點115來處理 HPC工作 150。 於高階,HPC伺服器102包括一管理節點105、包含多 5 個節點115之一格網(grid) 110及叢集管理引擎130。特別, 伺服器102可為標準19吋框架,包括多個刀鋒(節點115),且 有部分或全部以下各組成元件:i)雙重處理器;ii)大型高頻 寬記憶體;iii)雙主機通道配接器(HCA) ; iv)整合式組織結 構交換器;v)FPGA支援;以及vi)冗餘電源輸入或N+1電源 10 供應器。此等各項組成元件允許讓故障侷限於節點層級。 但須瞭解HPC伺服器102及節點115可未包括全部此等組成 元件。 15
20 管理節點105包含專用於管理或輔助行政管理者之至 少一個刀鋒。舉例言之,管理節點105可包含二刀鋒,二刀 鋒之一為冗餘(諸如主動/被動組配結構)。一具體例中,管 理節點105可為與HPC節點115同型刀鋒或運算裝置。但管 理節點105可為任何節點,包括任何數目之電路且以任一種 適當方式組配之節點,只要維持可操作來至少部分管理格 網110即可。經常管理節點105於實體上或邏輯上係與多個 HPC節點115結合表示於格網11〇。該具體實施例中,管理 卽點105可透過鏈路1〇8而通訊式耦接至格網n〇。述及「鏈 路」-詞涵蓋任何可實㈣當通鄉定之適#通訊回路。 舉例言之,但非限制性,鏈路可包括於一或多電路板之一 或多導線、-或多内部匯流排或外部匯流排、—或多區域 (S) 11 1287195 、網路(LAN)、-或多都會區域網路(MAN)、一或多廣域網路 (WAN)、網際網路之-或多個部分”戈兩種或兩種以上此 等網路之組合,視何者為適當決定。一具體例中,鍵路⑽ 包含管理節點1G5與格網11G間之十億位元或1()十億位元乙 5 太網路通訊。 格、、周11G為互連來提局處理功率之—組節點出。典型 地,格網1H)為三維圓環(3D τ_),但也可為網格、超方 塊、或任何其它形狀或_配置,而未悖離本揭示之範圍。 格網U0之各個節點115間之鏈路可為串列類比鍵路或並列 Π)類比鏈路、數位鏈路、或任何其它型別之可傳輸電氣信號 或電磁信號之鏈路,諸如光纖或銅纔線。各個節點115組配 有-整合式交換器。如此,允許節點115更容易成為三維圓 環的基本組成,且輔助縮短其它節點115間之χγζ距離。此 外’如此銅佈線可以高達十億位元之速率用於大型系統, η $干具體例中m線係少於5米,簡言之,節點ιΐ5通 常對最接近之相鄰通訊以及較高1/0頻寬調整為最佳化。 各個節點115包括-個叢集代理器132,其係通訊式麵 接叢集管理引擎m。通常,代理器丨32接收來自管理節點 ι〇5及/或叢集管理引擎130之請求或命令。代理器132可包 20括任何硬體、軟體、韌體、或其組合,其可操作來決定節 *、’ 115之κ體狀恶,且通訊處理後之資訊例如經由「心搏」 通讯處理後之資訊給管理節點105。另一具體例中,管理節 •、、U〇5可定期輪詢代理器132來決定相關聯之節點之狀 恕。代理器132可以任一種適當電腦語言寫成,該等電腦語 ⑧ 12 1287195 言,諸如c語言、c++語言、組合語言、爪唾語言、虛擬基 本語言、及其它語言、或其任一種組合,只要代理器132維 持與至少部分叢集管理引擎130可相容即可。 叢集官理引擎130可包括任一種硬體、軟體、勃體、或 ^、、、且a其可操作來動態配置與管理節點115,以及使用節 點115來執行工作150。例如叢集管理引擎13〇可以任一種適 當電腦語言書寫或敘述,該等電腦語言包括c語言、c++語 a、爪哇#言、虛擬基本語言、組合語言、4gl之任何適 备版本、以及其它語言或其任一種組合。須瞭解雖然叢集 10官理引擎130於第i圖係以單一多任務型模組來舉例說明, 但由此種引擎所執行之特色及功能可藉多重模組執行,該 4模組例如實體層模組、虛擬層模組、工作排程器、及呈 現引擎(如第7圖顯示其進一步細節)。此外雖然於圖中顯示 於管理節點105外部,但管理節點1〇5典型執行與叢集管理 15引擎130相關聯之一或多項處理程序,且可儲存叢集管理引 擎130。此外,叢集管理引擎13〇可為另一軟體模組之子模 組或次模組,而未挣離本揭示之範圍。因此叢集管理引擎 130包含可智慧型管理節點115及工作15〇之一或多個軟體 模組。特定具體例中,叢集管理引擎包括如後文說明之為 20工作150配置節點115之一排程器515。排程器515可使用排 程演繹法則來為工作150配置節點115,容後詳述。 伺服器102包括介面104,來於賓主環境或其它分散式 環境中,透過網路106而與其它電腦系統諸如客端12〇通 訊。若干具體例中,伺服器102由網路1〇6接收工作15〇或工 13 1287195 乍策略用來儲存於碟片場(disk加㈤)14〇。碟片場刚也可 使用互連各個節點之相同寬頻介面來直接連結至運算陣 列通$,介面104包含以適當組合以軟體及/或硬體編碼 k輯且可操作來與網路1〇6通訊。特別,介面1〇4包含 5支杈與通訊網路106相關聯之一或多項通訊協定之軟體,或 介面104包含可操作來通訊實體信號之硬體。 網路106可辅助電腦伺服器1〇2與任何其它電腦諸如客 端120間之無線通訊或有線通訊。確實,雖然網路106於圖 中顯不為駐在伺服器1〇2與客端12〇間,但網路1〇6也可駐在 ίο各個節點115間,而未悖離本揭示之範圍。換言之,網路1〇6 涵蓋任何可操作來辅助各個運算組成元件間之通訊之任何 網路、多數網路、或次網路。網路1〇6例如可介於各個網址 間通訊例如網際網路協定(IP)封包、訊框傳送(Frame 訊框、異步傳輸模型(ATM)單元、語音、視訊、資料及其它 15適當資訊。網路106包括一或多個區域網路(LAN)、無線存 取網路(RAN)、都會區域網路(MAN)、廣域網路^八叫、稱 作為網際網路之全球電腦網路之全部或部分、及/或於一或 多個位置之任何其它通訊系統。MAC於適當時表示媒體存 取控制。 20 通常碟片場丨40為儲存工作150、側繪圖、開機影像' 或其它HPC資訊之任何記憶體、資料庫、或儲存區網路 (SAN)。根據所示之具體例,碟片場14〇包括一或多個儲存 客端142。碟片場140可根據多項通訊協定之任一者,來處 理資料封包及路由資料封包,該等通訊協定例如為無線頻 1287195 寬(IB)協定、十億位元乙太網路(GE)協定、或光纖通道(FC) 協定。資料封包典型係用來於碟片場140内部傳輸資料。一 個資料封包包括一標頭,該標頭有一來源識別符以及一目 的地識別符。來源識別符例如為來源網址,來源識別符可 5識別資訊發送者;目的地識別符例如目的地網址,可識別 >訊之接收者。 客端120為可透過使用者圖形介面(GUI) 126對使用者 呈現一工作提交晝面,或可操作來進行行政管理之任何裝 置。於高階,圖示之客端12〇包括至少GUI 126,以及包含 10電子運算裝置,其可操作來接收、發送、處理、以及儲存 任何與系統100相關聯之適當資料。須瞭解可有任何數目之 客端120耦接至伺服器1〇2。此外「客端12〇」及「客端12〇 之使用者」可視情況而互換使用,並未悖離本揭示之範圍。 此外,為求方便舉例說明,各個客端係以由一位使用者使 I5用來說明。但本揭示涵蓋多數使用者使用同一部電腦來以 相同GUI 126通訊多項工作15〇。 如本揭示使用,客端12〇意圖涵蓋個人電腦、觸控螢幕 終端裝置、X作站、網路電腦、資訊服務站、無線資料蜂、 行動電話、個人資料助理器(PDA)、此等裝置或其它裝置内 2〇部之-或多種處理器、或任何其它適當處理裝置。例如客 端120可包含具有輪入裝置之電腦,輸入裝置諸如數字小鍵 盤、觸控式面板、滑鼠、或其它可接收資訊之裝置;以及 客端120包含可傳輪與伺服器1()2或客端12〇之操作相關聯 之資訊之輸出裝置,該等資訊包括數位資料、視訊資訊、 (S) 15 1287195 或GUI 126。輸入裝置及輸出裝置包括固定式储存媒體或活 動式儲存媒體,諸如電腦磁碟、CD-ROM、或其它適當媒 體來接收來自使用者之輸入;以及經由行政管理顯示哭及 工作提父顯不裔’亦即GUI 126,而提供輸出信號給客端no 5 使用者。
GUI 126包含圖形使用者介面,該GUI 126可操作來允 許i)客端120使用者與系統100介接,來提交一或多項工作 150 ;及/或ii)系統(或網路)行政管理者使用客端12〇來與系 統1〇〇介接用於任何適當之監督目的。通常GUI 126對客端 10 I20使用者提供,由HPC系統100所提供的資料的有效且為 使用者友善之呈現。GUI 126可包含多數可客製訊框或視 圖,其具有可由使用者操作之互動式欄位、下拉表單、及 按鈕。一具體例中,GUI 126呈現工作提交顯示畫面,該顯 不晝面呈現多個工作參數攔位;以及GUI透過輸入裝置之一 15而接收來自客端12〇使用者之命令。GUI 126另外或組合呈 現節點115之實體狀態與邏輯狀態給系統行政管理者,如第 6A-6B圖所示;以及GUI126接收來自行政管理者之各項命 令。行政管理者之各項命令可包括可使用(不可使用)之標記 即點、維修用之關機節點、再開機節點、或任何其它適當 2〇命令。此外,須瞭解,圖形使用者介面一詞可以單數形使 用或複數形使用,來描述一或多個圖形使用者介面、以及 一個特定圖形使用者介面之各個顯示畫面。因此,Gm 126 涵蓋任何可於系統1〇〇處理資訊,且有效呈現結果給使用者 之任何圖形使用者介面,例如俗稱之網路瀏覽器。伺服器 ⑧ 16 1287195
10 2可透過網路瀏覽器(例如微軟公司網際網路探索者 (Microsoft Internet Explorer)或網景公司劉覽器(Netscape Navigator))接收資料,以及使用網路1〇6送返適當的HTML 回應或XML回應。 於一操作方面,HPC伺服器102首先經過初始化或開
機。於此過程中,叢集管理引擎130判定格網11〇中之節點 115之存在、狀態、所在位置及/或其它特性。如前文說明, 如此,可基於當各個節點初始化時,或由管理節點1〇5輪詢 時,幾乎為即刻通訊之「心搏」。其次,叢集管理引擎13〇 10例如可基於預定策略而動態配置格網11〇之各個部分給一 或多個虛擬叢集220。一具體例中,叢集管理引擎丨3〇連續 監視節點115是否可能發生故障;而當判定其中有一節點 115故障時,使用多種復原技術之任一者來有效管理故障。 叢集管理引擎130也可對虛擬叢集220之各個配置節點管理 15且提供獨特執行環境。執行環境包含主機名稱、IP網址、 作業系統、組配之服務、本地檔案系統與共享檔案系統、 及一組安裝之應用程式之資料集合。叢集管理引擎130可根 據相關聯之策略,且根據叢集間策略,例如優先順位,而 由虛擬叢集220加減節點。 當一使用者登入至客端120時,使用者可透過GUI 126 而被呈現一工作提交晝面。一旦使用者進入該等工作參數 及所提交之工作150時,叢集管理引擎130處理與工作150、 使用者、或使用者群相關聯之工作提交、相關參數、及任 何預定策略。然後,叢集管理引擎130至少部分基於此項資
Cs) 17 1287195 訊來決定適當虛擬叢集220。然後,叢集管理引擎130於虛 擬叢集220内部動態配置工作空間230,以及使用HPC技術 跨所配置之節點115來執行工作15〇。至少部分基於較高"ο 效能,HPC伺服器102可更快速完成工作15〇的處理。當完 5成時’叢集管理引擎將結果160通訊告知使用者。 第2圖顯示一實例節點(或刀鋒)115。節點115包括任何 方向性之運算裝置用於處理一或多項工作15〇之全部或部 分,諸如工作之執行緒或處理程序。舉例言之,但非限制 性,節點115可包括XEON主機板、OPTERON主機板、或其 10它運算裝置。節點U5具有可提供整合式組織結構,讓交換 功能可於格網110跨多數節點115分散之架構。特定具體例 中,於格網110跨節點115分散此等功能可免除格網11〇之集 中式交換。其又可增加格網11〇之錯誤容許度,因而讓格網 110之各個節點間,允許從事並列通訊。 15 節點丨15包括二中央處理單元(cpu) 164以及一交換器 (或組織結構)116。述及節點115可涵蓋二Cpu 164以及一交 換器166,視情況適當決定。於適合時,述及節點115可只 涵蓋CPU 164。交換器166可為整合式交換器。特定具體例 中,父換器166有24個埠。交換器166之二埠可將節點115耦 20接至管理節點105供輸入至節點115或由節點115輸出。此 外,於父換益166之二埠可沿格網11〇之又軸各自耦接節點 115至另一節點115,於交換器166之二埠可沿格網11〇之乂轴 各自耦接節點115至另一節點115,以及於交換器166之二埠 可沿袼網110之z軸各自耦接節點115至另一節點115,來輔
18 1287195 助於格網110實作3D網格、3D圓環或其它拓樸結構。交換 器166之其它埠可於格網11〇,耦接節點115至其它節點 115,來輔助於袼網11〇實作多維拓樸結構(例如4〇圓環或其 匕包括多於三維之非傳統拓樸結構)。特定具體例中,交換 5器166之-或多埠可沿袼網11〇之一或多對角轴線,來麵接 節點115至一或多個其它節點115,如此減少節點115與相對 遠離節點115之一或多個其它節點115間之通訊跨接或交 換。舉例言之,但非限制性,交換器166之埠可將節點ιΐ5 麵接至駐在沿格網110之東北軸線,且距離節點115數個犯 10跨接遠離處的另一節點U5。特定具體例中,交換器166為 無限頻寬(InfiniBand)交換器。雖然此處舉例說明特定交換 器166,但本發明預期涵蓋任何適當交換器。 鏈路168a耦接CPU 164a至交換器166。鏈路16肋耦接 CPU 164a至另一節點115之另一交換器166,容後詳述。鏈 15路168c耦接CpU 164b至交換器166。鏈路i68d麵接cpu 164b至另一交換器166,容後詳述。鏈路16%及16%麵接交 換器166至其它卽點115之另二CPU 164,容後詳述。特定具 體例中,鏈路168包括於一方向每秒可通訊約丨十億位元組 之無限頻寬4X鏈路。雖然以特定鏈路168舉例說明,但本發 20明涵蓋任一種適當鏈路丨仍。鏈路170為節點115之1/〇鏈 路。鏈路170可包括於一方向每秒可通訊約丨十億位元組之 無限頻寬4X鏈路。雖然以特定鏈路17〇舉例說明,但本發明 涵蓋任一種適當鏈路170。鏈路172耦接交換器166至其它節 點115之其它交換器166,容後詳述。特定具體例中,鏈路 ⑧ 19 1287195
172包括於一方向每秒可通訊約丨十億位元組之無限頻寬 12X鏈路。雖然以特定鏈路172舉例說明,但本發明涵蓋任 一種適當鏈路172。
第3圖顯示於節點115之範例CPU 164。雖然以一範例 5 CPU 164來舉例說明,但本發明涵蓋任一種適當cpu 164。 CPU 164包括一處理器174、一記憶體控制器中樞(MCH) 176、一記憶體單元178、及一主機通道配接器(HCA) 18〇。 處理器174包括硬體、軟體、或嵌置式邏輯組成元件,或兩 種或兩種以上之此等組成元件之組合。特定具體例中,處 10理器174為得自英代爾公司(INTEL)之NOCONA XEON處理 器174。特定具體例中,處理器174為由約丨百萬位元組快取 吕己憶體之約3·6十億赫兹處理器,且每秒可作約7.2十億反 轉。特定具體例中,處理器174提供超執行緒 (HyperThreading)。特定具體例中,處理器174包括可有效 15使用記憶體頻寬之記憶體控制器。雖然舉例說明特定處理 器174,但本發明涵蓋任何適當處理器174。 匯流排182耦接處理器174與記憶體控制器中樞(MCH) 176彼此。特定具體例中,匯流排182為每秒可通訊約6.4十 fe位元組之約8〇〇 MHz前端匯流排(FSB)。雖然以一特定匯 20流排182舉例說明,但本發明涵蓋任何適當匯流排182aMCH 176包括硬體、軟體、或嵌置式邏輯組成元件或兩種或兩種 以上此等元件之組合來輔助處理器174與HPC系統100之一 或多個其它元件諸如記憶體單元178間之通訊。特定具體例 中,MCH 176為CPU 164之北橋,其控制處理器174與記憶 1287195
體單元178、匯流排182、第二階(L2)快取記憶體、及CPU 164 之一或多個其它組成元件中之一或多者間之通訊。特定具 體例中,MCH 176為 LINDENHURST E7520 MCH 176。特 定具體例中,記憶體單元178包括8十億位元組隨機存取記 5憶體(RAM)。特定具體例中,記憶體單元178包括二分開耦 接至MCH 176之雙倍資料速率(DDR)記憶體裝置。舉例言 之,但非限制性,記憶體單元178可包括各自具有每秒每通 道約3·2十億位元組之兩璋DDR2-400記憶體裝置。雖然舉例 說明特定記憶體單元178,但本發明涵蓋任一種適當記憶體 10 單元178。
特定具體例中,一鏈路耦接MCH 176至I/O控制器中樞 (ICH),ICH包括一或多硬體、軟體、或嵌置式邏輯組成元 件,其可輔助處理器174與HPC系統100之一或多個其它元 件間之I/O,諸如基本I/O系統(BIOS)耦接至ICH、十億位元 15乙太網路(GbE)控制器,或其它乙太網路介面耦接至該ICH 或二者。特定具體例中,ICH為可控制CPU 164之I/O功能之 CPU 164之南橋接器。耦接至1(::11之乙太網路介面可輔助該 ICH與搞接至該乙太網路介面之一母板管理控制器(bmc) 間之通訊。特定具體例中,管理節點105或HPC系統1〇〇之 20 其它組成元件包含一或多個此種BMC。特定具體例中,一 鏈路耦接該乙太網路介面至一交換器來提供存取至一或多 個GbE管理埠。 匯流排184耦接MCH 176與HCA 180彼此。特定具體例 中,匯流排184為周邊組件互連(PCI)匯流排184,諸如每秒 21 1287195
<通訊約4十億位元組之PCI-Express 8X匯流排184。雖然此 處係以特定匯流排184舉例說明,但本發明涵蓋任一種適當 匯流排184。HCA 180包括硬體、軟體、或嵌置式邏輯組成 元件或可提供基於通道之I/O至CPU 164之兩個或兩個以上 5 此等元件之組合。特定具體例中,HCA 180為MELLANOX
無限頻寬HCA 180。特定具體例中,HCA 180可提供每秒約 2·65十億位元組之頻寬,允許每個處理元件(pe)約ι·85十億 位元組至節點115之交換器166,以及允許每ΡΕ約800百萬位 元組至I/O,諸如基本I/O系統(BIOS)、乙太網路介面及其它 10 I/O。特定具體例中,HCA 180允許對每秒尖峰約13.6十億 反轉之於交換器166之頻寬達約3.7十億位元組/秒,對約每 反轉0.27位元組之於交換器166之I/O速率到達約50百萬位 元組/十億反轉,或二者。雖然以特定HCA 180舉例說明, 但本發明意圖涵蓋任何適當HCA 180。各鏈路168耗接HCA 15 180至一交換器166。鏈路168a耦接HCA 180至第一交換器 166 ’其就HCA 180而言為一次交換器166,容後詳述。特 定具體例中,包括HCA 180之節點115包括第一交換器166。 鏈路168b麵接HCA 180至第二交換器166,該交換器就HCA 180而言為二次交換器,容後詳述。特定具體例中,未包括 20 HCA 180之節點115包括第二交換器166,容後詳述。 第4圖顯示包括二交換器166及四處理器174之一實例 節點對186。於節點對186之交換器166相對於彼此為冗餘, 如此可提高節點對186之錯誤容許度。若節點對186之第一 交換器166之功能不當,則節點對186之第二交換器ι66可對 ⑧ 22 1287195 節點對186之全部四個CPU提供交換。於節點對186,交換 器166a相對於CPU 164a及164b為一次交換器166,以及相對 於CPU 164c及164d為二次交換器166。交換器166b相對於 CPU 164c及164d為一次交換器166,以及相對於CPU 164a 5 及164b為一次父換态166。若二交換器i66a及166b之功能適 當,則交換器166a可對CPU 164a與164b提供交換,以及交 換器166b可對CPU 164c與164d提供交換。若交換器i66a之 功能適當,但交換器166b則否,則交換器166a可對cpu 164a、164b、164c及164d提供交換。若交換器166b之功能 10適當,但交換器166a則否,則交換器i66b可對CPU 164a、 164b、164c及164d提供交換。 鏈路172耦接節點對186之各個節點115至格網ho之節 點對186外側之六個節點115。舉例言之,但非限制性,於 交換器166a之鏈路172a耦接節點li5a至格網ι10中節點115a 15北方節點對186外侧之一第一節點115,於交換器166a之鏈
路172b耦接節點115a至格網11〇中節點115a南方節點對186 外側之一第二節點115,於交換器166a之鏈路172c麵接節點 115a至格網110中節點1 i5a東方節點對186外侧之一第三節 點115,於交換器166a之鏈路172d耦接節點H5a至格網110 20中節點115a西方節點對186外側之一第四節點115,於交換 器166a之鏈路172e耦接節點115a至袼網no中節點丨15a上方 節點對186外側之一第五節點115,以及於交換器16^之鏈 路172f耦接節點u5a至格網11〇中節點U5a下方節點對186 外側之一第六節點115。特定具體例中,鏈路172耦接於節 (S) 23 1287195 點對186之節點115a及115b至節點對186外側之彼此不同之 節點115集合。舉例言之,但非限制性,於交換器166a之鏈 路172可耦接節點115a至節點對186外側之一第一六個節點 115集合,該集合包括於節點對186外側之一第一節點115、 5 節點對186外側之一第二節點115、節點對186外側之一第三 節點115、節點對186外側之一第四節點115、節點對186外 側之一第五節點115、以及節點對186外側之一第六節點 115。於交換器166b之鏈路172可耦接節點115a至節點對186 外側之一第二六個節點115集合,該集合包括於節點對186 10外側之一第七節點115、節點對186外側之一第八節點115、 節點對186外側之一第九節點115、節點對186外側之一第十 節點115、節點對186外側之一第十一節點115、以及節點對 186外側之一第十二節點115。 特定具體例中,鏈路172可耦接相鄰於袼網11〇之第一 15緣之弟一卽點115至相鄰於格網11 〇之與第一緣相對之第二 緣之第二節點115。舉例言之,但非限制性,考慮相鄰於格 網110之左緣之第-節點115、以及相鄰於格網11〇之右緣而 與格網no之左緣相對之第二節點115。鏈路172可爐第一 節點115及第二節點115彼此,讓第一節點115係於第二節點 20 115之東方,而第二節點115係於第一節點115之西方,而與 於格網no内部第-節點115之位置相對於第二節點ιΐ5之 位置無關。至於另-實例,考慮相鄰於格網11〇之前緣之第 -節點115、以及相鄰於格網㈣之後緣而與格顧〇之前緣 相對之第二節點115。鏈路172可輛接第—節點ιΐ5及第二節 24 1287195 點U5彼此,讓第一節點115係於第二節點n5之南方,而第 二節點115係於第一節點ι15之北方,而與於格網110内部第
一節點115之位置相對於第二節點ι15之位置無關。至於又 另一實例,考慮相鄰於格網u〇之頂緣之第一節點115、以 5及相鄰於格網11〇之底緣而與格網110之頂緣相對之第二節 點H5。鏈路172可耦接第一節點115及第二節點n5彼此, 讓第一節點115係於第二節點115之下方,而第二節點115係 於第一節點115之上方,而與於格網11〇内部第一節點115之 位置相對於第二節點115之位置無關。 10 第5 A_5D圖顯示於系統100之格網110之各個具體例及 其使用或其拓樸結構。第5A圖顯示使用多型節點之格網110 之種組配結構,亦即三維圓環。舉例言之,所示節點型 別包括外部1/0節點、檔案系統(FS)伺服器、FS母資料伺服 器、資料庫伺服器、及運算節點。第5B圖顯示格網110之「摺 15璺」貫例。摺疊通常允許格網110之一個實體緣連結至相對 應之軸向緣,藉此提供更為強勁或無邊之拓樸結構。本具 體例中,節點115經包裹來提供藉節點鏈路216所連結之接 近無接縫式拓樸結構。節點鏈路216可為實作任何通訊協定 末互連一或_以上卽點1 之任何適當硬體。例如節點鏈路 20 216可為實作十億位元乙太網路之銅纜線或光纖纜線。特定 具體例中,節點線216包括-或多鏈路172,如前文說明。 第5C圖顯示具有一虛擬叢集22〇配置於其内部之格網 U〇。雖然只以一個虛擬叢集220舉例說明,但於袼網11〇可 有任何數目(包括零個)虛擬叢集220,而未悖離本揭示之範 ⑧ 25 1287195 圍。虛擬叢集220為處理相關工作15〇之節點115之邏輯組 群。舉例吕之,虛擬叢集220可與一研究小組、一部門、一 實驗至、或任何其它可提交類似工作15〇之使用者組群相關 聯。虛擬叢集220可為任何形&,且於格網11〇内部包含任 5何數目之節點115。確實,雖絲例說明之虛擬叢集包 括多數實體上相鄰之節點lls,但叢集22〇可為可操作來處 理工作15〇之邏輯相關節點115的分散式叢集。
虛擬叢集220可於任何適當時間配置。例如叢集22〇可 於系統100初始化時,例如基於起動參數配置;或叢集22〇 1〇可例如基於變化中之伺服器102之需求而動態配置。此外, 虛擬叢集220可隨時間之經過,改變其形狀及大小,來對變 化中之请求、需求、及情況做快速回應。例如虛擬叢集 可響應於弟二節點115(先前為叢集220之一部分)故障,而自 動改變為含括一個自動配置之第一節點115。若干具體例 15中,叢集220可視處理需求而共享多個節點115。特定具體 例中,排程器515可根據排程演繹法則,配置一或多個虛擬 叢集220給一或多個工作150,說明如後。 第5D圖顯示配置於範例虛擬叢集220内部之各個工作 空間230a及230b。通常工作空間230係動態配置來完成所接 2〇收之工作150之虛擬叢集220内部之節點115集合。典型地, 每個執行工作150有一工作空間230,反之亦然,但工作空 間230可共享各節點115,而未悖離本揭示之範圍。工作空 間230之尺寸可由使用者或管理者以手動輸入,或基於工作 參數、策略、及/或任何其它適當特性而動態決定。特定具 26 1287195 體例中,排程器515可根據排程演繹法則來決定一工作空間 230之一或多維,說明如後。
第6A-6B圖顯示根據系統1〇〇之管理圖形使用者介面 400之各具體例。經常管理GUI 400係使用GUI 126而呈現給 5客端12〇。通常,管理GUI 400係呈現多個管理互動式畫面 或顯示畫面給系統行政管理者,及/或呈現多個工作提交畫 面或工作側繪圖畫面給使用者。此等晝面或顯示幕包含組 繹成為所收集之資訊之各個面相之圖形元件。舉例言之, GUI 400可呈現格網實體健康顯示畫面(顯示於第6八圖)、或 10格網110之節點115之邏輯配置或拓樸結構(顯示於第6B 圖)。 第6A圖顯示範例顯示晝面400a。顯示畫面400a包括呈 現給行政管理者用於有效管理節點115之資訊。所示具體例 包括標準網路瀏覽器,具有格網110之邏輯「圖像」或螢幕 15快照。舉例έ之’本圖像可提供格網110其組成節點115之 實體狀_ °各個節點115可為多種色彩之任—種,各個色彩 表不各種不同狀態。舉例言之,不合格的節點115為紅色, 已經被使用4已經被配置之節點115為黑色,而未經配置之 節點115可加景;線。此外,顯示畫面4術允許行政管理者移 2〇動指標器於節點115_者,以及觀視節點115之各種實體屬 性。舉例ό之,行政管理者可被提供包括下列資訊:「節 點」寿J用14」、「處理器之利用」、「記憶體之利用」、「溫 度」、貝體位置」、及「網址」。當然此等僅為資料攔位範 例,任何適當實體節點資訊或邏輯節點資訊皆可顯示給行 27 1287195 *、、只小旦叫^凡许
Mi% V, y 丁政管理者旋轉格網110之 親視角度,或允許執行純h適當功能。 細圖,例顯示晝面400b。顯示晝面儀呈現格 、、周110之邏輯態之一視圖或圖 α像邊具體例呈現配置於格網 叢集220上方,來觀視藉各個狀態而分組之多個節點丨丨5 (諸 如經配置或未經配置)。此外,行政管理者可移動指標器於 10工作空間230之一上方,因而可呈現適當工作資訊。舉例言 職部之虛擬叢細。顯示晝面聽進—步顯示配置於 叢集220内部用來執行—或多項卫作15()之二範例工作空間 230。顯示晝面4_允許行政管理者移動指標器於圖形虛擬
之,行政管理者可觀視工作名稱、開始時間、節點數目、 估計結束時間、處理器之使用情況、I/O使用情況等。 須瞭解管理GUI 126 (前文分別以顯示晝面4〇〇a及4〇〇b 表示)僅供舉例說明之用,而可包括所示圖形元件以及其它 15未顯示之管理元件中之無任一者、部分或全部。 第7圖顯示根據系統1〇〇之叢集管理弓丨擎13〇之一具體 例。本具體例中,叢集管理引擎130包括複數個子模組或組 成元件:實體管理器505、虛擬管理器510、工作排程器515、 及本地記憶體或變數520。 實體管理器505為可操作來決定各個節點115之實體健 康情況之任何軟體、邏輯、勒體、或其它模組,以及實體 管理505可基於此專測定之「健康情況」來有效管理節點 115。實體管理器可使用此等資料來有效判定節點115之故 障,與對節點115之故障做回應。一具體例中,實體管理器 rs) 28 1287195 505係通訊式耦接至複數個代理器132,各個代理器132係駐 在一個節點115。如前文說明,代理器132集合至少實體資 詋且將該資訊通訊給實體管理器5〇5。實體管理器進一 步可操作來透過網路1〇6通訊警告於客端12〇之系統行政管 5 理者。 虛擬管理器510為可管理虛擬叢集22〇及節點115之邏 輯狀態之任何軟體、邏輯、韌體、或其它模組。通常虛擬 管理器510鏈接表示節點115之邏輯電路與節點U5之實體 狀態。基於此等鏈路,虛擬管理器51〇可產生虛擬叢集22〇, 10且對虛擬叢集220處理各項變化,諸如響應於節點故障或 (系統或使用者)請求加速HPC處理而做出回應。虛擬管理器 510也可將虛擬叢集220之狀態諸如未經配置之節點ns通 訊給工作排程器515,俾便動態回填未經執行的、或佇列等 候的HPC程序及工作15〇。虛擬管理器51〇可進一步判定工 15作150與特定節點115之相容性,且將此資訊通訊給工作排 程器515。若干具體例中,虛擬管理器51〇可為呈現個別虛 擬叢集220之物件。 特定具體例中,叢集管理引擎130包括排程器515。排 程斋515包括硬體、軟體、或嵌置式邏輯組成元件或一或多 20個此種組成元件可根據排程演繹法則來配置節點丨15給工 作150。特定具體例中,排程器515係插入即用。特定具體 例中,響應於叢集管理引擎130之接收工作15〇,叢集管理 引擎130呼叫排程器515來配置一或多個節點115給工作 150。特定具體例中,當叢集管理引擎13〇呼叫排程器515配 is) 29 1287195
置一或多個節點115給工作150時,叢集管理引擎13〇對排程 器515識別於格網110中可供用來配置給工作15〇之節點 115。舉例言之,但非限制性,當叢集管理引擎130呼叫排 程器515來配置一或多個節點115給工作150時,叢集管理引 5擎130可將格網110中可供用來配置給工作150之全部節點 115之串列通給排程為515。特定具體例中,唯有在可供 用來配置給工作150之卽點115之數目係大於或等於請求用 於工作150之節點115之數目時,叢集管理引擎13〇才呼叫排 程器515來配置一或多個節點115給工作15〇。 10 如前文說明,特定具體例中,袼網110為各自耦接至四 埠CPU 164之交換器166之三維圓環。排程器515邏輯組配袼 網110為節點115之圓環。尺寸[x,y,2]之交換器166之圓環可 提供六種可能之邏輯組配狀態:[4x,y,z;|、fx,4%z;|、k y 4z]、[2x,2y,z]、[2x,y,2z]、以及[x,2y,2z]。當排程器 5i5 15配置一或多個節點115給一工作150時,排程器515可選擇最 適合於工作150之邏輯組態。 訊息進送介面(ΜΠ)為工作150之多項處理程序之通訊 標準。特疋具體例中’排程盗515對配置給一工作15〇之各 個節點115指定一個ΜΠ等級。對包括N項處理程序之—工 20作150而言,排程器515對各項程序指定0與N-1間的一個獨 特整數等級。為了通訊訊息給工作150之第一程序,工作15〇 之第二程序可載明第一程序之第一等級。同樣地,為了接 收來自工作150之第一程序之訊息,工作15〇之第二程序可 載明第一程序之等級。排程器515也界定一或多個廣播群, 30 1287195 個別輔助由該廣播群之程序通訊訊息給該廣播群之全部其 它程序。欲由一廣播群之第一程序接收訊息,該廣播群之 第二程序可載明該廣播群。 特定具體例中,排程器515可處理三種型別之請求:「交 5 間」、「精簡」、及「任何」。述及「請求」涵蓋工作15〇(砮 屬適當),及反之亦然(若屬適當)。當使用者提交一工作15〇 給HPC伺服器102時,使用者可載明請求型別。「空間」請
求涵蓋以空間方式描述之工作150。一類現有MPI應用程式 假設於一工作150之多項程序間之空間關係。例如氣候模变 10屬於其中一例。為了處理包括氣候模型之工作150,HPC伺 服器102可使用涵蓋經度及緯度(或類似之座標系)之二維格 網來區隔地表,且將時間週期劃分成為分散之時階。工作 150之各項處理模型化一特定區之氣候。於各個時階之起 點,處理與該處理相鄰之四項其它處理個別交換邊界值, 15然後運算特定一區之氣候。為了處理包括氣候模型之工作 150,HPC伺服器1〇2可使用涵蓋經度、緯度及高度(或類似 之座標系)之三維格網來替代二維格網來區隔地表。 用於一工作150之各項程序假設為空間關係之MPI應 用私式,使用者可對工作15〇請求節點115之三聯碼{&,办, 20 SZ)。若全部維度8皆係大於卜則請求為三維請求。若維度 8之一係等於1 ’則該請求為二維請求。若維度s之二者皆等 於1 ’則該請求為—維請求。為了配置節點II5給該項請求, 排程器515可映射空間座標至MPI等級如後:[x,y,2]七χ
Sy χ Sz +y χ Sz + ζ。Sx、巧及Sz指示請求之大小,χ為〇至
31 1287195
Sx’ y為0至Sy及z為〇至&。為了配置節點115給二維請求, 排程器515可映射空間座標至刪等級如後:[x,y] — ^ +y。特定具體例中,為了映射空間座標至MPI等級,排程 器515首先係沿格網11〇iz轴遞增,然後沿袼網11〇之y軸遞 5增’及接著沿格網110之X軸遞增。為了配合有關排程器515 映射空間座標至MI>I等級之不正確假設,例如首先沿格網 110之X軸遞增,然後沿格網11〇之乂軸遞增,以及接著沿格 網110之z轴遞増,叢集管理引擎13〇可將所請求的工作15〇 例如呈{Sz,Sy,Sx}呈現給排程器515。 10 一「精簡」請求涵蓋未做空間描述之工作150。排程器 515可配置節點115給一精簡請求來最小化配置給該精簡請 求之各對節點115間之最大通訊距離(或交換次數)。一「任 何」請求涵蓋極少要求或未要求處理間通訊之工作15〇。排 程器515可配置任何節點H5集合來滿足一項任何請求。此
15種工作150給排程器515提供機會來填補於袼網ho由於分 段所造成的孔洞。 當使用者提交工作150給HPC伺服器102時,使用者也 於工作150載明激進旗標。特定具體例中,激進旗標為(^至^^ 間之浮動點數目,指示分配給排程器515用於配置節點115 20給工作150之餘裕度。數目較高,則比較數目較低給予排程 器515較大餘裕度。若使用者提交一空間請求給Hpc伺服器 102且於该空間請求設定激進旗標為零,則唯有於節點us 可供用於配合该空間請求時,排程器515才排程該工作 150。特定具體例中,若使用者提交空間請求給HPC伺服器 32 1287195 102,且設定於該空間請求之激進旗標為大於零之數目,則 排程器515嘗試配合該空間請求;但若排程器515無法配合 該空間請求,則將工作15〇排程為精簡請求。特定具體例 中,一精簡請求允許配置給該精簡請求之成對節點115間有 不受限制之交換次數。排程器515經常性配合此項請求,原 因在於如前文說明,唯有於可用於配置之節點115之數目係 大於或專於所清求之郎點115之數目時,叢集管理引擎 才呼叫排程器515。特定具體例中,於精簡請求之激進旗標 指示配置給該精簡請求之成對節點115間之交換次數限 1〇制。此種具體例中,對交換次數之限制可等於,此處a 1 一a 為激進旗標。 15
20 特定具體例中,當叢集管理引擎130呼叫排程器515來 配置一或多個節點115給一工作150時,叢集管理引擎130提 供下列輸入信號給排程器515 :請求之節點115數目;請求 型別;工作150之尺寸;工作150之激進旗標;格網110之基 於交換器之大小(排程器515後來調整來決定格網11〇之基 於節點之大小);每個交換器166之節點115數目(於特定具體 例係等於4);可供配置給工作150之節點115數目;以及可 供配置給工作150之一或多個節點115之ID(例如可供配置 給工作150之全部節點115之串列)。特定具體例中, RequestedNodes指示請求之節點115數目,RequestType指示 請求型別,RequestedSize(包括一陣列)指示工作150之大 小,AggressiveFlag指示工作150之激進旗標,TorusSize(包
(S 33 1287195 括陣列)指示格網11 〇之基於交換器之大小,NodesPerSwitch 指示母個交換器166之節點115數目,NumFreeNodes指示可 供配置給工作15〇之節點丨丨5數目以及FreeNodeList(包括一 陣列)識別可供配置給工作15〇之一或多個節點115。 5 特定具體例中,當排程器515排程(或嘗試排程)一工作
150時,排程器515提供下列輸出信號:配置給工作150之節 點115之ID(諸如配置給工作150之節點115串列);配置給工 作150之各個節點之MPI等級;以及一回覆值指示(1)排程器 515排程工作150,(2)排程器515未排程工作150或(3)排程器 10 515未曾排程工作150。 特定具體例中,為了配置節點115給一工作150,排程 器515首先初始化排程工作150之變數,然後根據該等變數 來排程工作150,以及接著轉換於叢集管理引擎130處理之 時程(或結果)。三項變數亦即SpatialAllowed、 15 CompactAllowed及AnyAllowed指示容許之排程型別。排程 器515可使用下列實例邏輯來初始化SpatialAllowed、
Compact Allowed 及 AnyAllowed : • If the NodesRequested = 1 〇 SpatialAllowed = False 20 〇 CompactAllowed = False 〇 AnyAllowed = True • Else If RequestedType = SPATIAL 〇 SpatialAllowed = True 〇 AnyAllowed = False 〇 If AggressiveFlag > 0 • CompactAllowed = True 〇 Else ⑧ 34 25 1287195 • ComPact Alio wed = False • Else If RequestedType = Compact 〇 Spatial Allowed = False 〇 CompactAllowed = True 〇 Any Alio wed = False • Else If RequestedType = Any 〇 Spatial Alio wed = False 〇 CompactAllowed = False 〇 Any Alio wed = True 10 特定具體例中,排程器515定向格網丨1〇之基於交換器
之大小,指出較大格網110尺寸係排於較小格網110尺寸之 前。TorusMap(包括一陣列)指示定向來指出較大格網110尺 寸排在較小格網110尺寸前方之格網110之基於交換器之大 小。排程器515施加TorusMap至於FreeNodeList中所識別之 15 全部節點 115。InverseTorusMap(包括一陣列)為TorusMap之 倒數,排程器515施加InverseTorusMap至配置給一工作150
之節點115串列,隨後送返該串列給叢集管理引擎130供處 理。舉例言之,但非限制性,若叢集管理引擎130通訊 14x16x15之基於交換器之圓環大小給排程器515,則排程器 20 515設定TorusMap為{2, 0, 1}。然後基於交換器之圓環大小 變成16x15x14,對FreeNodeList中具有指標{x,y,z}之一節 點115而言,於排程器515施加TorusMap後,節點115之指標 為{y,z,x}。前述實例之InverseTorusMap為{1,2,0}。 特定具體例中,NumMapDimensions指示當將基於交換 25 器之圓環轉成基於節點之圓環時之修改維度數目。 MapDimensions[2]及MapMod[2]提供修改維度指標及修改 35 1287195 維度個別之乘數。排程器515可將修改維度之一乘以4,或 將修改維度二者個別乘以2。排程器515決定施加何種乘 法,然後據此來修改圓環大小(最初係以交換器作說明)。排 程器515根據RequestType決定應用何種乘法。 特定具體例中,排程器515施加一或多幾何轉換給一請 求來產生可滿足該請求之網格串列。一網袼包括嵌置於才久 網110内部之一框。一起點[Sx,Sy,SZ]及一終
10 界定一網格。若一網格具有一或多維之起點大於終點,則 該網格「包袤」於一或多維。舉例言之,但非限制性,乓 有起點於[3,7,5]及終點於[2,9,4]之網格包裹於χ維及父 維。若[SxSxSEx]、[Sy水Ey]、及[sz^ez],則於袼網 之點[x,y,z]係駐在一非包裹網袼。於排程器515產生可滿足 該項請求之一網格串列後,排程器515迴圈通過該串列,直 到排程器515識別一網格,其就可供配置給該請求之節點 15 U5之集合而言為可排程。通常三維請求可獲得六個滿足該
請求之網格,二維請求可獲得數十個滿足該請求之網格, 以及一維凊求可獲得數百個滿足該請求之網格。特定具體 例中,排程器515對二維請求或三維請求設定基於節點之圓 環’來最大化可滿足該項請求之網袼數目。 欲初始化排程(或配置一或多個節點〗15給)一維請求之 變數,排程器515設定格網11〇之交換器166之y軸及z軸為 2x2郎點115組態。排程器515映射工作I%,讓格網no之交 換盗166之z轴為未被使用之維度。然後排程哭$ 1 $沿z辦將 工作150摺疊成y軸。因此特定具體例中,下述應用於〆雉 36 CS: 1287195 請求:
NumMapDimensions=2 MapDimension[0]=1 MapDimension[ 1 ]=2 5 MapMod[0]=2
MapMod[l]=2
[n]表示具有指數於〇至l-n(視何者適當而定)之一維陣列。舉 例言之而非限制性,a={4, 6, 2}若屬適當係對應於a[〇]=4、 a[l]=6及a[2]=2。 10 特定具體例中,排程器515也設定袼網11〇之交換器166 之y軸及z轴為2x2節點115組態,來初始化排程二維請求之 變數。特定具體例中,排程器515將一二維請求摺疊至第三 維未被使用維,來產生較為精簡之形狀供排程之用。由於 可貫施多項此種摺疊,排程器515可選擇一組態(與2x2節點 15 U5組態不同)其產生最大摺疊數目。排程器515對一二維請 求檢查六種可能組態之各個組態,以及對六種可能組態個 別計算可能之摺疊數目。特定具體例中,排程器515選出允 許獲得最大可能摺疊數目之組態。特定具體例中,當兩個 1x4組態間有連繫時,排程器515首先選擇修改z轴之1χ4組 20態,以及接著選擇修改y軸之1x4組態。特定具體例中,當 1x4組態與2x2組態間有連繫時,排程器515選擇2x2組態。 特定具體例中’當兩個或兩個以上之2X2組態間有連繫時, 排程器515首先選擇修改y軸及z軸之2χ2組態,然後選擇修 改X軸及ζ軸之2x2組態以及然後選擇修改乂軸及y轴之2χ2組 25悲。特定具體例中,排程器515初始化排程三維請求之變 37 1287195 數’如同排程器515初始化排程二維請求之變數般,只有當 二維請求允許六個方向(或旋轉)其相對於彼此各自為獨 特,而非三維請求允許摺疊時除外。
特定具體例中,為了初始化排程精簡請求之變數,排 5 程器515將精簡請求之z轴乘以4來產生1x4組態。使用1x4 組態來處理精簡請求’將有助於使用麵接至一交換器166配 置給該精簡請求的全部節點115,如此又減少於格網11〇之 交換點之分段。特定具體例中,同樣地,排程器515初始化 排程任何請求之變數。 一個區隔是包括可用於排程之格網110之全部節點115 的最小網格。PartStart[3]指示該區隔之起點座標,PartEnd[3] 指示該區隔之終點座標,PartSize[3]指示該區隔之大小及
PartWraps[3]指示該區隔是否包裹。排程器515可組成一區 隔來縮短搜尋可滿足一請求之節點115之搜尋長度。一區隔 15可遠小於格網H〇。對i=〇、1及2而言,partStart[i]包括於 FreeMesh(包括一陣列)之全部可能的i座標之最小值;以及 PartEnd[i]包括於FreeMesh之全部可能的i座標之最大值。 PartSize[i] = PartEnd[i] - PartStart[i]。若partsize[i]係等於 TorusSize[i],則PartWraps[i]為真。排程器 515對FreeMesh 2〇 之全部節點設定NodelnUse(包括一陣列)為 NODE一NOT一IN_USE,以及對全部其它節點設定為 NODE IN USE。 特定具體例中,FreeY[i,j,k]含有沿線{丨,」·,“至忱 TorusSize[l]-l,k}之自由節點115數目。FreeX[i,j,k]包括沿 38 1287195 線{i,j,k}至{TorusSize[0]-l,j,k}之自由節點115數目。排程 器515使用FreeY[i,j,k]及FreeX[i,j,k]來執行掃描演繹法 則,說明如後。特定具體例中,唯有於SpatialA11〇wed或 CompactAllowed為真時,排程器515才組成preeY[i,j k]及 5 FreeX[i,j,k]。 若SpatialAllowed為真,則排程器5丨5嘗試排程一請求 至夕種結構。尺寸S-{Sx,Sy,Sz}之空間工作有高達六個獨 特方向{Sx,Sy,Sz}、{Sx,Sz,Sy}、{Sy,Sz}、{Sy,Sz,
Sx}、{Sz,Sx,Sy}、及{Sz,Sy,Sx}。六個方向係對應於排 10程器515可施用至一網格之四個獨特9〇度旋轉以及兩個獨 特180度旋轉。若有任二維度彼此相對,則只可利用三個獨 特方向。排程器515於排程一網格時考慮全部可能的方向。 若-工作150為二維,換言之,工作15〇之一維係等於丄,則 排程器515可將工作150之二使用維度亦即工作15〇之大於ι 15之維度之任-者,以手風琴之方式摺疊成為工作15〇之未被 使用維度,亦即工作15〇之等於!之維度,來產生較為精簡 之三維網格。若排程器515摺疊一維,其非為該指疊長度之 整數倍數’則末褶將比先前之全部各褶皆更短,結果導致 二維網格鏈接至三維網格。若工作⑼為一維,則排程器515 可將工作150摺豐人二未被使用維之任—者。,然後排程器 可將所得一維之任一者摺疊入剩餘一個未被使用之維 度。結果所得之網袼形狀通常為四個網格之鏈接。 第8圖顯示將—維請求摺疊入y維之實例。第8圖中,排 程器515使用稽長度為4,來將該—維請求{1,1>11}指疊入y 39 1287195 5
15
20 維,來產生一個二維網格{1,2,4丨,以及一個一維網格{1, 3}鍵接於該二維網袼。排程器515可將第一褶編號為〇,第 一稽編號為1,以及第三短褶編號為2。當排程器515指定 Μ PI等級給沿一褶之多個節點丨丨5時,該M j等級隨著沿偶 編號褶之z值之增加而遞增,以及沿奇編號褶之2值之減少 而遞增。舉例言之,但非限制性,節點115之MPI等級於[〇, 〇]可為0 ’節點115之MI>I等級於[0, 1]可為1,節點115之MPI 等級於[0, 2]可為2,節點ι15之MPI等級於[0, 3]可為3。節點 115之ΜΠ等級於[1,3]可為4,節點115之MPI等級於[1,2]可 為5等。由於該褶具有偶編號,故鏈接係始於z=〇。若排程 器515係使用完整褶之奇編號來摺疊請求,則鏈接將始於 z=3 ’持續朝向义=0向内。特定具體例中,排程器%之考慮 手風琴狀之褶。可存在有其它型別之褶。舉例言之,但非 限制性,一褶可產生樓梯間之形狀。排程器515可於一維工 作150禁止某種褶。如前文說明,特定具體例中,排程器515 將一維工作150摺疊兩次。第二褶係摺疊排程器515首次摺 疊之一維,或將排程器515摺疊之一維摺成第一褶。第8圖 中,排程器515已經摺疊z維且摺疊成為y維。若第二褶摺疊 排程器515首次已經摺疊之一維,則排程器515將對共有四 個網格產生多達三個鏈接。特定具體例中,排程器515允許 不多於二鏈接。結果當排程器515排程一維工作15〇時,除 非苐一摺未能獲付鍵接’否則弟二摺係限於摺疊排程5| 515 首次已經摺疊之一維。若一工作150之大小為褶長度之整數 倍數’則無法獲得鏈接。特定具體例中,此種限制確保排 40 1287195 程器515不允許多於二鏈接。特定具體例中,排程器515最 初組成可滿足一項請求之全部可能網格。若該請求為一維 或二維,則排程器515組構成各個可能之手風琴狀褶、以及 各個此種褶之個別可能之方向。若該請求為三維,則排程 5 器515組構該請求之各種可能方向。特定具體例中,排程器 515使用Try Structures串列來記錄各個此種組成,說明如 後0
若CompactAllowed為真,則排程器515組構含有所請求 節點115數目之精簡網格。排程器515指定該網袼為最佳匹 10配,且儲存該網格於BestFit(包括於陣列)。舉例言之,但非 限制性,设N為所請求之節點115數目,以及Q為n截頭為整 數之立方根。排程器初步設定以“拖為㈧,Q,仍。若 N-Q ,則排程器515完成。否則,排程器515將根據 BuildCompactFits函數而遞增BestFit之一維或多維,說明如 後。然後排程器515組構具有維度大於或等於⑽㈣維度, 而小於或等於格網110維度之全部網格,以及排程器515使 用Fit(包括一陣列)來記錄該等網袼。 然後排程器515由Fit去除非期望之網格。如前文說明, 特定具體例中’格網110為各自輕接至四部cpu 164之交換 20器⑽之三維圓環。排程器515藉—維使用因數4或一二維使 用因數2來修改圓環,來考慮包括每個交換器166包括四部 CPU 164之格網u〇。為了提高排程器515滿足請求之機率, 因此當交換器166之-部CPU 164執行一程序時,於交換器 166之全部咖164將執行料,排㈣15只維持具有於- 41 1287195 或夕6改維度具有乘法因數之整數倍數之大小之網格。舉 例言之’但非限制性,若排程器515於乂維將交換器之圓 環乘以2,而於z維乘以2,則排程器515將只維持具有偶婢 及z維之網袼於Fit。 5 然後排程器515根據其餘網格之最大交換次數來分類 於Fit中之其餘網袼。於尺寸一網格 之介於二節點間之最大距離為作' Sy,Sz}。若二網袼具有 彼此相同之最大交換次數,則排程器515將該網格置於比其 它網格更接近立方塊。舉例言之,但非限制性,Μι={4, 6, 16} 1〇 &M2={8, 9, 9}具有相等最大距離,但排程器515將M2置於 Μ!之前。 即使排程器515並未由Fit去除非期望的網格,排程器 515將不會產生包含至少n節點115之全部網格。舉例言之, 但非限制性,若N=27及BestFit={3, 3, 3},則Fit將不含網格 5 {1,1,。網格{1,丨,27}無法獲得合理的網格數目,經常
性獲得滿足一項請求之至少一個網格,原因在於;pit包含等 於格網110之一網格,以及唯有N係小於或等於格網11〇内部 之節點115數目時,叢集管理引擎13〇才呼叫排程器515。 若AnyAllowed為真,為了組構一或多個自由網格,排 20 程器515迴圈通過NodelnUse,以X軸作為外迴圈,y軸作為 次迴圈,以及z軸作為内迴圈,直到排程器515識別出自由 節點115為止。自由網格包括只含自由節點115之一個網 格,自由節點115包括可配置給一工作150之節點115。排程 器 515 組成 NumFreeMeshes 及 FreeMesh[NumFreeMeshes]。 42 1287195
NumFreeMeshes表示於格網1之自由網格數目’以及 FreeMesh為對格網110之各個自由網格,識別格網110之一 或多個自由網格結構之一串列。舉例言之,但非限制性, 節點115之指標可為{il,jl,kl}。排程器515可遞增z軸,直 5到排程器515識別出一個非自由節點115為止,諸如(n,J1, k2}。排程器515可將FreeMesh.start[2]設定為kl及 FreeMesh.end[2]設定為k2-l。FreeMesh.start[2]係對應於沿 該z軸之一自由網格之起點值,以及FreeMesh.end[2]係對應 於自由網格之結束值。排程器515隨後遞增y軸,始於jl, 10 來識別第一值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, k2-l}包括至少一個非自由節點。然後排程器515設定 15 FreeMesh.start[0]為 i 1 及 FreeMesh.end[0]設定為 i2_ 1。排程器 515重複前述處理至排程器515涵蓋格網110内部的全部節 點115為止。别述程序無法獲得獨特之自由網格集合。以不 同順序迴圈傾向於產生不同之自由網格集合,但唯有二或 二以上之自由網格彼此共享一邊界。完全由節點115包圍於 2〇其中之一自由網格經常為獨特。第9圖及第1〇圖顯示於二維 情況下,使用y軸作為内迴圈與使用χ軸作為内迴圈間之差 異。第9圖顯示使用y軸作為内迴圈所組成之兩個自由網 格,以及第10圖顯示使用x軸作為内迴圈所組成之兩個自由 網格。第9圖中,區530包括使用中之節點115,區532&為第 43 1287195 -自由網格,以及區532b為第二自由網格。同樣地,第⑺ 圖中,區530包括使財之節點出,區仙為第一自由網 格,以及區532b為第二自由網格。 特定具體例中,排程器515使用第一排程演繹法則來排 5程空間請求,使用第二排程演繹法則來排程精簡請求,以 及使用第二排程演繹法則來排程任何請求。第一排程演繹 法則與第二排程演繹法則彼此類似,但使用之掃描演繹法 則彼此有相對差異。若排程器515排程一工作15〇,則排程 窃515根據]\4?1等級而將配置給工作15〇之節點115列舉於 10 AssignedNodeList,換言之,AssignedNodeList[i]具有 MPI 等級i。 為了排程具有大小{Sx,Sy,Sz}之一空間請求,排程器 515使用一掃描演繹法則來搜尋該空間請求於NodelnUue之 起點。下述實例邏輯提供一掃描演繹法則實例之範例說 15 明。PartStart為一區隔之起點,partEnd為一區隔之終點, 以及Tx、Ty及Tz分別為於X、y及z維之圓環尺寸。
For X = PartStart[0] to PartEnd[0]
For = PartStart[l] to PartEnd[l]
For z = PartStart[2] to PartEnd[2] 20
Hit = True
For i = x to x+Sx-l For j=y toy+SyA For k = z to z+Sz-1
If (NodeInUse[/ mod TxJ mod Ty, k mod Tz) 25 = NODE—IN—USE
Hit = False
End If 44 1287195 10
End For End For End For If (Hit = True) Return True End If End For End For End For Return False 特定具體例中,可施用於精簡請求之掃描演繹法則可 以Count值替代前述Hit旗標,Count值於最内圈遞增如後: 15
25
Count = 0 For / = x to x+Sx-l For j = y toy+Sy-l For k = z to z+Sz-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 If (Count > RequestedNodes) Return True End If 前述邏輯相當無效,原因在於排程器515評估於 NodelnUue中的各點高達Sx X Sy X Sz次。於前述精簡請求 之掃描中,當z迴圈例如由zl遞增至zl + 1時,i及j内迴圈不
45 1287195 變,以及k迴圈只於終點改變。絲,由{x,y,zl}至㈣χ, y+Sy-uu之二維網格由進—步計算中被排除,排程器515 增加由+ ^ + ^
之二維網格來進-步計算。卜如内迴圈沿z轴計數尺寸{Sx, 5 sy,丨}之二維網格之序列中之自由節點115βζ迴圈去除一個 網格,加上另一個網格。y迴圈時出現類似沿y軸之效果。 FreeX及FreeY(皆包括陣列)可輔助縮短處理時間。特定具體 例中,排程器515使用下列演繹法則來掃描一精簡請求: • Define an array, zPlane[TorusSize[2]]? to store two dimensional 10 mesh counts. • Compute an end point of and z loops as follows i 〇 For / = 0 to 2 .If PartWraps[/] = True, end[z] = PartEnd[/] • Else end[z] = PartEnd[/] - Size[/] 15 〇 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 formeshes {x,PartStart[l],z} to {x+&c-l,PartStart[l]+办 • In particular embodiments, scheduler 515 would use 20 three loop here. FreeY used here reduces a Number of loops to two: one loop for x and one lop for z. FreeY[x,PartStart[l],z] - FreeY[x,PartStart[l]+办,2] provides a Number of free nodes 115 along line {x5PartStart[l],z} to {x5PartStart[l]+办-l,z} 25 inclusively. 〇 Set NewX = True for the below j; loop. • y loop 〇 IfNewX = Tme • Do nothing. 30 〇 Else 46 1287195 10
15 20 25 • Update zPlane • For each z = PartStart[2] to PartEnd[2], • Subtract free nodes 115 in line segment from {x,y-\,z} to {x+Sx-l,y-l9z} from Zplane[z] o Use FreeX[x?<y-l ?z] - FreeX[x+*Sx?>y-l 5z] to avoid looping over x • Add free nodes 115 in line segment from {x,y+Sy-l,z} to {x+*S!x-l?<y+5^-1 ?z} to zPlane[z] o Use FreeX|Xy+办—1〆]- FreeX[x+/Sx5<y+5y-l?z] to avoid looping over x 〇 Set NewX = False for a next 7 increment 〇 Set NewY = True for the below z loop ^ loop 〇 If NewY = 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]5 which is a sum of free nodes 115 in a two dimensional mesh from {x9y9z+SzA} to {x+sXA,y-\-SyA,z+Sz-l}. As described above, use FreeX to reduce a Number of loops from two to one. • Add zPlane[z+*Sz-l] to Count 〇 If Count > RequestedNodes, Return True 特定具體例中,排程器515施加下列修改之一或多者來 定址包裹於一維之一區隔:(1)若該維之指標超過陣列極 限,則排程器515於任何陣列參照前施加一模量函數至指 標;以及(2)若該區隔係包裹於X維或y維,為了對應線段例 30 如由點a至點b運算自由節點115,排程器515對二線段運算 自由節點115,其中一線段係由點a至該區隔於X維或y維之 47 1287195 終點’以及另—線段係由該區隔起點至點匕。 似前用於空間請求之掃描演繹法則係類 5 10 中,適用二:fr,求之掃描演繹法則。特定具體例 义明求之掃描演释法則與適用於精簡嗜长之 :Γ:_則間之差異包括下列:⑴替代— 之一點有特殊c〇unt,排程器515尋找於該網格 =1,於該點全部節點115皆為自由,如此可減少記憶體 以及(2)排程器515需要處理—或多個鏈接的網格, 在於如敎朗,難器515可處理—料 求摺疊來產生-基本網格,其具有至多兩個額外網格2 於該基本網格上。特定具體射,此種對掃描演繹法則之 修改傾向於縮短排程器515排程16χ16χ16組態相關聯 大回合時間達一或多個次羃幅度。 為了排程-空間請求,排程器515使用排程演釋法則, 15該排程演繹法則將掃描演繹法則施用至Try結構串列中的 _ 各個Try結構,直到排程器515識別出一個可排程之Try結構 為止。若該串列中並無任何Try結構可排程,以及空間請长 之激進旗標為0,則排程器515返回叢集管理引擎13〇,而未 排程該空間請求。否則,排程器515使用精簡排程演繹法則 20 來嘗試排程該空間請求。 、 特定具體例中,根據空間演繹法則排程一請求涉及多 達三次轉換··兩次摺疊與一次旋轉。排程器515係使用 中之下列欄位來追蹤該等轉換: • Try.riVfap為旋轉之映射函數。Try.rMap為具有映射一 48 1287195 點之指標之具有3元體之一陣列。舉例言之 ,但非限制性,
Try.rMap={l,0, 2}表示指標〇映射至j 指標1映射至〇 及指標2映射至2,故於該映射下,{χ • Try.irMap 為 Try.rMap 之倒數。 以
• Tiy.NumFddMaps指示可產生Try結構之褶數。 • Try.foldLength為指示褶長度之陣列。 • Tiy.foldFrom為指示經摺疊維度之指標之陣列。舉例 言之,但非限制性TryefoldFr〇m[i]=2指示z軸摺疊丨褶。 • Tiy.foldTo為指示摺疊後之維度指標之陣列。 • Tty.foldFix為指示維持固定之維度指標之陣列。 特定具體例中,於排程器515使用Try結構判定一工作 150於袼網11〇之一起點為可排程後,排程器515指定刪等 級如後: •排程器515施加反轉映射至起點,來映射該起點至一 15預先轉換後之網格。排程器515組成褶,留下該網格之起點 為固定,故排程器515無需施加反褶。 •排程器515迴圈通過該經過前置轉換之網格,來產生 MPI等級。如前文說明,特定具體例中,χ軸為外迴圈,乂 軸為中迴圈,以及Z轴為内迴圈。 2〇 •排程器515將施加至該經前置轉換之網袼之轉換施 加至該迴圈中的各點{X,y,Z},其施加順序係根據排程= 515施加轉換至該經前置轉換之網格之順序,換言之,排程 器515摺疊〇,然後摺疊丨,接著旋轉該點來獲得於該經前置 轉換網格之一點{X,,y,,z,}。然後排程器515將該節點a, ⑧ 49 1287195 y’,z’}插入 AssignedNodeList 之末端。 特定具體例中,精簡排程演繹法則將掃描演繹法則施 加至Try結構串列中的各個網格,直到該精簡排程演繹法則 識別出一個有效Try結構為止。該串列之網格數目相當大 5舉例言之,但非限制性,對包括16><16><16節點115之一圓環 以及對100卽點115之一請求而言,BestFit = {4, 4, 5}導致於 Try結構串列中超過二千個網格。雖然可能需要應用二元搜 尋至該Try結構串列,但特定具體例中Try結構串列之二元 搜尋無效。除非下述情況,否則包括條件(:之二進制搜尋將 10無法_ ••⑴若對元件i、C為真,對全部大於或等於i之j、、 C為真;以及(2)若對元件i、c為偽,對全部小於或等於}之』、 C為偽。特定具體例中,Try結構串列之二進制搜尋無法操 作原因在於存在有一種可能性:例如使用網袼= 七μ ^掃描將制足#節點來滿足一項請求;_如使用網格 5奶唯2, 1()}來掃描則否,儘管結構串列中係高於 特定具體例中’最大距離之二進制搜尋可發揮效果。 右根據最大距離,排程器化於Try結構串列中將網格分 群則右全部大於或等於h•而言,排程器化可於有最大 >〇距離i之串列中識別出一網格匹配,則於串列中有最大距離 -0 J之至少-個網格也將匹配。若於串财並無具有最大距離 網格匹配,則串列中有最大距離係小於或等於i之網格將 皆不匹配。舉例言之而非限制性,假設{x,y,^為具有最大 巨離1之匹配網格。因此,有最大距離W且因 乂,計1}涵蓋{x,y,z},故{x,y,z+1}也可操作。感應施加至 d: 50 1287195 全部大於或等於i之j。若串列中有最大距離i之網格皆無法 操作,則就任何有最大距離i_l之網格{χ, y,z}而言,{x,y, Z+l}有最大距離i,{χ,y,z+l}也無法匹配。{χ,y,z}也無法 匹配,原因在於{x,y,Z+l}涵蓋{χ,y,z}之故。如此,排程 5 器515於初始化期間組構]^\〇丨81&1106[]^11111]^\〇丨81&1^8, 2]。
特定具體例中,於Fit網格之二進制搜尋無法保證最佳 匹配,但於最佳匹配可提供合理良好之上限。特定具體例 中,於Fit之網格之二進制搜尋為有效,例如可對約一千個 10網袼產生約十次掃描。排程器515也可使用上限來對最大長 度執行二進制搜尋,或由上限向下而進行線性搜尋。特定 具體例中,向下之線性搜尋較為有效。 排程器515於Fit執行二進制搜尋,以及迴送HighFit及
HighStart[3]。HighFit 為滿足一項請求之 Fit指標,HighFit 15為袼網110之匹配起點。執行向下線性搜尋之演繹法則係始 於HighFit及HighStart。特定具體例中,排程器515遞減目前 HighFit網格之最大距離。然後排程器515迴圈通過全部包括 最大距離的網格,直到排程器515識別出可滿足該項請求之 一網格為止。若排程器515識別出可滿足該項請求之一網 20格’則排程器5丨5將該網格設定為HighFit,再度遞減最大距 離,且重複處理程序。若排程器515未識別出此種網格,則 演繹法則退出,以目前HighFit為最佳匹配。若排程器515 無法對特定最大距離識別出匹配,則排程器515無法對較短 的最大距離識別出匹配。 ⑧ 1287195 排程器515迴圈通過Fit網格,且將一或多個節點115插 入AssignedNodeList之一端。三次迴圈之順序係依據排程器 515如何映射基於交換器之圓環至基於節點之圓環來決 疋。若排程器於一維使用4x1組態來映射基於交換器之圓 環,則該一維為内迴圈。若排程器515係於二維使用2x2組 態來映射基於交換器之圓環,則該二維為最内迴圈。 為了排私任何睛求’排程器515迴圈通過FreeMesh,填 補任何請求,直到排程器515已經指定所請求的節點115數 目給任何請求為止。 10 當排程器515迴圈通過FreeMesh時,排程器515將節點 115遞增插入AssignedNodeList。特定具體例中,排程器515 迴圈通過FreeMesh如後: • z軸為最内迴圈。當排程器515將基於交換器之圓環 轉換成為基於節點之圓環時,排程器515以因數4擴充z軸。 15使用2轴作為最内迴圈,可防止耦接至交換器116之CPU 164
的分段。 •於FreeMesh之其餘二維之較小維為中迴圈,其餘二 維之較大維為最外迴圈。 排程器515根據MPI等級來於AssignedNodeList使用基 2〇 於節點之座標來列舉選定之節點115。AssignedNodeList[i, 0] 為具有MPI等級i之節點115之X座標,AssignedNodeList[i,1 ] 為具有MPI等級i之節點115之y座標,以及 AssignedNodeList[i,2]為具有MPI等級i之節點115之z座 標。FreeNodeList為以基於交換器之座標表示,進送給排程 52 1287195 器515之可用節點115之串列。特定具體例中,為了設定於 FreeNodeList之mpiRank欄位,排程器515使用如下實例演繹 法則:
For / = 0 to NumFreeNodes - 1 5
〇 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 = 〇,l,2,3 • FreeNodeListf/].mpiRank = i • Exit j loop 下述實例邏輯描述排程器515之特定具體例。特定具體 例中,當叢集管理引擎130呼叫排程器515來排程工作150 15 時,叢集管理引擎130將下列輸入參數值通訊給排程器515: RequestedNodes ··指示所請求之節點115號碼。 RequestType :指示請求之型別,設定為SPATIAL、 COMPACT 或 ANY。 20
RequestSize :指示之請求之大小之有三個元素之陣 列。只對 SPATIAL requests有效。
AggressiveFlag : 0與1間之浮點數目,指示用於配置節 點115給工作150之分配給排程器515之餘裕度。
TorusSize ··指示格網110之基於交換器之大小之有三個 元素之陣列。 25 NodesPerSwitch :格網110中搞接至各個交換器166之 CPU 164之號碼。 ⑧ 53 1287195
NumFreeNodes : FreeNodeList之節點 115之號碼。 FreeNodeList : FreeNode結構串列,指示可供排程用之 節點115之基於交換器之座標。 特定具體例中,於排程器515嘗試排程一工作150後, 排程器515迴送下列之一:
PQS_ASSIGNED :指示排程器515已經排程工作150。 PQS—NO—ASSIGNMENT—AT—SPECIFIED JTIME ··指示 排程器515尚未排程工作150。 PQS—NO—ASSIGNMENTJFOR—JOB_CATEGORY :指 10 示即使格網110之全部節點115皆可供利用,排程器515也未 曾排程工作150。 15 若排程器515排程工作150,則排程器515據此來設定 FreeNode結構之mpiRank欄位。特定具體例中,叢集管理引 擎130與排程器515間之包裹器功能將來自叢集管理引擎 130之輸入信號轉換成排程器515所期望的格式,以及將來 自排程器515之輸出信號轉換成叢集管理引擎130期望的格 式0 特定具體例中,判定工作150是否理論上可排程之 setSchedulable涵蓋下述實例邏輯: 20 If setSchedulable() = False
Return PQS一NO一ASSIGNMENT—FOR一JOB CATEGORY End If
If initScheduler() = False
Return PQS一NO一ASSIGNMENT一AT—SPEOTIED—TIME 25 End If
If RequestedNodes > NumFreeNodes 54 1287195 ret = False Else ret = scheduleJob()
End If 5 If ret = True setMpiRank()
Return PQS-ASSIGNED Else
Return PQS—NO_ASSIGNMENTAT_SPECIFIED_TIME 10 End If ' ~ 特定具體例中,排程器515呼叫來排名工作大小之Rank 涵蓋下述實例邏輯。Rank之輸入信號包括具有三個元素之 一維陣列In[3]。Rank之輸出信號包含一維陣列Rank[3],其 具有3元素來以尺寸增加之順序,指示In之指標 15 In[Rank[0]Sln[Rank[l]]SIn[Rank[2]。特定具體例中,Rank 包括泡沫演繹法則。
Rank[0] = 0 Rank[l] = 1 Rank[2] = 2 For / = 0 to 2
For j = /+1 to 2
If In[Rank[/] < In[Rank[/] k = Rank[/]
Rank[/] = Rank[/] 25 Rank[/] = k
End If End For End For 特定具體例中,判定工作150是否為理論上可排程之 30 setSchedulable涵蓋下述實例邏輯· 55 (8) 1287195 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 NodesPerS witch Return False End If If NodesPerS witch not equal to four Return False; End If If RequestType = SPATIAL factor[0] = 2 factor[l] = 2 Rank(TorusSize? iRank) 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 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]] 56 30 1287195
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 [/Rank[Exceed[l]]
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[ 1 ]])
Return True End If return False End If return True 特定具體例中,設定容許的排程型別之initScheduler 25 涵蓋如下實例邏輯。若一工作150只請求一個節點115,則 無論原先請求為何,initScheduler設定容許的型別為Any :
If RequestedNodes = 1 or RequestType = Any Any Allowed = True SpatialAllowed = False 30 Compact Allowed = False
Else If RequestType = Compact 57 1287195 5 10
15 20
25
Compact Alio wed = True AnyAllowed = False Spatial Allowed = 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,/Rank) TorusMap[0] = iRank[2] TorusMap[l] = iRank[l] TorusMap[2] = /Rank[0] InverseTorusMap[iRank[0]] = 2 InverseTorusMap[iRank[l]] = 1 InverseTorusMap[iRank[2]] = 0 If SpatialAllowed = True If setTorusForSpatial() = False Return False End If Else If CompactAllowed = True If setTorusForCompactl() = False Return False End If Else If setTorusForAny() = False Return False End If End If ⑧ 30 1287195
For / = 0 to NumMapDimensions
TorusSize[mapDiminsions[/]] = mapMod[/] x TorusSize[mapDiminsions[/]]
End For 5 SetPartition()
If SpatialAllowed = True buildSpatialTries()
End If
If compact Alio wed = True 10 buildCompactFits()
End If
If Any Allowed = True buildFreeMeshes()
End If 15 If SpatialAllowed = True or CompactAllowed = True
InitScanQ End If return True 特定具體例中,對一空間請求,映射基於交換器之圓 20 環至基於節點之圓環之setTorusForSpatial涵蓋下述實例邏
Rank(RequestedSize, yRank) NumDim = 0 dNdx = 0 25 For / = 0 to 2
If RequestedSize[/] >1) twoD [NumDim] = i NumDim = NumDim + 1 Else 30 oneD[dNdx] = i dNdx = dNdx + 1 End If 59 1287195
End For If NumDim = 1
Return setTorusForlD() Else If NumDim = 2 5 Return setTorusFor2D()
Else
Return setTorusFor3D() End If
特定具體例中,於工作150之二最大維度將格網110乘 10 以兩個因數jRank[2]及jRank[l],亦即setTorusForlD涵蓋下 述實例邏輯: 15
25
NumMapDiminsions = 2 mapDiminsions[0] =/Rankin] mapDiminsions [ 1 ] = yRank[ 1 ] mapMod[0] = factor[0] mapMod[l] = factor[0]
For / = 0 to 3 ntSize[/] = TorusSize[TorusMap[/]]
End For For / = 0 to 3
TorusSize[/] = ntSize[/]
End For For z’ = 0 to 3
RequestedSize[z] = OriginalSize[/Rank[/]] JobMap[/Rank[/]] = i End For Return True 特定具體例中,setTorusFor2D係以如下六種方式之一 來映射基於交換器之圓環至基於節點之圓環: 60 1287195 1. {T[〇l mi Τ[2]} {Τ[〇1 2 X Γ[1]9 2 χ Τ[2]} 2. {7Τ〇]? Γ[1], Τ[2]} { 2 χ Γ[0]? Τ [1]? 2 χ Τ[2]} 3· {?!〇],Γ[1],Γ[2]} {2 χ Γ[0],2 χ 7Τ1],7Τ2]} 4· {Γ[0]9 Γ[1]? Γ[2]} {Γ[0]? Γ[1]? 4 χ Τ[2]} 5 5· {Τ[〇1 Τ[1], Τ[2]} {Γ[0]? 4 χ Γ[1]? Γ[2]} 6. {Γ[0]? Γ[1]? Τ[2]} {4 χ Γ[0]5 Γ[1]? Γ[2]}
Τ為TorusSize。前三個組態係來自於排程器515將每個 交換器166之節點115組配為2x2節點115所得結果。末三個 組態係來自於排程器515將每個交換器166之節點115組配 10 為1x1節點115所得結果。特定具體例中,setTorusFor2D計 數排程器515對各次映射所產生之Try結構,以及選出可產 生最多Try結構之映射。以繫結為例,setTomsFor2D係根據 前述順序來設定映射圖。排程器515將pSize[6, 4]組構為包 括: 15 pSize[i,0]=組態i之χ維之區隔大小。 pSize[i,1]=組態i之y維之區隔大小。 pSize[i,2]=組態i之z維之區隔大小。 pSize[i,3]=對組態i產生之繫結數目。 特定具體例中,setTorusFor2D涵蓋下述實例邏輯: 20 max = -1 maxNdx = -1 For / = 0 to 2 For j = /+1 to 3
NumMapDiminsions = 2 25 mapDiminsions[0] = (/+/) mod 3 mapDiminsions[l] = (/+/+1) mod 3 mapMod[0] = factor[0] ⑧ 61 1287195 10
15 20
25 mapMod[l] = factor[l] setTestPartSize(testPartSize) pSizes[/ +7 -1? 2] = testPartSize[2] pSizes[/ + y-1? 1] = testPartSize[l] pSizes[/ -1? 〇] = testPartSize[0] pSizes[/ + j -1][3] = cnt2DTries(testPartSize5 RequestedSize) If pSizes[/ +7 - 1][3] > max max = pSizes[/ - 1][3] maxNdx = i +j - l 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[/+35 1] = testspSize[l] pSizes[/+3, 0] = testspSize[0] pSizes[/+3][3] = cnt2DTries(testPartSize9 RequestedSize) if pSizes[z+3][3] > max max = pSizes[z+3][3] maxNdx = /+3 End If End For If max < 0 if CompactAllowed = True Spatial Allowed = False Return setTorusForCompact〇 Else return False End If Else
62 30 1287195
For / = 0 to 2 ntSize[z] = TorusSize[TorusMap[/]] End For For / = 0 to 2 5 10 15 20
25
TorusSize[/] = ntSize[/] End For If maxNdx < 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]]= Original S ize [/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 If mapDiminsions[0] = 2 i= 1 Else i = 2 End If RequestedSize[mapDiminsions[0]] = OriginalSize[/Rank[2]] RequestedSize[/] = OriginalSize[/Rank[l]] RequestedSize[3 - mapDiminsions[0] - i] = OriginalSize[/Rank[0]] JobMap[/Rank[2]] = mapDiminsions[0] JobMap[/Rank[l]] = i 63 30 1287195
15 20 % 25
JobMap[/Rank[0]] = 3 - mapDiminsions[0] - i End If End If Return True 5 特定具體例中,setTorusFor3D涵蓋下述實例邏輯: max = -1 maxNdx = -1 For / = 0 to 2 For j = /+1 to 2
NumMapDiminsions = 2 mapDiminsions[0] = (i+j) mod 3 mapDiminsions[l] = (z+y+1) mod 3 mapMod[0] = factor[0] mapMod[l] = factor[l] setTestPartSize(testPartSize) pSizes[z +y - 1? 2] = testPartSize[2] pSizesfz +j -l, 1] = testPartSize[l] pSizes[z - 1? 0] = testPartSize[0] pSizes[z - 1? 3] = cnt2DTries(testPartSize5 RequestedSize) If (pSizesfz - 1,3] > max) max = pSizes[z - 1, 3] maxNdx = / + y - 1 End If End For End For For / = 0 to 2
NumMapDiminsions = 1 mapDiminsions[0] = 2-/ mapMod[0] = NodesperGrid; setTestPartSize(testPartSize) pSizes[z+3? 2] = testPartSize[2] pSizes[z+3? 1] = testPartSize[l] 64 30 1287195 pSizes[/+3, 0] = testPartSize[0] pSizes[z+3]? 3] = cnt2DTries(testPartSize, RequestedSize If pSizes[z+3][3] > max max = pSizes[/+3? 3] maxNdx = /+3 End If End For
If max < 0 10
15 20
If CompactAllowed = True Spatial Allowed = 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[/] End For If maxNdx < 3 25
NumMod = 2 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] mapModfl] = factor[l] RequestedSize[mapDiminsions[0]] = OriginalSize[/Rank[l]] RequestedSize[mapDiminsions[l]] = OriginalSize[/Rank[2]] RequestedSize[3 - mapDiminsions[0] - mapDiminsions[l]]= OriginalSize[/Rank[0]] 65 30 1287195 10
15 20
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 /=1 Else / = 2 End If RequestedSize[mapDiminsions[0]] = OriginalSize[/Rank[2]] RequestedSize[z] = OriginalSize[/Rank[l]] requestedSize[3 - mapDiminsions[0] - i] = 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 特定具體例中,將一個精簡請求之z維設定為4x1組態 25 之setTorusForCompact涵蓋下述實例邏輯: For / = 0 to 3 ntSize[/] = TorusSize[tMap[/]] End For For i = 0 to 3 30 TorusSize[/] = ntSize[/] End For NumMapDiminsions = 1 ⑧ 1287195 mapDiminsions[0] = 2 mapMod[0] = NodesperGrid Return True 特定具體例中,將一個任何請求之z維設定為4x1組態 5 之setTorusForAny涵蓋下述實例邏輯: For / = 0 to 3 ntSize[/] = TorusSize[tMap[/]]
End For For / = 0 to 3
10 TorusSize[/] = ntSize[z]
End For
NumMapDiminsions = 1 mapDiminsions[0] = 2 mapMod[0] = NodesperGrid 15 Return True 特定具體例中,setPartition涵蓋如下實例邏輯:
For / = 0 to TorusSize[0] - 1 Fory = 0 to TorusSize[l] - 1 For A: = 0 to TomsSize[2] - 1
NodeInUse[/,jj] = NODE—IN—USE End For End For End For For / = 0 to 2 25 PartStart[z] = TorusSize[/]
PartEnd[/] = 0 End For
For / = 0 to NumFreeNodes - 1
To[0] = FreeNodes[/].coordinate[TomsMap[0]] 30 To[l] = FreeNodes[/].coordinate[TorusMap[l]]
To[2] = FreeNodes[/].coordinate[TorusMap[2]] 67 1287195 10
15 20
25
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[z].coordinate[3] / MapMod[l] 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—INJJSE Fory = 0 to 2 If To [/] < Part Start [/] 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[/] = TorusSize[/] - 1 PartWraps[/] = True Else PartWraps[/] = False End If PartSize[/] = PartEnd[/] - PartStart[/] + 1 End For 特定具體例中,組構FreeY及FreeX之initScan涵蓋如下 實例邏輯: 30 For / = 0 to TorusSize[0] - 1 For A: = 0 to TorusSize[2]- 1 Count = 0 68 1287195 5 10
15
For j = TorusSize[l] - 1 to 0 by -1 If NodeInUse[z,L NODE 一NOT—IN一USE Count = Count + 1 End If FreeY[/,j,々]=Count End For End For End For Fory = 0 to TorusSize[l] - 1 For A: = 0 to TorusStSize[2] - 1 Count = 0 For i = TorusSize[0] - 1 to 0 by -1 If NodeInUse[zV^] = NODE^NOTJN^USE Count = Count + 1 End If FreeX[zV,A:] = Count End For End For End For 20 特定具體例中,決定一請求之維度數目之
25 buildSpatialTries涵蓋如下實例邏輯: NumDim = 0 For / = 0 to 2 If RequestedSize[z] >1) NumDim = NumDim + 1 End If End For If NumDim = 1 build lDTryQ Else If NumDim = 2 build2DTry() Else 69 30 1287195 for / = 0 to 2
Try.baseSize[z] RequestedSize[z] End For
Try.NumConcats = 0 5 Try.NumFoldMaps = 0
NumberOfTries = 0 build3Dtry(Try? NumberOfTries) End If
特定具體例中,對一三維請求建置IVyList以及對—— 10 維請求或一二維請求之各個褶建置Try結構之build3Dtry涵 蓋如下實例邏輯: setOrient(Try,NumOrient,orient) if NumOrient > 0
For (/ = 0 to NumOrient - 1 15 ++NumTries;
Fory = 0 to 2
TryList[NumberOfTries] .baseSize[/]= Try.baseSize[orient[/5y]]
End For
TryList[NumberOfTries].NumConcats = Try.NumConcats; Fory = 0 to TryList[NumberOfTries].NumConcats - 1 For A: = 0 to 2
TryList[NumberOfTries.concatSize[/5 k]= Try.concatSize[/9orient[/5 k\]\ 25 TryList[NumberOfTries].concatStartNode[/5 k]=
Try.concatStartNode[/? orient[/5 k]];
End For End For
TryList[NumberOfTries].NumFoldMaps = Try.NumFoldMaps; 30 Fory = 0 to TryList[NumberOfTries].NumFoldMaps
TryList[NumberOfTries].foldLength[/] = Try.foldLengthjy] is) 70 1287195
TryList[NumberOfTries].foldFrom[/] = Try.foldFrom[/] TryList[NumberOfTries].foldTo[/] = Try.foldTo[/] TryList[NumberOfTries].foldFix[/] = Try.foldFix[/]
End For 5 For A: = 0 to 2
TryList[NumberOfTries].rMap[A:] = orient[z5 k] TryList[NumberOfTries].irMap[orient[/? k]]=;
End For
NumberOfTries = NumberOfTries + 1
10 特定具體例中,對一 Try結構計算獨特旋轉數目
NumOrient,以及對各次旋轉計算指標映射圖之setOrient涵 蓋如下實例邏輯:
NumOrient = 0; 15
If try.NumberOfConcatanations > 0 For / = 0 to 2 size[/] = try.baseSize[/];
Fory = 0 to try.NumConcats - 1
If try.concatStartNode[/5 i] > size[/] size[/] = Try.concatStartNode[/5 i] + Try.concatSize[/9 /]; Else If Try.concatStartNode[/? /] < 0 size[/] = size[/] - try.concatStartNode[/5 i]
End If
End For End For 25 If size[0] < PartSize[0] and size[l] < PartSize[l] andsize[2] <
PartSize[2] orient[NumOrient? 0] = 0 orient[NumOrient,1] = 1 orient[NumOrient,1] = 2 30 NumOrient = NumOrient + 1
End If
71 1287195
If size[0] < PartSize[0] and size[2] < PartSize[l] andsizefl] < PartSize[2] orient[NumOrient9 0] = 0 orient[NumOrient, 1] =2 5 orient[NumOrient,2] = 1
NumOrient = NumOrient + 1
End If
If size[l] < PartSize[0] and size[0] < PartSize[l] andsize[2] < PartSize[2] 10 orient[NumOrient? 0] = 1
orient[NumOrient? 1] = 0 orient[NumOrient,2] = 2 NumOrient = NumOrient + 1 End If 15 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 20 NumOrient = NumOrient + 1
End If
If size[2] < PartSize[0] and size[0] < PartSize[l] andsize[l] < PartSize[2] orient[NumOrient? 0] = 2 25 orient[NumOrient9 1] = 0 orient [NumOrient,2] = 1 NumOrient = NumOrient + 1
End If
If size[2] < PartSize[0] and size[l] < PartSize[l] andsize[0] < 30 PartSize[2] orient[NumOrient,0] = 2 orient[NumOrient,1] = 1 orient[NumOrient5 2] = 0 NumOrient = NumOrient + 1
72 1287195 5 10
15 20
25
End If Else If Try.baseSize[0] = Try.baseSize[l] If try.baseSize[0] = try.baseSize[2] 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 Else If Try.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[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 If Try.baseSize[2] < PartSize[0] and Tiy.baseSize[0] < PartSizefl] 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] (S) 73 30 1287195 10
15 20
25
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[l] < PartSize[2] and Try.baseSizefl] < 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[NumOrient? 0] = 1 orient[NumOrient5 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.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[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 74 30 1287195 5 10 15 20 25
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[NumOrient? 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[NumOrient9 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[NumOrient? 0] = 1 orient[NumOrient9 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 75 30 1287195 orient[NumOrient,1] = 2 orient[NumOrient,2] = Ο NumOrient = NumOrient + 1 5 10
End If If Try.baseSize[2] < PartSize[0] and Try.baseSize[0] < PartSize[l] and Try.baseSize[2] < PartSize[l] orient[NumOrient? 0] = 2 orient[NumOrient,1] = 0 orient[NumOrient,2] = 1 NumOrient = NumOrient + 1 15
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 20 特定具體例中,build2Dtry涵蓋如下實例邏輯:
25
Rank(PartSize5 pRank) build2DFold(PartSize,pRank,RequestedSize,NumFolds,FoldList) For / = 0 to NumFolds - 1 dl = RequestedSize[FoldList[/].fixDimension] + FoldList[/]. foldLengtht + FoldList[/].NumFolds If FoldList[/].remainder not equal 0 dl=dl + l End If Fory = / + 1 to NumFolds - 1 D2 = RequestedSize[FoldList[/].fixDimension] + FoldList[/]. foldLengtht + FoldList [/] .NumFolds If FoldList[/].remainder not equal 0 is) 76 30 1287195 D2 = d2 + 1
End If Ifd2<dl
TempFold = FoldList[/] 5 FoldList[/] = FoldList[/]
FoldList[/] = tempFold dl=d2 End If End For 10 15 20
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[0? FoldList[/]. foldDimension]=
FoldList[/].foldLength - FoldList[/] .remainder
Else
Try.concatStartNode[0? FoldList[/]. foldDimension] = 0 End If 25 try.concatStartNode[0?FoldList[/]. fixDimension] = 0 try,concatStartNode[0?FoldList[/]. oneDimension]= FoldList[d .NumFolds try.concatSize[05FoldList[/]. fixDimension] = try.baseSize [FoldList[/]. fixDimension] 30 try.concatSize[0? FoldList[/]. foldDimension] = FoldList[/]. remainder try.concatSize[0?FoldList[/]. oneDimension] = 1 Else try.NumConcats = 0 77 1287195
End If try.NumFoldMaps = 1 try.foldLength[0] = FoldList[/].foldLength try.foldFrom[0] = FoldList[/].foldDimension 5 try.foldTo[0] = FoldList[/]. oneDimension try.foldFix[0] = FoldList[/].fixDimension build3Dtry(Try? NumberOfTries)
End For 特定具體例中,建置一二維網格之全部可能摺疊之
10 build2Dfold涵蓋如下實例邏輯: j = 〇 oneD =-1 For / = 0 to 2
If size[/] = 1 and oneD = -1 15 oneD = i
Else
twoD[/] = I 7=7+1 End If 20 End For
If size[twoD[l]] > size[twoD[0]] bigD = twoD[l] littleD = twoD[0]
Else 25 bigD = twoD[0] littleD = twoD[l]
End If startFoldB = sqrt(size[bigD])
If startFoldB x startFoldB not equal size [bigD] or startFoldB = 1 30 StartFoldB = startFoldB + 1
End If endFoldB = size[bigD] / 2
78 1287195 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] 5 endFoldL = size[littleD] / 2 else endFoldL = 1 End If
NumFolds = 1
10 If endFoldB > startFoldB
NumFolds= NumFolds +(endFoldB — startFoldB+1)
End If
If endFoldL > startFoldL
NumFolds= NumFolds +(endFoldL - startFoldl+l) 15 End If foldlndex = 0;
FoldList[foldIndex] .foldLength =size[littleD]
FoldList[foldIndex] .NumFolds = 1 FoldList[foldIndex] .remainder = 0 20 FoldList [foldlndex]. foldD = littleD
FoldList[foldIndex].fixD = bigD FoldList[foldIndex].oneD = oneD 根據如下實例邏輯所組構成之陣列t為所得T ry之網格 大小。排程器515將t之Rank記錄於一陣列tRank。 25 /[littleD] = size[bigD] i[bigD] = FoldList[foldIndex]. foldLength /[oneD] = FoldList [foldlndex] .NumFolds rank(,,iRank) hit = False 30 For i\ = 0 to 2 while hit = False
If /[/Rank[/1]] > PartSize[pRank[zl]] hit = True 79 1287195 5 10
15 20
25
End If If hit = False foldlndex = foldlndex + 1 End If For / = startFoldB to endFoldB FoldList[foldIndex].foldLength == i FoldList[foldlndex] .NumFolds = size[bigD] / i FoldList[foldIndex] .remainder = size[bigD] mod ί FoldList [foldlndex]. foldD = bigD FoldList[foldIndex].fixD = littleD FoldList [foldlndex]. oneD = oneD i[littleD] = size[littleD] i[bigD] = FoldList[foldIndex].foldLength If (FoldList[foldIndex].remainder not equal 0 i[oneD] = FoldList[foldIndex].NumFolds + 1 Else i[oneD] = FoldList [foldlndex] .NumFolds End If Rank(i? iRank) 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 For i = startFoldL to endFoldL FoldList[foldIndex].foldLength = i FoldList [foldlndex] .NumFolds = size[littleD] / i FoldList [foldlndex] .remainder = size[littleD] mod i FoldList[foldIndex].foldD = littleD 80 30 1287195 5 10
15 20
FoldList[foldIndex].fixD = bigD FoldList[foldIndex].oneD = oneD /[bigD] = size[bigD] /[littleD] = FoldList[foldIndex].foldLength If FoldList[foldIndex].remainder not equal 0 i[oneD] = FoldList[foldIndex].NumFolds + 1 Else i[〇neD] = 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
特定具體例中,buildlDTry產生一維請求之摺疊串列, 且對各個糟呼叫build2DFold來產生一或多個額外褶之串 列。buildlTry將摺疊串列記錄於OneDFoldList,且涵蓋如 下實例結構: 25
Structure oneDFold Fold Structure Fold Structure integer integer End Structure
oneD twoD[x]
NumT woDF olds twoDFoldSize[3] 81 30 1287195 特定具體例中、oneD包括第一褶。特定具體例中,twoD 包括由該第一褶所產生之褶串列。NumTwoDFolds指示於 twoD之糟數目。特定具體例中,twoDFoldSize指示進送至 build2Dfold之網格大小。排程器515對twoD之元素產生Try 5 結構,且呼叫build3Dtry來對各次Try結構建置全部可能的 旋轉。特定具體例中,buildlTry涵蓋如下實例邏輯:
Rank(PartSize, pRank)
15
25
Rank(RequestedSize, 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]
OneDF oldList [0]. oneD. oneD = jRank[ 1 ] OneDFoldList[0].oneD.fixD ==yRank[0]
OneDFoldList[0].twoDFoldSize[/Rank[2]] = 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 82 30 1287195 5 10
15 20 25
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 = y Rank[2 ] (OneDF oldList [Num 1DF olds]. oneD. oneD = yRankf 1 ] OneDF oldList [Num 1 DF olds]. oneD. fixD = yRank[0] OneDF oldList [Num 1 DF olds]. twoDF oldSize [/Rank[2]]= OneDFoldList[Num 1 DF olds]. oneD. fo IdLength OneDFoldList[Num 1 DFolds] ,twoDFoldSize[/Rank[ 1 ]]= OneDF oldList [Num 1 DF olds]. oneD .NumF olds OneDFoldList[Numl DFolds] .twoDFoldSize[/Rank[0]] = 1 If OneDFoldList[NumlDFolds].oneD.remainder not equal 0 or gotRemZero = False If OneDFoldList [NumlDFolds]. oneD.remainder = 0 gotRemZero = True End If build2DFold(PartSize,pRank,RequestedSize,OneDFoldList [Num 1 DFolds]. twoDFoldSize, OneDFoldList [Num 1 DFolds] .twoD, OneDF oldList [Num 1 DF olds] .nTwoD Folds) NumlDFolds = NumlDFolds + 1 End If End For NumberOfTries = 0 For / = 0 to NumlDFolds Fory = 0 to OneDFoldList[/].nTwoDFolds (§) 83 30 1287195
If OneDFoldList[/].oneD.foldD not equal OneDFoldList[/]. twoD[/].foldD or
OneDFoldList[/].oneD.remainder = 0 try.baseSize[OneDFoldList[/].twoD|y].fixD] = OneDFoldList[/]. twoDF oldSize [OneDF oldList[/] .twoD [/]. fixD] try.baseSize[OneDFoldList[/].twoD[/].foldD] = OneDFoldList[/]. twoD [/]. foldLength 10 try.baseSize[OneDFoldList[/].twoD[/].oneD] = OneDFoldList[z]. twoD [/] .NumF olds; if OneDFoldList[/].twoD[/].remainder not equal 0 try.NumConcats = 1 if OneDFoldList[/].twoD[/].NumFolds is odd try.concatStartNode[09 OneDFoldList[/].twoD[/]. 15 foldD] = OneDFoldList[/].twoD[/]. foldLength - OneDFoldList[/].twoD[/]. remainder
Else 20 try.concatStartNode[0? OneDFoldList[z].twoD[/]. foldD] = 0
End If try.concatStartNode[0? OneDFoldList[/].twoD[/].fixD] =0 try.concatStartNode[0? OneDFoldList[/].twoD[/].oneD] 25 =OneDF oldList[/] .twoD [/] .NumF olds try.concatSize[09 OneDFoldList[/].twoD[/].fixD]= try.baseSize[OneDFoldList[/].twoD[/]. fixD] try.concatSize[05 OneDFoldList[/].twoD[/].foldD]= OneDFoldList[/] .twoD[/] .remainder try.concatSize[0 OneDFoldList[/].twoD[/].oneD] = 1;
Else try.NumConcats = 0
End If 84 30 1287195 5 10 15 20 25
If OneDFoldList[/].oneD.remainder not equal 0 if OneDFoldList[/].oneD.NumFolds is odd try.concatStartNode[try.NumConcats? OneDFoldList[/].oneD.foldD]= OneDF oldList [/]. oneD. foldLength -OneDFoldList[/].oneD.remainder Else try.concatStartNode[try.NumConcats5 OneDFoldList[z]. oneD.foldD] = 0 End If try.concatStartNode[try.NumConcats? OneDFoldList[z]. oneD.fixD] = 0 try.concatStartNode[try.NumConcats9 OneDFoldList[/]. oneD.oneD] = OneDFoldList[/].oneD. NumFolds try.concatSize[try.NumConcats? OneDFoldList[/].oneD. fixD] = 1 try.concatSize[try.NumConcats? OneDFoldList[/].oneD. foldD] = OneDFoldList[z].oneD.remainder try.concatSize[try.NumConcats? OneDFoldList[/].oneD. oneD] = 1 oneDEnd[0] = try.concatStartNode[try.NumConcats? 0] + try.concatSize[try.NumConcats5 0] - 1 oneDEnd[l] = try.concatStartNode[try.NumConcats? 1] + try.concatSize[try.NumConcats5 1] - 1 oneDEnd[2] = try.concatStartNode[try.NumConcats? 2] + try.concatSize[try.NumConcats5 2] - 1 A: = try.concatStartNode[try.NumConcats? OneDFoldList[/]. twoD[/]. foldD] / = oneDEnd[OneDFoldList[/].twoD[/]. foldD] If OneDFoldList[/].twoD[/] .NumFolds is odd try.concatStartNode[try.NumConcats? OneDFoldList[z]. twoD[/]. foldD]= OneDFoldList[/].twoD[/].foldLength- 85 30 1287195
10 1 - (k mod OneDFoldList[/].twoD[/]. foldLength) oneDEnd[OneDF oldList[/] .twoD [/]. foldD]= OneDFoldList[/].oneD.foldLength -1 - (1 mod OneDFoldList[/].oneD. foldLength) Else try.concatStartNode[try.NumConcats? OneDFoldList[/]. twoD[/]. foldD] = k mod OneDFoldList[/]. twoD [/]. foldLength oneDEnd[OneDFoldList[/].twoD[/]. foldD] = 1 mod OneDF oldList [/]. oneD. foldLength End If 15 20 25
try.concatStartNode[try.NumConca ts?OneDFoldList[/].oneD.oneD] = k / OneDFoldList[/].twoD.foldLength oneDEnd[OneDFoldList[/].oneD.oneD] = 1 / OneDF oldList [i]. oneD. foldLength try.concatSize[try.NumConcats,0] = oneDEnd[0]— try.concatStartNode[try.NumConcats90] + 1 try.concatSize[try.NumConcats5 1] = oneDEnd[l]- try.concatStartNode[try.NumConcats5 1] + 1 try.concatSize[try.NumConcats, 2] == oneDEnd[2]- try.concatStartNode[try.NumConcats?2] + 1 try.NumConcats = try.NumConcats + 1 End If try.NumFoldMaps = 2 try.foldLength[0] = OneDFoldListf/].oneD.foldLength try.foldFrom[0] = OneDFoldList[/].oneD.foldD try.foldTo[0] = OneDFoldList[/].oneD.oneD 86 30 1287195 10
15 20
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[z].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 curMax = curMax + 1 End If
For j = i +ltoNumberOfTries - 1 duplicate = True
For /1 = 0 to 2 while duplicate = True
If TryList[/].baseSize[/l] not equal TryList[/].baseSize[/] duplicate = False End If
End For
If duplicate = True and TryList[/].NumConcats = TryList[z]. NumConcats) 25 For il = 0 to TryList[/].NumConcats while duplicate =
True
For j 1 = 0 to 2 while duplicate = True
If TryList[/].concatStartNode[/l? jl] not equal TryList[/].concatStartNode[/l, j 1] 30 duplicate = False
Else If TryList[/].concatSize[zl? jl] not equal TryList[/] .concatSize[/1 ? j 1 ] duplicate = False End For
87 1287195 10 15 20
End For End If
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]
If TryList[/].NumConcats > 0 nxtMax = nxtMax + 1 End If
If nxtMax < curMax TempTry = TryList[/]
TryList[/] = TryList[/]
TryList[/] = tempTry curMax = nxtMax End If End If End For End For
NumberOfTries = NumberOfTries - NumDeleted 特定具體例中,建置BestFit[3]之buildCompactFits涵蓋 25 如下實例邏輯:
Rank(PartSize,PariRank) / = QubeRoot(ResuestedNodes) hit = False
For / == 1 to /+1 while hit = False 30 For j = i to /+1 while hit = False
For (k =j to /+1 while hit = False If i xj x k> RequestedNodes 88 1287195 10
15 20 25 利=i t[2] = k hit = True End If End For End For End For If i[0] < PartSize[PariRank[0]] If i[l] > PartSize[PariRank[l]] hit = False For t[2] = RequestedNodes / (t[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 =y to / + 1 while hit = False if (/[〇] xy x k> RequestedNodes t[2] = k hit = True End If End For End For if i[l] > PartSize[PariRank[l]] i[l] = PartSize[Par/Rank[l]] 89 30 1287195 ί[2] = RequestedNodes / (ί[0] χ ί[1])
If t[0] χ ί[1] χ t[2] < RequestedNodes t[l\ = t[2] + 1 End If End If End If bestFit[pRank[0]] = i[0]; bestFit[pRank[l]] = t[l]; bestFit[pRank[2]] = t[2]; 10
NumberOfFits = 0
For i = BestFit[0] to PartSize[0]
For j = BestFit[l] to PartSize[l]
For k = BestFit[2] to PartSize[2] 15
Fit[NumberOfFits?0] = i Fit[NumberOfFits?l] = j Fit[NumberOfFits?2] = k Hit = True
If (/ not equal to PartSize[0]) and(/ not equal to PartSize[0]) and (k not equal to PartSize[0]) 20 25
For m = 0 to NumMapDimensions While Hit = True If Fit[NumberOfFits?MapDimension[m]] mod MapMod[m] 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] 90 30 1287195
For7 = / + 1 to NumBerOfFits - 1 d2 = Fit[/,0] + Fit[/,l] + Fit[/,2] ifd2<dl 灸= Fit[/,0] 5 10 15 20
Fit[/·,0] = Fit[z·,0]
Fit[/? 0] = A:
Fit[/, l]=Fit[U]
Fit[/? l]= k k = Fity,i]
Fit[/M]=Fit[/?l]
Fit[/? 1] = A: dl = d2 Else Ifd2 = dl
Rank(Fit[/]? iRank)
Rank(F it [/] ? yRank) hit = 0
For (灸=0 to 2 while hit = 0
If Fit[/?yRank[A:] > Fit[/? iRank[A:] hit= 1
Else If Fit[/?yRank[A:] < Fit[/5 iRank[^] Hit = -1 End For If hit = 1 25 k = Fit[/? 0]
Fit[/,0] = Fit[,,0] Fit[/,0] = A: ^ = Fit[/;l]
Fit[/,1] =Fit〇·,1] 30 Fit[/? l] = k k = ¥it\j\l]
Fit[/,1] = Fit[z·,1] Fit[z? l] = k dl 二 d2 91 1287195 10
End If End If End For End For lastMax = 0 NumMaxDistances = 0 For i = 0 NumberOfFits - 1 currentMax = Fit[/? 0] + Fit[/? 1] + Fit[/? 2] If currentMax not equal lastMax MaxDistance[NumberOfMaxDistance? 0] = i MaxDistance[NumberOfMaxDistance5 1] = currentMax NumberOfMaxDistance = NumberOfMaxDistance + 1 End If End For 15 特定具體例中,buildFreeMeshes Function涵蓋如下實例邏輯: 20
25
NumFreeMeshes = 0 For / = partStart[0] to PartEnd[0] For j =PartStart[l] to PartEnd[l] For k = PartStart[2] to PartEnd[2] If NodeInUse|>V·,幻=NODE—NOT—IN—USE NodeInUse[,V,A:]=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[,V,mz] not equal NODE一NOT—IN_USE 30 inMesh = False
End If
End For 92 1287195
If inMesh = True mEnd[2] = mz - 1 Else mEnd[2] = mz - 2 5 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 inMesh =True 10 If NodelnUse [i,j,mz] not equal
NODE NOT IN—USE inMesh = False End If End For 15
If inMesh = True mz = mz + 1 Else mz = mz + 2 End If 20 ifmz ^ PartEnd[2] meshStart[2] = mz; meshEnd[2] =meshEnd[2] + TorusSize[2]
End If End If 25 inMesh = True
For my = /+1 to PartEnd[l] and inMesh = True For mz = meshStart[2 tomeshEnd[2] an inMesh =
True
If NodeInUse[/? my, mz mod TorusSize[2]] not equal NODE—NOT_IN_USE inMesh = False End If End For
If inMesh = True 93 30 1287195 5 10
15 20 25 meshEnd[l] = niy - 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 For mz = meshStart[2] to meshEnd[2] and inMesh = True If NodeInUse[/\my?mz mod Toms 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 94 30 1287195 5 10
15 20 25
If NodeInUse[mjc5my mod TorusSize[l]9mz 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 Else meshEnd[0] = mx - 2 End If If partWraps[0] and meshStart[0] = 0 and meshEnd[0] not equal PartEnd[0] inMesh = True For nuc = 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[im?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 Mr = mx + 1 Else Mjc = mx + 2
95 30 1287195
End If
Ifmx ^ PartEnd[0] meshStart[0] = mx meshEnd[0] = meshEnd[0] + TorusSize[0] End If End If 10
FreeMesh[NumFreeMeshes].Start[0] = meshStart[0] FreeMesh[NumFreeMeshes].Start[l] = meshStart[l] FreeMesh[NumFreeMeshes].Start[2] = meshStart[2] FreeMesh[NumFreeMeshes].end[0] = meshEnd[0] FreeMesh[NumFreeMeshes].end[l] = meshEnd[l] FreeMesh[NumFreeMeshes].end[2] = meshEnd[2] FreeMesh[NumFreeMeshes] .NumNodes = 15 (meshEnd[0] - 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] 20
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[mxl]? myl]? mzl]=
NODE—ON—HOLD 25
End For End For End For For / = 0 to 2
FreeMesh[NumFreeMeshes].Rank[/] = 2-1;
End For For / = 0 to 2
For m = /+1 to 3 /1 = FreeMesh[NumFreeMeshes].Rank[/] ml = FreeMesh[NumFreeMeshes].Rank[m] 96 30 1287195 10
15 20 25
If meshEnd[ml] - meshStart[ml] < meshEnd[/l] -meshStart[/l] FreeMesh[NumFreeMeshes].Rank[/] = ml FreeMeshRank[m] = /1 End If End For End For NumFreeMeshes = NumFreeMeshes + 1 End If End For End For End For For / = partStart[0] to PartEnd[0] For j =PartStart[l] to PartEnd[l] For k = PartStart[2] to PartEnd[2] If NodeInUse|>V·,幻=NODE—ON—HOLD NodeInUse[zV,A:] = NODE 一NOT 一IN—USE 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 97 30 1287195
If hit = True
TempMesh = FreeMesh[/] FreeMesh[/] = FreeMesh[/] FreeMesh[/] = TempMesh 5 End If
End For End For 特定具體例中,若排程器515成功地排程一工作150則 迴送True之ScheduleJob涵蓋如下實例邏輯:
10 If SpatialAllowed = True
If scheduleSpatial() = True return True
Else If CompactAllowed = True return scheduleCompact() 15 End If
Else If CompactAllowed = True return scheduleCompact()
Else
Return scheduleAny() 20 End If 特定具體例中,scheduleSpatial涵蓋如下實例邏輯:
GotFit = False
For / = 0 to NumberOfTries - 1 while GotFit = False If scanSpatial(TryList[/]?Start) = True 25 GotFit = True setSpatialNodeInUse(Try? Start)
End If End For Return GotFit 98 1287195 特定具體例中,建置AssignedNodeList之 setSpatialNodelnUse涵蓋如下實例邏輯:
10 15 20
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 For i = 0 to 2 ycNode[jobMap[/]] = cNode[/] End For If Try.NumFoldMaps = 1 mNode[0? Tiy.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[05 Tiy.foldFrom[0]] =ycNode[Tiy.foldFrom[0]] mod Try.foldLength[0] End If For / = 0 to 2 node[/] = mNode[09 Try.rMap[/]] End For Else mNode[09 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]) ⑧ 30 1287195 10
15 20
25
Else mNode[0? Try.foldFrom[0]] =ycNode[Try.foldFrom[0]] mod Try.foldLength[0] End If mNode[l, Try.foldFix[l]] =mNode[05 Try.foldFix[l]] mNode[l? Try.foldTo[l]] = mNode[0? Try.foldFrom[l]] / Try.foldLength[l] 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[09 Try.foldFrom[l]] modTry -> foldLnt[l] For / = 0 to 2 node〇·] = mNode[l,Try.rMap[/]] End For End If For / = 0 to 2 Node[/] = node[/] mod TorusSize[/] End For NodeInUse[node[0],node[l],node[2]] = NODE—IN—USE AssignedNodeList[NodeIndex,0] = node[0] AssignedNodeList[NodeIndex? 1] =node[2] AssignedNodeList[NodeIndex? 2] = node[2] Nodeindex = Nodeindex + 1 End For End For End For 30 特定具體例中,scanSpatial涵蓋如下實例邏輯: For / = 0 to 2 If PartWraps[/])
100 1287195
10
15 20
25
End[/] =PartEnd[/] Else End[/] = PartEnd[/] - Try.baseSize[/] + 1 End If End For zPlaneCnt = Try.baseSize[0] x Try.baseSize[l]; For / = PartStart[0] to End[0] newX = True For (w = PartStart[2] to PartEnd[2] zPlanefn] = 0 End For For 1 = / to Z+try.baseSize[0] For n = PartStart[2] to PartEnd[2] /1=/ modTorusSize[0] ml = PartStart[l] m2 = (ml + Try.baseSize[l]) mod TorusSize[l] If PartStart[l] + Try.baseSize[l] < PartEnd[l] ZPlane〇i] = zPlaneM + FreeY[/l,ml,Az] — FreeY [ll,m2,n] Else ZPlane[n] = zPlane[w]+ FreeY[/l9ml?«] End If End For End For Fory = PartStart[l] to End[l] if newX = False /1 = i mod TorusSize[0] /2 = (/ + Try.baseSize[0]) mod TorusSize[0] ml = (/ - 1) mod TorusSize[l] if PartWraps[0] = False or z+try.baseSize[0]) PartEnd[0] For n = PartStart[2] to PartEnd[2] If /+Try.baseSize[0] < PartEnd[0] zPlane[w] = zPlane[^] — (FreeX[/l,ml,/z]- FreeX[/2,ml,w]) 101 30 1287195 5 10 15 20 25
Else zPlane|)z] = zPlane[n] -FreeX[/l,ml,w] End If End For Else For n = PartStart[2] to PartEnd[2] zPlane[n] = zPlane[n] - (FreeX[/l?ml9n]+ (FreeX[0,/wl,n]- FreeX[/2,/wl,《])) End For End If /1 = i mod TorusSize[0] 12 = (i + Try.baseSize[0]) mod TorusSize[0] ml = (/ + Try.baseSize[l]) mod TorusSize[l] If PartWraps[0] = False or /+try.baseSize[0]) < PartEnd[0] For n = PartStart[2] to PartEnd[2] If i + Try.baseSize[0] < PartEnd[0] ZPlane[n] = zPlane[/i] + FreeX[/l5ml9w]- FreeX[/l,m2,w] Else ZPlane[«] == zPlane[/2] + FreeX[/l?ml?/z] End If End For Else For n = PartStart[2] to PartEnd[2] ZPlane[w] = zPlane[^] + FreeX[/l9ml?n]) + FreeX[0,m2?w])-FreeX[/l,m2,/z] End For End If Else newX = False; k= PartStart[2]; while ^<End[2]) 102 30 1287195 5 10 15 hit = True; For n=zk\Xok + Try.baseSize[2] - 1 while hit = True If zPlane[n mod TorusSize[2]] not equal zPlaneCnt hit = False; End If End For if hit = True Start [0] = i\ Start[l] =y; 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] + Try.concatStartNode [cNdx,m] cEnd[m] = cStart[m] + Try.concatSize[cNdx,m] - 1; if (cEnd[w] > TorusSize[m] && PartWraps[m]= False 20 25 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 « = cStart[2] to cEnd[2] while hit = True /1=/ mod TorusSize[0] ml = m mod TorusSize[l] nl = n mod TorusSize[2] If NodeInUse[/l,ml,nl] not equal NODE一NOT一 IN—USE hit = False; End If End For End For
End For If hit = True 103 30 1287195
Return True;
Else K = 1
End If 5 Else k = n + l End If End If End For 10 End For
Return False 特定具體例中,於Fit執行二進制搜尋之 scheduleCompactFunction涵蓋如下實例邏輯: 15 20 25
HighFit = NumberOfFits - 1 For ί = 0 to 2
HighStart[/] = PartStart[/]
End For LowFit = -1 While True
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 104 30 1287195 5 10
15 20
If HighFit > MaxDistance[z90] 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 End If Hit = False For7 = StartFit to EndFit While Hit = False If scanCompact(NumberOfNodes? Fit[/]? HighStart)= True HighFit = j HighMaxDistance = / Hit = True End If End For End For setCompactNodeInUse(Fit(HighFit)? HighStart) 特定具體例中,setComPactNodelnUse涵蓋如下實例邏 25 輯: node = 0 For / = 0 to 2 if Start[r] > TorustSize[/] Start[/] = Start[/] mod TorusSize[/] 30 End[/] = Start[/] + Size[/] - 1 End If End For 105 1287195
If NumMapDiminsions = 1 If MapDiminsion[0] = 0 order[0] = 1 order[l] = 2 order[2] = 0 10
Else If MapDiminsion[0] = 1 order[0] = 0 order[l] = 2 order[2] = 1 Else 15 order[0] = 0 order[l] = 1 order[2] = 2 End If Else order[0] = 3 - MapDiminsion[0] - MapDiminsion[l] order[l] = MapDiminsion[0] order[2] = MapDiminsion[l] 20
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 < 25
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]]
If NodeInUse[index[0]5 index[l]5 index[2]]= NODE—NOT—IN_USE NodeInUse[index[0],index[l],index[2]]=
NODE 一 IN一USE
AssignedNodeList[node, order[0] = index[order[0]] 106 30 1287195
AssignedNodeList[node, order[l] = index[order[2]] AssignedNodeList[node, order[2] = index[order[2]] node = node + 1 End If 5 End For
End For End For 特定具體例中,ScanCompact涵蓋如下實例邏輯:
For / = 0 to 2
15 20 25
If PartWraps[/] = True end[/] =PartEnd[/]
Else end[/] = PartEnd[/] ~ Start[/] + 1 End If
For / = Parts tar [0] to end[0] newX = True For n = 0 to TorusSize[2] ZPlane[w] = 0 End For for (/ = i to / + size[0] for (n = pStart[2]; n < pEnd[2]; «++) /1=/ mod TorusSize[0]; ml = PartStart[l] m2 = (PartStart[l] + size[l]) mod TorusSize[l] If PartStart[l]+size[l] < PartEnd[l]) ZPlane[w] = zPlane[w] +FreeY[/l?ml,w]-FreeY[/l9m2,«]
Else ZPlane[w] = zPlane[/z] +FreeY[/l,ml,w]
End If End For End For 107 30
For j = PartStart[l] to End[l] new Y = True If newX = False l\ = 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 /+size[0] < PartEnd[0] ZPlane[n] = zPlane[w] - (FreeX -
FreeX[/2,ml 川) else zPlane[w] = zPlane[w] - FreeX [ΙΙ,τηΙ,η] End If End For Else
For n = PartStart[2] to PartEnd[2] zPlane[w] = zPlane[/i] - (FreeX +
(FreeX[0,ml,/z] - FreeX U2MM))
End For End If /1 = i /2 = (i + Start[0]) mod TorusSize[0] ml =(/ + size[l] - 1) mod TorusSize[l]
If PartWraps[0] = False or i + Start[0]) < PartEnd[0] For w = PartStart[2] to PartEnd[2]
If (/ + Start[0] < PartEnd[0]) ZPlane[w] = zPlane[n] + (FreeX[/l?ml?w]-FreeX[/l,m2,n]
Else ZPlane[w] = zPlane[/7] + FreeX[/l,ml,/z] End If
End For 1287195
10 15 20 25
Else For w = PartStart[2] to PartEnd[2] ZPlane[/i] = zPlane[/z] + (FreeX[/l,ml,/z] + (FreeX[0?ml?«] - FreeX[/l?m25w])) End For End If Else newX = False End If For k = PartStart[2] to end[2] if newY = True newY = False count = 0; For n = kto k+ size[2] count = count + zPlane[w mod TorusSize[2]] End For Else count = count - zPlane[A: - 1] kl = (k+ size[2] - 1) mod TorusSize[2] zPlane[A:l] = 0 /1 = i 12 = (i + size[0]) mod TorusSize[0] If PartWraps[0] = False or ί + size[0]) < PartEnd[0] For m =j to j + size[l] ml = m mod TorusSize[l] If i + size[0] < PartEnd[0] ZPlane[H] = zPlanepl] + (FreeX[/l,ml,々l] -FreeX[/2,mUl]) Else ZPlane[A:l] = zPlane[A:l] + FreeX[/l,mUl] End For Else For m toy + size[l] 109 30 1287195 ZPlaneRl] = zPlaneRl] + FreeX[/l,/wl,H] + (FreeX[0,ml,々l] - FreeX[/2,ml,H])
End For End If count= count + zPlane[A:l]
End If 10 15
If count > NumberOf Nodes Start[0] — i Start[l] =j Start[2] = k return True End If End For End For End For End For return False 特定具體例中,schedule Any涵蓋如下實例邏輯:
Node = 0 20
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] 25
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 110 30 1287195
Remainder > Ο For j = FreeMesh[m].Start[/Ndx] to FreeMesh[m].end[/Ndx] while Remainder > 0 10 15 20
For = FreeMesh[m].Start[2] to FreeMesh[m].end[2] while Remainder > 0 i\ = i mod TorusSize[/Ndx] jl = j mod TorusSize[iMod] k\=k mod TorusSize[2] If/Ndx = 0 NodeInUseDl/Ι,Μ] = NODEJN—USL· Else NodeInUse[/Ul^l]=NODE—INJJSE End If AssignedNodeList[N〇de].[/Ndx] = i\ AssignedNodeList[Node].[/Ndx] =jl AssignedNodeList[Node5 2] = k\ Node = Node + 1 End For End For End For End For
25 特定具體例中,setMpiRank涵蓋如下實例邏輯: 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] 111 30 1287195 5 10 15 20
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 MapModfl] End If hit = False for (nodel = 0 to NumFreeNodes - 1 while hit = False If to[0] = FreeNodeList[nodel]9coordinate[0] and to[l] = FreeNodeList[nodel].coordinate[l] and to[2] = FreeNodeList[nodel].coordinate^] and to[3] = FreeNodeList[nodel].coordinate[3] FreeNodeList[nodel].mpiRank = node Hit = True End If End For End For 特定具體例中,排程器515使用如下實例結構來配置節 25 點115給工作150,實例結構定義如後。如前文說明,叢集 管理引擎130連同一工作150而將一FreeNode結構串列通訊 給排程器515。該串列包括全部可供排程之節點115。該串 列中,基於交換器之座標識別串列中之全部可用節點115 ° 若排程器515排程工作150,則排程器515於迴送之前設定 30 mpiRank 〇 112 1287195
Structure FreeNode integer coordinate [4] integer mpiRank
End Structure 5 特定具體例中,排程器515使用一 Fold structure來記錄 排程器515如何摺疊一維空間請求及二維空間請求。
10
Structure Fold integer integer integer integer integer integer End Structure foldLength numFolds remainder foldDimension fixDdimension oneDimension 15 特定具體例中,排程器515使用Tty結構來儲存資訊於 網格用來排程一空間工作150。Try結構包括一基本網格以 及至多二鏈接網格之資訊。
20 25
Structure Try integer baseSize[3] integer numConcats integer concatSize[2,3] integer concatStartNode[2,3] integer rMap[3] integer irMap[3] integer numFoldMaps integer foldLength[2] integer foldFrom[2] integer foldTo[2] integer End Structure foldFix[2]
113 30 1287195 特定具體例中,排程器515使用卩以6]^68]1結構來儲存資 訊於格網110中可供用於排程之網格。排程器515使用 FreeMesh來排程「任何」請求。
Structure FreeMesh integer start [3] integer end[3] integer size[3] integer rank[3] integer numberOfNodes 10
End Structure 特定具體例中,排程器515使用下列實例變數來配置節 點115給工作150,各變數定義如後。 • RequestedNodes:對一工作150請求之節點數目。 • RequestType :工作請求型別:SPATIAL、COMPACT 15 或 ANY。 • OriginalSize[3]:若RequestType=SPATIAL,則工作 150之大小。
• AggressiveFlag:0與1間之浮點數目,指示分派給排 程器515用於配置節點115給一工作150之餘裕度。 20 · J〇bMap[3]:若RequestType=SPATIAL,則 OriginalSize 指標映射為更加適合排程器515之順序。 • RequestedSize[3] ··若RequestType=SPATIAL,則於 排程器515已經施加JobMap後之一工作150之大小。 • TorusSize[3] ··以CPU 164表示之格網110之大小。 25 · NodesPerSwitch:每個交換器166之節點115之號碼。 • NumFreeNodes:可供排程用之節點115之數目。 114 1287195 • FreeNodeList[NumFreeNodes]:進送至排程器 515之 可供用於排程之節點115之串列。 • Spatial Allowed:若空間排程允許則設定為真。 • Compact Allowed :若允許精簡排程則設定為真。 • AnyAllowed ·•若允許任何排程則設定為真。 • TorusMap[3]:由基於交換器之圓環至更加適合排程 器515之順序之指標之映射圖。
• InverseTorusMap[3] : TorusMap之倒數;於迴送至叢 集管理引擎130前,施加至全部輸出節點。 10 · NumMapDimesions :當由基於交換器之圓環進送至 基於節點之圓環時,被修改之維度數目;可能之值為丨及2。 • MapDimensions[2]:當由基於交換器之圓環進送至 基於節點之圓環時被,修改之維度指標。 • MapMod[2]:使用之乘數;可能之值對 15 NumMapDimesions=l 為 MapMod[0]=4 ,以及對
NumMapDimesions=2,MapMod[0]=2及MapMod[l]=2。 • PartSize[3] ··區隔之大小。 • PartStart[3] ··區隔之起點座標。 • PartEnd[3]:區隔之終點座標。 20 · PartWraPs[3]:若一區隔包裹於維度i,則
PartWraps[i]=True 〇 • NodeInUse[TorusSize[0]5 TorusSize[l]5 TorusSize[2]]: NodeInUse[i,j,k]指示節點115之狀態;可能之值包括 NODE—IN-USE(指定給另一工作15〇之節點115、 (§) 115 1287195 NODE一NOT—IN—USE(可資利用之節點115)及 NODE—ON_HOLD(當指定節點115給一工作150使用的暫 態)。 • FreeY[TorusSize[0]5 T〇rusSize[l]? TorusSize[2]]: FreeY[i,j,k]指示於線{i,j5 k}至{i,TorusSize[l]-l,k}(含)之 自由節點115之數目。掃描常式係使用FreeY。
• FreeX[TorusSize[0]? TorusSize[l]5 TorusSize[2]]: FreeX[i,j,k]指示於線{i,j,k}至{TorusSize[0]-l,j,k}(含)之 自由節點之數目。掃描常式係使用FreeX。 10 · NumberOfTries :對一空間請求所組構之Try結構數 目0 • TryList[NumberOfTries]:用於一空間請求之Try結構 串列。 • NumberOfFits:對一精簡請求所組構之網格數目。 15 · Fit[NumberOfFits,3]:對一精簡請求所組構之網格 串列。 • Fit[i,0]=網格i與X維之大小。 • Fit[i,1]=網格i與y維之大小。 • Fit[i,2]=網格i與z維之大小。 20 · NumMaxDistances ··於Fit之獨特最大距離數目。 • MaxDistance[NumMaxDistances,2]:於Fit之獨特最 大距離串列。對任何(Ki〈NumMaxDistances而言, MaxDistance[i,0]=具有最大距離之一第一網格進入Fit之指 標=MaxDistance[l,1] 〇 ⑧ 116 1287195 • NumFreeMeshes :於格網110之自由網袼數目。自由 網袼為只含括自由節點115之網格。 • FreeMesh[NumFreeMeshes] : FreeMesh結構陣列。 • AssugnedNodeList[RequestedNode,3]··以MPI等級順 5 序指派給一項工作150之節點115串列。
叢集管理引擎130例如經由工作排程器515可進一步操 作來執行有效檢查點檢查。重新起動的轉存典型包含超過 75/〇寫至碟片之資料。此種I/O之進行方式讓處理不會因平 台故障而遺失。基於此點,檔案系統的I/O可分隔為二部 10分:生產性I/O及防禦性I/O。生產性I/O為使用者呼叫之資 料的寫入,例如虛擬轉存、隨時間之經過之關鍵實體變數 之執跡等。防禦性I/O係用來管理經過一段相當時間之大量 模擬回合。如此加大I/O頻寬將可大為縮短於檢查點檢查時 所涉及之時間及風險。 回頭述及引擎130,本地記憶體520包含系統1〇〇之多項 特色之邏輯描述(或資料結構)。本地記憶體52〇可儲存於任 何實體或邏輯資料儲存裝置,該資料儲存裝置可操作來由 可相容碼而定義、處理或取還。例如本地記憶體52〇可包含 一或多個可擴充標記語言(XML)表袼或文件。各個元件可 20以SQL陳述或稿本、虛擬儲存存取方法(VSAM)檔案、平坦 檔案、二元資料檔案、Btrieve檔案、資料庫檔案或逗點分 開值(CSV)檔案描述。須了解各個元件可包含一變數、一表 格、或任何其它適當資料結構。本地記憶體52〇也包含多個 表格或播案儲存於一部伺服器1〇2或儲存跨多個伺服器或 ⑧ 117 1287195 節點。此外,雖然於附圖係以駐在叢集管理引擎13〇内部舉 例說明,但若干或全部本地記憶體520可於内部或外部,而 未障離本揭示之範圍。 5 舉例說明之本地記憶體520包括實體串列52ι、虛擬串 列522、組群檔案523、策略表524、及工作佇列525。雖然 於圖中未顯示,但本地記憶體520可包括其它資料结構,包
括工作表及稽核記錄,而未悖離本揭示之範圍。回頭參只召 附圖舉例說明之結構,實體串列521可操作來儲存有關節點 10 115之識別資訊及實體管理資訊。實體串列521可為每個節 15
點115包括至少一項記錄之多維資料結構。例如實體記錄可 包括下列各個攔位,諸如「節點」、「利用性」、「處理器之 利用率」、「記憶體之利用率」、「溫度」、「實體位置」、「網 址」、「開機影像」#。須了解各個記錄可未包括該等範例 攔位,可包括部分或全部該等範例欄位。一具體例中,該 只體兄錄可提供至另—表格例如至虛擬串列522之外來餘。 虛擬串522可操作來儲存有關冑點1Η之邏輯資訊或 虛擬管理資訊。虛擬串列522可為每個節點115包括至少一 20 項讀之多維|料結構。例如,虛擬記錄可包括諸如「節 點」、「利用性」、「卫作」、「虛擬叢集」、「二次節點」、「邏 輯位置」、相讀」等攔位。須了解各項記錄可未包括任 何執例欄位,或包括全部或部分範例欄位。_具體例中, 虛擬記錄可包括至另_表格例如組群觀⑵之鍵路。 八組群㈣523包含可操作來儲存使用者組群資訊及安 為汛之或夕項表格或記錄,諸如存取控制串列(或 118 1287195 ACL)。例如各個組群記錄可包括使用者可利用之服務、節 點115、或工作串列。各個邏輯組群可關聯一個業務小組或 業務單元、-個部門、一項計劃、一個安全性組群、或可 提交工作15G或與管理至少部分㈣⑽之—❹個使用者 5之任何其它集合相關聯。基於此項資訊,叢集管理引擎13〇 可判定提交工作15〇的使用者是否為有效使用者,若是,則 執行該工作之最佳參數。此外,組群表523可將各個使用者 組群與虛擬叢集220或與-或多個實體節點115,諸如駐在 特定組群領域内部之節點相關聯。如此允許各組群有其個 1〇別的處理空間而不會競爭資源。但如前文說明,虛擬叢集 220之形狀及大小可為動態,虛擬叢集22〇之形狀及大小可 依據需求、時間或任何其它參數而改變。 策略表524包括-或多項策略。須了解策略表Μ4與策 略524可視情況需要而互換使用。策略表524通常係儲存有 15關工作150及/或虛擬叢集22〇之處理資訊及管理資訊。例如 策略表524可包括多項參數或變數之任一者,該等參數或變 數包括問題大小、問題回合時間、時槽、前置占用、使用 者配置之節點115或虛擬叢集22〇分享等。 ,工作仔列525表示等候執行之_或多項工作跡流。通 常工作仵列525包含任何適當資料結構諸如氣泡陣列、資料 庫表、或指標器陣列來儲存任何數目(包括零個)工作15〇或 “、工作。可有一仔列525關聯格網㈣或有多仔列525關聯 格網U〇,各個仔列525係關聯於格網110内部之獨特虛擬叢 集220之一。
119 1287195 於一操作方面,叢集管理引擎130接收由N項任務組成 的工作15〇,N項任務可經由執行計算與交換資訊來協力解 決問題。叢集官理引擎13他個節點115,以及使用任一 種適當技術’分派Ν項任務之各項任務給一個特定節點 5 115 ’因而讓問題可有效解決。例如叢集管理引 擎130可利 用由使用者供給的工作參數,例如工作任務配置方策。雖 泛如此,叢集管理引擎130嘗試探勘伺服器102之架構,其 有對使用者提供更快速的週轉率,且可能改良系統幽的整 體產出量。 1〇 —具體财,叢集管理引擎丨3〇接著根據下述範例拓樸 結構來選擇與配置節點1 1 5 : 規疋2D(x,y)或3D(X,y,z)-節點us經過配置,任務可於 規疋維度排序藉此保有有效的鄰居對鄰居通訊。規定之抬 樸結構管理多項工作15〇,希望實體通訊拓樸結構可匹配問 I5題拓樸、(構’讓工作15〇之協力合作之任務可頻繁與鄰居之 任務通δκ。舉例言之,於Μχ2維度(2, 2,幻請求八項任務 ,被配置為方塊。為了達成最佳匹配目的,2D配置可被「摺 疊」成為三維,同時仍然保有有效鄰居對鄰居通訊。叢集 管理引擎130可以任何取向自由配置規定之維度形狀。^ 20 2x2x8框可配置於垂直或水平可利用之實體節點内部。 最健配方塊.叢集管理引擎⑽於立方體積内部 Ν個即點115。此種蝴結構有效處理工作⑽,允許經由 短任二節點115間之距離來讓協力卫作之任務與任何其它 任務交換資訊。 120 最佳匹配球體-叢集管理引擎130於球狀體積配置N個 即點115。例如第一任務被置於球體的中心節點115,而其 餘任務被置於環繞該中心節點115之各個節點115。須了解 其餘各項任務之配置順序典型並無特殊限制。此項拓樸結 構可縮短第-任務與全部其它任務間之距離。如此有效處 理一大類問題,此處任務2至任務N係與第一任務通訊,但 其間並未彼此通訊。 機-叢集管理引擎13〇以較少考慮節點115之邏輯配 置位置或實體配置位置來配置N個節點115。一具體例中, 此種拓樸結構可鼓勵積極使用格網UG用於回填目的,而極 J對其它工作150造成衝擊。 須了解先則拓樸結構及伴隨之說明僅供舉例說明之 而非闡述貝際使用之拓樸結構或用於配置此等拓樵結 構之技術。 叢集管理引擎130可利用配置權值,儲存作為工作15〇 :數或策略524參數。於—具體例中’配置權值為G與1間之 ,飾值’其表示叢集管理引擎13〇將如何積極依據所請求之 壬務(口或程序)之配置方策來安置節點115。本例中,〇值表糸 唯有最佳方策(或維度)為可能時才安置節點出㈤值表糸 =刻女置節點115,只要有足量之自由節點或其它可利用之 即點115來處雌項請切可。典贱,配聽值^會凌駕 订政管理策略524,諸如資源保留,以防止大型工作150缺 乏賁源,且保有HPC系統100之工作產出量。 前文舉例說明及伴隨之說明提供管^節點⑴及工作 1287195 150之邏輯體系實作用之叢集管理引擎13G之範例模組圖。 但本圖僅供舉例說明之用,系統100涵蓋使用邏輯元件之任 7種適當組合及配置來實作此等及其它演繹法則。如此此 等軟體极組可包括有效管理節點II5及工作15〇之各項元件 5之任種適當組合及配置。此外,若屬適當,可組合及/或 分離各項所示模組之操作。
第11圖為流程圖,顯示根據本揭示之一具體例,動態 處理一工作提交之實例方法600。概略言之,第11圖描述方 法600,方法6〇〇接收一批次式工作提交,基於工作參數及 10相關聯之策略524來將節點i i 5動態配置於一個工作空間 230,以及使用所配置之空間來執行工作15〇。後文說明之 注意重點集中於執行方法600之叢集管理模組13〇之操作。 但系統100涵蓋使用實作部分或全部所述功能之該等邏輯 元件之任一種適當組合及配置,只要其功能維持適當即可。 15 方法600始於步驟605,HPC伺服器102由使用者接收工 作提交150。如前文討論,一具體例中,使用者可使用客端 120提交工作150。另一具體例中,使用者可使用hpc伺服 器102直接提交工作150。其次於步驟610,叢集管理引擎130 基於使用者選擇組群523。一旦證實使用者,叢集管理引擎 20 130於步驟615比較該使用者與組群存取控制串列(acl)。但 須了解,叢集管理引擎130可使用任何適當安全性技術來驗 證使用者。基於所測定之組群523,叢集管理引擎130判定 使用者是否已經存取該所請求的服務。基於所請求的服務 及主機名稱,叢集管理引擎130於步驟620選擇虛擬叢集
122 1287195 220。典型地,虛擬叢集220可於工作150提交之前識別與配 置但若尚未建立虛擬叢集220,則叢集管理引擎13〇可使 用蝻述任一項技術來自動配置虛擬叢集220。其次,於步驟 625叢集官理引擎130基於工作150的提交來取還策略 5 524 具體例中,叢集管理引擎13〇可判定與使用者、工 作150、或任何其它適當標準相關聯之適當策略524。然後, 叢集管理引擎130於步驟630測定工作15〇之維度,或以其它 方式汁异工作150之維度。須了解適當維度包括長度、寬 ® 冑、高度或任何其㈣當參數或㈣。如前文說明,此等 1〇維度用來判疋於虛擬叢集220内部之適當工作空間23〇(或 節點II5子集)。於建立初步參數後叢集管理引擎嘗試 於步驟635至步驟665於HPC祠服器1〇2執行工作15〇。 於判定步驟635,叢集管理引擎130使用已經建立的參 數,來判定是否有足夠可用之節點來配置期望的工作空間 15 230。若節點115之數量不足,則於步驟64〇,叢集管理引擎 • 13〇決定於虛擬叢集22〇最容易取得之節點ιΐ5子集23〇。然 後於步驟645,叢集管理引擎13G増加卫作⑼至工作 125,直到子集23G為可利用為止。然後處理返回決定步驟 635。一旦有足夠節點115可資利用’則於步驟65〇,叢隼总 2〇理引擎請動態決定得自可利用之節點ιΐ5之最佳子 1 23〇。須了解最佳子集23〇可使躲何適當標準決定,包括 最快速處理時間、最可靠節點115、實體位置或虛擬位置 或第-可用節點115。於步驟655,叢集管理引擎13〇由所里 定之虛擬叢集220中選出決定之子集23Ge其次於步驟66= 123 1287195 叢集管理引擎130使用所選定之子集230來配置選定之節點 115給工作150。根據一具體例,叢集管理引擎130可將虛擬 節點串列522内的節點115狀態由「未經配置」改變成「經 配置」。一旦子集23〇經過適當配置,於步驟665,叢集管理 5引擎丨3〇基於工作參數、取還策略524、及任何其它適當參 數’使用所配置的空間來執行工作150。於任何適當時間, 叢集管理引擎130可通訊或以其它方式呈現工作結果“ο給
使用者。例如結果160可經格式化且透過GUI 126來呈現給 使用者。 弟12圖為流程圖顯示根據本揭示之一具體例,動熊、回 填於袼網110内部之一虛擬叢集220之範例方法700。於高 階,方法700描述決定於虛擬叢集220之可用空間,決定可 與該空間相容之最佳工作150,以及於可利用空間執行所決 定之工作150。後文說明之重點將集中於執行此項方法之叢 15集管理引擎U0之操作。但如同先前流程圖,系統⑽涵蓋 使用邏輯元體之任-種適當組合及排列來實作部分或全部 所述功能。 ° 方法700始於步驟705,叢集管理引擎13〇分類工作佇列 525。所轉體财,叢鮮則擎丨观基於儲存於^列 20 525之工作丨5〇之優先順位,來分類佇列525。但須了解叢集 管理引擎130可使用任-種適當特性來分類件列奶,因而 可執行適當工作150或最佳工作15〇。其次於步驟71〇,叢集 管理引擎13〇判定於虛擬叢集22〇之一之可用節點ιΐ5的數 目。當然,叢集管理引擎13〇也可決定於格網⑽或於虛擬 124 1287195 叢集220之任一者或多者之可用節點115數目。於步驟715, 叢集官理引擎13〇由分類後之工作佇列525來選出第一工作 150。其次於步驟72〇,叢集管理引擎13〇動態決定所選定之 工作150之最佳形狀(或其它維度)。一旦已經決定所選定之 5工作150之最佳形狀或維度,然後於步驟725至745,叢集管 理引擎13G判定是否可於適當虛擬叢集22G回填工作150。
10 15
於判定步驟725,叢集管理引擎13〇判定是否有足量節 點115可供驗所敎之卫作15G。若有足量可利用之節點 115,則於步驟73〇’叢集管理引擎13g使用任—種適當技術 對所敎之卫作15〇動態配置節點115。例如,叢集管理引 擎130可使用第6圖所述技術。其次於步驟π,叢集管理引 擎請重新計算於虛擬叢集㈣可用之節點數目。於步驟 740’叢集管理引擎13〇於所配置之節點ιΐ5來執行工作 150。-旦工作15()已經執行(或若對所選定之工作⑼而 吕,節細之數目不;^),則於步驟州,叢集管理引擎13〇 選擇於經過賴之工作糾525巾之下1轉⑽,以及 處理返回步_。須了解雖然以迴路舉例制,但叢集管 理引擎130可於任何適當時間初始 ^ 法鳩所示浦。 —、以及結束於方 20 第13圖為流簡,顯示根據本揭示 管理格網⑽内部之—節點出故 —”體例㈣ , ^ 之只例方法800。於高 動態 方法800描述決定節點lb故障, 動執行工作復原與 125 1287195 法之操作。但如同先前流程圖,系統100涵蓋使用邏輯元體 之任一種適當組合及排列來實作部分或全部所述功能。 方法800始於步驟805,叢集管理引擎130判定節點115 已經故障。如前文說明,叢集管理引擎130可使用任一種適 5 當技術來判定郎點115已經故障。例如,叢集管理引擎13 〇
可於不同時間挽出節點115(或代理器丨32),基於缺乏來自節 點115的回應,判定節點115已經故障。於另一例中,存在 於節點115之代理器132可通訊「心搏」,若無此種「心搏」 則表示節點115已經故障。其次於步驟81〇,叢集管理%擎 10 130由虛擬叢集220去除已經故障的節點115。一具體例中, 叢集管理引擎130可將虛擬串列522内部的節點115之狀態 由「經配置」改成「故障」。然後於決定步驟815,叢集管 理引擎130決定工作150是否與故障的節點ι15相關聯。若盔 任何工作150係與節點115相關聯,則處理結束。如前文說 15明,於處理結束前,叢集管理引擎130可將錯誤訊息通知行 政管理者,可自動決定替換節點115,或可自動決定任何其 它適當處理。若有與故障節點115相關聯之工作15〇,則於 步驟820,叢集管理引擎13〇決定與工作15〇相關聯之其它節 點115。其次於步驟825,叢集管理引擎13〇消滅於全部適當 20節點115之工作150。舉例言之,叢集管理引擎130可執行消 滅工作命令,或叢集管理引擎130可使用任何其它適當技術 來結束工作150。其次於步驟83〇,叢集管理引擎13〇使用虛 擬串列522來解除郎點115之配置。例如,叢集管理引擎η。 可將虛擬串列522中之節點115之狀態由「已配置」改成「
126 1287195 10 15
20 利用」 旦已經結束工作,以及全部適當節點115皆已經 解除配置,則於步驟835至步驟850,叢集管理引擎13〇試圖 使用可用郎點115來再度執行工作15〇。 於步驟835,叢集管理引擎13〇取還策略524以及對被消 滅之工作150取還參數。然後於步驟84〇,叢集管理引擎 基於所取叙策略524錢I作參數,來狀於虛擬叢集 220之節點出之最佳子集23〇…旦已經決定節點ιΐ5之子 集230,則於步驟845,叢集管理引擎130動態配置節點115 之子集23〇°例如’叢集管理引擎130可將虛擬串列522中之 節點115的狀態由「未經配置」改成「已經配置」。須了解 此-節點115子集可與曾經執行該項玉作15()之原先節點子 集不同。舉例言之,叢集管理引擎⑽可決定不同節點子集 為最佳,在㈣點故_提減事此概行。於另1 實例中’叢集管理引擎13〇狀二次節點115可操作來替換 故障節點115,新子集230實質上係類似舊工作空間23〇。_、 定且已經配置經配置之子集23〇,然 85〇’叢集管理引擎13〇執行工作丨邓。 先前各個流程圖及隨附之說明舉例說明範 6〇〇 700及800。簡言之,系統⑽涵蓋使用任 枯 術來執行此等及其它任務。如此本流程圖之=技 類似方式進行,及/或以與所示順序不同之順以驟可以 二:統刚使用有額外步驟、較少步驟、及/或;: 方法只要該等方法維持適當即可。 a 雖然已經就若干具體例及概略相關方法說明本揭 示 127 1287195 但熟諳技藝人士顯然易知可對此等具體例及方法做出多項 變更及修改。如此前文具體實施例之說明絕非界限或約束 本揭示。可未悖離本揭示之精髓及範圍而可做出其它變 化、取代、與變更。 5 【圖式簡单說明】 第1圖顯示根據本揭示之一具體例,一種範例高效能運 鼻糸統, 第2圖顯示於第1圖所示HPC系統之一實例節點;
第3圖顯示於一節點之一實例中央處理單元(CPU); 10 第4圖顯示一實例節點對; 第5A-5D圖顯示於第1圖之系統之格網之各個具體例 及其用途; 第6A-6B圖顯示根據第1圖之系統,圖形使用者介面之 各個具體例; 15 第7圖顯示根據第1圖之系統,叢集管理軟體之一具體 例; 第8圖顯示於y維度摺疊之一實例一維請求; 第9圖顯示使用y軸作為内迴圈組構而成之兩個自由網 格; 20 第10圖顯示使用X軸作為内迴圈組構而成之兩個自由 網格; 第11圖為流程圖,顯示根據第1圖之高效能運算系統, 一種提交一批次式工作之方法; 第12圖為流程圖,顯示根據第1圖之高效能運算系統, 128 9: 1287195 一種動態回填格網之方法;以及 第13圖為流程圖,顯示根據第丨圖之高效能運算系統, 一種動態管理一節點故障之方法。 【主要元件符號說明】 100".兩效能運算(HPC)糸統 166···交換器,或組織結構 168a-f、170、172a-f···鏈路 174···處理器 176···記憶體控制器中樞(MCH) 178…記憶體單元 180···主機通道配接器(HCA) 102·.·高效能運算伺服器,HPC 伺服器 104···介面 105…管理節點 106.. .網路 108.. .鏈路 110.··格網 115···運算節點(或刀鋒) 120…行政管理工作站或本地 客端 126…圖形使用者介面,gui 130…叢集管理引擎 132··.叢集代理器 140…碟片場 142…儲存客端 150…工作 160…結果
164、164a-b···中央處理單元, CPU 182、184···匯流排 186…節點對
210...格網 215···節點 216···節點鏈路 220···虛擬叢集 230、230a_b…工作空間 400…管理圖形使用者介面,管 理GUI 400a-b…顯示器 500···叢集管理引擎 505…實體管理器 510…虛擬管理器 515…工作排程器 129 1287195 515.. .工作排程器 520.. .本地記憶體或變數 521.. .實體串列 522.. .虛擬串列 523.. .組群檔案 524.. .策略、策略表 525…工作佇列 530、532a-b···區 600、700、800...方法 605-665、705-745、805-850 ...步驟
130

Claims (1)

1287195 搔收來自一 10 15 # 20 ^請委員明示良本______一一—·---·...·一--.一-、.、,-— 雜錢1㈣钱出魏明I嚴矯、修.(义正替换剛 ' ^ · ,>: I I 5 w W—,—— 十、申請專利範園:_ 第94111493號巾請案巾請專利範圍修正本95·11·22· h 一種儲存有用以於高效能運算(HPC)系統中進行排程的 邏輯指令之電腦可讀取媒體,該等邏輯指令於執行時可 操作來進行下列動作: 管理引擎之一呼叫,該管理引手诉讣外 官理於該高效能運算(HPC)系統之一節點叢集 ,該呼m 載明-請求’該請求包含__欲排程之工作,該欲排程$ 工作包含欲於該叢集之一或多個節點執行之一或多巧 程序,該呼叫進—步載_於執行該工作之節點數目 判定該項請求為一空間請求、一精簡請求m 空間且非精簡請求,若該讀假設執行該X作之處理毛 序之各節點間為空間關係,則該請求為空間請求;若全 工作假設執行社作之處理程序之各節點^鄰近^ 該請求為精簡請求;若該工作假設於執行^作之料 處理程序之節關不具有空間關係也不相鄰,則 為非空間且非精簡請求; 若該請求為空間請求: 貝|1產生該叢集之節點之-或多項空間組合來配合 於該呼叫中載明之節點數目,以及進_ 步配合所假設之 執仃該工作之各節點間之空間關係;以及 隹中,等t間=口之"亥一空間組合係可根據叢 集中可用於排程之節點串列而排程; 右該請求為精簡: 131 1287195 9¥1L#2日修咚)正替換頁I 5
10 15
20 則產生於該叢集之節點之一或多個精簡組合,其配 合於呼叫中載明之節點數目;以及 選擇該等精簡組合之一,該一精簡組合係可根據叢 集中可供用於排程之節點串列而排程,以及該一精簡組 合係比較根據叢集中可供用於排程之節點串列而可排 程之其它精簡組合更為精簡; 若該請求既非空間也非精簡: 則識別可根據該叢集中可供用於排程之節點串列 而排程之一或多個節點;以及 產生於該叢集之節點之非空間且非精簡組合來配 合於呼叫中載明之節點數目,該非空間且非精簡組合包 括可根據於該叢集可供用於排程之節點串列而排程之 一或多個經識別之節點中之一或多者;以及 傳遞一回覆給該管理引擎,該回覆識別於該叢集之 節點之經選定之空間組合、精簡組合、或非空間且非精 簡組合中之用於執行該工作之一或多個節點。 2.如申請專利範圍第1項之電腦可讀取媒體,其中該呼叫 進一步載明: 該請求是否為一空間請求、一精簡請求、或一非空 間且非精簡請求; 若該請求為空間請求,該工作之大小; 激進旗標指示排程該工作之餘裕度; 以該叢集之交換器數目表示之該叢集大小; 耦接至該叢集之各個交換器之節點數目; 132 1287195 曰修(始止替換百! 可供用於排程之節點數目;以及 於該叢集可供用於排程之節點串列。 3·如申請專利範圍第1項之電腦可讀取媒體,其中該迴送 給管理引擎之回覆進一步識別於該經選定之節點之空 間、精簡、或非空間且非精簡組合中之各個節點之1幸、 進送介面(MPI)等級。 10 4·如申請專利範圍第1項之電腦可讀取媒體,其中若該請 求為一空間請求且為三維,則該等邏輯指令可操作來旋 轉配合於該呼叫中載明之節點數目之一網格,以及該網 袼進一步配合該等節點間之假設之空間關係,執行於該 工作之程序至六個方向之一,來產生該等空間組合之 〇 15 5·如申請專利範圍第1項之電腦可讀取媒體,其中若該請 求為空間請求且為二維,則該等邏輯指令可操作來摺疊 该工作之一未被使用的維度,來產生配合於來自該管理 引擎之呼叫中載明之節點數目之一網袼,以及旋轉該網 格至六個方向之一來產生該等空間組合之一。 20 6·如申請專利範圍第1項之電腦可讀取媒體,其中若該請 求為空間睛求且為一維,則該等邏輯指令可操作來摺疊 5亥工作之二未被使用的維度,來產生配合於來自該管理 引擎之呼叫中載明之節點數目之一網格,以及旋轉該網 格至六個方向之一來產生該等空間組合之一。 7_如申請專利範圍第1項之電腦可讀取媒體,其中該等邏 輯指令可操作來使用一掃描演繹法則於該節點叢集中 133 1287195
月日修〆)正替換頁 搜尋該工作之一起點,俾選出根據該叢集中可供用於排 程之一節點串列而可排程的空間組合之一。 8·如申請專利範圍第1項之電腦可讀取媒體,其中該等邏 輯指令可操作來產生該叢集之節點之一或多個精簡組 5 合,其配合於來自該管理引擎之呼叫中載明之節點數目 俾: 10 15 20 產生於該叢集之節點之一第一精簡組合,其係配合 於來自該管理引擎之呼叫中載明之節點數目; 產生於該叢集之節點之一或多個第二精簡組合,其 係配合於來自該管理引擎之呼叫中載明之節點數目,第 二精簡組合各自係比該第一精簡組合較不精簡;以及 根據精簡程度分類該第一精簡組合及該第二精簡 組合來選出該第一精簡組合與該第二精簡組合之一。 9.如申請專利範圍第1項之電腦可讀取媒體,其中該等邏 輯指令可操作來產生於該叢集之節點之一非空間且非 精簡組合,其係配合於來自該管理引擎之呼叫中載明之 節點數目俾: 就該叢集之一第一維度進行一第一迴圈通過該叢 集,直到達到根據於該叢集可供用於排程之節點串列, 一第一節點無法用於排程為止; 就該叢集之一第二維度進行一第二迴圈通過該叢 集,直到達到根據於該叢集可供用於排程之節點串列, 一第二節點無法用於排程為止;以及 就該叢集之一第三維度進行一第三迴圈通過該叢 134 1287195
10 15
20 集,直到達到根據於該叢集可供用於排程之節點串列, 一第三節點無法用於排程為止。 10. 如申請專利範圍第9項之電腦可讀取媒體,其中該等邏 輯指令進一步可操作來重複該第一迴圈、第二迴圈及第 三迴圈來涵蓋於該叢集之全部節點。 11. 如申請專利範圍第1項之電腦可讀取媒體,其中該等邏 輯指令進一步可操作來: 判定該叢集是否包含足量節點可配合於來自該管 理引擎之呼叫中載明之工作中,執行該工作之一或多項 程序之節點數目;以及 若該叢集包含少於足量節點來配合執行來自該管 理引擎之呼叫中載明之工作之一或多項程序用之節點 數目,則對該管理引擎指示該工作為無法排程。 12. 如申請專利範圍第1項之電腦可讀取媒體,其中該等邏 輯指令為無狀態。 13. 如申請專利範圍第1項之電腦可讀取媒體,其中一節點 為耦接至二交換器之中央處理單元(CPU)。 14. 如申請專利範圍第1項之電腦可讀取媒體,其中該等邏 輯指令為管理引擎之插拔。 15. 如申請專利範圍第1項之電腦可讀取媒體,其中該節點 叢集為三維圓環。 16. 如申請專利範圍第1項之電腦可讀取媒體,其中該工作 之各個程序當執行時係使用訊息進送介面(MPI)而彼此 通訊。 135
1287195
10 15
20 ί-Λ'; i'' 17_如申請專利範圍第1項之電腦可讀取媒體,其中: 該來自管理引擎之呼叫進一步載明一激進旗標,該 旗標指示分派用於選擇用來執行該工作之一或多項程 序之叢集中之節點的空間組合、精簡組合、或非空間且 非精簡組合之餘裕度; 該等邏輯指令可操作來選擇該叢集中之節點的一 空間組合、一精簡組合、或一非空間且非精簡組合,用 於根據來自該管理引擎之呼叫中載明的激進旗標而執 行該工作之該一或多項程序。 18·—種於高效能運算(HPC)系統中排程之方法,該方法包 含: 接收來自一管理引擎之一呼叫,該管理引擎操作來 管理於該高效能運算(HPC)系統之一節點叢集,該呼叫 載明一請求,該請求包含一欲排程之工作,該欲排程之 工作包含欲於該叢集之一或多個節點執行之一或多項 程序,該呼叫進一步載明用於執行該工作之節點數目; 判定該項請求為一空間請求、一精簡請求、或一非 空間且非精簡請求,若該讀假設執行該工作之處理程 序之各節點間為空間關係則該請求為”請求;若該二 作假設執㈣卫作之處理程序之奸點間相鄰近,2 凊求為精簡請求;若該I作假設於執行該卫作之各項^ 理程序之節關π有空關係也不 = 非空間且非精簡請求; 州⑷I月求為 若該請求為空間請求·· 136 1287195
10 15
20 則產生該叢集之節點之一或多項空間組合來配合 於該呼叫中載明之節點數目,以及進一步配合所假設之 執行該工作之各節點間之空間關係;以及 選擇該等空間組合之一,該一空間組合係可根據叢 集中可用於排程之節點串列而排程; 若該請求為精簡: 則產生於該叢集之節點之一或多個精簡組合,其配 合於呼叫中載明之節點數目;以及 選擇該等精簡組合之一,該一精簡組合係可根據叢 集中可供用於排程之節點串列而排程,以及該一精簡組 合係比較根據叢集中可供用於排程之節點串列而可排 程之其它精簡組合更為精簡; 若該請求既非空間也非精簡: 則識別可根據該叢集中可供用於排程之節點串列 而排程之一或多個節點;以及 產生於該叢集之節點之非空間且非精簡組合來配 合於呼叫中載明之節點數目,該非空間且非精簡組合包 括可根據於該叢集可供用於排程之節點串列而排程之 一或多個經識別之節點中之一或多者;以及 傳遞一回覆給該管理引擎,該回覆識別於該叢集之 節點之經選定之空間組合、精簡組合、或非空間且非精 簡組合中之用於執行該工作之一或多個節點。 19.如申請專利範圍第18項之方法,其中該呼叫進一步載 明: 137 1287195
且非::::否為,請求、,請求或,間 若該請求為空間請求,社作之大小; 激進旗標指示排程該工作之餘裕度; 5 以該叢集之交換器數目表示之該叢集大小; 叙接至該叢集之各個交換器之節點數目; 可供用於排程之節點數目;以及 於該叢集可供用於排程之節點串列。 2〇.如申請專利範圍第18項之方法,其中該迴送給管理引擎 1〇 之回覆進-步識別於該經選定之節點之空間、精簡、咬 非空間且非精簡組合中之各個節點之訊 (ΜΠ)等級。 ,丨面 儿如申請專利範圍第1S項之方法,其中若該請求為空間請 求且為三維,則產生該等空間組合之一包含來旋轉配^ 於該呼叫中載明之節點數目之一網格,以及該網格進二 步配合該等節點間之假設之空間關係,執行於該工作之 程序至六個方向之一。 22·如申請專利範圍第18項之方法,其中若該請求為空間請 求且為二維,則產生該等空間組合之一包含來摺疊該工 作之一未被使用的維度,來產生配合於來自該管理引擎 之呼叫中載明之節點數目之一網袼,以及旋轉該網袼至 六個方向之一。 23·如申請專利第18項之方法,其中若該請求為空間請 求且為一維,則產生該等空間組合之—包含來摺疊該工 138 作之二未被使用的維度,來產生配合於來自該管理引擎 之呼叫中載明之節點數目之一網格,以及旋轉該網格至 六個方向之一。 24. 如申請專利範圍第18項之方法,其係包含使用一掃描演 5 繹法則,其搜尋於該節點叢集之工作起點,來選出根據 該叢集可供用於排程之節點串列而可排程之該等空間 組合之一。 25. 如申請專利範圍第18項之方法,其中產生該叢集之節點 之一或多個精簡組合,其配合於來自該管理引擎之呼叫 10 中載明之節點數目包含: 產生於該叢集之節點之一第一精簡組合,其係配合 於來自該管理引擎之呼叫中載明之節點數目; 產生於該叢集之節點之一或多個第二精簡組合,其 係配合於來自該管理引擎之呼叫中載明之節點數目,第 15 二精簡組合各自係比該第一精簡組合較不精簡;以及 根據精簡程度分類該第一精簡組合及該第二精簡 組合來選出該第一精簡組合與該第二精簡組合之一。 26. 如申請專利範圍第18項之方法,其中產生於該叢集之節 點之一非空間且非精簡組合,其係配合於來自該管理引 20 擎之呼叫中載明之節點數目包含: 就該叢集之一第一維度進行一第一迴圈通過該叢 集,直到達到根據於該叢集可供用於排程之節點串列, 一第一節點無法用於排程為止; 就該叢集之一第二維度進行一第二迴圈通過該叢
1287195 集,直到達到根據於該叢集可供用於排程之節點串列, 一第二節點無法用於排程為止;以及 就該叢集之一第三維度進行一第三迴圈通過該叢 集,直到達到根據於該叢集可供用於排程之節點串列, 5 一第三節點無法用於排程為止。 27.如申請專利範圍第26項之方法,其進一步包含重複該第 一迴圈、第二迴圈及第三迴圈來涵蓋該叢集中之全部節
10 15
20 點0 28. 如申請專利範圍第18項之方法,進一步包含: 判定該叢集是否包含足量節點,可配合於來自該管 理引擎之呼叫中載明之工作中用於執行該工作之一或 多項程序之節點數目;以及 若該叢集包含少於足量節點來配合執行來自該管 理引擎之呼叫中載明之工作之一或多項程序用之節點 數目,則對該管理引擎指示該工作為無法排程。 29. 如申請專利範圍第18項之方法,其中該方法係根據無狀 態邏輯執行。 30. 如申請專利範圍第18項之方法,其中一節點為耦接至二 交換器之中央處理單元(CPU)。 31. 如申請專利範圍第18項之方法,其中該方法係於該管理 引擎之插拔執行。 32. 如申請專利範圍第18項之方法,其中該節點叢集為三維 圓環。 33.如申請專利範圍第18項之方法,其中該工作之各個程序 140 1287195 ~^rir2t-:--- 年月日修(<)正替換頁 當執行時係使用訊息進送介面(ΜΠ)而彼此通訊。 34·如申請專利範圍第18項之方法,其中: 該來自管理引擎之呼叫進一步載明一激進旗標,該 旗標指示分派用於選擇用來執行該工作之一或多項程 序之叢集中之節點的空間組合、精簡組合、或非空間且 非精簡組合之餘裕度; 該方法包含選擇該叢集中之節點的一空間組合、一 精簡組合、或__非空間且非精簡組合,驗根據來自該 μ、引擎之呼叫中載明的激進旗標而執行該工作之該 一或多項程序。 35·:種料效能運算(Ηρ⑽财馳之純,該於Hpc 系統中排程之系統包含: —接收裝置,其係接收來自一管理引擎之一呼叫,該 官理引擎操作綺理於該高效能運算(Hp⑽統之一節 點叢集’該呼叫載日卜請求,該請求包含_欲排程之工 _ s '、排程之J1作包含欲於該叢集之—*多個節點執 仃之-或多項程序,料叫進—步載明用於執行該 之節點數目; 20 辟妹 芏間晴求、一精 ,非空間且非精簡請求,若該工作假設執杆 該工作之處理程序之各節… 執仃 K卡 各即點間為工間關係,則該請求為 工曰”月求,若該玉作假設執行紅作 =近,則該請求為精簡請求;若該二 一乍之各項處理程序之節點間不具有空間關係也 141 1287195
10 15
20 不相鄰,則該請求為非空間且非精簡請求; 若該請求為空間請求,則包含: 產生裝置,其係用以產生該叢集之節點之一或 多項空間組合來配合於該呼叫中載明之節點數 目,以及進一步配合所假設之執行該工作之各節點 間之空間關係;以及 選擇裝置,其係用以選擇該等空間組合之一, 該一空間組合係可根據叢集中可用於排程之節點 串列而排程; 若該請求為精簡,則包含: 產生裝置,其係用以產生於該叢集之節點之一或 多個精簡組合,其配合於呼叫中載明之節點數目; 以及 選擇裝置,其係用以選擇該等精簡組合之一, 該一精簡組合係可根據叢集中可供用於排程之節 點串列而排程,以及該一精簡組合係比較根據叢集 中可供用於排程之節點串列而可排程之其它精簡 組合更為精簡; 若該請求既非空間也非精簡,則包含: 識別裝置,其係用以識別可根據該叢集中可供 用於排程之節點串列而排程之一或多個節點;以及 產生裝置,其係用以產生於該叢集之節點之非 空間且非精簡組合來配合於呼叫中載明之節點數 目,該非空間且非精簡組合包括可根據於該叢集可 142 1287195 f署1 1修‘正替換貝 供用於排程之節點串列而排程之一或多個經識別 之節點中之一或多者;以及 通訊裝置,其係傳遞一回覆給該管理引擎,該回覆 識別於該叢集之節點之經選定之空間組合、精簡組合、 5 或非空間且非精簡組合中之用於執行該工作之一或多 個節點。
143 1287195 七、指定代表圖: (一) 本案指定代表圖為:第(1 )圖。 (二) 本代表圖之元件符號簡單說明: 126···圖形使用者介面,gui 130···叢集管理引擎 132···叢集代理器 140…碟片場 142…儲存客端 150…工作 160…結果 102···高效能運算伺服器,Hpc伺服器 104···介面 105···管理節點 106…網路 108…鏈路 110…格網 115…運算節點
120…行政管理工作站或本地客端 八 '本案若有化學式時,請齡最能顯
TW094111493A 2004-11-17 2005-04-12 Method, system and computer-readable medium storing thereon logic instructions for scheduling in a high-performance computing (HPC) system TWI287195B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/991,598 US7433931B2 (en) 2004-11-17 2004-11-17 Scheduling in a high-performance computing (HPC) system

Publications (2)

Publication Number Publication Date
TW200622673A TW200622673A (en) 2006-07-01
TWI287195B true TWI287195B (en) 2007-09-21

Family

ID=34862294

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094111493A TWI287195B (en) 2004-11-17 2005-04-12 Method, system and computer-readable medium storing thereon logic instructions for scheduling in a high-performance computing (HPC) system

Country Status (10)

Country Link
US (2) US7433931B2 (zh)
EP (2) EP1580661A1 (zh)
JP (1) JP4185919B2 (zh)
KR (1) KR101160721B1 (zh)
CN (1) CN100380327C (zh)
CA (1) CA2503776C (zh)
IL (1) IL179827A (zh)
MY (1) MY142928A (zh)
TW (1) TWI287195B (zh)
WO (1) WO2006055028A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI469046B (zh) * 2011-04-07 2015-01-11 Intel Corp 基於旋轉的別名保護暫存器中的暫存器配置
US9152417B2 (en) 2011-09-27 2015-10-06 Intel Corporation Expediting execution time memory aliasing checking
US9161063B2 (en) 2008-02-27 2015-10-13 Ncomputing, Inc. System and method for low bandwidth display information transport
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8538843B2 (en) * 2000-07-17 2013-09-17 Galactic Computing Corporation Bvi/Bc Method and system for operating an E-commerce service provider
US7562143B2 (en) 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7406691B2 (en) * 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7552437B2 (en) 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US7464159B2 (en) * 2004-01-14 2008-12-09 International Business Machines Corporation Managing analysis of a degraded service in a grid environment
US8335909B2 (en) 2004-04-15 2012-12-18 Raytheon Company Coupling processors to each other for high performance computing (HPC)
US8336040B2 (en) 2004-04-15 2012-12-18 Raytheon Company System and method for topology-aware job scheduling and backfilling in an HPC environment
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
US9178784B2 (en) * 2004-04-15 2015-11-03 Raytheon Company System and method for cluster management based on HPC architecture
US20050235055A1 (en) * 2004-04-15 2005-10-20 Raytheon Company Graphical user interface for managing HPC clusters
US20060048157A1 (en) * 2004-05-18 2006-03-02 International Business Machines Corporation Dynamic grid job distribution from any resource within a grid environment
US7266547B2 (en) 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7584274B2 (en) * 2004-06-15 2009-09-01 International Business Machines Corporation Coordinating use of independent external resources within requesting grid environments
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US7712100B2 (en) * 2004-09-14 2010-05-04 International Business Machines Corporation Determining a capacity of a grid environment to handle a required workload for a virtual grid job request
JP2006082262A (ja) * 2004-09-14 2006-03-30 Canon Inc 画像処理装置およびジョブ処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
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
US7433931B2 (en) * 2004-11-17 2008-10-07 Raytheon Company Scheduling in a high-performance computing (HPC) system
US20060149652A1 (en) * 2005-01-06 2006-07-06 Fellenstein Craig W Receiving bid requests and pricing bid responses for potential grid job submissions within a grid environment
US7668741B2 (en) 2005-01-06 2010-02-23 International Business Machines Corporation Managing compliance with service level agreements in a grid environment
US7533170B2 (en) * 2005-01-06 2009-05-12 International Business Machines Corporation Coordinating the monitoring, management, and prediction of unintended changes within a grid environment
US7590623B2 (en) 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7502850B2 (en) * 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7793308B2 (en) 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US7707288B2 (en) 2005-01-06 2010-04-27 International Business Machines Corporation Automatically building a locally managed virtual node grouping to handle a grid job requiring a degree of resource parallelism within a grid environment
US7761557B2 (en) 2005-01-06 2010-07-20 International Business Machines Corporation Facilitating overall grid environment management by monitoring and distributing grid activity
US7467196B2 (en) * 2005-01-12 2008-12-16 International Business Machines Corporation Managing network errors communicated in a message transaction with error information using a troubleshooting agent
US7562035B2 (en) * 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7472079B2 (en) * 2005-01-12 2008-12-30 International Business Machines Corporation Computer implemented method for automatically controlling selection of a grid provider for a grid job
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
JP4291281B2 (ja) * 2005-02-03 2009-07-08 富士通株式会社 情報処理システム、計算ノード、情報処理システムの制御方法
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
US20060198386A1 (en) * 2005-03-01 2006-09-07 Tong Liu System and method for distributed information handling system cluster active-active master node
US20070027751A1 (en) * 2005-07-29 2007-02-01 Chad Carson Positioning advertisements on the bases of expected revenue
WO2007038445A2 (en) * 2005-09-26 2007-04-05 Advanced Cluster Systems, Llc Clustered computer system
US8713179B2 (en) * 2005-10-04 2014-04-29 International Business Machines Corporation Grid computing accounting and statistics management system
WO2007056713A2 (en) * 2005-11-04 2007-05-18 The Trustees Of Columbia University In The City Of New York An optical network
TWI314688B (en) * 2006-06-09 2009-09-11 Asustek Comp Inc Computer and main circuit board thereof
US8082289B2 (en) 2006-06-13 2011-12-20 Advanced Cluster Systems, Inc. Cluster computing support for application programs
US8582972B2 (en) * 2006-08-31 2013-11-12 The Trustees Of Columbia University In The City Of New York Systems and methods for storing optical data
US20080101395A1 (en) * 2006-10-30 2008-05-01 Raytheon Company System and Method for Networking Computer Clusters
WO2008080122A2 (en) * 2006-12-22 2008-07-03 The Trustees Of Columbia University In The City Of New York Systems and method for on-chip data communication
US8160061B2 (en) * 2006-12-29 2012-04-17 Raytheon Company Redundant network shared switch
JP4806362B2 (ja) 2007-02-14 2011-11-02 富士通株式会社 並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法
US7827266B2 (en) * 2007-07-31 2010-11-02 Hewlett-Packard Development Company, L.P. System and method of controlling multiple computer platforms
US8200738B2 (en) 2007-09-30 2012-06-12 Oracle America, Inc. Virtual cluster based upon operating system virtualization
JP2010541100A (ja) * 2007-10-03 2010-12-24 スケールアウト ソフトウェア インコーポレイテッド 計算グリッド上に高可用性データ並列操作を実装する方法
US8151267B2 (en) * 2008-04-08 2012-04-03 Xerox Corporation Printing system scheduler methods and systems
US20100023622A1 (en) * 2008-07-25 2010-01-28 Electronics And Telecommunications Research Institute Method for assigning resource of united system
US8812578B2 (en) * 2008-11-07 2014-08-19 International Business Machines Corporation Establishing future start times for jobs to be executed in a multi-cluster environment
JP5406287B2 (ja) * 2009-05-25 2014-02-05 パナソニック株式会社 マルチプロセッサシステム、マルチプロセッサ制御方法、及びマルチプロセッサ集積回路
US9836783B2 (en) 2009-07-24 2017-12-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for content selection, delivery and payment
CN101630275B (zh) * 2009-07-31 2012-07-04 清华大学 一种实现生成循环任务配置信息的方法和装置
JP5532849B2 (ja) * 2009-11-20 2014-06-25 富士通株式会社 コンピュータ、プロセス間通信プログラム、およびプロセス間通信方法
TWI423039B (zh) * 2010-07-23 2014-01-11 Quanta Comp Inc 伺服器系統與其操作方法
US8984519B2 (en) * 2010-11-17 2015-03-17 Nec Laboratories America, Inc. Scheduler and resource manager for coprocessor-based heterogeneous clusters
US8612597B2 (en) 2010-12-07 2013-12-17 Microsoft Corporation Computing scheduling using resource lend and borrow
CN102103521A (zh) * 2011-01-31 2011-06-22 中国科学院计算技术研究所 Hpc系统以及基于hpc系统的动态分派任务的方法
JP5684629B2 (ja) * 2011-03-31 2015-03-18 日本電気株式会社 ジョブ管理システム及びジョブ管理方法
US8904398B2 (en) * 2011-03-31 2014-12-02 International Business Machines Corporation Hierarchical task mapping
US20120324456A1 (en) 2011-06-16 2012-12-20 Microsoft Corporation Managing nodes in a high-performance computing system using a node registrar
WO2012103705A1 (zh) 2011-06-24 2012-08-09 华为技术有限公司 计算机子系统和计算机系统
US8875157B2 (en) * 2011-09-09 2014-10-28 Microsoft Corporation Deployment of pre-scheduled tasks in clusters
US9063750B2 (en) 2012-02-01 2015-06-23 Hewlett-Packard Development Company, L.P. Mapping high-performance computing applications to platforms
CN103473247B (zh) * 2012-06-30 2017-02-08 中国地质调查局西安地质调查中心 地质资料信息集群机理与接口聚合系统
US20140047342A1 (en) * 2012-08-07 2014-02-13 Advanced Micro Devices, Inc. System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics
CN102902878B (zh) * 2012-08-17 2016-12-21 曙光信息产业(北京)有限公司 一种能源成本感知调度方法
US8943353B2 (en) 2013-01-31 2015-01-27 Hewlett-Packard Development Company, L.P. Assigning nodes to jobs based on reliability factors
US9424229B2 (en) * 2013-02-13 2016-08-23 Advanced Micro Devices, Inc. Parallel torus network interconnect
JP6191332B2 (ja) * 2013-08-22 2017-09-06 富士通株式会社 並列計算機システム、並列計算機システムの制御方法及び管理装置の制御プログラム
JP6191361B2 (ja) * 2013-09-25 2017-09-06 富士通株式会社 情報処理システム、情報処理システムの制御方法及び制御プログラム
JP6364880B2 (ja) 2014-03-31 2018-08-01 富士通株式会社 並列計算機システム,ジョブ管理装置の制御プログラム,及び並列計算機システムの制御方法
JP2016004310A (ja) * 2014-06-13 2016-01-12 富士通株式会社 並列計算機システム、制御方法およびジョブ管理プログラム
US9405582B2 (en) * 2014-06-20 2016-08-02 International Business Machines Corporation Dynamic parallel distributed job configuration in a shared-resource environment
US9442760B2 (en) * 2014-10-03 2016-09-13 Microsoft Technology Licensing, Llc Job scheduling using expected server performance information
JP6413634B2 (ja) 2014-10-30 2018-10-31 富士通株式会社 ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置
US9785522B2 (en) * 2014-11-14 2017-10-10 Cisco Technology, Inc. Adaptive datacenter topology for distributed frameworks job control through network awareness
US9894147B1 (en) * 2014-12-23 2018-02-13 EMC IP Holding Company LLC Application plugin framework for big-data clusters
KR101656706B1 (ko) 2015-04-02 2016-09-22 두산중공업 주식회사 고성능 컴퓨팅 환경에서의 작업 분배 시스템 및 방법
KR102024934B1 (ko) * 2015-12-30 2019-11-04 한국전자통신연구원 분산 파일 시스템 및 이의 파일 연산 처리 방법
US10433025B2 (en) * 2016-05-10 2019-10-01 Jaunt Inc. Virtual reality resource scheduling of process in a cloud-based virtual reality processing system
US10263909B2 (en) * 2016-05-27 2019-04-16 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. System, method, and computer program for managing network bandwidth by an endpoint
KR102162466B1 (ko) * 2016-10-07 2020-10-08 한국전자통신연구원 분산 스토리지 서버, 그것에 포함되는 서버 장치, 및 서버 장치를 동작시키는 방법
US10592280B2 (en) * 2016-11-23 2020-03-17 Amazon Technologies, Inc. Resource allocation and scheduling for batch jobs
US9898347B1 (en) * 2017-03-15 2018-02-20 Sap Se Scaling computing resources in a cluster
US10571983B2 (en) 2017-06-28 2020-02-25 International Business Machines Corporation Continuously available power control system
US10088643B1 (en) 2017-06-28 2018-10-02 International Business Machines Corporation Multidimensional torus shuffle box
US10169048B1 (en) 2017-06-28 2019-01-01 International Business Machines Corporation Preparing computer nodes to boot in a multidimensional torus fabric network
US10356008B2 (en) 2017-06-28 2019-07-16 International Business Machines Corporation Large scale fabric attached architecture
US10606640B2 (en) 2017-12-23 2020-03-31 International Business Machines Corporation Rescheduling high performance computing jobs based on personalized sanity checks and job problem resolution classification
US11042416B2 (en) * 2019-03-06 2021-06-22 Google Llc Reconfigurable computing pods using optical networks
FR3094812A1 (fr) * 2019-04-08 2020-10-09 Orange Procédé et dispositif de migration d’une fonction virtualisée en cas de défaillance de l’environnement technique de serveurs
US11256547B2 (en) 2019-05-31 2022-02-22 Altair Engineering, Inc. Efficient allocation of cloud computing resources to job requests
US20200389352A1 (en) * 2019-06-04 2020-12-10 Microsoft Technology Licensing, Llc Automated upgrade of multiple hosts
JP2022537944A (ja) * 2019-06-12 2022-08-31 ニューヨーク ユニバーシティ イン アブダビ コーポレーション マルチコア処理システムに領域分割認識プロセッサを割り当てるためのシステム、方法及びコンピュータアクセス可能媒体
US11394660B2 (en) * 2020-05-13 2022-07-19 Google Llc Processing allocation in data center fleets

Family Cites Families (117)

* Cited by examiner, † Cited by third party
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
EP1191457A2 (en) 1994-03-22 2002-03-27 Hyperchip Inc. Monolithic systems with dynamically focused input/output
JPH08227356A (ja) 1994-12-21 1996-09-03 Tec Corp データ処理装置
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
JP2940450B2 (ja) * 1995-10-26 1999-08-25 日本電気株式会社 クラスタ型コンピュータのジョブスケジュール方法及び装置
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
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
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
WO2001071524A1 (en) 2000-03-22 2001-09-27 Yotta Yotta, Inc. Method and system for providing multimedia information on demand over wide area 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
JP3712654B2 (ja) 2000-10-30 2005-11-02 三菱重工業株式会社 気体状況予測方法
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
US7555566B2 (en) 2001-02-24 2009-06-30 International Business Machines Corporation Massively parallel supercomputer
US7107337B2 (en) * 2001-06-07 2006-09-12 Emc Corporation Data storage system with integrated switching
JP2002259352A (ja) * 2001-03-01 2002-09-13 Handotai Rikougaku Kenkyu Center:Kk マルチプロセッサシステム装置
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
EP1402355B1 (en) 2001-05-23 2018-08-29 Tekelec Global, Inc. Methods and systems for automatically configuring network monitoring system
US8010558B2 (en) * 2001-06-05 2011-08-30 Silicon Graphics International Relocation of metadata server with outstanding DMAPI requests
US6950833B2 (en) * 2001-06-05 2005-09-27 Silicon Graphics, Inc. Clustered filesystem
JP2003006175A (ja) * 2001-06-26 2003-01-10 Hitachi Ltd プロセス実行時のプログラム動作特性に基づくプロセススケジューリング方法及びこれを用いたプログラム及びデータ処理装置
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
SE0102405D0 (sv) 2001-07-04 2001-07-04 Software Run Ab A system and a method for selecting a preconfigured operating system for a server
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
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
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
WO2005036367A2 (en) * 2003-10-08 2005-04-21 Unisys Corporation Virtual data center that allocates and manages system resources across multiple nodes
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
US8336040B2 (en) * 2004-04-15 2012-12-18 Raytheon Company System and method for topology-aware job scheduling and backfilling in an HPC environment
US8190714B2 (en) 2004-04-15 2012-05-29 Raytheon Company System and method for computer cluster virtualization using dynamic boot images and virtual disk
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
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
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 磁気ディスク装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9161063B2 (en) 2008-02-27 2015-10-13 Ncomputing, Inc. System and method for low bandwidth display information transport
US9635373B2 (en) 2008-02-27 2017-04-25 Ncomputing, Inc. System and method for low bandwidth display information transport
TWI469046B (zh) * 2011-04-07 2015-01-11 Intel Corp 基於旋轉的別名保護暫存器中的暫存器配置
US9152417B2 (en) 2011-09-27 2015-10-06 Intel Corporation Expediting execution time memory aliasing checking
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置

Also Published As

Publication number Publication date
WO2006055028A1 (en) 2006-05-26
CA2503776A1 (en) 2006-05-17
IL179827A (en) 2012-07-31
MY142928A (en) 2011-01-31
KR20070086231A (ko) 2007-08-27
EP3113021A2 (en) 2017-01-04
JP2006146864A (ja) 2006-06-08
US20060106931A1 (en) 2006-05-18
EP3113021A3 (en) 2018-02-28
TW200622673A (en) 2006-07-01
EP1580661A1 (en) 2005-09-28
CN100380327C (zh) 2008-04-09
US20090031316A1 (en) 2009-01-29
IL179827A0 (en) 2007-05-15
US7433931B2 (en) 2008-10-07
EP3113021B1 (en) 2022-09-14
JP4185919B2 (ja) 2008-11-26
KR101160721B1 (ko) 2012-06-28
CA2503776C (en) 2009-03-24
US8209395B2 (en) 2012-06-26
CN1776622A (zh) 2006-05-24

Similar Documents

Publication Publication Date Title
TWI287195B (en) Method, system and computer-readable medium storing thereon logic instructions for scheduling in a high-performance computing (HPC) system
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
US10621009B2 (en) System and method for topology-aware job scheduling and backfilling in an HPC environment
JP4986844B2 (ja) Hpcノード障害の検出及び管理を行うシステム及び方法
JP4833965B2 (ja) Hpcアーキテクチャに基づいたクラスタ管理のシステム及び方法
JP5570095B2 (ja) ハイパフォーマンスコンピューティング(hpc)システムにおけるフォルトトレランス及びリカバリ
JP2007533034A (ja) Hpcクラスタを管理するためのグラフィカル・ユーザ・インタフェース

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees