專(zhuān)利名稱(chēng):跨越多核心系統(tǒng)動(dòng)態(tài)分布多維工作集的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及多處理器數(shù)據(jù)處理系統(tǒng),并且具體涉及配置有多個(gè)處理單元的數(shù)據(jù)處理系統(tǒng)上的操作。更具體地,本發(fā)明涉及用于跨越多核心數(shù)據(jù)處理系統(tǒng)的多個(gè)處理處理單元的分布式工作的競(jìng)爭(zhēng)并行處理的方法和系統(tǒng)。
背景技術(shù):
先進(jìn)的計(jì)算處理實(shí)現(xiàn)作為多維工作集的工作競(jìng)爭(zhēng)。例如,在設(shè)計(jì)用于執(zhí)行對(duì)于2或3維對(duì)象的操作的計(jì)算標(biāo)準(zhǔn)(例如,OpenCL )中提供N維(ND)范圍命令,其使得要調(diào)度的多維工作集能夠使用等于N維的索引空間,其中工作因而在該N維空間上重復(fù)(OpenCL是蘋(píng)果公司的商標(biāo))。在這些用于跨越多維空間競(jìng)爭(zhēng)工作的傳統(tǒng)方法的情況下,存在固有的復(fù)雜性,使得非常難以有效地調(diào)度工作和/或有效地通信(跨越多維)調(diào)度和競(jìng)爭(zhēng)哪個(gè)工作。
發(fā)明內(nèi)容
從一個(gè)方面來(lái)看,本發(fā)明提供一種方法、計(jì)算機(jī)系統(tǒng)架構(gòu)和計(jì)算機(jī)程序產(chǎn)品,用于數(shù)據(jù)處理系統(tǒng)中N維(ND)范圍命令的有效分派/完成。所述方法包括編譯器從接收的程序指令生成一個(gè)或多個(gè)命令,其中所述一個(gè)或多個(gè)命令由運(yùn)行時(shí)間調(diào)度程序利用,以便調(diào)度工作用于在數(shù)據(jù)處理系統(tǒng)內(nèi)的一個(gè)或多個(gè)處理單元上執(zhí)行;與編譯器相關(guān)聯(lián)的ND范圍工作處理(WP)邏輯確定由編譯器生成的命令何時(shí)將在ND范圍的操作數(shù)上實(shí)施,以N維配置安排該ND范圍的操作數(shù),其中N大于一(I);當(dāng)N大于一(I)時(shí),將ND范圍的操作數(shù)自動(dòng)分解為包括P個(gè)順序排序的工作項(xiàng)目的一(I)維工作元素,P個(gè)順序排序的工作項(xiàng)目每個(gè)代表一維工作元素中ND范圍的操作數(shù)之一;將單維工作元素放置在數(shù)據(jù)處理系統(tǒng)的命令隊(duì)列的一個(gè)或多個(gè)條目?jī)?nèi),其中一個(gè)或多個(gè)條目的每個(gè)以排序的順序保持工作項(xiàng)目的ID陣列;以及實(shí)現(xiàn)來(lái)自命令隊(duì)列的工作項(xiàng)目的ID陣列到一個(gè)或多個(gè)處理單元的順序分派,其中分派工作項(xiàng)目的ID陣列用于以排序的順序執(zhí)行;并且通過(guò)將單維工作輸出結(jié)果映射到對(duì)應(yīng)于由單維工作項(xiàng)目代表的ND范圍操作數(shù)的原始位置的ND位置,生成ND范圍輸出。在檢查以下附圖和詳細(xì)的書(shū)面描述時(shí),要求保護(hù)的主題的其他系統(tǒng)、方法、功能、特征和優(yōu)點(diǎn)將或?qū)⒆兊脤?duì)于本領(lǐng)域的技術(shù)人員明顯。
參照附圖,現(xiàn)在將僅作為示例描述本發(fā)明的實(shí)施例,附圖中圖I圖示示例多節(jié)點(diǎn)、具有多個(gè)節(jié)點(diǎn)的分布式數(shù)據(jù)處理系統(tǒng)架構(gòu),每個(gè)節(jié)點(diǎn)具有多個(gè)處理器核心和本地存儲(chǔ)器,其中可以實(shí)施描述的實(shí)施例的一個(gè)或多個(gè)特征;圖2圖示具有兩個(gè)處理節(jié)點(diǎn)的非統(tǒng)一存儲(chǔ)器訪問(wèn)(NUMA)系統(tǒng)的現(xiàn)有技術(shù)實(shí)施,處理節(jié)點(diǎn)具有工作的預(yù)分布部分的本地工作隊(duì)列,本地工作隊(duì)列使用工作隊(duì)列重新平衡算法周期性地重新平衡;圖3圖示根據(jù)一個(gè)實(shí)施例的多核心、多節(jié)點(diǎn)處理系統(tǒng)的第一示例,該系統(tǒng)配置有具有與每個(gè)工作條目相關(guān)聯(lián)的核準(zhǔn)處理器單元(APU)掩碼和與每個(gè)處理器核心相關(guān)聯(lián)的處理器單元(PU)掩碼的共享全局命令隊(duì)列(GCQ),以便實(shí)現(xiàn)通過(guò)系統(tǒng)內(nèi)的核準(zhǔn)處理器核心的工作的選擇性檢索;圖4圖不根據(jù)一個(gè)實(shí)施例的處理器核心的F1U掩碼與GCQ內(nèi)工作兀素的APU掩碼的邏輯比較,以便確定允許哪些處理器核心檢索來(lái)自工作元素的工作項(xiàng)目;圖5圖示根據(jù)一個(gè)實(shí)施例的工作請(qǐng)求操作,其中通過(guò)其掩碼匹配工作元素的APU掩碼的處理器核心,從工作元素順序檢索工作項(xiàng)目;圖6A-6D提供根據(jù)一個(gè)實(shí)施例的框圖的序列,其表現(xiàn)具有APU掩碼的示例全局命 令隊(duì)列,并且圖示隨著由一個(gè)或多個(gè)預(yù)先選擇的處理器核心從用于處理的工作元素檢索工作項(xiàng)目,對(duì)于全局命令隊(duì)列內(nèi)的計(jì)數(shù)變量的修改;圖7是根據(jù)一個(gè)實(shí)施例的方法的流程圖,通過(guò)該方法分配選擇的處理器核心用于分派工作元素和相應(yīng)的APU掩碼,并且生成和分配計(jì)數(shù)變量到GCQ內(nèi)的工作元素;圖8是根據(jù)一個(gè)實(shí)施例的方法的流程圖,通過(guò)該方法驗(yàn)證處理器核心用于利用APU掩碼和計(jì)數(shù)變量的來(lái)自GCQ內(nèi)工作元素的工作項(xiàng)目的分配,以便跟蹤工作項(xiàng)目和工作元素的執(zhí)行的完成;圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的多節(jié)點(diǎn)處理系統(tǒng)架構(gòu),其具有一個(gè)或多個(gè)處理節(jié)點(diǎn)與GCQ之間的高等待時(shí)間,其中通過(guò)在每個(gè)處理節(jié)點(diǎn)提供的本地工作隊(duì)列支持工作元素的有效處理;圖10圖示根據(jù)一個(gè)實(shí)施例的混合多核心數(shù)據(jù)處理系統(tǒng)架構(gòu),其具有僅為具有到GCQ的高訪問(wèn)等待時(shí)間的那些處理節(jié)點(diǎn)提供的本地工作隊(duì)列;圖11圖示根據(jù)一個(gè)實(shí)施例的,通過(guò)具有到GCQ的低訪問(wèn)等待時(shí)間的第一處理器核心和具有到GCQ的高訪問(wèn)等待時(shí)間的第二處理器核心從工作元素的工作檢索;圖12圖示根據(jù)一個(gè)實(shí)施例的,經(jīng)由本地工作隊(duì)列在具有到GCQ的高訪問(wèn)等待時(shí)間的處理節(jié)點(diǎn)的工作完成處理;圖13是根據(jù)一個(gè)實(shí)施例的方法的流程圖,通過(guò)該方法從GCQ檢索工作,并且在具有到GCQ的低訪問(wèn)等待時(shí)間的第一處理節(jié)點(diǎn)和具有到GCQ的高訪問(wèn)等待時(shí)間的第二處理節(jié)點(diǎn)執(zhí)行工作;圖14是根據(jù)一個(gè)實(shí)施例的方法的流程圖,通過(guò)該方法高等待時(shí)間處理器節(jié)點(diǎn)的處理器核心執(zhí)行來(lái)自本地工作隊(duì)列的工作項(xiàng)目,跟蹤本地工作隊(duì)列內(nèi)剩余的工作項(xiàng)目的量,并且發(fā)出請(qǐng)求以從GCQ檢索額外工作用于處理器節(jié)點(diǎn);圖15是根據(jù)一個(gè)實(shí)施例的方法的流程圖,通過(guò)該方法GCQ邏輯動(dòng)態(tài)計(jì)算工作的塊大小,以便轉(zhuǎn)發(fā)到從工作元素請(qǐng)求工作的高等待時(shí)間處理節(jié)點(diǎn);圖16A圖示根據(jù)一個(gè)實(shí)施例的,通過(guò)編譯器/ND范圍分解邏輯(邏輯)將4X4、二
(2)維(2D)范圍工作集分解為單(一)維工作元素(陣列);圖16B圖示根據(jù)一個(gè)實(shí)施例的,通過(guò)編譯器/邏輯利用剩余工作項(xiàng)目計(jì)數(shù)器和塊大小以及隨后的重新配置,將單維工作元素(陣列)順序處理為2D范圍輸出;圖17A圖示根據(jù)一個(gè)實(shí)施例的,通過(guò)編譯器/邏輯將4 X 2 X 2、三(3 )維(3D )范圍工作集分解為單(一)維工作元素(陣列);圖17B圖示根據(jù)一個(gè)實(shí)施例的,通過(guò)圖17A的單維工作元素的處理單元和通過(guò)編譯器/邏輯的隨后重新配置/重新合成處理為3D范圍輸出;圖18是根據(jù)一個(gè)實(shí)施例的流程圖,其將多維范圍工作集分解為代表性的一維工作元素,用于工作項(xiàng)目到多處理器核心的有效分派;圖19A-19F提供根據(jù)一個(gè)實(shí)施例的圖的序列,圖示(a)將3X3X3、三(3)維(3D)范圍工作集分解為順序安排的工作項(xiàng)目的單維(ID)陣列(工作元素),以及(b)雖有利用剩余工作項(xiàng)目計(jì)數(shù)器和塊大小的單維工作元素的隨后的順序處理;以及圖20是根據(jù)一個(gè)實(shí)施例的流程圖,其從相應(yīng)的單維工作元素的執(zhí)行生成的單維工作輸出生成/重新合成多維范圍輸出。
具體實(shí)施例方式說(shuō)明性實(shí)施例提供一種方法、多節(jié)點(diǎn)、多核心系統(tǒng)架構(gòu)和計(jì)算機(jī)程序產(chǎn)品或制造的商品,其實(shí)現(xiàn)數(shù)據(jù)處理系統(tǒng)(DPS)中N維(ND)范圍命令的有效分派/競(jìng)爭(zhēng)。方法實(shí)施其中包括步驟編譯器從接收的程序指令生成一個(gè)或多個(gè)命令;ND范圍工作處理(WP)邏輯確 定由編譯器生成的命令何時(shí)將在操作數(shù)的ND配置上實(shí)施,其中N大于一(I);將操作數(shù)的ND配置自動(dòng)分解為一(I)維(ID)工作元素,其包括每個(gè)代表操作數(shù)之一的P個(gè)順序排列的工作項(xiàng)目;在DPS的命令隊(duì)列內(nèi)放置ID工作元素;從命令隊(duì)列到一個(gè)或多個(gè)處理單元實(shí)現(xiàn)以排列序列的ID工作項(xiàng)目的順序分派;并且通過(guò)將ID工作輸出結(jié)果映射到對(duì)應(yīng)于由ID工作項(xiàng)目代表的操作數(shù)的原始定位的ND位置,生成ND范圍輸出。在本發(fā)明的示例性實(shí)施例的以下詳細(xì)描述中,足夠詳細(xì)描述可以實(shí)踐本發(fā)明的示例性實(shí)施例,使得本領(lǐng)域的技術(shù)人員能夠?qū)嵺`本發(fā)明,并且要了解的是,可以利用其他實(shí)施例,并且可以進(jìn)行邏輯的、架構(gòu)的、程序的、機(jī)械的、電子的和其他改變而不背離本發(fā)明的范圍。因此,以下詳細(xì)描述不取為限制意義,并且本發(fā)明的范圍僅由權(quán)利要求限定。在附圖的描述中,類(lèi)似的元件與之前(各)附圖的那些元件提供類(lèi)似的名稱(chēng)和參考標(biāo)號(hào)。在之后附圖利用不同背景或具有不同功能的元件的情況下,為該元件提供代表附圖號(hào)的不同引導(dǎo)標(biāo)號(hào)(例如,對(duì)于圖I的Ixx和對(duì)于圖2的2xx)。分配給各元件的具體標(biāo)號(hào)僅提供來(lái)輔助描述,而不旨在意味著對(duì)于本發(fā)明的任何(結(jié)構(gòu)或功能)限制。要理解的是,具體組件、設(shè)備和/或參數(shù)名稱(chēng)的使用僅僅用于示例,而不意味著對(duì)于本發(fā)明的任何限制。本發(fā)明因此可以用在此非限制性地用來(lái)描述組件/設(shè)備/參數(shù)的不同命民法/術(shù)語(yǔ)實(shí)施。在此利用的每個(gè)術(shù)語(yǔ)考慮利用該術(shù)語(yǔ)的背景給出其最寬的解釋。具體地,在此利用的以下術(shù)語(yǔ)定義如下(I)核準(zhǔn)處理單元(Approved Processing Unit, APU):具有代表鏈接到全局命令隊(duì)列(GCQ)中的具體工作元素的全局位掩碼(APU掩碼)中的位掩碼(即,設(shè)為I)的處理器核心。APU是允許處理來(lái)自全局命令隊(duì)列中的特定工作集的處理工作的總體系統(tǒng)中的所有處理器核心中的處理器核心。(2)內(nèi)核(kernel)/工作元素要執(zhí)行的功能以及在輸入數(shù)據(jù)的特定集上執(zhí)行該功能的次數(shù)的組合。對(duì)于唯一數(shù)據(jù)的每個(gè)功能的執(zhí)行在此稱(chēng)為“工作項(xiàng)目”,并且假設(shè)每個(gè)功能元素包括可以通過(guò)多個(gè)不同的處理單元跨越多個(gè)不同處理節(jié)點(diǎn)執(zhí)行的多個(gè)工作項(xiàng)目。(3)工作項(xiàng)目數(shù)據(jù)集的基本元素(例如,字節(jié)、串、整數(shù)、浮點(diǎn)數(shù)、像素、陣列、數(shù)據(jù)結(jié)構(gòu)等)。
(4)工作組一組工作項(xiàng)目,當(dāng)置于全局命令隊(duì)列的單個(gè)條目時(shí),該組在此稱(chēng)為“工作元素”。(5) ND范圍大小索引空間中的工作項(xiàng)目的數(shù)目。(6)工作組大小工作組中工作項(xiàng)目的數(shù)目,其中該數(shù)目分為ND范圍大小而沒(méi)有余數(shù)。(7)內(nèi)核處理工作項(xiàng)目以產(chǎn)生結(jié)果的功能,其中通過(guò)可由處理器核心執(zhí)行的一個(gè)或多個(gè)指令實(shí)施該功能。(8)內(nèi)核對(duì)象內(nèi)核以及當(dāng)執(zhí)行內(nèi)核時(shí)使用的(多個(gè))變量。(9)工作項(xiàng)目剩余(WIR)計(jì)數(shù)器跟蹤工作元素內(nèi)工作項(xiàng)目的數(shù)目的計(jì)數(shù)器,并且每次由處理器核心移除一個(gè)或多個(gè)工作項(xiàng)目就減少該計(jì)數(shù)器。(10)看見(jiàn)計(jì)數(shù)器跟蹤已經(jīng)看見(jiàn)/詢(xún)問(wèn)用于工作的工作元素的核準(zhǔn)處理單元的數(shù) 目的計(jì)數(shù)器??匆?jiàn)計(jì)數(shù)器初始設(shè)為分配給工作元素的APU的總數(shù),并且在WIR計(jì)數(shù)器值處于或低于零時(shí)每次不同一個(gè)APU檢查用于工作的工作元素,就連續(xù)減少該計(jì)數(shù)器。只要看見(jiàn)計(jì)數(shù)器到達(dá)零就從GCQ移除工作元素。在以下描述中,標(biāo)題或部分標(biāo)簽提供到具體部分中提供的本發(fā)明的各部分的個(gè)別功能描述。提供這些標(biāo)題以實(shí)現(xiàn)說(shuō)明性實(shí)施例的呈現(xiàn)中的更好流程,并且不意味著對(duì)于本發(fā)明或?qū)τ谔囟ú糠种忻枋龅娜魏我话愎δ艿娜魏蜗拗?。在任一部分中呈現(xiàn)的材料可以應(yīng)用于下一個(gè)部分,并且反之亦然。A.系統(tǒng)架構(gòu)如在此提供的,本發(fā)明可應(yīng)用于這種多核心系統(tǒng)的任何數(shù)目的不同配置,包括配置為大規(guī)模并行處理系統(tǒng)的一個(gè),或者配置為非唯一存儲(chǔ)器訪問(wèn)(NUMA)處理系統(tǒng)的一個(gè),或者其他類(lèi)型的多核心處理系統(tǒng),包括并行處理系統(tǒng)。在此提供的描述除了多核心架構(gòu)外不假設(shè)具體架構(gòu)。然而,假設(shè)在多節(jié)點(diǎn)架構(gòu)(例如,具有多個(gè)處理節(jié)點(diǎn)的系統(tǒng))中實(shí)施特定特征,其中一個(gè)或多個(gè)處理節(jié)點(diǎn)在訪問(wèn)全局/共享存儲(chǔ)器結(jié)構(gòu)時(shí)展現(xiàn)低等待時(shí)間,同時(shí)假設(shè)在多節(jié)點(diǎn)架構(gòu)中實(shí)施其他特征,其中一個(gè)或多個(gè)處理節(jié)點(diǎn)在訪問(wèn)全局/共享存儲(chǔ)器結(jié)構(gòu)時(shí)展現(xiàn)聞等待時(shí)間。如下面進(jìn)一步描述的,在處理節(jié)點(diǎn)內(nèi)提供本發(fā)明的功能特征的實(shí)施,并且涉及使用硬件、固件、以及若干軟件級(jí)結(jié)構(gòu)的組合。呈現(xiàn)的附示示例分布式、多節(jié)點(diǎn)計(jì)算環(huán)境中的硬件和軟件組件,其中經(jīng)由一般系統(tǒng)互連和/或網(wǎng)絡(luò)接口設(shè)備(NID)和/或主機(jī)構(gòu)造接口(HFI)和/或一個(gè)或多個(gè)其他形式的互連(例如,交換機(jī)等)互連的多個(gè)物理上分離處理節(jié)點(diǎn)提供分布式數(shù)據(jù)處理系統(tǒng),其經(jīng)由多個(gè)處理器核心執(zhí)行一個(gè)或多個(gè)ND工作集。圖示和描述的實(shí)施例假設(shè)系統(tǒng)架構(gòu)可以按比例縮放到非常大量的處理節(jié)點(diǎn)?,F(xiàn)在轉(zhuǎn)向附圖,并且特別轉(zhuǎn)向圖1,其圖示示例多節(jié)點(diǎn)、分布式數(shù)據(jù)處理系統(tǒng)(DPS)架構(gòu),其中可以有利地實(shí)施描述的實(shí)施例。如所示的,DPS架構(gòu)100包括本地處理系統(tǒng)101,其經(jīng)由諸如網(wǎng)絡(luò)結(jié)構(gòu)或交換機(jī)的互連165耦合到遠(yuǎn)程計(jì)算設(shè)備170。本地處理節(jié)點(diǎn)101包括多個(gè)處理節(jié)點(diǎn),其中圖示處理節(jié)點(diǎn)0110A和處理節(jié)點(diǎn)N IlOB0處理節(jié)點(diǎn)0110A和處理節(jié)點(diǎn)N IlOB耦合到系統(tǒng)互連140,其用作并且可以可交替地稱(chēng)為數(shù)據(jù)總線(xiàn)。系統(tǒng)互連140提供處理系統(tǒng)101到各種設(shè)備(包括但不限于存儲(chǔ)器控制器150A、150B和輸入/輸出(I/O)控制器156)的連接性。存儲(chǔ)器控制器150AU50B控制對(duì)于各個(gè)系統(tǒng)存儲(chǔ)器設(shè)備152AU52B的訪問(wèn)。取決于系統(tǒng)設(shè)計(jì),存儲(chǔ)器控制器150AU50B可以分配到各個(gè)處理節(jié)點(diǎn)IlOA或110B,和/或可以物理地位于處理器芯片或總體系統(tǒng)架構(gòu)內(nèi)的一些其它位置。要理解的是多個(gè)存儲(chǔ)器控制器150AU50B的存在是設(shè)計(jì)參數(shù),并且在替代實(shí)施例中本地處理系統(tǒng)101可以配置有單個(gè)存儲(chǔ)器控制器。在一個(gè)實(shí)施例中,I/O控制器156提供對(duì)于一個(gè)或多個(gè)I/O設(shè)備158 (諸如指示設(shè)備、顯示監(jiān)視器等)的控制。除了總體系統(tǒng)的系統(tǒng)存儲(chǔ)器設(shè)備152AU52B外,每個(gè)處理節(jié)點(diǎn)IlOA和IlOB具有相關(guān)聯(lián)的節(jié)點(diǎn)本地存儲(chǔ)器154AU54B,其允許處理節(jié)點(diǎn)的工作的分級(jí)保持(stage),而不要求處理節(jié)點(diǎn)必須個(gè)別地從系統(tǒng)存儲(chǔ)器152A、152B或其它遠(yuǎn)程(或高等待時(shí)間)位置檢索每條工作。每個(gè)處理節(jié)點(diǎn)110A、IlOB具有多個(gè)處理器核心,盡管可能對(duì)于每個(gè)節(jié)點(diǎn)是單核心節(jié)點(diǎn)。如所示的,處理器節(jié)點(diǎn)IlOA包括N+1個(gè)核心,編號(hào)core_0到core_N,其中N是大于0的整數(shù)。同樣地,處理器節(jié)點(diǎn)IlOB包括M+1個(gè)核心,編號(hào)core_0到core_M,其中M是大于0的整數(shù)。為了簡(jiǎn)化實(shí)施例的描述,N和M都假定為整數(shù)三(3),使得處理節(jié)點(diǎn)IlOA具有四個(gè)(4)處理器核心111-114,并且處理器IlOB具有四個(gè)(4)處理器核心115-119。在這里利用的情況下,術(shù)語(yǔ)處理單元假設(shè)為與處理器核心同義。 使用整數(shù)變量“N”和“M”以覆蓋各個(gè)處理節(jié)點(diǎn)IlOA和IlOB中處理器的數(shù)目?jī)H僅指示每個(gè)處理節(jié)點(diǎn)可以包括可變數(shù)目的分離處理器核心,其中N和M是任何大小大于0的整數(shù)(假設(shè)用于各個(gè)處理節(jié)點(diǎn)的多核心實(shí)施)。在給定系統(tǒng)架構(gòu)中采用的處理核心的數(shù)目是取決于實(shí)施方式的,并且可以廣泛地變化。要理解的是,在此描述的實(shí)施例使得能夠縮放到更大數(shù)目的處理節(jié)點(diǎn)以及甚至再大數(shù)目的處理核心。在描述的實(shí)施例中,本地處理系統(tǒng)101假設(shè)為由DPS架構(gòu)100中的處理器核心生成和處理的ND范圍工作集的源。如進(jìn)一步圖示的,本地處理系統(tǒng)101還包括存儲(chǔ)120,其中存儲(chǔ)實(shí)現(xiàn)工作以及用于由一個(gè)或多個(gè)處理單元執(zhí)行的ND范圍工作集的生成的若干固件和軟件組件。存儲(chǔ)120內(nèi)提供若干操作系統(tǒng)(0S)122-124、應(yīng)用126-127、編譯器125、GCQ調(diào)度程序130、ND范圍工作調(diào)度(WS)邏輯131、以及ND范圍參數(shù)133 (其也可以存儲(chǔ)在系統(tǒng)存儲(chǔ)器152中)。在一個(gè)實(shí)施例中,GCQ調(diào)度程序130是由處理單元執(zhí)行的邏輯,以便從編譯器接收工作內(nèi)核,并且調(diào)度工作用于分派到DPS架構(gòu)100中的多個(gè)處理器核心/調(diào)度工作用于由DPS架構(gòu)100中的多個(gè)處理器核心分派。在一個(gè)實(shí)施例中,由編譯器125從一個(gè)或多個(gè)應(yīng)用125-126和/或0S122-124、或從一些其它源(在此未示出)檢索操作的工作集。此外,本地處理系統(tǒng)101包括全局命令隊(duì)列(GCQ) 320,其可以存儲(chǔ)在存儲(chǔ)120中或系統(tǒng)存儲(chǔ)器152A中。當(dāng)處理器核心(諸如核心O-N和0-M)尋找要完成的工作時(shí),GCQ 320的本地存儲(chǔ)實(shí)現(xiàn)通過(guò)這些處理器核心對(duì)于GCQ的低等待時(shí)間訪問(wèn)。在一個(gè)實(shí)施例中,編譯器125包括準(zhǔn)時(shí)生產(chǎn)(JIT)編譯器,其根據(jù)與處理工作相關(guān)聯(lián)的方法或處理產(chǎn)生一個(gè)或多個(gè)內(nèi)核。例如,應(yīng)用126可以實(shí)施與處理工作相關(guān)聯(lián)的方法或處理,并且響應(yīng)于應(yīng)用126的執(zhí)行,JIT編譯器可以產(chǎn)生一個(gè)或多個(gè)內(nèi)核以處理數(shù)據(jù)集或工作。盡管通常圖示為軟件實(shí)施的組件,但是GCQ邏輯、WS邏輯、編譯器和其它在此一般地描述的其它功能邏輯(例如,LCQ邏輯)的功能性在一些實(shí)施例中可以實(shí)施為硬件或硬件與軟件的組合。本地處理系統(tǒng)101包括或耦合到交換機(jī)或其它全局互連(例如,互連165),多個(gè)其它處理節(jié)點(diǎn)可以連接到該交換機(jī)或其它全局互連。如所圖示的,本地處理系統(tǒng)101經(jīng)由互連165通信地連接到遠(yuǎn)程計(jì)算設(shè)備170,互連165可以是網(wǎng)絡(luò)結(jié)構(gòu)或交換機(jī)。經(jīng)由網(wǎng)絡(luò)接口控制器(NIC)160提供到互連165的連接,網(wǎng)絡(luò)接口控制器160可以是主機(jī)結(jié)構(gòu)接口(HFI)。在若干替代配置之一中,互連165可以是所有節(jié)點(diǎn)連接到的單個(gè)一般互連,或者可以包括將處理節(jié)點(diǎn)的子集相互連接和/或連接到本地處理系統(tǒng)101的一個(gè)或多個(gè)子網(wǎng)(未示出)。遠(yuǎn)程計(jì)算設(shè)備170提供DPS架構(gòu)100中的額外計(jì)算資源,諸如遠(yuǎn)程處理節(jié)點(diǎn)IlOC和相關(guān)聯(lián)的本地存儲(chǔ)器154C。遠(yuǎn)程處理節(jié)點(diǎn)IlOC包括至少一個(gè)處理器核心,提供其Core0171。在處理節(jié)點(diǎn)IlOC是多核心處理節(jié)點(diǎn)的情況下,處理節(jié)點(diǎn)IlOC可以包括P+1個(gè)核心,圖示其C0RE_P 172。在該多核心配置的情況下,“P”是大于等于I的整數(shù)。為了描述說(shuō)明性實(shí)施例的目的,P假設(shè)為一(1),使得處理節(jié)點(diǎn)IlOC具有兩個(gè)(2)處理核心。此外,因?yàn)檫h(yuǎn)程計(jì)算設(shè)備170與來(lái)自本地處理系統(tǒng)101中工作分級(jí)保持區(qū)域的特定處理節(jié)點(diǎn)IlOC之間的相對(duì)距離,core_0171和core_P 172在一些實(shí)施例中描述為在共享的工作檢索和/或平衡期間展現(xiàn)高等待時(shí)間的核心,如在隨后的描述中將變得清楚。僅為了說(shuō)明的目的,在此呈現(xiàn)圖示的多節(jié)點(diǎn)DPS架構(gòu)多處理節(jié)點(diǎn)的配置。因此,在此描述的實(shí)施例的功能特征適用于不同配置的數(shù)據(jù)處理系統(tǒng)。本領(lǐng)域的技術(shù)人員將理解, 圖I的DPS架構(gòu)100可以包括許多額外組件,諸如互連橋、用于連接到網(wǎng)絡(luò)或附接設(shè)備的端口等(沒(méi)有在此示出)。因?yàn)檫@樣的額外組件對(duì)于本發(fā)明的理解不是必須的,所以它們沒(méi)有在圖I中示出或在此進(jìn)一步討論。B.用于通過(guò)處理單元的低等待時(shí)間工作檢索的架構(gòu)描述的實(shí)施例的某些特征可以適用于N維(ND)范圍處理/執(zhí)行范式,諸如由OpenCL 提供的以及在多核心數(shù)據(jù)處理系統(tǒng)上執(zhí)行的類(lèi)似構(gòu)成的應(yīng)用,在多核心數(shù)據(jù)處理系統(tǒng)中執(zhí)行命令包含有效執(zhí)行和平衡命令的工作負(fù)荷所需的信息,該命令可能包括數(shù)據(jù)或任務(wù)并行處理要求。每個(gè)命令包括對(duì)應(yīng)于要執(zhí)行的命令中工作組的總數(shù)的信息。處理系統(tǒng)的編譯器接收命令并且生成工作的內(nèi)核,在處理系統(tǒng)的一個(gè)或多個(gè)可用處理核心上調(diào)度工作的內(nèi)核。在傳統(tǒng)的多核心處理系統(tǒng)的情況下,利用如圖2所示的本地節(jié)點(diǎn)隊(duì)列,與每個(gè)內(nèi)核相關(guān)聯(lián)的工作項(xiàng)目的調(diào)度可以作為整個(gè)工作組完成。圖2圖示多核心處理系統(tǒng)200的傳統(tǒng)配置,其中通過(guò)將數(shù)據(jù)集分割到工作組,并且任意和靜態(tài)分配工作組到物理上位于每個(gè)節(jié)點(diǎn)內(nèi)分離的結(jié)構(gòu)化命令隊(duì)列(即,預(yù)先設(shè)置大小的隊(duì)列),由命令生成的工作由不同處理節(jié)點(diǎn)210A、210B上的處理器核心執(zhí)行。如所示的,處理節(jié)點(diǎn)210A包括命令隊(duì)列225A、而處理節(jié)點(diǎn)210B包括命令隊(duì)列225B。調(diào)度程序215可能基于節(jié)點(diǎn)本地存儲(chǔ)器254A、254B的尋址方案相對(duì)于工作內(nèi)的數(shù)據(jù)元素的存儲(chǔ)器關(guān)聯(lián)(memory affinity),在沒(méi)有完全考慮跨越各節(jié)點(diǎn)的負(fù)荷平衡的情況下,分配整個(gè)工作的不同部分。為了完成工作的分派并且對(duì)于依賴(lài)關(guān)系負(fù)責(zé)等,各節(jié)點(diǎn)必須相互通信,并且可能必須圍繞不同命令隊(duì)列移動(dòng)工作。當(dāng)工作在它們各自本地命令隊(duì)列外執(zhí)行時(shí),存在相當(dāng)大量的節(jié)點(diǎn)之間的交叉談話(huà)(cross chatter)以提供相互的協(xié)作。該配置導(dǎo)致系統(tǒng)互連140上的工作競(jìng)爭(zhēng),由于處理核心以不同速度運(yùn)行并且通常必須在各節(jié)點(diǎn)中間重新平衡工作負(fù)荷,隨著各節(jié)點(diǎn)試圖在不同工作隊(duì)列(225A、225B)之間移動(dòng)工作,導(dǎo)致大量的節(jié)點(diǎn)間談話(huà)。現(xiàn)在參照?qǐng)D3,提供多節(jié)點(diǎn)處理系統(tǒng)架構(gòu)300的一個(gè)實(shí)施例,其包括軟件和硬件構(gòu)造以允許有效的和高效的到處理節(jié)點(diǎn)以及(在這些處理節(jié)點(diǎn)上的)具體處理器核心(當(dāng)處理器核心展現(xiàn)與其上正分派工作的本地處理系統(tǒng)300的系統(tǒng)存儲(chǔ)器的低等待時(shí)間通信時(shí))的工作分配,并且通過(guò)該處理節(jié)點(diǎn)以及(在這些處理節(jié)點(diǎn)上的)具體處理器核心完成。除了之前已經(jīng)描述的在圖I的系統(tǒng)架構(gòu)(100)中呈現(xiàn)的硬件結(jié)構(gòu)外,圖3提供圖I中引入的若干軟件和固件組件的不同配置和功能性以及兩個(gè)新的結(jié)構(gòu),其一起實(shí)現(xiàn)描述的實(shí)施例的功能特征。多節(jié)點(diǎn)處理系統(tǒng)架構(gòu)300圖示有三個(gè)處理節(jié)點(diǎn),處理節(jié)點(diǎn)A 310A和處理節(jié)點(diǎn)B310B (每個(gè)具有四個(gè)(4)處理器核心(節(jié)點(diǎn)A核心111-114和節(jié)點(diǎn)B核心115-118))以及處理節(jié)點(diǎn)C (具有兩個(gè)處理器核心(節(jié)點(diǎn)C核心171-172))。系統(tǒng)架構(gòu)300內(nèi)的每個(gè)處理核心(即處理核心111-114、處理核心115-118和處理核心171-172)提供唯一位掩碼標(biāo)識(shí)符(MB),其與每個(gè)處理器核心關(guān)聯(lián)/鏈接/編碼,并且唯一地從總體系統(tǒng)架構(gòu)300內(nèi)的其他處理器核心標(biāo)識(shí)具體處理器核心。因此,例如,coreOlll用第一位掩碼(MB) 311標(biāo)記,corel112用第二位掩碼(MB) 312標(biāo)記,coreN 114用第四位掩碼(MB) 314標(biāo)記,core2116用第六位掩碼(MB) 316標(biāo)記等。為了簡(jiǎn)化,位掩碼在此指處理單元(PU)掩碼,使得每個(gè)處理單元/處理器核心具有唯一掩碼標(biāo)識(shí)符。示例PU掩碼以及他們的功能性提供在下面描述的圖4中。在一個(gè)實(shí)施例中,每個(gè)處理器節(jié)點(diǎn)(310A、310B、310C)也提供節(jié)點(diǎn)級(jí)位掩碼(節(jié)點(diǎn)A掩碼(NM)360A、節(jié)點(diǎn)B掩碼360B和節(jié)點(diǎn)C掩碼360C),以實(shí)現(xiàn)節(jié)點(diǎn)級(jí)調(diào)度,如下面進(jìn)一步討論的。
現(xiàn)在轉(zhuǎn)向該圖上部中的功能塊,示例應(yīng)用126的可執(zhí)行/執(zhí)行代碼轉(zhuǎn)發(fā)到編譯器305,其處理指令/代碼以生成命令。這些命令提供劃分為工作組的工作,每個(gè)工作組稱(chēng)為內(nèi)核310。將內(nèi)核310轉(zhuǎn)發(fā)到GCQ調(diào)度程序315。GCQ調(diào)度程序是動(dòng)態(tài)地執(zhí)行以下功能的增強(qiáng)運(yùn)行時(shí)間調(diào)度程序(I)將工作元素調(diào)度(放置)到全局命令隊(duì)列(GCQ) 320 ; (2)選擇性分配/指派工作元素到來(lái)自可用處理器節(jié)點(diǎn)或處理單元的整個(gè)集中的特定選擇的處理器節(jié)點(diǎn)或處理單元(核心);生成對(duì)應(yīng)于被分配/指派工作元素的特定選擇的處理器核心的APU掩碼(330);并且通過(guò)將APU掩碼轉(zhuǎn)發(fā)到GCQ 320,將APU掩碼(330)附加/鏈接或另外關(guān)聯(lián)到工作元素。上面的調(diào)度程序功能在運(yùn)行時(shí)間執(zhí)行,并且當(dāng)工作元素置于GCQ 320中時(shí)在運(yùn)行時(shí)間生成與命令相關(guān)聯(lián)的工作項(xiàng)目用于分派。在一個(gè)實(shí)施例中,工作元素到選擇的處理器核心的選擇性分配涉及和/或基于調(diào)度標(biāo)準(zhǔn),該調(diào)度標(biāo)準(zhǔn)考慮跨越系統(tǒng)架構(gòu)的工作負(fù)荷分配和工作平衡、不同類(lèi)型的處理單元(例如,CPU、GPU、SPU)的處理性能、以及可以由GCQ調(diào)度程序的設(shè)計(jì)者預(yù)先設(shè)計(jì)程序的其他因素。在GCQ的工作元素的實(shí)際調(diào)度然后涉及僅分派來(lái)自GCQ中的工作元素的工作項(xiàng)目到選擇的特定處理結(jié)點(diǎn)或處理單元,其中分派響應(yīng)于在GCQ接收來(lái)自多個(gè)處理結(jié)點(diǎn)或處理單元的每個(gè)的工作請(qǐng)求。APU掩碼320代表全局位掩碼,并且是I和0的字段,其中I代表可以向其轉(zhuǎn)發(fā)特定工作元素的(多個(gè))結(jié)點(diǎn)的處理單元,而0指示沒(méi)有為該工作元素選擇特定處理單元以處理工作。APU掩碼320的實(shí)際大小基于在通過(guò)GCQ調(diào)度程序315的工作分配期間可用于考慮的處理結(jié)點(diǎn)和處理器核心的總數(shù)按比例縮放。在每個(gè)處理結(jié)點(diǎn)劃分工作的實(shí)施方式中,不同于處理器核心的粒度,APU掩碼代表結(jié)點(diǎn)掩碼,其是識(shí)別特定處理器核心的位掩碼。在該選擇的處理結(jié)點(diǎn)的任何處理器核心然后可以消耗來(lái)自工作元素的工作項(xiàng)目。在一個(gè)實(shí)施例中,調(diào)度程序分配不同APU掩碼到每個(gè)工作元素。然而,構(gòu)思單個(gè)命令(工作)的多個(gè)工作元素可以提供有相同的APU掩碼,導(dǎo)致其中單個(gè)APU掩碼可以用于GCQ放置的多個(gè)順序工作元素的替代實(shí)施例。由圖6A-6D提供示例GCQ 320,下面將描述圖6A-6D。GCQ 320還可以包括GCQ邏輯335,其使得選擇的處理器核心能夠檢索工作元素,并且實(shí)現(xiàn)下文描述的功能的其它方面。重要的是注意在此描述的工作的類(lèi)型可以是在N維(ND)范圍的數(shù)據(jù)上執(zhí)行的工作,該工作經(jīng)由作為ND范圍工作指令的GCQ傳送到計(jì)算結(jié)點(diǎn)。在ND范圍指令中,提供N維范圍的工作用于由處理器核心中特定/選擇的處理器核心在計(jì)算結(jié)點(diǎn)中執(zhí)行,如由APU掩碼標(biāo)識(shí)的。ND范圍中的N的值以及維數(shù)是可變的,并且可以是大于一(I)的任何整數(shù)值。根據(jù)描述的實(shí)施例,每個(gè)核心調(diào)用執(zhí)行ND范圍指令,其設(shè)置執(zhí)行的特性。在描述的GCQ 320的實(shí)施方式的情況下,APU掩碼330和其他執(zhí)行特性(和/或工作元素的屬性)附加到工作項(xiàng)目本身。圖6A圖示示例GCQ 320,其包括多個(gè)隊(duì)列條目,其中示出具有入列的工作元素(WE_0、WE_1和WE_2)的三個(gè)條目。如由圖6A提供的,除了實(shí)際工作元素外,每個(gè)條目具有多個(gè)變量和/或?qū)傩曰蛱匦?,其關(guān)聯(lián)(或鏈接到)特定工作元素,并且存儲(chǔ)在GCQ條目的預(yù)先建立的字段之一中。GCQ的第一行指示為每個(gè)GCQ條目的每個(gè)字段提供的命名。因此每個(gè)占據(jù)/填充的GCQ條目包括以下信息字段ND范圍工作元素625 ;看見(jiàn)計(jì)數(shù)器627 ;工作項(xiàng)目剩余(WIR)計(jì)數(shù)器629 ;APU掩碼330 ;以及屬性631。為了描述的目的,最后/底部條目是 GCQ 320中的第一條目,并且保持工作元素零(WE_0)與其相關(guān)特性、屬性和/或變量。如由GCQ 320的WIR計(jì)數(shù)器629中的WIR計(jì)數(shù)提供的,當(dāng)WE_0初始置于GCQ條目中時(shí),WE_0包括由編譯器315生成的(并且在GCQ內(nèi)排列的)工作集/組內(nèi)的16個(gè)工作條目,編譯器315保持由選擇的處理單元執(zhí)行。此外,如由看見(jiàn)計(jì)數(shù)器627內(nèi)的看見(jiàn)計(jì)數(shù)指示的,16個(gè)工作項(xiàng)目可以由四個(gè)(4)不同的選擇處理單元/核心執(zhí)行,四個(gè)(4)不同的選擇處理單元/核心在GCQ中放置工作元素之前已經(jīng)由調(diào)度程序標(biāo)識(shí)。特定選擇的處理器核心由APU掩碼320標(biāo)識(shí),APU掩碼320是提供總體系統(tǒng)內(nèi)的N個(gè)處理器核心的已經(jīng)分配來(lái)處理WE_0內(nèi)的16個(gè)工作項(xiàng)目的處理器核心的順序標(biāo)識(shí)的位序列。在描述的實(shí)施例中,看見(jiàn)計(jì)數(shù)器的開(kāi)始值呈現(xiàn)為特定工作元素的工作項(xiàng)目可以分派或調(diào)度到的分配的處理器單元的數(shù)目。然而,在替代實(shí)施例中,看見(jiàn)計(jì)數(shù)器用等于總體系統(tǒng)內(nèi)處理單元的總數(shù)的開(kāi)始值開(kāi)始。例如,在圖3的系統(tǒng)架構(gòu)300的情況下,假設(shè)已經(jīng)考慮所有處理節(jié)點(diǎn)和相應(yīng)的處理單元,那么用十(10)的值開(kāi)始看見(jiàn)計(jì)數(shù)器。在該替代實(shí)施例中,對(duì)于進(jìn)入GCQ用于工作的每個(gè)處理器核心觸發(fā)看見(jiàn)計(jì)數(shù)器的遞減,而不管處理器核心實(shí)際是否是核準(zhǔn)用于分派/調(diào)度來(lái)自工作元素的工作項(xiàng)目的選擇處理器核心之一。可以實(shí)施任一實(shí)施例;然而,描述的實(shí)施例假設(shè)前一實(shí)施方式,其中僅僅核準(zhǔn)的處理器核心由看見(jiàn)計(jì)數(shù)器考慮,并且僅僅那些核準(zhǔn)處理器觸發(fā)對(duì)于特定工作元素有看見(jiàn)計(jì)數(shù)器的GCQ邏輯的遞減?,F(xiàn)在參照?qǐng)D4,圖示了 WE_0內(nèi)的工作項(xiàng)目以及相關(guān)APU掩碼330的擴(kuò)展視圖,相關(guān)APU掩碼330通過(guò)選擇示例系統(tǒng)架構(gòu)300內(nèi)的處理器核心之一提供對(duì)于工作項(xiàng)目的訪問(wèn)。如所示的,WE_0包括從工作項(xiàng)目零(WI_0)401到工作WI_15416的16個(gè)個(gè)別工作項(xiàng)目。工作項(xiàng)目以特定分派順序分派到請(qǐng)求處理器核心,為了圖示的目的,特定分派順序假設(shè)為降序(WI_15416、WI_14415等),直到最后工作項(xiàng)目WI_0分配到處理器核心。與WE_0相關(guān)聯(lián)的是APU掩碼320,其具有10010101的掩碼值。本示例假設(shè)APU掩碼內(nèi)僅表現(xiàn)處理節(jié)點(diǎn)A310A (圖3)和處理節(jié)點(diǎn)B 310B (圖3),使得來(lái)自這兩個(gè)處理節(jié)點(diǎn)的最大八個(gè)(8)處理器核心可以分配來(lái)處理WE_0。處理節(jié)點(diǎn)C310C不包括任何核準(zhǔn)處理器(并且相應(yīng)的掩碼位為在APU掩碼的末端的00)。如由圖4中的示例位掩碼所示,在三個(gè)節(jié)點(diǎn)實(shí)施方式的情況下,節(jié)點(diǎn)A和B每個(gè)具有4個(gè)處理單元/核心,并且節(jié)點(diǎn)C具有2個(gè)處理單元/核心,APU掩碼330包括10位,一位用于每個(gè)處理核心,使得如果GCQ內(nèi)的工作元素意圖由節(jié)點(diǎn)A (具有核心0到3)處理,那么APU掩碼330中的頭四位之一將設(shè)為I。相反,如果工作元素不意圖由節(jié)點(diǎn)C (具有核心8和9)中的任何處理器核心處理,那么APU掩碼330中最后兩位都將是零(即,各位不設(shè)為I)。在圖4的示例中,APU掩碼330提供系統(tǒng)內(nèi)總共十個(gè)(10)可能核心中的四個(gè)處理器核心被選擇和/或分配來(lái)處理用于WE_0的工作。在APU掩碼330的情況下,每個(gè)對(duì)應(yīng)于每個(gè)選擇的處理器核心的位設(shè)為一(1),而對(duì)應(yīng)于其他處理器核心的位保持零(O)。因此,在總體系統(tǒng)中10個(gè)處理器核心的情況下,例如,1001010100的APU掩碼值指示已經(jīng)選擇處理器核心0、3、5和7來(lái)處理WE_0。在處理系統(tǒng)300的處理節(jié)點(diǎn)A、B和C的情況下(圖3),這些掩碼位對(duì)應(yīng)于處理節(jié)點(diǎn)A 310A的coreOlll和core3114以及處理節(jié)點(diǎn)B310B的corel 116和C0re3118。為了說(shuō)明的目的,這些處理器核心也示出為屬于處理組,其在一個(gè)替代實(shí)施例中使得工作在處理組級(jí)別(或節(jié)點(diǎn)級(jí)別)分派/攫取(grab),而不是通過(guò)每個(gè)處理器核心的工作的獨(dú)立攫取。應(yīng)該注意到,在替代實(shí)施例中,工作項(xiàng)目的節(jié)點(diǎn)級(jí)分配可以通過(guò)特定節(jié)點(diǎn)中的所有處理器核心共享相同節(jié)點(diǎn)掩碼并且APU掩碼僅僅跟蹤選擇的處理器節(jié)點(diǎn)來(lái)實(shí)施。在上面示例的情況下,總體系統(tǒng)內(nèi)的三個(gè)可用節(jié)點(diǎn)中的節(jié)點(diǎn)A和節(jié)點(diǎn)B時(shí)選擇的處理器節(jié)點(diǎn),并且APU掩碼的值將是110,其中每個(gè)位代表分離的節(jié)點(diǎn)。執(zhí)行APU掩碼針對(duì)節(jié)點(diǎn)掩碼的比較的效率從必須由GCQ邏輯335跟蹤的位數(shù)的顯著減小來(lái)看是清楚的。圖4還圖示各個(gè)處理器核心試圖從GCQ 320 (并且具體地為WE_0) “攫取”工作的一部分處理。當(dāng)處理器核心需要工作時(shí),該核心發(fā)布工作請(qǐng)求(諸如工作請(qǐng)求440/441)到GCQ 320。由GCQ 320接收和處理工作請(qǐng)求(440/441)(圖3)。工作請(qǐng)求440/441包括請(qǐng)求處理器核心的PU掩碼,以及塊(chunk)大小參數(shù),指示處理器核心想要用該請(qǐng)求攫取的工作量(例如,工作項(xiàng)目的數(shù)目)。GCQ邏輯335和/或請(qǐng)求處理器核心的工作請(qǐng)求邏輯比較處理器核心的PU掩碼與APU掩碼,以便確定該處理器核心是否可以從WE_0攫取工作項(xiàng)目。圖5提供完成該比較的一個(gè)方法的圖示。如圖5所提供的,每個(gè)處理器核心具有相關(guān)聯(lián)的I3U掩碼。當(dāng)處理器核心發(fā)出對(duì)于工作的請(qǐng)求到GCQ時(shí),GCQ邏輯335執(zhí)行處理器核心的PU掩碼與APU掩碼330的邏輯AND以生成結(jié)果(即,I或0),其中結(jié)果(如果I)指示該處理器核心核準(zhǔn)從相應(yīng)的工作元素攫取工作。根據(jù)圖4和5的示例,利用APU掩碼330的第一操作數(shù)(具有10010101的值)與來(lái)自示例系統(tǒng)的八個(gè)處理器核心的不同I3U掩碼(311-318)的第二操作數(shù)的AND操作對(duì)于處理節(jié)點(diǎn)A 310A的coreO 111和core3114以及處理節(jié)點(diǎn)B310B 的 corel 116 和 core3118 產(chǎn)生“I”輸出 / 結(jié)果。因此,如由圖4所提供的,這些核準(zhǔn)的/分配的處理核心然后能夠以工作項(xiàng)目分派順序攫取工作項(xiàng)目,用于由各個(gè)處理器核心執(zhí)行。為了說(shuō)明的目的,處理器節(jié)點(diǎn)A 310A的一個(gè)或多個(gè)處理器核心攫取第一組工作項(xiàng)目,而處理器節(jié)點(diǎn)B 310B的一個(gè)或多個(gè)處理器核心攫取下一組工作項(xiàng)目。然而,處理器核心攫取工作項(xiàng)目的順序不是決定性的,只要工作項(xiàng)目以由調(diào)度程序和/或編譯器保持的抑制順序攫取,以便實(shí)現(xiàn)輸出的重新創(chuàng)建。在根據(jù)描述的實(shí)施例的上述工作調(diào)度和分派方法和系統(tǒng)中,執(zhí)行單元處理來(lái)自包括多個(gè)隊(duì)列條目的單個(gè)GCQ的命令。在GCQ中,每個(gè)條目保持包括多個(gè)工作項(xiàng)目的工作元素(或工作組),分派該多個(gè)工作項(xiàng)目用于由通過(guò)分配/鏈接到工作元素的APU掩碼330標(biāo)識(shí)的特定處理單元執(zhí)行。如由所述實(shí)施例提供的,執(zhí)行/處理單元是可以位于跨越分布式網(wǎng)絡(luò)的處理核心。然而,盡管貫穿描述和圖示的實(shí)施例采用處理器核心作為執(zhí)行單元的示例,但是執(zhí)行單元可以是執(zhí)行命令的任何設(shè)備,包括但不限于處理代碼、CPU、線(xiàn)程以及甚至完整的計(jì)算系統(tǒng)。一旦命令在GCQ 335可用,允許參與命令的執(zhí)行的每個(gè)處理器核心(如由APU掩碼標(biāo)識(shí)的)就將命令的工作項(xiàng)目剩余(WIR)計(jì)數(shù)器自動(dòng)遞減與處理器核心相關(guān)聯(lián)的工作保留大小(或塊大小)。處理器核心在工作組范圍內(nèi)保持相應(yīng)數(shù)目的工作項(xiàng)目用于處理。一旦處理器核心已經(jīng)執(zhí)行請(qǐng)求的工作項(xiàng)目,處理器核心就試圖保留更多工作項(xiàng)目。通過(guò)多個(gè)處理器核心的這種給定保留大小的工作項(xiàng)目的保留和分派繼續(xù),直到已經(jīng)處理(多個(gè))命令隊(duì)列的一個(gè)條目?jī)?nèi)的工作項(xiàng)目的總數(shù)。在利用GCQ、APU掩碼和PU掩碼分配工作到處理核心的上述功能的情況下,用于調(diào)度和完成所有工作的處理涉及一個(gè)或多個(gè)方法,其涉及各種參數(shù)的生成和跟蹤,以便實(shí)現(xiàn)有效的工作調(diào)度、分派和執(zhí)行。圖7和8提供用于完成上面的處理的示例方法的流程圖。當(dāng)在上述圖3-5的圖示的背景下閱讀,并且參照同時(shí)描述的圖6A-6D時(shí),最好地理解圖7和8的方法。要理解,方法可以自然遞歸;然而,為了簡(jiǎn)化描述,僅僅圖示和描述每個(gè)方法的單 個(gè)重復(fù)。通過(guò)處理單元執(zhí)行用于執(zhí)行任務(wù)/線(xiàn)程的指令代碼,執(zhí)行(多個(gè))方法的各個(gè)部分,而其他部分可以由與處理器相關(guān)聯(lián)的固件/邏輯或在處理器上執(zhí)行的固件/邏輯來(lái)執(zhí)行。(多個(gè))方法通常從處理器操作的觀點(diǎn)描述,盡管要理解例如可以由GCQ邏輯335和GCQ調(diào)度程序(邏輯)315執(zhí)行方法的替代實(shí)施例。在附圖中的流程圖和框示了根據(jù)本發(fā)明的各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)施方式的架構(gòu)、功能和操作。在這一點(diǎn)上,流程圖或框圖中的每個(gè)塊可以代表模塊、段或代碼的部分,其包括用于實(shí)施(多個(gè))指定邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令。還應(yīng)該理解,在一些替代實(shí)施方式中,框中標(biāo)注的功能可以以附圖中標(biāo)注的順序外的順序出現(xiàn)。例如,連續(xù)示出的兩個(gè)框?qū)嶋H可以基本同時(shí)執(zhí)行,或者取決于涉及的功能,各框有時(shí)可以以相反順序執(zhí)行。還要注意,框圖和/或流程示的每個(gè)框、以及框圖和/或流程示的各框的組合可以由執(zhí)行指定功能或動(dòng)作的基于專(zhuān)用硬件的系統(tǒng)、或?qū)S糜布陀?jì)算機(jī)指令的組合實(shí)施。圖7的方法在塊720開(kāi)始,并且進(jìn)到塊704,編譯器在塊704從由源程序提供的指令代碼生成工作元素(內(nèi)核或命令)。編譯器305將命令/內(nèi)核轉(zhuǎn)發(fā)到GCQ調(diào)度程序315。在運(yùn)行時(shí)間期間,調(diào)度程序(邏輯)315從可用處理單元的全局組選擇一組一個(gè)或多個(gè)可用處理單元(處理器核心)以執(zhí)行命令/內(nèi)核310,如在塊706所示。GCQ調(diào)度程序315還在塊708生成對(duì)應(yīng)于選擇的該組可用處理單元的APU掩碼。如在塊710所示,GCQ調(diào)度程序315還(a)基于選擇的處理單元的數(shù)目分配看見(jiàn)計(jì)數(shù)值,以及(b)基于與工作元素相關(guān)聯(lián)的工作項(xiàng)目的數(shù)目分配工作項(xiàng)目剩余值。在替代實(shí)施例中,可能基于工作元素內(nèi)調(diào)度的實(shí)際工作項(xiàng)目的檢測(cè),由GCQ邏輯335生成和更新WIR計(jì)數(shù)。最終,如在塊712提供的,當(dāng)條目變得在GCQ 320中可用時(shí),GCQ調(diào)度程序315將APU掩碼330、看見(jiàn)計(jì)數(shù)和WIR值轉(zhuǎn)發(fā)到GCQ320。處理然后在塊714結(jié)束。在上述處理的終止處,GCQ 320包括由工作元素和相關(guān)特性、參數(shù)和屬性構(gòu)成的條目。再次參照?qǐng)D6A,WE_0位于GCQ 302的第一條目,并且準(zhǔn)備用于通過(guò)由APU掩碼標(biāo)識(shí)的四個(gè)核準(zhǔn)處理單元的16個(gè)工作項(xiàng)目的分派?,F(xiàn)在轉(zhuǎn)向圖8,其描述由系統(tǒng)的處理器核心通過(guò)其分派WE_0的工作項(xiàng)目的方法。該方法在初始?jí)K802開(kāi)始。在塊804,第一處理單元(例如,處理器核心COTe_0311)發(fā)出請(qǐng)求到GCQ以檢查工作的可用性。由第一計(jì)算單元提供的請(qǐng)求包括轉(zhuǎn)發(fā)到GCQ邏輯335的其I3U掩碼和塊大小。在塊806,處理單元(或GCQ邏輯)比較I3U掩碼與第一工作元素(以及隨后的工作元素,如果在調(diào)度工作中不成功)的APU掩碼,并且在決定塊808確定PU掩碼與APU掩碼的比較是否指示核準(zhǔn)/授權(quán)/預(yù)先選擇來(lái)從該工作元素攫取工作項(xiàng)目。根據(jù)一個(gè)實(shí)施例,并且如由圖5所示,處理單元通過(guò)其確認(rèn)是選擇的處理單元之一以執(zhí)行特定工作項(xiàng)目的處理涉及執(zhí)行工作元素的APU掩碼和處理器核心的掩碼的邏輯AND。如果沒(méi)有核準(zhǔn)/授權(quán)/預(yù)先選擇該處理單元來(lái)執(zhí)行工作元素的工作項(xiàng)目,那么GCQ邏輯335將請(qǐng)求轉(zhuǎn)發(fā)到GCQ中的下一個(gè)工作元素,如在塊710所示。因此,來(lái)自處理器核心的請(qǐng)求將GCQ繼續(xù)前進(jìn)到下一個(gè)條目,并且針對(duì)下一個(gè)工作元素的APU掩碼與請(qǐng)求中的掩碼執(zhí)行相同的檢查。以此方式,當(dāng)處理器核心已經(jīng)由調(diào)度程序預(yù)先選擇來(lái)執(zhí)行工作元素的工作時(shí),處理器核心僅僅移除來(lái)自該工作項(xiàng)目的工作。如由圖6D進(jìn)一步圖示的,沒(méi)有核準(zhǔn)用于處理WE_0的處理單元還可以同時(shí)調(diào)度來(lái)自與核準(zhǔn)的處理單元不同的工作元素的工作。例如,在首先在WE_0被拒絕之后,處理節(jié)點(diǎn)A 310A的處理單元2可以調(diào)度來(lái)自GCQ 320內(nèi)的WE_1的工作。當(dāng)在處理器核心I上調(diào)度工作項(xiàng)目時(shí),WE_1的WIR計(jì)數(shù)器和看見(jiàn)計(jì)數(shù)器遞減。如所示的,由于在處理單元2上調(diào)度十個(gè)工作項(xiàng)目,WE_1的WIR計(jì)數(shù)器遞減10,并且WE_1的看見(jiàn)計(jì)數(shù)也遞減一(I)。當(dāng)處理器核心已經(jīng)確認(rèn)為核準(zhǔn)/授權(quán)/選擇的處理單元時(shí),GCQ邏輯335然后檢查WIR計(jì)數(shù)器的值,并且在塊812確定WIR計(jì)數(shù)是否大于零(O)。當(dāng)WIR計(jì)數(shù)不大于零時(shí),GCQ邏輯335將看見(jiàn)計(jì)數(shù)遞減一(I ),如在塊718提供的。當(dāng)WIR計(jì)數(shù)大于零(0)時(shí),GCQ邏輯335允許處理器核心請(qǐng)求從工作元素抽出/攫取直到在請(qǐng)求中標(biāo)識(shí)的塊大小的工作項(xiàng)目 量,如在塊814指示的。GCQ邏輯335監(jiān)控工作項(xiàng)目從隊(duì)列條目的移除/分派,并且將WIR計(jì)數(shù)器遞減移除的工作項(xiàng)目的數(shù)目,如在塊816所示。處理然后進(jìn)到塊817,當(dāng)對(duì)于之前檢索的工作項(xiàng)目的命令執(zhí)行已經(jīng)完成時(shí),發(fā)出新的請(qǐng)求。相同的處理器核心因此可以繼續(xù)發(fā)出請(qǐng)求到GCQ,并且從相同的工作元素檢索工作,直到已經(jīng)分配該工作元素的所有工作。重要的是注意剩余分派用于執(zhí)行的工作項(xiàng)目的數(shù)目可能小于處理器核心請(qǐng)求的塊大小。在此情況下,將所有剩余工作項(xiàng)目提供到請(qǐng)求處理器核心,并且WIR計(jì)數(shù)器減小到零(O)。此外,在替代實(shí)施例中,在GCQ中預(yù)先設(shè)置塊大小,使得(a)允許所有處理器核心取得相同塊大小的工作,或者(b)可以請(qǐng)求更大塊大小但是按比例縮放為預(yù)先設(shè)置的塊大小的整數(shù)倍。在目前描述的實(shí)施例中,塊大小是由處理器核心(或處理節(jié)點(diǎn))設(shè)置并且在請(qǐng)求內(nèi)編碼的參數(shù)。利用WIR計(jì)數(shù)器的值來(lái)確定何時(shí)更多工作項(xiàng)目可用于攫取,并且每次工作項(xiàng)目分配到請(qǐng)求、核準(zhǔn)的處理器就遞減WIR計(jì)數(shù)器的值。如由圖6A-6D的序列所指示的,隨著每個(gè)核準(zhǔn)的處理器從工作元素移除其塊大小的工作,GCQ邏輯將WIR計(jì)數(shù)器遞減移除的個(gè)別工作項(xiàng)目的數(shù)目(例如,塊大小)。為了圖示的目的,單個(gè)塊大小假設(shè)有四個(gè)(4)工作項(xiàng)目。因此(參照?qǐng)D4的WE_0),由第一處理器單元發(fā)出的請(qǐng)求(例如,來(lái)自處理器COre0311的請(qǐng)求440)從WE_0移除工作項(xiàng)目15到12。GCQ邏輯335將WIR計(jì)數(shù)器從16遞減到12 (圖6B)。類(lèi)似地,當(dāng)來(lái)自處理器corel316的第二處理器單元請(qǐng)求442從WE_0移除工作項(xiàng)目11到8時(shí),GCQ邏輯335將WIR計(jì)數(shù)器遞減到8,諸如此類(lèi),直到WIR計(jì)數(shù)器等于或低于零(0)(圖6C)。上面的方法處理描述了 GCQ調(diào)度程序和/或GCQ邏輯排列GCQ內(nèi)的工作元素,并且處理元素從工作元素順序移除工作用于執(zhí)行。這些處理包括/涉及GCQ邏輯335 (或其他邏輯)更新/修改與工作元素相關(guān)的特定參數(shù)/屬性,以使得由提交對(duì)于工作的請(qǐng)求的每個(gè)核準(zhǔn)的處理單元順序檢索不同的工作項(xiàng)目。提供額外的機(jī)制,以便還跟蹤何時(shí)已經(jīng)完成分派來(lái)自工作元素的所有工作,以便允許從GCQ移除/丟棄該工作元素。當(dāng)總體系統(tǒng)內(nèi)的所有核心或者選擇來(lái)分派工作元素的所有核心(取決于實(shí)施方式)已經(jīng)看見(jiàn)工作元素并且不需要從進(jìn)一步處理工作元素時(shí),從命令隊(duì)列釋放工作元素。通過(guò)看見(jiàn)計(jì)數(shù)器的自動(dòng)遞減提供已經(jīng)看見(jiàn)工作元素的處理單元的數(shù)目的跟蹤,看見(jiàn)計(jì)數(shù)器開(kāi) 始有處理器核心的總數(shù),并且每次不同的一個(gè)處理單元“看到”工作元素(即,試圖調(diào)度來(lái)自工作元素的工作),遞減看見(jiàn)計(jì)數(shù)器。當(dāng)最后的處理器核心已經(jīng)看見(jiàn)工作元素,看見(jiàn)計(jì)數(shù)器遞減到零,那么最后的處理器核心通知GCQ調(diào)度程序315或GCQ邏輯335已經(jīng)完成工作元素的執(zhí)行?,F(xiàn)在返回圖8的塊812,當(dāng)工作元素的WIR計(jì)數(shù)器值是零(或小于零)時(shí),指示沒(méi)有工作項(xiàng)目剩余來(lái)分派,并且接收來(lái)自核準(zhǔn)的處理單元的請(qǐng)求,GCQ邏輯335將看見(jiàn)計(jì)數(shù)器遞減一(1),如由塊818提供的。在流程圖的塊820,進(jìn)行看見(jiàn)計(jì)數(shù)是否等于零(0)的確定。如果不是,則GCQ邏輯335監(jiān)控從每個(gè)其他核準(zhǔn)的處理單元接收隨后的請(qǐng)求,并且對(duì)于從不同的、核準(zhǔn)的處理單元接收的每個(gè)請(qǐng)求遞減看見(jiàn)計(jì)數(shù)。一旦所有核準(zhǔn)的處理單元已經(jīng)提交因?yàn)椴淮嬖谝峙傻墓ぷ鞫痪芙^的請(qǐng)求,看見(jiàn)計(jì)數(shù)就最終遞減到零。由圖6C-6D圖示看見(jiàn)計(jì)數(shù)對(duì)于WE_0的遞減。一旦看見(jiàn)計(jì)數(shù)變?yōu)榱?,就從GCQ320移除工作項(xiàng)目或在GCQ 320中重寫(xiě)工作項(xiàng)目,如在塊822所示。處理然后在塊824結(jié)束。提供的實(shí)施例的特征可以有利地在多節(jié)點(diǎn)處理系統(tǒng)中實(shí)施,該多節(jié)點(diǎn)處理系統(tǒng)展現(xiàn)處理器核心和本地節(jié)點(diǎn)的存儲(chǔ)器位置之間的低數(shù)據(jù)傳送等待時(shí)間和低交叉通信等待時(shí)間。假設(shè)處理節(jié)點(diǎn)從中央/公共GCQ檢索工作,對(duì)于不同節(jié)點(diǎn)到GCQ的等待時(shí)間相對(duì)短,使得總體工作檢索處理對(duì)于從GCQ 320攫取工作的處理核心導(dǎo)致總體出來(lái)時(shí)間中可接受的等待時(shí)間懲罰。在單個(gè)命令隊(duì)列的實(shí)施方式的情況下,基本消除跨越多個(gè)節(jié)點(diǎn)的多個(gè)命令隊(duì)列同步的需要。描述的實(shí)施例適于在跨越計(jì)算節(jié)點(diǎn)同步時(shí)展現(xiàn)小懲罰(等待時(shí)間)的多處理器計(jì)算系統(tǒng)(或系統(tǒng)架構(gòu))的實(shí)施方式。例如,在經(jīng)由“本地”結(jié)構(gòu)(諸如在單個(gè)物理設(shè)備(例如,本地處理系統(tǒng)300))連接的NUMA節(jié)點(diǎn)的情況下,當(dāng)跨越多個(gè)節(jié)點(diǎn)同步單個(gè)核心(工作元素)的分布式工作時(shí),存在相對(duì)小的等待時(shí)間懲罰。這進(jìn)一步實(shí)現(xiàn)用低交叉節(jié)點(diǎn)等待時(shí)間完成N維工作和在NUMA系統(tǒng)上/到NUMA系統(tǒng)的數(shù)據(jù)密集操作。此外,在描述的實(shí)施例的情況下,不再存在對(duì)于多個(gè)個(gè)別命令隊(duì)列的需要,個(gè)別命令隊(duì)列每個(gè)綁定到分離的節(jié)點(diǎn)以便支持NUMA共用性(affinity)。在單個(gè)GCQ實(shí)施方式的情況下,單個(gè)GCQ內(nèi)的每個(gè)工作元素包括掩碼字段,其包括N位,特定位設(shè)置來(lái)標(biāo)識(shí)哪個(gè)執(zhí)行節(jié)點(diǎn)和/或哪個(gè)處理單元(或處理器核心)鏈接到工作元素用于其完成。N位掩碼提供每個(gè)分離節(jié)點(diǎn)和/或處理器核心的唯一標(biāo)識(shí),使得可以跨越多個(gè)節(jié)點(diǎn)利用相同的單個(gè)命令隊(duì)列,同時(shí)允許節(jié)點(diǎn)/核心從GCQ正確地攫取分配到特定節(jié)點(diǎn)/核心的工作。因?yàn)槟壳耙粋€(gè)實(shí)施例的描述包括對(duì)于NUMA系統(tǒng)架構(gòu)的具體參照,所以也可以在該實(shí)施例內(nèi)參照N位掩碼作為NUMA掩碼,并且每個(gè)可執(zhí)行元素(例如,core_0311)分配對(duì)于特定節(jié)點(diǎn)或特定處理單元(取決于描述的粒度級(jí)別)唯一的NUMA掩碼。當(dāng)新的命令放置在單個(gè)GCQ條目中時(shí),新的命令作項(xiàng)目)經(jīng)由NUMA掩碼標(biāo)記/加標(biāo)簽/分配/加入或另外與特定NUMA共用性相關(guān)聯(lián)。上面的實(shí)施例可應(yīng)用于具有足夠近的NUMA區(qū)域使得它們可以有效地共享GCQ的系統(tǒng)。這對(duì)于公共功能執(zhí)行多個(gè)獨(dú)立次的工作量特別正確。GCQ中的每個(gè)工作元素包含APU掩碼、工作剩余計(jì)數(shù)(在處理的多次重復(fù)的情況下)和看見(jiàn)計(jì)數(shù)。在這些功能變量和系統(tǒng)配置的情況下,GCQ內(nèi)的工作元素調(diào)度如下(a)處理單元檢查處理單元的NUMA位是否設(shè)置 在下一個(gè)工作元素的APU掩碼中;(b)如果處理單元的NUMA位沒(méi)有設(shè)置在APU掩碼中,那么處理單元遞減看見(jiàn)計(jì)數(shù),指示該單元已經(jīng)完成工作元素,并且處理單元進(jìn)到下一個(gè)元素;(c)如果設(shè)置處理單元的NUMA位,那么基于由處理單元從工作元素接收的實(shí)際工作量,處理單元將工作項(xiàng)目剩余(WIR)計(jì)數(shù)遞減可調(diào)的“塊大小” ;(d)如果遞減的結(jié)果是指示不再存在工作(例如,0個(gè)剩余工作項(xiàng)目)的值,那么處理單元遞減看見(jiàn)計(jì)數(shù),其指示該處理單元已經(jīng)完成該元素。處理單元然后進(jìn)到下一個(gè)工作元素;(e)如果處理單元是看見(jiàn)元素的最后處理器核心(即,看見(jiàn)計(jì)數(shù)等于零),指示所有處理器核心已經(jīng)看見(jiàn)至少一個(gè)工作項(xiàng)目,那么處理器單元將全局隊(duì)列中的位置標(biāo)記為“空閑”。在處理單元(處理器核心),處理單元執(zhí)行檢索的塊中的每個(gè)工作項(xiàng)目,直到完成工作的塊的執(zhí)行。處理單元然后發(fā)出下一個(gè)請(qǐng)求到隊(duì)列以得到更多工作。描述的實(shí)施例的某些特征可以使自身適于N維(ND)范圍處理/執(zhí)行范例,諸如由OpenCL 和在多核心數(shù)據(jù)處理系統(tǒng)上執(zhí)行的類(lèi)似結(jié)構(gòu)的應(yīng)用提供的,在多核心數(shù)據(jù)處理系統(tǒng)中執(zhí)行命令包含有效執(zhí)行和平衡命令的工作負(fù)荷所需的信息,其可以包括數(shù)據(jù)或任務(wù)并行處理要求。每個(gè)命令包括對(duì)應(yīng)于要執(zhí)行的命令內(nèi)的工作組的總數(shù)、剩余要計(jì)算的工作組的數(shù)目、已經(jīng)處理的工作組的數(shù)目、一次處理(保留大小)的工作組的數(shù)目的信息。由命令提供的其他信息可以包括在命令中處理的執(zhí)行線(xiàn)程的數(shù)目以及已經(jīng)看見(jiàn)命令的執(zhí)行線(xiàn)程的數(shù)目。在該ND范圍執(zhí)行范例中,根據(jù)目前描述的實(shí)施例,執(zhí)行單元處理來(lái)自包括多個(gè)隊(duì)列條目的單個(gè)全局命令隊(duì)列的命令。在GCQ內(nèi),每個(gè)條目保持包括命令和多個(gè)工作項(xiàng)目的工作元素,分派多個(gè)工作項(xiàng)目用于通過(guò)由分配/鏈接到工作元素的APU掩碼標(biāo)識(shí)的特定處理單元執(zhí)行。如由描述的實(shí)施例提供的,執(zhí)行單元是處理核心,其可以位于跨越分布式網(wǎng)絡(luò)。然而,盡管貫穿描述和圖示的實(shí)施例采用處理器核心作為執(zhí)行單元的示例,但是在其他實(shí)施例中,執(zhí)行單元可以是執(zhí)行命令的任何設(shè)備,包括但不限于處理代碼、CPU、線(xiàn)程以及甚至完整的計(jì)算系統(tǒng)。一旦命令在全局命令隊(duì)列上可用,參與命令的執(zhí)行的每個(gè)處理器核心(如由APU掩碼標(biāo)識(shí)的)就將命令的工作項(xiàng)目剩余(WIR)計(jì)數(shù)器自動(dòng)遞減與處理器核心相關(guān)聯(lián)的工作保留大小(或塊大小)。處理器核心在工作組范圍內(nèi)保持相應(yīng)數(shù)目的工作項(xiàng)目用于處理。一旦處理器核心已經(jīng)執(zhí)行請(qǐng)求的工作項(xiàng)目,處理器核心就試圖保留更多工作項(xiàng)目。通過(guò)多個(gè)處理器核心的這種給定保留大小的工作項(xiàng)目的保留和分派繼續(xù),直到已經(jīng)處理(多個(gè))命令隊(duì)列的一個(gè)條目?jī)?nèi)的工作項(xiàng)目的總數(shù)。C.用于高等待時(shí)間處理節(jié)點(diǎn)的架構(gòu)上述實(shí)施例對(duì)于低等待時(shí)間處理節(jié)點(diǎn)操作良好,其中在處理器核心和GCQ之間展現(xiàn)低等待時(shí)間的本地節(jié)點(diǎn)組的相同節(jié)點(diǎn)上處理所有工作項(xiàng)目。因此,在這些實(shí)施例的情況下,需要核準(zhǔn)的處理節(jié)點(diǎn)位掩碼(例如,代表哪個(gè)節(jié)點(diǎn)已經(jīng)分配對(duì)于特定工作元素的處理許可的I和0的8個(gè)位)。在低等待時(shí)間操作的情況下,每個(gè)節(jié)點(diǎn)以塊(或者4個(gè)工作項(xiàng)目的組)處理,直到已經(jīng)處理子元素的總數(shù)(例如,16),并且所有節(jié)點(diǎn)(8)已經(jīng)看見(jiàn)工作元素。在用于節(jié)點(diǎn)的看見(jiàn)計(jì)數(shù)器的情況下,如果在工作元素不存在剩余要做的工作,那么邏輯將看見(jiàn)計(jì)數(shù)從8遞減到7、然后6等等,直到看見(jiàn)計(jì)數(shù)=0。如果存在要分配的工作,那么GCQ邏輯分配有4的塊,并且為分配屬性/計(jì)數(shù)器已經(jīng)從16變?yōu)?2、然后到8、然后到4、然后到O。一旦未處理的元素計(jì)數(shù)的值到達(dá)0,就不再存在與該工作項(xiàng)目相關(guān)聯(lián)的工作。處理節(jié)點(diǎn)然后進(jìn)入并且檢查命令隊(duì)列,并且每一個(gè)將計(jì)算單元計(jì)數(shù)器從8遞減到7,并且直到O。一旦看見(jiàn)計(jì)數(shù)器到達(dá)0,主管該工作元素的命令隊(duì)列的條目就釋放用于新的工作元素的分配。 對(duì)于其中至少一個(gè)處理節(jié)點(diǎn)在與其他處理節(jié)點(diǎn)和到一般系統(tǒng)存儲(chǔ)器結(jié)構(gòu)(諸如GCQ)通信時(shí)展現(xiàn)更大等待時(shí)間懲罰的系統(tǒng),提供額外的機(jī)制,高等待時(shí)間處理器核心通過(guò)該機(jī)制能夠從GCQ有效地檢索和分派工作,而不在系統(tǒng)結(jié)構(gòu)上提供大量請(qǐng)求。對(duì)于這種高等待時(shí)間處理節(jié)點(diǎn)與系統(tǒng)內(nèi)的低等待時(shí)間節(jié)點(diǎn)的工作競(jìng)爭(zhēng),即使有,其他高等待時(shí)間節(jié)點(diǎn)也基本減少。在GPU的現(xiàn)有技術(shù)系統(tǒng)中,整個(gè)工作完成等待最慢的GPU完成處理。在采用PPU和SPU的系統(tǒng)的情況下,PTO通常更慢,導(dǎo)致隨著更長(zhǎng)等待時(shí)間PPU缺乏處理許多工作而由SI3U竊取(steal)工作。在圖示的下述實(shí)施例的情況下,每個(gè)處理節(jié)點(diǎn)共享單個(gè)全局命令隊(duì)列,并且每個(gè)處理節(jié)點(diǎn)還保持“分級(jí)保持隊(duì)列”。分級(jí)保持隊(duì)列的大小等于全局隊(duì)列的大小。分段抽出工作到分級(jí)保持隊(duì)列,其中本地分級(jí)保持工作由單個(gè)處理節(jié)點(diǎn)中的所有處理器核心共享。在一個(gè)實(shí)施例的情況下,該系統(tǒng)基礎(chǔ)設(shè)施提供單個(gè)GCQ和多個(gè)(直到Y(jié)個(gè))LCQ,其中Y代表處理節(jié)點(diǎn)的總數(shù)。每個(gè)節(jié)點(diǎn)可以是NUMA節(jié)點(diǎn),但是本發(fā)明當(dāng)然可應(yīng)用于其他類(lèi)型的多節(jié)點(diǎn)、分布式處理系統(tǒng)。所有隊(duì)列具有相同數(shù)目的工作元素,并且全局隊(duì)列中的工作元素X對(duì)應(yīng)于NUMA隊(duì)列中的工作元素X。調(diào)制程序?qū)⒐ぷ髦糜谌株?duì)列中進(jìn)行。在本地執(zhí)行期間,所有工作首先由處理器核心從分級(jí)保持隊(duì)列(LCQ)取得,并且僅當(dāng)LCQ內(nèi)不存在工作時(shí)從GCQ取得工作。現(xiàn)在參照?qǐng)D9,圖示了具有與之前已經(jīng)描述的圖3的配置有些類(lèi)似配置的示例分布式處理系統(tǒng)架構(gòu)900。因?yàn)閮蓚€(gè)附圖中的重疊,圖3中的共同組件對(duì)于圖9不再詳細(xì)描述。然而,圖9提供某些結(jié)構(gòu)和功能差別,現(xiàn)在將進(jìn)行描述。除了多節(jié)點(diǎn)處理系統(tǒng)架構(gòu)900內(nèi)GCQ 320、以及每個(gè)節(jié)點(diǎn)唯一節(jié)點(diǎn)掩碼位和/或每個(gè)執(zhí)行單元唯一執(zhí)行單元掩碼位(取決于實(shí)施的粒度)的實(shí)施方式外,多節(jié)點(diǎn)處理系統(tǒng)架構(gòu)900還包括處理節(jié)點(diǎn)C 910內(nèi)的本地命令隊(duì)列(LCQ) 375。在該配置的情況下,處理節(jié)點(diǎn)C900假設(shè)相對(duì)于預(yù)定閾值等待時(shí)間值展現(xiàn)到GCQ 320的高等待時(shí)間,在預(yù)定閾值等待時(shí)間值之下的由處理單元到GCQ的訪問(wèn)識(shí)別為低等待時(shí)間操作。LCQ 375使得高等待時(shí)間處理節(jié)點(diǎn)能夠在本地存儲(chǔ)區(qū)域(LCQ 375)中分級(jí)保持更大塊的從GCQ 315檢索的工作項(xiàng)目。在本地分級(jí)保持更大塊的工作項(xiàng)目的情況下,高等待時(shí)間處理節(jié)點(diǎn)花費(fèi)顯著較少時(shí)間與其他節(jié)點(diǎn)的全局互連和/或在GCQ對(duì)于工作競(jìng)爭(zhēng),并且高等待時(shí)間處理節(jié)點(diǎn)能夠花費(fèi)更多時(shí)間對(duì)于檢索的工作項(xiàng)目進(jìn)行有用的工作。在該圖示實(shí)施例的情況下,假設(shè)其他處理節(jié)點(diǎn)是低等待時(shí)間節(jié)點(diǎn),并且不要求LCQ用于處理從GCQ 315檢索的工作項(xiàng)目。支持從GCQ 320更大塊的工作項(xiàng)目的檢索的是GCQ邏輯935,其為了本公開(kāi)的目的假設(shè)為提供額外邏輯以支持可變塊大小的工作分配。根據(jù)一個(gè)實(shí)施例,GCQ邏輯935還基于歷史等待時(shí)間數(shù)據(jù)、之前工作分配數(shù)據(jù)、當(dāng)前請(qǐng)求的塊大小、對(duì)于工作元素的剩余工作量、以及分配更大塊大小到高等待時(shí)間節(jié)點(diǎn)的效率的分析,提供分配到高等待時(shí)間處理器節(jié)點(diǎn)(910)的塊大小的動(dòng)態(tài)修改。圖10提供多節(jié)點(diǎn)處理系統(tǒng)1000的第二代表圖示,其中每個(gè)處理節(jié)點(diǎn)提供LCQ。因此,處理節(jié)點(diǎn)A 1010A具有LCQ 1022,而處理節(jié)點(diǎn)B 1010B具有LCQ 1024,并且處理節(jié)點(diǎn)C 1010C具有LCQ 975。在該配置的情況下,假設(shè)總體多節(jié)點(diǎn)處理系統(tǒng)1000內(nèi)的所有 處理節(jié)點(diǎn)具有高等待時(shí)間,因此每個(gè)節(jié)點(diǎn)包括用于分級(jí)保持從GCQ 320檢索的工作項(xiàng)目的LCQ0 LCQ邏輯因此操作為各個(gè)處理器節(jié)點(diǎn)內(nèi)的工作調(diào)度邏輯。重要的是盡管圖示為各個(gè)處理節(jié)點(diǎn)內(nèi)的分離組件,但是每個(gè)LCQ可以是各個(gè)處理節(jié)點(diǎn)(1010A-1010C)的本地存儲(chǔ)器庫(kù)(154A-154C)內(nèi)特定范圍的地址空間。不管位于何處,LCQ的定位認(rèn)為對(duì)于特定處理節(jié)點(diǎn)為“本地”,由于該處理節(jié)點(diǎn)內(nèi)的處理單元能夠用相對(duì)低等待時(shí)間訪問(wèn)LCQ。在圖示和描述的實(shí)施例中,本地處理單元和LCQ之間的操作的等待時(shí)間是小于利用GCQ 320的類(lèi)似操作的等待時(shí)間的基本因素。此外,如下面將變得更加清楚的,在一個(gè)實(shí)施例中,對(duì)于LCQ內(nèi)分級(jí)保持的工作項(xiàng)目的訪問(wèn)與其他節(jié)點(diǎn)的處理單元不存在競(jìng)爭(zhēng)。然而,在替代實(shí)施例中,形成本地處理組的節(jié)點(diǎn)的簇對(duì)于不必位于與每個(gè)執(zhí)行單元相同處理節(jié)點(diǎn)的LCQ,可能展現(xiàn)低訪問(wèn)等待時(shí)間(低于第二閾值等待時(shí)間值)。在該替代實(shí)施例的情況下,每個(gè)這種本地處理組分配LCQ,使得跨越多個(gè)節(jié)點(diǎn)分配LCQ,但是提供對(duì)那些節(jié)點(diǎn)內(nèi)的所有執(zhí)行單元的低訪問(wèn)等待時(shí)間。因?yàn)閺奶幚斫M內(nèi)的這些執(zhí)行單元對(duì)于GCQ320的訪問(wèn)展現(xiàn)高訪問(wèn)等待時(shí)間,所以在該交叉節(jié)點(diǎn)、共享LCQ分級(jí)保持更大塊的工作項(xiàng)目,用于由本地處理組內(nèi)的不同執(zhí)行單元訪問(wèn)和分派。一般意義上說(shuō),提供LCQ 375以減少跨越高等待時(shí)間節(jié)點(diǎn)的處理命中單個(gè)存儲(chǔ)器位置(例如,GCQ)的次數(shù),而不管可能或不可能訪問(wèn)相同LCQ的系統(tǒng)內(nèi)低等待時(shí)間節(jié)點(diǎn)的存在。在一個(gè)實(shí)施方式中,并且如由圖10進(jìn)一步圖示,系統(tǒng)架構(gòu)1000可能提供網(wǎng)絡(luò)級(jí)GCQ1020和相關(guān)邏輯1035。在該配置的情況下,GCQ相對(duì)于處理節(jié)點(diǎn)(包括在其生成工作的節(jié)點(diǎn))的實(shí)際位置不重要,由于GCQ 1020因而提供網(wǎng)絡(luò)分級(jí)保持區(qū)域用于放置跨越網(wǎng)絡(luò)互連/結(jié)構(gòu)分派的工作項(xiàng)目。類(lèi)似地,同樣,GCQ 1020可以?xún)H僅容易地是網(wǎng)絡(luò)可訪問(wèn)的LCQ,而不是物理上位于訪問(wèn)LCQ的處理單元的處理器節(jié)點(diǎn)上。根據(jù)一個(gè)實(shí)施例,在處理器節(jié)點(diǎn)中保持工作項(xiàng)目剩余(LWIR)計(jì)數(shù)的本地副本,以便跟蹤剩余用于分派到本地執(zhí)行單元之一的LCQ內(nèi)的工作項(xiàng)目。因此在處理器節(jié)點(diǎn)的操作期間,操作涉及從LCQ檢索工作,更新(遞減)LWIR直到LWIR計(jì)數(shù)到達(dá)零(O)。在該時(shí)段期間,不需要或不執(zhí)行全局計(jì)數(shù)的更新。然而,一旦最后的執(zhí)行單元執(zhí)行LWIR計(jì)數(shù)值的更新,并且隨后將LCQ內(nèi)的LWIR計(jì)數(shù)減少到零(0),該最后執(zhí)行單元就轉(zhuǎn)發(fā)更新到GCQ。因此,對(duì)于頭部隊(duì)列的更新僅在本地節(jié)點(diǎn)已經(jīng)完成所有工作時(shí)出現(xiàn)。此外,因?yàn)閮H僅最后執(zhí)行單元執(zhí)行GCQ WIR計(jì)數(shù)值的更新,所以?xún)H僅需要對(duì)于LWIR計(jì)數(shù)的一個(gè)節(jié)點(diǎn)更新,并且僅僅在執(zhí)行LWIR計(jì)數(shù)的所有本地更新之后執(zhí)行GCQ更新。因此,實(shí)施例實(shí)現(xiàn)本地計(jì)數(shù)的自動(dòng)遞減,并且將計(jì)數(shù)遞減到零的最后計(jì)算單元由此知道其負(fù)責(zé)提供對(duì)于全局計(jì)數(shù)的自動(dòng)更新。通過(guò)僅需要遞減計(jì)數(shù)值的最后執(zhí)行單元與GCQ通信,所以節(jié)點(diǎn)邏輯減少互連結(jié)構(gòu)上的交叉談話(huà),因?yàn)镚CQ僅必須每個(gè)區(qū)域更新一次而不是每個(gè)工作組更新一次。描述的實(shí)施例在具有跨越各處理器核心的高懲罰的示例系統(tǒng)的情況下非常有效地工作。如上面參照?qǐng)D6A-6D描述的GCQ 320內(nèi)的操作的情況,LCQ中的每個(gè)工作元素跟蹤計(jì)算機(jī)單元的數(shù)目(例如,在圖示的實(shí)施例中為4),并且工作元素可以包括用于完成的多個(gè)可執(zhí)行處理/任務(wù)/元素(例如,在圖示的實(shí)施例中具有16個(gè)元素的4,4維空間)。在該示例系統(tǒng)的情況下,并且假設(shè)高等待時(shí)間處理器節(jié)點(diǎn)1010C,至少一個(gè)執(zhí)行單元(例如,處理器核心171)不能及時(shí)到達(dá)GCQ以從調(diào)度給所有三個(gè)處理器節(jié)點(diǎn)的工作元素WE_0攫取工作,而處理器核心171和173實(shí)際上缺乏工作,導(dǎo)致總體處理的低效。然而,在LCQ的情況下,高等待時(shí)間處理器節(jié)點(diǎn)能夠從GCQ—次攫取更大的單塊工作。高等待時(shí)間處理器節(jié)點(diǎn)的第一請(qǐng)求處理單元發(fā)出請(qǐng)求更大塊工作的工作請(qǐng)求。當(dāng)更大塊返回處理節(jié)點(diǎn)時(shí),工作項(xiàng)目存 儲(chǔ)在請(qǐng)求處理器的LCQ (或與請(qǐng)求處理單元相關(guān)聯(lián)的LCQ)中。工作項(xiàng)目然后由從LCQ攫取工作的不同預(yù)先核準(zhǔn)本地處理單元執(zhí)行,直到完成所有工作。同時(shí),低等待時(shí)間處理節(jié)點(diǎn)和/或處理單元繼續(xù)從GCQ攫取較小塊大小的工作,但是更頻繁地進(jìn)行。因此,高等待時(shí)間處理器核心自動(dòng)保留比單個(gè)工作項(xiàng)目(或由低等待時(shí)間節(jié)點(diǎn)保留的標(biāo)準(zhǔn)塊)更大塊的工作。在上面的實(shí)施方式的情況下,充分減少在高等待時(shí)間路徑上的競(jìng)爭(zhēng),并且高等待時(shí)間節(jié)點(diǎn)也接收足夠工作以保持處理,同時(shí)本地節(jié)點(diǎn)繼續(xù)以較低等待時(shí)間打擊(Pound)LCQ并且更迅速但是以較低塊大小消耗新的工作。由圖10提供的示例假設(shè)所有處理節(jié)點(diǎn)具有與GCQ操作的相當(dāng)足夠的等待時(shí)間,用于設(shè)立整個(gè)系統(tǒng)架構(gòu)以便一次攫取多個(gè)塊的工作,并且在LCQ分級(jí)保持工作,以便減少在請(qǐng)求總線(xiàn)上對(duì)于工作項(xiàng)目的跨節(jié)點(diǎn)請(qǐng)求競(jìng)爭(zhēng)?,F(xiàn)在參照?qǐng)D11和12,圖示了指示混合工作分配方案中多個(gè)不同塊大小的示例工作元素的請(qǐng)求和檢索的序列圖,混合工作分配方案基于節(jié)點(diǎn)的訪問(wèn)等待時(shí)間將可變的塊大小分配到不同的處理節(jié)點(diǎn)。在對(duì)于來(lái)自工作元素的工作的初始分派期間,低等待時(shí)間處理器核心1110AU110B和高等待時(shí)間處理器核心1110C分別發(fā)出工作請(qǐng)求1140、1141。工作請(qǐng)求由GCQ邏輯1030接收,其處理請(qǐng)求用于匹配I3U掩碼與工作元素的APU掩碼。如由這些附圖進(jìn)一步示出的,以工作項(xiàng)目的降序分派工作如下處理組I 1110A響應(yīng)于GCQ邏輯核準(zhǔn)處理節(jié)點(diǎn)或請(qǐng)求執(zhí)行單元(利用APU掩碼對(duì)PU掩碼比較)為用于工作項(xiàng)目WE_01122的核準(zhǔn)處理節(jié)點(diǎn),接收第一標(biāo)準(zhǔn)塊的四個(gè)(4)工作項(xiàng)目。標(biāo)準(zhǔn)塊大小的分配可以基于以下的一個(gè)或多個(gè)(a)工作請(qǐng)求1140內(nèi)編碼的實(shí)際塊大??;或者(b)可以用于特定工作元素或通用于GCQ的所有工作元素的GCQ邏輯內(nèi)編碼的預(yù)先設(shè)置的塊大??;或者(c)基于一個(gè)或多個(gè)因素計(jì)算的塊大小,所述因素包括對(duì)于請(qǐng)求節(jié)點(diǎn)的等待時(shí)間、已知塊大小的完成速度、歷史因素、對(duì)于特定處理節(jié)點(diǎn)預(yù)先編程的塊大小、剩余用于分派的工作項(xiàng)目的量、預(yù)先核準(zhǔn)并且可用于處理WE_01122的處理單元的數(shù)目;或者(d)上面因素(a-c)的列表的組合。當(dāng)GCQ邏輯處理高等待時(shí)間處理組(處理組III1110C)的工作請(qǐng)求1140時(shí),并且隨后針對(duì)WE_01122的APU掩碼330比較的處理組的I3U掩碼的核準(zhǔn),GCQ邏輯分配更大塊大小到處理組III IllOC0在圖示的實(shí)施例中,GCQ邏輯分配常規(guī)/標(biāo)準(zhǔn)塊大小的兩倍的塊大小(或八個(gè)(8)工作項(xiàng)目)。GCQ邏輯基于上面因素的一個(gè)或多個(gè)執(zhí)行分配。然而,在一個(gè)或多個(gè)實(shí)施例中,源自與處理節(jié)點(diǎn)分派分配的工作的歷史速度耦合的高等待時(shí)間處理節(jié)點(diǎn)的操作的等待時(shí)間可能是以下一個(gè)或兩者的主要因素Ca)由處理節(jié)點(diǎn)III請(qǐng)求的塊大小,該大小在工作請(qǐng)求1141內(nèi)編碼并且代表當(dāng)在GCQ邏輯沒(méi)有執(zhí)行額外計(jì)算時(shí)由GCQ邏輯返回的塊大小;或者(b)當(dāng)這種計(jì)算出現(xiàn)時(shí),由GCQ邏輯計(jì)算的塊大小。當(dāng)由GCQ邏輯執(zhí)行計(jì)算時(shí),基于高等待時(shí)間處理節(jié)點(diǎn)的工作分派的實(shí)際等待時(shí)間和速度,較大的塊大小可以是預(yù)先選擇或動(dòng)態(tài)選擇的倍數(shù),諸如2X、3X等等。圖11和12還示出來(lái)自處理組II 1110B的工作請(qǐng)求1142,處理組II 1110B響應(yīng)于工作請(qǐng)求接收標(biāo)準(zhǔn)塊大小的工作項(xiàng)目。工作請(qǐng)求的處理的順序和/或工作項(xiàng)目的分派的順序在上述序列中不重要。此外,盡管圖示的實(shí)施例僅呈現(xiàn)了 16個(gè)工作項(xiàng)目,但是實(shí)施例可以構(gòu)思為在具有幾百或幾千或更多工作項(xiàng)目的工作元素的情況下執(zhí)行,其中塊大小范圍從一(I)到X,其中X是小于工作項(xiàng)目的總數(shù)的某個(gè)整數(shù)。在僅僅一個(gè)節(jié)點(diǎn)處理特定工作元 素的極端情況下,對(duì)于工作元素不存在競(jìng)爭(zhēng),并且因此塊大小即使對(duì)于高等待時(shí)間節(jié)點(diǎn)也是任意的。此外,假設(shè)存在兩個(gè)節(jié)點(diǎn),該兩個(gè)節(jié)點(diǎn)都是高等待時(shí)間節(jié)點(diǎn),工作元素可以放置在GCQ的副本或位于分布式多節(jié)點(diǎn)處理系統(tǒng)架構(gòu)內(nèi)不同可訪問(wèn)位置的GCQ內(nèi),該架構(gòu)減少對(duì)于兩個(gè)處理節(jié)點(diǎn)的總體等待時(shí)間。具體參照?qǐng)D12,從GCQ檢索的工作項(xiàng)目放置在請(qǐng)求處理節(jié)點(diǎn)的LCQ內(nèi)。每個(gè)處理節(jié)點(diǎn)/組1110A/1110C具有相應(yīng)的塊大小(例如,CS 1142和CS 1144),相應(yīng)的塊大小可以對(duì)于每個(gè)節(jié)點(diǎn)不同并且可以(特別對(duì)于高等待時(shí)間節(jié)點(diǎn))動(dòng)態(tài)可變。因此,標(biāo)準(zhǔn)/第一塊大小的工作項(xiàng)目WE_15到WE_12存儲(chǔ)在處理節(jié)點(diǎn)A 1010A的LCQ 922內(nèi),而更大/第二塊大小的工作項(xiàng)目WE_11到WE_4存儲(chǔ)在處理節(jié)點(diǎn)C 1010C的LCQ 924內(nèi)。在一個(gè)實(shí)施例中,從GCQ檢索工作的處理可以從在處理節(jié)點(diǎn)上的邏輯執(zhí)行以及控制LCQ (S卩,LCQ邏輯)的操作的觀點(diǎn)描述。在工作請(qǐng)求周期期間,處理節(jié)點(diǎn)C 1010C的一個(gè)執(zhí)行單元(例如,core0171)生成并且發(fā)出工作請(qǐng)求(1141)到系統(tǒng)互連結(jié)構(gòu),工作請(qǐng)求(1141)包括執(zhí)行單元和/或節(jié)點(diǎn)(再次取決于掩碼實(shí)施方式的粒度)的PU掩碼。具體的工作請(qǐng)求1141攫取更大塊大小(具體地,兩個(gè)塊大小)的八個(gè)(8)工作項(xiàng)目,并且當(dāng)工作項(xiàng)目到達(dá)處理節(jié)點(diǎn)1010C時(shí)將工作項(xiàng)目放置在LCQ中。根據(jù)一個(gè)實(shí)施例,塊大小屬性可以存儲(chǔ)為特定節(jié)點(diǎn)的預(yù)先設(shè)置或動(dòng)態(tài)計(jì)算的參數(shù),并且每個(gè)節(jié)點(diǎn)可以具有預(yù)先設(shè)置的默認(rèn)塊大小和適當(dāng)大小的LCQ以保持該塊大小的工作項(xiàng)目。在另一實(shí)施例中,LCQ的大小可變,由于當(dāng)要求LCQ用于分級(jí)保持來(lái)自遠(yuǎn)程(高等待時(shí)間)GCQ的工作時(shí),在本地節(jié)點(diǎn)存儲(chǔ)器內(nèi)或其他低等待時(shí)間存儲(chǔ)內(nèi)創(chuàng)建和保持LCQ0 LCQ的大小的可變性然后可以約束到塊大小計(jì)算的動(dòng)態(tài)屬性。返回圖示的實(shí)施例,處理節(jié)點(diǎn)C具有比處理節(jié)點(diǎn)A 1010A更高的(高于預(yù)先設(shè)置的閾值)對(duì)于GCQ的訪問(wèn)等待時(shí)間,因此處理節(jié)點(diǎn)C 1010C比處理節(jié)點(diǎn)A 1010A檢索/攫取更大塊大小的工作用于在其LCQ 124中的存儲(chǔ)。在工作請(qǐng)求/分派周期期間,處理節(jié)點(diǎn)C1010C或處理節(jié)點(diǎn)1010C的執(zhí)行單元攫取包含工作項(xiàng)目15到12的一塊四個(gè)(4)工作項(xiàng)目,并且將這些工作項(xiàng)目存儲(chǔ)在節(jié)點(diǎn)A的LCQ 1122中。有些類(lèi)似地,處理節(jié)點(diǎn)C 1010C或處理節(jié)點(diǎn)1010C的執(zhí)行單元攫取包含工作項(xiàng)目十一(11)到八(8)的以及七(7)到四(4)的兩塊工作項(xiàng)目,并且將這些工作項(xiàng)目存儲(chǔ)在節(jié)點(diǎn)C的LCQ 1124中。如圖示所示,經(jīng)由本地WIR(LWIR)計(jì)數(shù)器跟蹤每個(gè)處理節(jié)點(diǎn)的LCQ內(nèi)剩余放置的工作項(xiàng)目的數(shù)目。因此,LCQ 1122分配LWIR計(jì)數(shù)器1132,而LCQ 1124分配LWIR計(jì)數(shù)器1134。在GCQ 1120,對(duì)于處理節(jié)點(diǎn)C的請(qǐng)求的塊大小可以由(GCQ邏輯的)塊大小倍數(shù)或基于預(yù)先建立的高等待時(shí)間塊大小修改,其提供檢索八個(gè)(8)工作項(xiàng)目而不是標(biāo)準(zhǔn)塊大小的四個(gè)(4)工作項(xiàng)目。盡管塊大小在此描述為四個(gè)(4)工作項(xiàng)目的倍數(shù),但是該數(shù)目是任意的,并且完全為了圖示而提供。在響應(yīng)于每個(gè)工作請(qǐng)求分派的每塊工作內(nèi),可以提供任何數(shù)目的工作項(xiàng)目。因此,例如,第一工作請(qǐng)求可以提供三個(gè)(3)工作項(xiàng)目,第二工作請(qǐng)求提供10個(gè)工作項(xiàng)目,并且第三工作請(qǐng)求提供七個(gè)(7)工作項(xiàng)目,提供到不同請(qǐng)求節(jié)點(diǎn)的工作項(xiàng)目的數(shù)目之間沒(méi)有聯(lián)系。那些數(shù)目可以簡(jiǎn)單地預(yù)先編程到各個(gè)節(jié)點(diǎn)中作為從GCQ請(qǐng)求的工作項(xiàng)目的塊大小,其中對(duì)于在系統(tǒng)互連結(jié)構(gòu)和本地處理節(jié)點(diǎn)的操作的等待時(shí)間給出一些考慮。一旦工作項(xiàng)目返回到處理節(jié)點(diǎn),就將工作項(xiàng)目存儲(chǔ)在LCQ內(nèi)。然后每個(gè)節(jié)點(diǎn)負(fù)責(zé)跟蹤它們各自本地隊(duì)列內(nèi)特定工作元素的完成。特別地,盡管圖示的實(shí)施例的描述指向LCQ的單個(gè)條目?jī)?nèi)單個(gè)工作元素上的操作,但是其它實(shí)施例提供每個(gè)LCQ可以包括多個(gè)條目,其中每個(gè)條目反映GCQ的那些,但是僅包括從GCQ檢索的工作項(xiàng)目的子集。在LCQ的這種 多條目配置的情況下,空閑處理單元可以繼續(xù)前進(jìn)到LCQ中的下一個(gè)工作元素,而不是不得不在LCQ的第一工作元素的所有工作項(xiàng)目已經(jīng)分派時(shí)才進(jìn)到GCQ用于工作。該實(shí)施例還允許當(dāng)來(lái)自處理節(jié)點(diǎn)已經(jīng)核準(zhǔn)用于執(zhí)行的GCQ內(nèi)的其它工作元素的額外工作可用時(shí),處理單元不變?yōu)榭臻e。通過(guò)從GCQ檢索多個(gè)工作元素的部分,并且將那些工作元素部分分級(jí)保持在LCQ內(nèi),在用來(lái)自GCQ的新的工作項(xiàng)目替代LCQ的完成條目時(shí)涉及的等待時(shí)間不導(dǎo)致本地處理單元變?yōu)榭臻e,除非在GCQ不存在更多工作可用。當(dāng)分配的處理單元的單個(gè)架構(gòu)包括低等待時(shí)間處理節(jié)點(diǎn)以及高等待時(shí)間處理節(jié)點(diǎn)時(shí),在一個(gè)實(shí)施例中可以實(shí)施混合模式的工作分派。因此,兩個(gè)不同機(jī)制同時(shí)實(shí)施用于調(diào)度工作到單個(gè)處理系統(tǒng)內(nèi)的處理節(jié)點(diǎn),其中高等待時(shí)間節(jié)點(diǎn)在LCQ中標(biāo)記它們分配的工作項(xiàng)目,而低等待時(shí)間的處理單元在不需要本地分級(jí)保持的情況下執(zhí)行直接從GCQ檢索的工作項(xiàng)目。在該混合模式的情況下,低等待時(shí)間節(jié)點(diǎn)的處理單元攫取工作用于它們自身,而高等待時(shí)間節(jié)點(diǎn)的單個(gè)處理單元攫取工作用于在相同高等待時(shí)間節(jié)點(diǎn)上的多個(gè)其它預(yù)先選擇的處理單元。現(xiàn)在參照?qǐng)D13,提供根據(jù)一個(gè)實(shí)施例的方法的流程圖,通過(guò)該方法可以實(shí)施具有到GCQ的不同訪問(wèn)等待時(shí)間的處理單元之間的混合模式的工作分派。處理在塊1302開(kāi)始,并且進(jìn)到塊1304,本地節(jié)點(diǎn)邏輯(或LCQ邏輯)在塊1304評(píng)估工作競(jìng)爭(zhēng)和檢索期間處理器節(jié)點(diǎn)和GCQ之間交換的等待時(shí)間。在決定塊1306,節(jié)點(diǎn)邏輯確定等待時(shí)間是否大于為低等待時(shí)間操作預(yù)先建立的閾值等待時(shí)間。該預(yù)先建立的閾值等待時(shí)間可以是為總體系統(tǒng)或?yàn)樘囟ㄌ幚砉?jié)點(diǎn)和/或具體為GCQ工作分派操作提供的設(shè)計(jì)值。如果等待時(shí)間不大于閾值等待時(shí)間,那么節(jié)點(diǎn)邏輯對(duì)于來(lái)自GCQ的工作請(qǐng)求操作用常規(guī)塊大小編碼節(jié)點(diǎn),如在塊1308所示。該編碼的塊大小然后提供在每個(gè)發(fā)送到GCQ的實(shí)際發(fā)出的工作請(qǐng)求內(nèi),并且使得低等待時(shí)間處理單元能夠直接從GCQ檢索和處理作為常規(guī)塊的工作項(xiàng)目,如在塊1310所示。返回到?jīng)Q定塊1306,當(dāng)?shù)却龝r(shí)間大于為低等待時(shí)間操作預(yù)先設(shè)置的閾值等待時(shí)間時(shí)(即,處理節(jié)點(diǎn)是高等待時(shí)間處理節(jié)點(diǎn)),節(jié)點(diǎn)邏輯開(kāi)始本地命令隊(duì)列的建立和/或設(shè)置,用于從GCQ檢索的工作項(xiàng)目的臨時(shí)存儲(chǔ),如在塊1312提供的。到GCQ的等待時(shí)間的本地化確定可以基于到總體系統(tǒng)架構(gòu)內(nèi)不同位置的預(yù)先確定和/或預(yù)先存儲(chǔ)的等待時(shí)間值。因此,處理節(jié)點(diǎn)C IOlOC可以預(yù)先編程以處理從位于資源的不同本地化分組內(nèi)的GCQ檢索的任何工作,如要求對(duì)于GCQ操作的較高等待時(shí)間。相反,處理節(jié)點(diǎn)C 1010C也可以預(yù)先編程以處理從位于資源的相同本地化分組內(nèi)的GCQ檢索的任何工作,如具有低于閾值等待時(shí)間的等待時(shí)間并且不要求LCQ的建立。返回到流程圖,高等待時(shí)間處理節(jié)點(diǎn)的節(jié)點(diǎn)邏輯在處理節(jié)點(diǎn)中編碼比對(duì)于到GCQ的低等待時(shí)間訪問(wèn)更大的塊大小,如在塊1314所不。建立的實(shí)際塊大小可以基于如上提供的多個(gè)因素,并且可以動(dòng)態(tài)地改變。然而,塊大小還可以由系統(tǒng)設(shè)計(jì)者預(yù)先設(shè)置(靜態(tài)分配),在此情況下LCQ也可以預(yù)先建立或可以具有預(yù)先建立的大小(例如,預(yù)先設(shè)置數(shù)目的條目用于工作存儲(chǔ))。一旦建立/設(shè)置塊大小,從GCQ請(qǐng)求工作的節(jié)點(diǎn)邏輯和/或處理單元在工作請(qǐng)求內(nèi)編碼更大的塊大小,以便檢索更大量的工作到高等待時(shí)間處理節(jié)點(diǎn),如在塊1316所示。在塊1318,高等待時(shí)間處理節(jié)點(diǎn)內(nèi)的處理單元然后處理從LCQ內(nèi)檢索的工作項(xiàng)目,直到LCQ的LWIR到達(dá)零(0)計(jì)數(shù)。特別地,對(duì)于其中塊大小可以動(dòng)態(tài)更新的實(shí)施例,該方法進(jìn)一步提供在塊1320記錄從LCQ的工作分派的速度,并且然后數(shù)據(jù)提供回到更大塊大 小的評(píng)估和編碼(塊1314),用于在對(duì)于高等待時(shí)間處理節(jié)點(diǎn)檢索額外的工作項(xiàng)目時(shí)使用。由高等待時(shí)間處理節(jié)點(diǎn)以塊檢索工作以及在從LCQ的本地分派結(jié)束將工作完成通知GCQ的方式,影響在對(duì)于GCQ內(nèi)的工作元素跟蹤工作項(xiàng)目時(shí)通過(guò)GCQ邏輯的處理。因此,在GCQ,當(dāng)請(qǐng)求和分派更大塊到高等待時(shí)間處理節(jié)點(diǎn)時(shí),GCQ邏輯對(duì)于每個(gè)更大塊大小遞減一次剩余用于分派的工作項(xiàng)目的總量,而不是如在初始可能由編譯器在調(diào)度工作元素時(shí)考慮的更小大小(標(biāo)準(zhǔn))塊的情況下要求的每次遞減。此外,對(duì)于在處理單元的粒度(而不是在節(jié)點(diǎn)級(jí)別)出現(xiàn)的工作分派,工作元素的GCQ看見(jiàn)計(jì)數(shù)遞減在高等待時(shí)間處理節(jié)點(diǎn)的處理單元的總數(shù)而不是遞減單一的縮減量。返回到圖6A-6D的序列,并且現(xiàn)在具體看圖6E-6F,圖示了這樣的處理過(guò)程,核準(zhǔn)高等待時(shí)間處理單元通過(guò)該處理過(guò)程從GCQ (具體地WE_1)移除其塊大小的工作。WE_1初始具有用于調(diào)度/分派的100個(gè)工作項(xiàng)目和APU掩碼,該APU掩碼假設(shè)系統(tǒng)中存在10個(gè)個(gè)別處理單元,其中七個(gè)單元是工作項(xiàng)目可以分配到其(或其上可以調(diào)度工作項(xiàng)目)的核準(zhǔn)單元。在七個(gè)核準(zhǔn)處理單元中有高等待時(shí)間處理節(jié)點(diǎn)1010C的處理單元671和673。如由圖6E提供的,沒(méi)有核準(zhǔn)用于處理WE_0的處理單元也可以同時(shí)調(diào)度來(lái)自在其核準(zhǔn)該處理單元的不同工作元素的工作。在圖6E,第一本地處理單元(例如,在低等待時(shí)間處理節(jié)點(diǎn)A 1010A的處理單元Ixxx)請(qǐng)求工作項(xiàng)目,并且接收10個(gè)工作項(xiàng)目的塊大小用于分派。遞減與WE_1相關(guān)聯(lián)的WIR計(jì)數(shù)器,以便反映來(lái)自WE_1的10個(gè)工作項(xiàng)目的調(diào)度,并且看見(jiàn)計(jì)數(shù)遞減1(從七(7)到六(6))。當(dāng)由GCQ邏輯處理來(lái)自高等待時(shí)間處理節(jié)點(diǎn)1010C的處理單元的工作請(qǐng)求時(shí),調(diào)度并且分派更大塊大小的40個(gè)工作項(xiàng)目到高等待時(shí)間處理節(jié)點(diǎn)的LCQ。GCQ邏輯隨后將WIR計(jì)數(shù)器從90遞減到50。然而,WE_1的看見(jiàn)計(jì)數(shù)沒(méi)有遞減,直到調(diào)度的工作從LCQ內(nèi)分派,如下面參照?qǐng)D15的方法描述的。根據(jù)一個(gè)實(shí)施例,LCQ跟蹤高等待時(shí)間處理結(jié)點(diǎn)內(nèi)各種處理單元的掩碼,使得LCQ代表表現(xiàn)所有本地處理單元的組合掩碼。一旦完成LCQ內(nèi)的40個(gè)工作項(xiàng)目的執(zhí)行,即,LWIR計(jì)數(shù)等于或小于零(0),LCQ邏輯就發(fā)出完成通知,其觸發(fā)GCQ邏輯將WE_1的看見(jiàn)計(jì)數(shù)遞減二(2),其對(duì)應(yīng)于LCQ上40個(gè)調(diào)度的工作項(xiàng)目執(zhí)行時(shí)共享的處理單元的數(shù)目。
一旦工作項(xiàng)目存儲(chǔ)在LCQ內(nèi),本地處理單元就可以開(kāi)始執(zhí)行來(lái)自LCQ內(nèi)的工作項(xiàng)目。當(dāng)高等待時(shí)間處理結(jié)點(diǎn)的第二處理單元開(kāi)始執(zhí)行時(shí),第二處理單元查看LCQ以檢查是否存在本地存儲(chǔ)的工作用于分派。因此,勝于在涉及GCQ的競(jìng)爭(zhēng)的情況下采用更長(zhǎng)等待時(shí)間方法從GCQ檢索工作,每個(gè)本地處理單元首先查看LCQ,并且如果LCQ內(nèi)存在工作則從LCQ取得工作項(xiàng)目。本地處理單元請(qǐng)求一個(gè)或多個(gè)工作項(xiàng)目(直到內(nèi)部/本地塊大小)用于執(zhí)行,并且LCQ邏輯分派順序工作項(xiàng)目中的下一個(gè)到本地處理單元,并且將LWIR自動(dòng)遞減提供到本地處理單元的工作項(xiàng)目的本地塊大小。當(dāng)本地處理單元完成本地存儲(chǔ)的工作時(shí),LCQ邏輯轉(zhuǎn)發(fā)通知到GCQ邏輯以遞減看見(jiàn)計(jì)數(shù)。此外,如果LCQ檢測(cè)到下一個(gè)本地處理單元發(fā)出對(duì)于額外工作的請(qǐng)求,同時(shí)LWIR計(jì)數(shù)小于或等于零(對(duì)于對(duì)其核準(zhǔn)請(qǐng)求的處理單元的工作元素的每個(gè)本地存儲(chǔ)的部分),LCQ將新的請(qǐng)求轉(zhuǎn)發(fā)到GCQ。當(dāng)LCQ中的工作完成時(shí),將提交新的工作請(qǐng)求以再次從GCQ抽出大塊的工作到LCQ0再次,僅從處理單元對(duì)其是預(yù)先選擇的執(zhí)行單元的工作元素分派工作,在預(yù)先選擇的執(zhí)行單元上調(diào)度來(lái)自工作元素的工作項(xiàng)目。工作請(qǐng)求因此前進(jìn)到序列中的下一個(gè)隊(duì)列元素,直到特定處理單元的I3U掩碼匹配工作元素的PAU掩碼。
如在上述GCQ跟蹤機(jī)制的情況下,LCQ邏輯實(shí)施本地跟蹤機(jī)制,以便跟蹤通過(guò)高等待時(shí)間處理器節(jié)點(diǎn)處的不同核準(zhǔn)執(zhí)行單元的來(lái)自LCQ的工作消耗。圖14的流程示通過(guò)其出現(xiàn)這種本地跟蹤的方法的某些特征,并且從執(zhí)行各種操作的處理單元和/或LCQ邏輯的觀點(diǎn)描述該方法。處理在塊1402開(kāi)始,并且進(jìn)到塊1404,處理單元(例如,處理器coreO1171)在塊1404將用于工作的工作請(qǐng)求轉(zhuǎn)發(fā)/傳輸?shù)紾CQ。工作請(qǐng)求包括I3U掩碼以及更大的塊大小。在塊1406,處理單元(或者處理節(jié)點(diǎn)的一般工作分派邏輯)從GCQ接收更大塊大小的工作,并且將工作項(xiàng)目存儲(chǔ)在LCQ中。第一請(qǐng)求處理單元在塊1408開(kāi)始來(lái)自LCQ的工作的完成。在塊1410進(jìn)行確定第一處理單元或高等待時(shí)間處理節(jié)點(diǎn)上的另一 /第二處理單元是否需要工作。如果高等待時(shí)間處理節(jié)點(diǎn)上的處理單元之一需要工作,并且工作分配的粒度在處理單元級(jí)別(相對(duì)于處理節(jié)點(diǎn)級(jí)別),那么LCQ邏輯針對(duì)APU掩碼(或部分APU掩碼)比較PU掩碼,用于在LCQ匹配,如在塊1412所示。在決定塊1414,LCQ邏輯確定是否核準(zhǔn)請(qǐng)求的第二執(zhí)行單元處理正在執(zhí)行的當(dāng)前工作元素的工作項(xiàng)目。當(dāng)(PU相對(duì)于APU比較的)結(jié)果是否定時(shí),第二處理單元可以保持空閑(或處理本地工作),直到在對(duì)其核準(zhǔn)第二執(zhí)行單元的LCQ內(nèi)提供后一組工作項(xiàng)目。如在塊1414確定的,如果請(qǐng)求的處理節(jié)點(diǎn)在LCQ核準(zhǔn)處理LCQ內(nèi)存儲(chǔ)的工作項(xiàng)目,那么LCQ邏輯在決定塊1416檢查在LCQ內(nèi)是否存在任何剩余的工作項(xiàng)目(即,LffIR是否大于零(O))。在一個(gè)實(shí)施例中,進(jìn)行LWIR計(jì)數(shù)是否等于零的周期性確定,LWIR等于零指示分級(jí)保持的工作項(xiàng)目已經(jīng)全部從LCQ分派。當(dāng)仍存在要執(zhí)行的剩余工作項(xiàng)目時(shí),LCQ邏輯將工作項(xiàng)目提供到請(qǐng)求的處理單元,如在塊1418所示。此外,隨著工作項(xiàng)目轉(zhuǎn)發(fā)到處于高等待時(shí)間處理節(jié)點(diǎn)的核準(zhǔn)處理單元,LCQ邏輯遞減LWIR計(jì)數(shù)器,如在塊1420所示。由執(zhí)行單元處理的工作項(xiàng)目的量可以是大于I的塊大小,并且LWIR計(jì)數(shù)的遞減納入從LCQ移除的項(xiàng)目的精確數(shù)目。重要的是要注意可以通過(guò)確保在高等待時(shí)間處理節(jié)點(diǎn)完成LCQ內(nèi)存儲(chǔ)的之前接收的工作項(xiàng)目的執(zhí)行之前,用充分時(shí)間(考慮工作項(xiàng)目的返回的等待時(shí)間)將下一個(gè)工作請(qǐng)求轉(zhuǎn)發(fā)到GCQ以便重新儲(chǔ)備LCQ,人為地避免“LWIR計(jì)數(shù)=0”情況。LWIR計(jì)數(shù)器因此可以如上提供的遞減,但是也隨著從具有更新的塊大小的第二、隨后發(fā)出的工作請(qǐng)求接收新一批工作項(xiàng)目而遞增。因此,如在決定塊1422提供的,LCQ邏輯確定LWIR計(jì)數(shù)何時(shí)小于預(yù)先建立(或動(dòng)態(tài)計(jì)算的)LffIR閾值(TH.)。當(dāng)LWIR計(jì)數(shù)小于TH_時(shí),處理進(jìn)到塊1428,其在下面描述。返回決定塊1416,如果LWIR計(jì)數(shù)不大于零(S卩,LWIR計(jì)數(shù)器保持小于或等于零的值),那么LCQ邏輯在塊1424檢查本地看見(jiàn)計(jì)數(shù)是否等于零。當(dāng)看見(jiàn)計(jì)數(shù)不等于零時(shí),LCQ邏輯將本地看見(jiàn)計(jì)數(shù)遞減1,如在塊1426提供的。本地看見(jiàn)計(jì)數(shù)代表高等待時(shí)間處理節(jié)點(diǎn)內(nèi)處理單元的總數(shù)。在一個(gè)實(shí)施例中,隨著每個(gè)處理單元被LCQ邏輯看見(jiàn),遞減看見(jiàn)計(jì)數(shù),以便避免處理單元不利地檢索不同工作元素的新工作項(xiàng)目,而不知道該新工作項(xiàng)目不再是之前處理的一組工作項(xiàng)目的一部分。因此,當(dāng)LCQ為空時(shí),節(jié)點(diǎn)確保所有處理單元知道特定工作集已經(jīng)完成的事實(shí)。當(dāng)本地看見(jiàn)計(jì)數(shù)等于零(0)或當(dāng)LWIR計(jì)數(shù)小于THum時(shí),LCQ邏輯在塊1428確定是否需要塊大小的修改,并且根據(jù)需要修改(增加或減少)塊大小。塊大小的修改部分基于檢測(cè)到的處理節(jié)點(diǎn)分派LCQ內(nèi)工作項(xiàng)目的性能。然后,在塊1430,用修改的塊大小生成新的/第二工作請(qǐng)求,并且將新的/第二工作請(qǐng)求轉(zhuǎn)發(fā)到GCQ。此外,LCQ邏輯將看見(jiàn)計(jì)數(shù)更 新通知轉(zhuǎn)發(fā)到GCQ邏輯,以便更新GCQ內(nèi)工作項(xiàng)目的看見(jiàn)計(jì)數(shù)。由GCQ邏輯展現(xiàn)的功能使得某些描述的功能能夠動(dòng)態(tài)實(shí)施。圖15提供一種方法的流程圖,通過(guò)該方法,在到高等待時(shí)間處理節(jié)點(diǎn)的LCQ的工作分派期間執(zhí)行GCQ操作,包括適當(dāng)?shù)膲K大小的確定,以及隨著在高等待時(shí)間處理節(jié)點(diǎn)完成工作,隨后工作元素變量的更新。處理在塊1502開(kāi)始,并且進(jìn)到塊1504,塊1504示出GCQ邏輯從處理節(jié)點(diǎn)的執(zhí)行單元接收工作請(qǐng)求,并且確認(rèn)執(zhí)行單元是對(duì)于分派和/或調(diào)度的特定工作元素核準(zhǔn)的執(zhí)行單元。在塊1506,GCQ邏輯評(píng)估在從GCQ請(qǐng)求和分派工作時(shí),與系統(tǒng)互連上的處理節(jié)點(diǎn)操作相關(guān)聯(lián)的等待時(shí)間。在一個(gè)實(shí)施例中,GCQ邏輯依賴(lài)于存儲(chǔ)的歷史數(shù)據(jù),并且從存儲(chǔ)位置檢索對(duì)應(yīng)于該處理節(jié)點(diǎn)的存儲(chǔ)的歷史數(shù)據(jù)。GCQ邏輯比較操作的等待時(shí)間與預(yù)先設(shè)置的低閾值等待時(shí)間,并且在決定塊1508確定處理節(jié)點(diǎn)的等待時(shí)間是否大于預(yù)先設(shè)置的閾值等待時(shí)間。如果等待時(shí)間不大于該閾值等待時(shí)間,則GCQ邏輯響應(yīng)于來(lái)自處理節(jié)點(diǎn)的工作請(qǐng)求,提供標(biāo)準(zhǔn)(或請(qǐng)求的)塊大小的工作,如在塊1510所示。GCQ邏輯然后實(shí)現(xiàn)通過(guò)處理節(jié)點(diǎn)從GCQ檢索工作作為常規(guī)塊的工作,如在塊1512提供的。然而,如果在決定塊1508,處理節(jié)點(diǎn)的等待時(shí)間大于閾值等待時(shí)間,那么GCQ邏輯動(dòng)態(tài)地增加響應(yīng)于工作請(qǐng)求,用于調(diào)度返回處理節(jié)點(diǎn)的工作的塊大小,如在塊1514提供的。GCQ邏輯然后在塊1516提供/調(diào)度更大塊大小的工作到高等待時(shí)間處理節(jié)點(diǎn)。在塊1518,GCQ邏輯然后將調(diào)度的塊大小、分派時(shí)間和其他參數(shù)記錄在等待時(shí)間跟蹤歷史數(shù)據(jù)庫(kù)中。該數(shù)據(jù)庫(kù)可以包括用于訪問(wèn)GCQ以檢索工作用于本地消耗/執(zhí)行的多個(gè)處理節(jié)點(diǎn)的信息。根據(jù)一個(gè)實(shí)施例,調(diào)度工作如下(1)執(zhí)行單元檢查L(zhǎng)CQ以查看工作元素是否存在于LCQ內(nèi)。如果LCQ內(nèi)不存在剩余的工作項(xiàng)目,那么執(zhí)行單元接下來(lái)檢查以查看工作是否正由本地執(zhí)行單元中的另一個(gè)提取。如果工作正通過(guò)另一執(zhí)行單元發(fā)出的到GCQ的工作請(qǐng)求提取,那么該執(zhí)行單元在提取工作的同時(shí)等待。然而,如果沒(méi)有從處理節(jié)點(diǎn)發(fā)出工作請(qǐng)求以提取額外/新的工作,那么執(zhí)行單元發(fā)出工作請(qǐng)求以觸發(fā)從GCQ提取額外工作。當(dāng)LCQ中存在工作,并且該工作分配到請(qǐng)求的執(zhí)行單元時(shí),LCQ內(nèi)的WIR計(jì)數(shù)器遞減由請(qǐng)求的執(zhí)行單元攫取的工作大小。當(dāng)WIR計(jì)數(shù)器在該遞減之后仍為正時(shí),將繼續(xù)順序調(diào)度/分派每個(gè)剩余的工作項(xiàng)目。在一個(gè)實(shí)施例中,提取工作的處理涉及以下方法執(zhí)行單元在LCQ或通常在處理節(jié)點(diǎn)內(nèi)設(shè)置位以標(biāo)記該工作正在被提取。GCQ邏輯將GCQ中工作元素的剩余工作項(xiàng)目遞減分配的工作的量/大小。分配到LCQ的塊大小大于執(zhí)行單元的工作大小,因此確保在分配到LCQ的工作量?jī)?nèi)提供大于一個(gè)執(zhí)行周期。如果GCQ中工作項(xiàng)目剩余計(jì)數(shù)器在遞減之后仍為正,那么LCQ中的本地工作項(xiàng)目剩余(LWIR)計(jì)數(shù)遞增塊大小。另外,如果GCQ的WIR計(jì)數(shù)為負(fù),那么看見(jiàn)計(jì)數(shù)遞減I (對(duì)于節(jié)點(diǎn)級(jí)APU掩碼實(shí)施方式)和遞減高等待時(shí)間處理節(jié)點(diǎn)的本地處理單元的數(shù)目(對(duì)于處理單元級(jí)APU掩碼實(shí)施方式)。根據(jù)第一實(shí)施例,本地看見(jiàn)計(jì)數(shù)從高等待時(shí)間處理節(jié)點(diǎn)內(nèi)本地處理單元的總數(shù)遞減到零(O)。在替代的第二實(shí)施例中,本地看見(jiàn)計(jì)數(shù)從零(0)遞增到本地處理單元的總數(shù)。前者/第一實(shí)施例提供當(dāng)LCQ邏輯轉(zhuǎn)發(fā)指示所有本地單元已經(jīng)看到特定工作元素的信號(hào)時(shí),GCQ邏輯將GCQ的看見(jiàn)計(jì)數(shù)遞減處理單元的預(yù)定總數(shù)。在后者第二實(shí)施例的情況下,當(dāng)本地看見(jiàn)計(jì)數(shù)等于高等待時(shí)間處理節(jié)點(diǎn)中執(zhí)行單元的數(shù)目時(shí),GCQ內(nèi)工作元素的看見(jiàn)計(jì)數(shù) 遞減相關(guān)的本地看見(jiàn)計(jì)數(shù)。當(dāng)GCQ內(nèi)工作元素的看見(jiàn)計(jì)數(shù)到達(dá)零(0),即整個(gè)系統(tǒng)中預(yù)設(shè)數(shù)目的(核準(zhǔn))核心已經(jīng)看到一次工作元素時(shí),保持工作元素的GCQ條目條件為空閑用于使用。調(diào)度程序然后可以在GCQ條目中調(diào)度下一個(gè)工作元素。描述的實(shí)施例實(shí)現(xiàn)ND范圍工作元素的OpenCL執(zhí)行,其中每個(gè)節(jié)點(diǎn)能夠完成工作而不用更新其他節(jié)點(diǎn)。為了提供“遠(yuǎn)”離的多個(gè)處理節(jié)點(diǎn)(即,具有高交叉同步訪問(wèn)等待時(shí)間的節(jié)點(diǎn))上LCQ的跨ND范圍調(diào)度,處理簡(jiǎn)化為跟蹤包含全局隊(duì)列計(jì)數(shù)的“頭部元素”。然后,替代僅僅標(biāo)記元素為完成,描述的實(shí)施例提供進(jìn)行額外的檢查以查看是否存在“頭部元素”。D.用于到(多個(gè))處理單元的有效工作分派的ND范圍多維工作集的分解上述實(shí)施例的某些特征在初始表現(xiàn)為N維(ND)范圍工作集的工作上實(shí)施,N維(ND)范圍工作集包括命令和操作數(shù)的ND范圍配置。上面的實(shí)施例因此將涉及管理該ND范圍處理方案(諸如由OpenCL 提供的和其他類(lèi)似結(jié)構(gòu)的語(yǔ)言/框架)中工作集的調(diào)度和執(zhí)行,其允許在多節(jié)點(diǎn)異類(lèi)(或同類(lèi))數(shù)據(jù)處理系統(tǒng)架構(gòu)內(nèi)的多個(gè)執(zhí)行單元上執(zhí)行。OpenCL例如使得程序員能夠?qū)懹?jì)算內(nèi)核以及用于創(chuàng)建和管理這些內(nèi)核的API。用運(yùn)行時(shí)間編譯器編譯計(jì)算內(nèi)核,運(yùn)行時(shí)間編譯器在對(duì)于目標(biāo)處理單元的主機(jī)應(yīng)用執(zhí)行期間編譯空閑的內(nèi)核。在ND范圍處理方案的情況下,一個(gè)或多個(gè)執(zhí)行命令執(zhí)行在ND范圍(例如,二(2)或三(3)維配置)中安排的操作數(shù)(例如,數(shù)據(jù))的結(jié)構(gòu)集上的遞歸功能。在一個(gè)實(shí)施例中,命令本身包含有效地執(zhí)行和平衡由命令生成的工作負(fù)荷所需的信息,并且每個(gè)命令包括執(zhí)行作為單維工作元素的ND范圍工作集所要求的信息,同時(shí)實(shí)現(xiàn)來(lái)自單維工作元素的個(gè)別工作項(xiàng)目的ND范圍輸出的重新構(gòu)造。如在此利用的,ND范圍操作數(shù)指位于ND范圍工作集內(nèi)索引位置的特定一個(gè)(例如,在三維范圍工作集中3,2,2的條目)的單個(gè)位置實(shí)體(其可以時(shí)一個(gè)或多個(gè)數(shù)據(jù)點(diǎn)),在該單個(gè)位置實(shí)體上由處理單元執(zhí)行命令以產(chǎn)生結(jié)果工作輸出。ND范圍操作數(shù)每個(gè)由在相對(duì)于其他工作項(xiàng)目的特定排序序列中安排的個(gè)別工作項(xiàng)目在GCQ的一維工作元素中表現(xiàn)。ND范圍命令的執(zhí)行要求導(dǎo)航(navigate)命令功能通過(guò)多維的操作數(shù),該多維的操作數(shù)分解為包含對(duì)于每個(gè)操作數(shù)的一個(gè)工作項(xiàng)目的單維工作項(xiàng)目。單個(gè)命令的ND范圍操作數(shù)可以包含在單個(gè)GCQ條目?jī)?nèi)保持的單個(gè)工作元素內(nèi),如在圖示的實(shí)施例中提供的。然而,替代實(shí)施例允許單個(gè)工作元素的工作項(xiàng)目經(jīng)由GCQ的多個(gè)條目而不是在單個(gè)條目?jī)?nèi)調(diào)度。每個(gè)工作元素因此包含命令和從ND范圍工作集分解的工作項(xiàng)目的陣列。要理解的是,當(dāng)原始工作集是單維工作集時(shí)不出現(xiàn)分解。在該ND范圍執(zhí)行方案中,根據(jù)目前描述的實(shí)施例,執(zhí)行單元處理對(duì)應(yīng)于ND范圍操作數(shù)從GCQ(或?qū)τ诟叩却龝r(shí)間處理節(jié)點(diǎn)從LCQ)檢索的命令。在GCQ/LCQ內(nèi),每個(gè)條目保持工作元素(或工作組)或一部分工作元素,其包含分派用于由通過(guò)分配/鏈接到工作元素的APU掩碼識(shí)別的特定處理單元執(zhí)行。根據(jù)圖示的實(shí)施例,GCQ內(nèi)的條目提供單維陣列,相應(yīng)的工作元素的所有工作項(xiàng)目從該單維陣列以排序的序列分派或調(diào)度。此外,如由上述實(shí)施例提供的,執(zhí)行單元是處理器核心,其可以位于跨越包括多個(gè)處理器節(jié)點(diǎn)的分布式網(wǎng)絡(luò)。然而,盡管貫穿描述和圖示的實(shí)施例采用處理器核心作為執(zhí)行單元的示例,但是在其他實(shí)施例中,執(zhí)行單元可以是能夠執(zhí)行命令的任何設(shè)備或執(zhí)行結(jié)構(gòu),包括但不限于處理代碼、CPU、線(xiàn)程、加速器以及甚至完整的計(jì)算系統(tǒng)。為了有效地調(diào)度和分派ND范圍命令,并且特別對(duì)于多維(超過(guò)一(I))范圍命令(即,在操作數(shù)的多維配置上運(yùn)行的命令),在此提供方法使得多維工作集能夠分解和“重新 配置”或“重新安排”維單維工作元素。單維工作元素實(shí)現(xiàn)單維(ID)范圍中工作的有效調(diào)度和/或保留和分派,而不用處理單元必須考慮每個(gè)操作數(shù)的多維索引。如由圖16A和17A的圖示所提供的,由編譯器和/或ND范圍工作調(diào)度(WS)邏輯1600將多維工作集重新安排維代表性單維陣列1620/1720,其具有以降序或升序序列安排的可確定總數(shù)的工作項(xiàng)目。為了簡(jiǎn)化描述圖示的實(shí)施例,ND范圍工作調(diào)度(WS)邏輯簡(jiǎn)稱(chēng)為“WS邏輯”。如所利用的WS邏輯包括用于將ND范圍工作集分解為單個(gè)工作集的第一邏輯,以及用于從由執(zhí)行工作元素的工作項(xiàng)目的處理單元提供的工作輸出結(jié)果生成ND范圍輸出的第二邏輯。在描述的實(shí)施例中,工作項(xiàng)目的總數(shù)等于ND范圍操作數(shù)的總數(shù),并且通過(guò)將每個(gè)維的大小相互相乘來(lái)計(jì)算。因此,對(duì)于具有X和Y維的兩維范圍,工作項(xiàng)目的總數(shù)計(jì)算為X*Y (X乘以Y),而在除了 X和Y維還具有Z維的3D范圍的情況下,工作項(xiàng)目的數(shù)目計(jì)算為X*Y*Z。該計(jì)算的結(jié)果(R)然后用作總數(shù)(TN),其存儲(chǔ)并且稍后在調(diào)度操作以及ND范圍輸出的生成期間利用。在各種圖示及其描述內(nèi),個(gè)別的工作項(xiàng)目標(biāo)記從0到TN-1(例如,16個(gè)項(xiàng)目,標(biāo)號(hào)0到15)。具體參照?qǐng)D16A,圖示分解為由工作項(xiàng)目的ID陣列構(gòu)成的工作元素的2D工作空間。兩維工作集1610包括16個(gè)工作項(xiàng)目,標(biāo)記為工作項(xiàng)目_0 (WI_0)到WI_15。原始的2D工作集1610包含以4X4 (索引位置0,0開(kāi)始到索引位置3,3的兩維安排)安排的操作數(shù)。盡管圖示為4X4安排,但是要理解2D安排中的16個(gè)工作項(xiàng)目的另一實(shí)施例可以提供個(gè)別工作項(xiàng)目的2X8或8X 2 (分別在位置0,0到1,7或位置0,0到7,I的情況下)安排。為了討論的目的假設(shè)在此描述2D范圍和直到(例如,3D、4D)工作集(S卩,非ID工作集),在大多數(shù)實(shí)施例中,對(duì)于ID范圍工作集不要求分解。此外,盡管提示和描述的實(shí)施例提供ND范圍內(nèi)操作數(shù)項(xiàng)目的對(duì)稱(chēng)和完整分布,即相同數(shù)目的操作數(shù)用于每維空間中的每行/列,但是在此描述的特征完全可應(yīng)用于ND范圍內(nèi)操作數(shù)的非對(duì)稱(chēng)分布。例如可以提供2D (X*Y)工作元素,其中14個(gè)工作項(xiàng)目安排維沿著第一維(X)的8個(gè)工作項(xiàng)目的第一行,以及沿著相同維(X)的6個(gè)工作項(xiàng)目的第二行,使得Y維相對(duì)于X維具有不等數(shù)目的工作項(xiàng)目(在一些位置為I,并且在其他位置為2)。返回圖16A,編譯器/WS邏輯1600接收用于生成ND范圍命令的程序指令,該命令在操作數(shù)1610的2D (4X4)配置上運(yùn)行。向下指示箭頭指示由編譯器/WS邏輯1600執(zhí)行的處理的方向流程。當(dāng)接收指令時(shí),編譯器/WS邏輯1600生成(多個(gè))ND范圍命令/ (多個(gè))內(nèi)核,并且WS邏輯執(zhí)行操作數(shù)1610的2D配置到單維工作元素1630的分解,單維工作元素1630具有多個(gè)順序排序的工作項(xiàng)目。如所示的,單維(ID)工作元素1630具有從WI_0到WI_15 (其中15等于TN-I)線(xiàn)性排列的16個(gè)工作項(xiàng)目。這些工作項(xiàng)目與WE_0相關(guān)聯(lián),WE_0在上面引入作為占據(jù)GCQ的第一條目(320,圖3)。
圖17A圖示具有4X2X2的原始ND索引的操作數(shù)的3D范圍配置的類(lèi)似分解。箭 頭指示由編譯器/WS邏輯1600執(zhí)行以生成ND范圍命令和單維工作元素的處理的方向流程。編譯器1600接收程序指令,并且生成相應(yīng)的(多個(gè))ND范圍命令/ (多個(gè))內(nèi)核。WS邏輯1600然后將3D范圍的操作數(shù)1710分解為相應(yīng)的ID工作元素1730。如在工作元素1630的情況下,工作元素1730包括從WI_0到WI_15 (其中15等于TN-I)線(xiàn)性排列的16個(gè)工作項(xiàng)目。這些工作項(xiàng)目再次與WE_0相關(guān)聯(lián),WE_0在上面引入作為占據(jù)GCQ的第一條目(320 )。在ND范圍命令/操作數(shù)的分解,WS邏輯1600存儲(chǔ)每一維的大小,即對(duì)于2D沿著X和Y維的操作數(shù)的數(shù)目,以及對(duì)于3D沿著X、Y和Z維的操作數(shù)的數(shù)目。WS邏輯1600還計(jì)算并且存儲(chǔ)從分解生成的個(gè)別工作項(xiàng)目的總數(shù)(TN)。這些值與各值對(duì)應(yīng)于的工作元素(WE_0)的唯一標(biāo)識(shí)(ID) 一起存儲(chǔ)。ND范圍命令的這些和其他參數(shù)的存儲(chǔ)使得編譯器能夠稍后從個(gè)別工作項(xiàng)目重新配置/重新組合/生成ND范圍輸出。圖18的流程圖提供一個(gè)示例方法,通過(guò)該示例方法編譯器/WS邏輯1600在與ND范圍命令相關(guān)聯(lián)的接收的程序指令上運(yùn)行,以生成(多個(gè))單維工作元素。方法在塊1802開(kāi)始,并且進(jìn)到塊1804,塊1804圖示編譯器從本地運(yùn)行時(shí)間源(例如,應(yīng)用126)接收程序指令,并且從接收的程序指令生成用于ND范圍工作集的ND范圍命令。在決定塊1803,編譯器/WS邏輯1600確定工作集的各維的數(shù)目(N)是否大于一(I)(例如,2D或3D…工作集)。如果ND范圍命令中的各維的數(shù)目大于一(I ),那么WS邏輯1600將ND范圍工作集分解為單維工作元素,如在塊1808提供的。然后,如在塊1809所示,WS邏輯1600確定/計(jì)算對(duì)應(yīng)于原始ND范圍工作集的具體參數(shù),其包括標(biāo)記生成的工作元素的唯一標(biāo)識(shí)(ID)、ND范圍的維度(S卩,跨越每一維的操作數(shù)的數(shù)目)、以及工作集內(nèi)操作數(shù)的總數(shù)(TN)。WS邏輯1600然后將參數(shù)存儲(chǔ)在本地存儲(chǔ)內(nèi),如在塊1810提供的。本地存儲(chǔ)在一個(gè)實(shí)施例中可以是永久存儲(chǔ),而在另一實(shí)施例中可以是內(nèi)存。在塊1812,編譯器/WS邏輯1600(或運(yùn)行時(shí)間調(diào)度程序)識(shí)別與生成的ND范圍命令相關(guān)聯(lián)的其他屬性和/或功能參數(shù),例如包括核準(zhǔn)執(zhí)行從ND范圍命令生成的(多個(gè))工作元素的處理單元(或處理器節(jié)點(diǎn))的APU掩碼。如在此描述的,由編譯器/運(yùn)行時(shí)間調(diào)度程序用掩碼位組生成APU掩碼,該掩碼位組對(duì)應(yīng)于從系統(tǒng)內(nèi)可用于選擇來(lái)分派工作元素的所有處理單元/資源中選擇、核準(zhǔn)的處理單
J Li o當(dāng)條目變得在GCQ內(nèi)可用時(shí),編譯器/WS邏輯/調(diào)度程序邏輯然后在塊1847將生成的單維工作元素放置在GCQ中,并且調(diào)度程序?qū)⒐ぷ髟氐娜舾上嚓P(guān)參數(shù)或?qū)傩赞D(zhuǎn)發(fā)到GCQ,包括用于分派的工作項(xiàng)目的總數(shù)的初始計(jì)數(shù)(即,初始WIR計(jì)數(shù))以及APU掩碼和看見(jiàn)計(jì)數(shù)。在GCQ接收新工作元素時(shí),GCQ邏輯將工作元素存儲(chǔ)在可用的GCQ條目中,并且GCQ邏輯然后初始化與特定工作元素相關(guān)聯(lián)的看見(jiàn)計(jì)數(shù)器值、WIR計(jì)數(shù)器和APU掩碼,如在塊1816提供的。WS邏輯/調(diào)度程序還轉(zhuǎn)發(fā)與命令相關(guān)聯(lián)的唯一 ID,并且將該唯一 ID鏈接到工作元素。處理然后在塊1820結(jié)束。在工作元素安排為獨(dú)立執(zhí)行的工作項(xiàng)目的單維陣列的情況下,預(yù)先選擇分塊/塊大小的工作那么可以以工作元素內(nèi)工作項(xiàng)目的安排的序列順序,迅速地分配到不同處理單元。然后通過(guò)該ID范圍工作元素中的順序工作項(xiàng)目的塊/分塊調(diào)度工作,并且工作項(xiàng)目每個(gè)標(biāo)記有其在包含該項(xiàng)目元素的工作項(xiàng)目的序列中的編號(hào)位置。以特定塊分配工作,使得容易計(jì)算分配的工作的范圍和用于分配的剩余工作。與工作項(xiàng)目的調(diào)度/分派同步,并且隨著工作項(xiàng)目的分塊/塊大小分配到處理單元,從WIR計(jì)數(shù)器自動(dòng)減去分塊內(nèi)工作項(xiàng)目的數(shù)目。處理單元然后通過(guò)進(jìn)行ID工作空間中的單個(gè)遞減,知道從剩余序列的哪個(gè)工作維攫取工作。相對(duì)于在傳統(tǒng)系統(tǒng)的情況下ND區(qū)域的更復(fù)雜標(biāo)記和多維索引的跟蹤,單維空間內(nèi)的這種處理使得調(diào)度或工作更加有效。單維工作空間還實(shí)現(xiàn)從GCQ和/或LCQ的工作調(diào)度/分派的更容易實(shí)施,如在此描述的。通過(guò)在單維陣列中安排的順序工作項(xiàng)目的選擇組(塊大小)上執(zhí)行命令,完成低等待時(shí)間處理器和高等待時(shí)間處理器中的工作處理。本發(fā)明的實(shí)施例進(jìn)一步允許來(lái)自工作項(xiàng)目的執(zhí)行的工作輸出結(jié)果的重新組合,以 生成對(duì)應(yīng)于ND范圍工作集的ND范圍輸出。為了實(shí)現(xiàn)工作輸出結(jié)果的后一處理,調(diào)度程序邏輯、GCQ邏輯或WS邏輯中的一個(gè)或多個(gè)分配唯一 ID (從內(nèi)核/命令)到工作元素和用于單維陣列內(nèi)每個(gè)工作項(xiàng)目的唯一位置號(hào)。唯一 ID和位置號(hào)都鏈接到分派到處理單元的工作項(xiàng)目,并且保持鏈接到由處理單元執(zhí)行工作項(xiàng)目時(shí)生成的相應(yīng)的工作輸出結(jié)果。此外,每個(gè)工作元素提供有WIR計(jì)數(shù)值和總數(shù)(TN)值以使得GCQ邏輯和/或處理單元能夠識(shí)別用于分派到處理單元的每個(gè)工作項(xiàng)目的唯一位置號(hào)。在用該唯一 ID和工作輸出結(jié)果相對(duì)彼此的唯一位置號(hào)標(biāo)識(shí)工作輸出結(jié)果的情況下,WS邏輯那么能夠識(shí)別工作輸出結(jié)果屬于哪個(gè)原始ND范圍命令,并且還確定ND范圍操作數(shù)的原始ND范圍配置內(nèi)的特定ND索引位置。因此,可以從單維工作輸出結(jié)果生成具有與ND范圍工作集(操作數(shù)的配置)類(lèi)似ND配置的ND范圍輸出。進(jìn)一步由WS邏輯支持ND范圍輸出的重新組合/生成,WS邏輯還存儲(chǔ)由分解原始ND范圍工作集時(shí)第一算法利用的方法。因此,所有相關(guān)ND范圍分解參數(shù)存儲(chǔ)在永久本地存儲(chǔ)或本地處理系統(tǒng)的存儲(chǔ)器中(見(jiàn)圖I)?,F(xiàn)在參照?qǐng)D16B和17B以及圖19A-19F,提供了圖示在此描述的一個(gè)或多個(gè)實(shí)施例的分解、工作項(xiàng)目分派和重新組合處理的一系列圖。首先在圖16B和17B開(kāi)始,其分別一般地示出處理單元的來(lái)自2D范圍命令和3D范圍命令的單維工作輸出結(jié)果的生成,以及隨后單維輸出到各個(gè)2D和3D范圍輸出的重新組合。在圖16B的2D實(shí)施例以及圖17B的3D實(shí)施例的情況下,WE_0的工作項(xiàng)目調(diào)度用于在三個(gè)處理單元(即處理器coreJUll、處理器COre_0115以及處理器core_0171 (圖I))上完成。在通過(guò)處理節(jié)點(diǎn)的工作分配/分派/攫取期間,特定塊或分組大小提供到節(jié)點(diǎn),并且從單維工作元素的一端簡(jiǎn)單移除該塊大小的工作項(xiàng)目,在最后剩余工作項(xiàng)目開(kāi)始并且繼續(xù)進(jìn)行直到分配塊大小。該示例提供四個(gè)(4)工作項(xiàng)目的塊大小用于本地(低等待時(shí)間)處理節(jié)點(diǎn),并且八個(gè)(8)工作項(xiàng)目的更大塊大小用于遠(yuǎn)程(高等待時(shí)間)處理節(jié)點(diǎn)。使用WIR/LWIR計(jì)數(shù)和塊大小的組合,在每個(gè)處理器核心上從GCQ/LCQ以序列順序調(diào)度塊大小的工作項(xiàng)目。在每個(gè)處理單元對(duì)于特定工作項(xiàng)目的命令的處理/執(zhí)行之后,處理單元將工作輸出結(jié)果1630/1730轉(zhuǎn)發(fā)到WS邏輯1600。使用唯一 ID,WS邏輯1600確定哪些存儲(chǔ)的參數(shù)與工作輸出結(jié)果1630/1730相關(guān)聯(lián),并且WS邏輯1600檢索其他相關(guān)參數(shù),包括個(gè)別操作數(shù)/工作項(xiàng)目的總數(shù)、原始ND范圍(索引)配置、以及用于執(zhí)行初始分解的特定算法。這些參數(shù)然后提供到WS邏輯1600的第二算法,該第二算法從單維工作輸出結(jié)果1630/1730生成作為結(jié)果的ND范圍輸出1650/1750。圖19A-19E提供根據(jù)一個(gè)實(shí)施例的圖的序列,示出3D范圍操作數(shù)的初始配置到順序排序的單維工作項(xiàng)目的分解,以及隨后以安排序列分派到請(qǐng)求的處理單元。在圖19A開(kāi)始,圖示了以x,y,z配置卿,具有x、y和z方向索弓丨)安排的3X3X3的三(3)維工作集。3D工作集包括總共27個(gè)操作數(shù),其在圖19B中編號(hào)I到26以圖示操作數(shù)從3D空間1902到26個(gè)工作項(xiàng)目的ID陣列1904的映射。如由圖19B進(jìn)一步提供的,每個(gè)工作項(xiàng)目對(duì)應(yīng)于特定3D索引空間(即,具有索引空間0,0,0的工作項(xiàng)目0到具有索引空間2,2,2的工作項(xiàng)目26)。圖19B因此圖示z, y, x的3D工作集(或操作數(shù)000到2,2,2)到26個(gè)順序排序的工作項(xiàng)目的單維工作元素(陣列)1902的分解。圖19C-19E然后圖示工作項(xiàng)目以序列順序分派到請(qǐng)求的處理器。如所示的,按塊分派工作項(xiàng)目。GCQ邏輯跟蹤每個(gè)分派之后的WIR計(jì)數(shù),并且將該WIR計(jì)數(shù)提供到處理單元。 在圖19C中,保留第一組的工作項(xiàng)目用于由單個(gè)處理單元執(zhí)行,其保留來(lái)自工作集(或工作元素)的10個(gè)工作項(xiàng)目的塊??捎霉ぷ黜?xiàng)目的數(shù)目(S卩,WIR計(jì)數(shù))從27減少到17,并且WIR計(jì)數(shù)指示17個(gè)工作項(xiàng)目仍可用于由處理單元保留。一旦第一組工作項(xiàng)目已經(jīng)分派用于完成,就由單個(gè)處理單元保留第二組用于執(zhí)行,如由圖19D圖示的。處理單元保留來(lái)自工作元素的另外10個(gè)工作項(xiàng)目,該10個(gè)工作項(xiàng)目開(kāi)始于17個(gè)剩余工作項(xiàng)目的下一個(gè)順序工作項(xiàng)目的位置。GCQ邏輯然后減少WIR計(jì)數(shù),其顯示可用工作項(xiàng)目的數(shù)目從17到7。如由圖19E提供的,剩余的七個(gè)(7)工作項(xiàng)目然后保留用于由單個(gè)處理單元執(zhí)行。處理單元可能試圖保留來(lái)自工作集的另外10個(gè)工作項(xiàng)目,但是僅僅七個(gè)(7)可用于保留。因此,從工作分派觀點(diǎn)和/或工作調(diào)度觀點(diǎn)看,跨越所有處理單元,以相同的升序或降序順序分派相同工作元素的所有工作項(xiàng)目和/或工作項(xiàng)目的塊。此時(shí)在工作集執(zhí)行時(shí),所有可用的工作項(xiàng)目已經(jīng)消耗。取決于核準(zhǔn)處理單元的數(shù)目,上面的保留可以以順序或接近同時(shí)的方式發(fā)生。例如,在單個(gè)處理單元執(zhí)行所有27個(gè)工作項(xiàng)目的情況下,僅僅在單個(gè)處理單元已經(jīng)完成執(zhí)行之前塊的工作項(xiàng)目,才可能出現(xiàn)工作項(xiàng)目的第二和第三保留。在替代實(shí)施例中,其中多個(gè)處理單元同時(shí)運(yùn)行并且競(jìng)爭(zhēng)來(lái)自GCQ的工作,GCQ可能調(diào)度三塊保留的工作項(xiàng)目,用于在保留一塊工作項(xiàng)目的每個(gè)處理單兀上同時(shí)完成。在上述ND范圍分解處理期間,多處理器實(shí)施方式中的所有處理單元利用相同的排序序列/方案,用于跨越多個(gè)處理節(jié)點(diǎn)調(diào)度工作。根據(jù)一個(gè)實(shí)施例,使用ND范圍的維度(例如,3 X 3 X 3 )和單維(ID)序列號(hào)(例如,26 )計(jì)算排序。當(dāng)從GCQ中工作元素內(nèi)重新配置的工作項(xiàng)目的單維陣列檢索工作項(xiàng)目用于處理時(shí),每個(gè)處理單元僅需要保持跟蹤工作剩余(WIR)計(jì)數(shù),該工作剩余(WIR)計(jì)數(shù)為從工作元素遞減特定處理單元需要執(zhí)行的元素的數(shù)目(即,處理單元的塊大小)。GCQ邏輯然后僅需要為每個(gè)工作元素保持WIR計(jì)數(shù)。取決于靜態(tài)特性或收集的試探,塊大小可以適應(yīng)目標(biāo)處理單元。通過(guò)使用來(lái)自GCQ中單維工作元素的保留范圍,更有效地管理通信和調(diào)度。
現(xiàn)在參照?qǐng)D20,圖示了一個(gè)方法的流程圖,WS邏輯1600通過(guò)該方法執(zhí)行來(lái)自如上所述由一個(gè)或多個(gè)處理單元執(zhí)行的一系列個(gè)別工作項(xiàng)目的單維工作輸出結(jié)果的生成/重新組合。方法在初始?jí)K2000開(kāi)始,并且進(jìn)到塊2004,處理單元在塊2004從來(lái)自GCQ內(nèi)的工作元素的工作項(xiàng)目的執(zhí)行生成工作輸出結(jié)果。在塊2006,執(zhí)行從GCQ檢索的工作項(xiàng)目的處理單元將工作輸出/結(jié)果轉(zhuǎn)發(fā)到WS邏輯,其以非特定順序從處理單元接收個(gè)別單維工作輸出/結(jié)果。因?yàn)槿舾刹煌幚韱卧獔?zhí)行工作項(xiàng)目,并且跨越不同的核準(zhǔn)處理單元以彼此相對(duì)的非特定順序完成工作項(xiàng)目,所以工作輸出/結(jié)果返回的順序可能是脫離它們分派順序的序列。因此,工作/輸出結(jié)果的返回不必遵循分派工作項(xiàng)目的序列順序。在塊2008,WS邏輯檢索唯一工作ID (唯一 ID)以及與特定工作輸出/結(jié)果相關(guān)聯(lián)的分派順序序列號(hào)(例如,26、25、24…或O)。在一個(gè)實(shí)施例中,這些參數(shù)嵌入工作輸出/結(jié)果。WS邏輯然后通過(guò)比較(和匹配)來(lái)自工作輸出/結(jié)果內(nèi)的工作ID與ND范圍命令的唯一 ID,定位存儲(chǔ)中ND范圍參數(shù)的匹配組,如在塊2010指示的。工作ID與唯一 ID的匹配識(shí)別分解來(lái)創(chuàng)建工作項(xiàng)目的單維陣列的特定ND范圍工作集。在塊2012,WS邏輯從與永久存儲(chǔ)檢索與命令/工作元素相關(guān)的所有其他參數(shù),從該命令/工作元素生成工作輸出/結(jié)果。在圖示的實(shí)施例中,使用來(lái)自工作輸出/結(jié)果序列順序,WS邏輯按(工作項(xiàng)目的)序列順序 重新排列工作輸出結(jié)果,如在塊2014所示。在以正確的排序序列安排工作輸出/結(jié)果的情況下,WS邏輯開(kāi)始第二算法,其提供工作輸出/結(jié)果的一維陣列到相應(yīng)的3D范圍輸出的反向映射,如在塊2016所指示的。第二算法因此是用來(lái)分解ND范圍工作集的第一算法的反向算法?,F(xiàn)在提供根據(jù)一個(gè)實(shí)施例的第二算法的一個(gè)示例,其中安排具有32個(gè)3D范圍操作數(shù)的4X4X2配置的3D范圍的操作數(shù)。當(dāng)分解3D范圍工作集時(shí),WS邏輯跟蹤分解各維的順序(例如,x,然后y,然后z),并且存儲(chǔ)該排序信息用于稍后在重新組合處理期間使用。在X,y和z索引遵循傳統(tǒng)的幾何方向的實(shí)施例中,X維代表第一平面中的行,y維代表相同的第一平面中的列,并且z方向代表垂直于第一平面的垂直/水平方向。z方向的每個(gè)xy平面在此描述為片,使得在本示例中z方向提供片0和片I。當(dāng)接收工作輸出/結(jié)果(例如,工作輸出22)時(shí),WS邏輯從該工作輸出檢索序列號(hào)(22),該號(hào)碼指示生成該工作輸出的工作項(xiàng)目是工作元素的工作項(xiàng)目號(hào)22。當(dāng)放置在GCQ中時(shí)該工作元素包含編號(hào)從零(0)到31的工作項(xiàng)目,以該序列順序分派工作項(xiàng)目。然后用其特定序列號(hào)標(biāo)記每個(gè)工作項(xiàng)目,并且該號(hào)碼嵌入相應(yīng)的工作輸出/結(jié)果。為了將工作輸出22索引到來(lái)自原始3D配置的適當(dāng)3D位置,算法首先確定分解期間使用的最后塊的方向(即,哪個(gè)維最后用于將索引的操作數(shù)(x,y,z)分離出3D配置)。在確定z方向的情況下,算法然后將每個(gè)其他方向的大小相互相乘以生成第一自變量。因此,例如假設(shè)在x、然后y、然后z方向分解4X4X2工作集(順序分配操作數(shù)),其中z具有大小2,并且X和y具有大小4。然后,在重新組合期間,WS邏輯或第二算法將序列號(hào)(22)除以16 (4乘以4),以發(fā)現(xiàn)映射特定工作輸出(對(duì)應(yīng)于生成具有序列號(hào)22的工作項(xiàng)目的操作數(shù)的塊)到z操作數(shù)的哪個(gè)塊(塊0或塊I)。因此,z塊確定為22除以16,其得到整數(shù)結(jié)果一(I)和余數(shù)6。結(jié)果的整數(shù)部分(即,I)指示z塊是塊I。余數(shù)然后除以下一個(gè)分解維(y)的大小,以發(fā)現(xiàn)z方向的塊I中的y列。因此,算法計(jì)算y列為六(6)除以四(4),其得到第二整數(shù)結(jié)果一(1),以及余數(shù)二(2)。一(I)指示y位置是第二 Z塊中的第二 y列。此外,余數(shù)二(2)然后指示特定列中的X行位置。因此,利用第二算法,WS邏輯能夠重新組合ND范圍輸出,其中工作輸出22映射到所有索引2,I, I(在行、列、塊方面)的位置。要理解的是可以提供不同算法或方法來(lái)實(shí)現(xiàn)重新組合處理,并且所有這種算法/方法落入描述的實(shí)施例的等價(jià)物內(nèi)。在一個(gè)替代實(shí)施例中,不是首先以序列順序重新安排工作輸出/結(jié)果,WS邏輯經(jīng)由第三算法自動(dòng)確定對(duì)應(yīng)于每個(gè)接收的工作輸出/結(jié)果內(nèi)的分派順序序列號(hào)的ND范圍索引(例如,x,y,z)。WS邏輯利用存儲(chǔ)的ND范圍索引、序列排序信息、以及初始生成的工作項(xiàng)目的總數(shù),生成相應(yīng)的ND范圍輸出。當(dāng)接收工作結(jié)果時(shí),WS邏輯跟蹤接收的工作結(jié)果的數(shù)目,并且將該數(shù)目與之前存儲(chǔ)的工作項(xiàng)目計(jì)數(shù)比較,如在決定塊2018所示的。當(dāng)WS邏輯已經(jīng)接收工作結(jié)果的總數(shù)(即,從ND范圍操作數(shù)和/或相應(yīng)的分派工作項(xiàng)目生成的預(yù)期數(shù)目的工作結(jié)果)時(shí),WS邏輯停止對(duì)于特定工作元素/ND范圍命令監(jiān)控額外的輸出/結(jié)果。WS邏輯能夠停止進(jìn)一步監(jiān)控和映射結(jié)果,因?yàn)椴僮鲾?shù)的數(shù)目和分派的工作項(xiàng)目的數(shù)目相對(duì)于生成的工作輸出/結(jié)果的數(shù)目之間存在確定的關(guān)系(一對(duì)一或其他已知比率)。當(dāng)接收到每個(gè)工作輸出/結(jié)果時(shí),WS邏輯也檢測(cè)該工作結(jié)果的序列號(hào),其對(duì)應(yīng)于分派工作項(xiàng)目的序列中的號(hào)碼。例如,在具有16個(gè)工作項(xiàng)目的工作元素中,工作結(jié)果16對(duì)應(yīng)于首先分派的工作 項(xiàng)目16,而工作結(jié)果七(7)對(duì)應(yīng)于順序分派的工作項(xiàng)目7,其在工作項(xiàng)目8之后并且在工作項(xiàng)目6之前分派,或者如果相同塊的工作項(xiàng)目分派到處理節(jié)點(diǎn)或處理單元,則與其他工作項(xiàng)目一起分派。盡管在此描述為一對(duì)一映射,但是其他實(shí)施例提供單個(gè)操作數(shù)和/或工作項(xiàng)目每個(gè)生成多個(gè)工作輸出/結(jié)果。在這些替代實(shí)施例中,WS邏輯對(duì)于每個(gè)工作項(xiàng)目將應(yīng)用預(yù)先確定的乘數(shù)(M,對(duì)于一到M輸入對(duì)輸出關(guān)系)。M與操作數(shù)/工作項(xiàng)目的總數(shù)的相乘的結(jié)果提供第二“用于映射的輸出的總數(shù)”參數(shù),用于跟蹤實(shí)施來(lái)生成ND范圍輸出的反向映射功能的完成。可替代地,WS邏輯還可能存儲(chǔ)乘數(shù)(M)作為ND范圍命令(或工作元素)的參數(shù)之一,然后僅在重新組合處理期間應(yīng)用該乘數(shù)以確定ND范圍輸出的重新組合何時(shí)完成。在考慮工作結(jié)果的總數(shù)的情況下,WS邏輯能夠重新構(gòu)造ND范圍輸出,好像處理單元已經(jīng)在ND范圍數(shù)據(jù)集上而不是實(shí)質(zhì)更簡(jiǎn)單的單維數(shù)據(jù)陣列上操作。返回到?jīng)Q定塊2018,當(dāng)工作輸出/結(jié)果的總數(shù)已經(jīng)映射到ND范圍輸出時(shí),WS邏輯將ND范圍輸出傳遞到提供工作結(jié)果的應(yīng)用空間,如在塊2020所示。特別地,呈現(xiàn)的ND范圍輸出是與使用傳統(tǒng)的ND范圍執(zhí)行范例生成的輸出完全相同,在傳統(tǒng)的ND范圍執(zhí)行范例中貫穿整個(gè)執(zhí)行序列跟蹤實(shí)際的ND范圍索引,以考慮(a)每個(gè)操作數(shù)以及(b)ND范圍中的每個(gè)相應(yīng)結(jié)果的特定個(gè)別位置。然而,由目前描述的實(shí)施例提供的ND范圍輸出在充分減少處理和存儲(chǔ)器資源的使用的情況下生成,其將以不同的方式要求跟蹤具有(a)每個(gè)操作數(shù)和(b)每個(gè)操作以及(c)每個(gè)生成的工作結(jié)果的N維索引,如由傳統(tǒng)的ND范圍處理所要求的。圖20的處理在塊2022結(jié)束。在上面的每個(gè)流程圖中,一個(gè)或多個(gè)方法可以體現(xiàn)在包含計(jì)算機(jī)可讀代碼的計(jì)算機(jī)可讀介質(zhì)中,使得當(dāng)在計(jì)算設(shè)備上執(zhí)行計(jì)算機(jī)可讀代碼時(shí),執(zhí)行一系列步驟。在一些實(shí)施方式中,組合、同時(shí)或以不同順序執(zhí)行、或可能省略方法的某些步驟,而不背離本發(fā)明的精神和范圍。因此,盡管方法步驟以特定序列描述和圖示,但是步驟的特定序列的使用不意味著暗示對(duì)于本發(fā)明的任何限制??梢詫?duì)于步驟的序列進(jìn)行改變,而不背離本發(fā)明的精神和范圍。因此,在不沒(méi)有限制意義的情況下使用特定序列,并且本發(fā)明的范圍僅由權(quán)利要求限定。在此已經(jīng)描述了用于N維(ND)范圍命令的有效分派/完成的方法、計(jì)算機(jī)系統(tǒng)和制造的商品(或計(jì)算機(jī)程序產(chǎn)品)。所述方法包括編譯器從接收的程序指令生成一個(gè)或多個(gè)命令,其中所述一個(gè)或多個(gè)命令由運(yùn)行時(shí)間調(diào)度程序利用,以便調(diào)度工作用于在數(shù)據(jù)處理系統(tǒng)內(nèi)的一個(gè)或多個(gè)處理單元上執(zhí)行;與編譯器相關(guān)聯(lián)的ND范圍工作處理(WP)邏輯確定由編譯器生成的命令何時(shí)將在ND范圍的操作數(shù)上實(shí)施,以N維配置安排該ND范圍的操作數(shù),其中N大于一(I);當(dāng)N大于一(I)時(shí),將ND范圍的操作數(shù)自動(dòng)分解為包括P個(gè)順序排序的工作項(xiàng)目的一(I)維工作元素,P個(gè)順序排序的工作項(xiàng)目每個(gè)代表一維工作元素中ND范圍的操作數(shù)之一;將單維工作元素放置在數(shù)據(jù)處理系統(tǒng)的命令隊(duì)列的一個(gè)或多個(gè)條目?jī)?nèi),其中一個(gè)或多個(gè)條目的每個(gè)以排序的順序保持工作項(xiàng)目的ID陣列;以及實(shí)現(xiàn)來(lái)自命令隊(duì)列的工作項(xiàng)目的ID陣列到一個(gè)或多個(gè)處理單元的順序分派,其中分派工作項(xiàng)目的ID陣列用于以排序的順序執(zhí)行。 根據(jù)一個(gè)實(shí)施例,將ND范圍的操作數(shù)自動(dòng)分解為一(I)維工作元素還包括選擇第一映射次序,用于重新安排ND范圍的操作數(shù),由用于分解ND范圍的操作數(shù)的第一邏輯/算法提供該次序,其中所述第一映射次序是預(yù)先編程的第一次序;利用第一映射次序,將每個(gè)操作數(shù)動(dòng)態(tài)從ND范圍動(dòng)態(tài)映射到工作元素的單維陣列內(nèi)的ID索引位置;用第一映射次序的指示標(biāo)記工作元素,所述第一映射次序利用來(lái)從ND范圍創(chuàng)建單維陣列。將ND范圍的操作數(shù)自動(dòng)分解為一(I)維工作元素還包括確定ND范圍內(nèi)每一維的數(shù)字大小,其中第一數(shù)字大小代表N維的第一維中操作數(shù)的總數(shù);以具有順序呈現(xiàn)的每個(gè)數(shù)字大小的索引格式表現(xiàn)每一維的數(shù)字大小;計(jì)算ND范圍的操作數(shù)內(nèi)操作數(shù)的總數(shù);以及將總數(shù)和索引格式存儲(chǔ)在數(shù)據(jù)處理系統(tǒng)的永久存儲(chǔ)內(nèi)。根據(jù)另一個(gè)實(shí)施例,計(jì)算ND范圍的操作數(shù)內(nèi)操作數(shù)的總數(shù)包括將每一維的數(shù)字大小相互相乘,并且減去不包括操作數(shù)的ND范圍內(nèi)的任何索引空間。此外,在一個(gè)實(shí)施例中,所述方法還包括為命令提供唯一標(biāo)識(shí)(ID);將唯一 ID與命令的一個(gè)或多個(gè)存儲(chǔ)的參數(shù)相關(guān)聯(lián),所述參數(shù)包括總數(shù)、索引格式和映射次序;連同一個(gè)或多個(gè)存儲(chǔ)的參數(shù)存儲(chǔ)唯一ID ;將唯一 ID分配給工作元素的每個(gè)工作項(xiàng)目;從對(duì)應(yīng)于分派給一個(gè)或多個(gè)處理單元用于執(zhí)行的單維工作元素的單維工作項(xiàng)目的單維工作輸出結(jié)果內(nèi),檢測(cè)唯一 ID ;從永久存儲(chǔ)檢索與唯一 ID相關(guān)聯(lián)的ND范圍參數(shù);以及利用把來(lái)自第一算法的總數(shù)、索引格式和第一映射次序計(jì)算在內(nèi)的第二算法,從多個(gè)單維工作輸出結(jié)果生成ND范圍輸出。根據(jù)另一個(gè)實(shí)施例,所述方法包括響應(yīng)于從一個(gè)或多個(gè)處理單元接收對(duì)應(yīng)于分派給一個(gè)或多個(gè)處理單元用于執(zhí)行的單維工作元素的單維工作項(xiàng)目的單維工作輸出結(jié)果,ND范圍WS邏輯通過(guò)將接收的單維工作輸出結(jié)果映射到對(duì)應(yīng)于由單維工作項(xiàng)目代表的ND范圍操作數(shù)的原始位置的ND位置,生成ND范圍輸出。命令隊(duì)列是多節(jié)點(diǎn)、數(shù)據(jù)處理系統(tǒng)的全局命令隊(duì)列。所述方法還包括為每個(gè)處理單元提供用工作項(xiàng)目的唯一 ID分派的單維工作元素的工作項(xiàng)目;使得每個(gè)處理單元能夠以正確的順序次序檢索單維工作元素的順序排序的工作項(xiàng)目,以便保持排序的分派和相對(duì)于來(lái)自ND范圍操作的映射的跟蹤順序;使得每個(gè)處理單元能夠用唯一 ID和識(shí)別正確的順序次序的信息,標(biāo)記通過(guò)執(zhí)行工作項(xiàng)目生成的每個(gè)工作輸出結(jié)果;順序分派每個(gè)工作項(xiàng)目作為順序工作項(xiàng)目的塊內(nèi)的一個(gè)項(xiàng)目,其中分派順序工作項(xiàng)目的塊,作為用于低等待時(shí)間處理節(jié)點(diǎn)的第一大小塊,以及用于高等待時(shí)間處理節(jié)點(diǎn)的更大第二塊大?。蛔詣?dòng)跟蹤工作元素內(nèi)剩余的工作項(xiàng)目的數(shù)目;以及將剩余的工作項(xiàng)目的第一計(jì)數(shù)轉(zhuǎn)發(fā)到分派第一塊的工作項(xiàng)目的第一處理單元,連同第一塊大小利用剩余的工作項(xiàng)目的第一計(jì)數(shù)確定哪些工作項(xiàng)目分派到第一處理單元;將剩余的工作項(xiàng)目遞減第一塊大小以生成第二計(jì)數(shù),該第二計(jì)數(shù)轉(zhuǎn)發(fā)到分派第二塊的工作項(xiàng)目的下一個(gè)處理單元;以及將命令的唯一 ID轉(zhuǎn)發(fā)到分派工作項(xiàng)目的第一處理單元和隨后的處理單元。如將進(jìn)一步理解的,本發(fā)明的實(shí)施例中處理可以使用軟件、固件或硬件的任何組合實(shí)施。作為以軟件實(shí)踐本發(fā)明的準(zhǔn)備步驟,編程代碼(不管軟件或固件)將典型地存儲(chǔ)在一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)中,諸如固定(硬盤(pán))驅(qū)動(dòng)器、磁盤(pán)、光盤(pán)、磁帶、諸如R0M、PR0M等的半導(dǎo)體存儲(chǔ)器,從而制造根據(jù)本發(fā)明的制造商品。通過(guò)直接從存儲(chǔ)設(shè)備執(zhí)行代碼、或?qū)⒋a從存儲(chǔ)設(shè)備復(fù)制到諸如硬盤(pán)、RAM等的另一存儲(chǔ)設(shè)備、或者使用諸如數(shù)字和模擬通信鏈路的傳輸型介質(zhì)傳輸用于遠(yuǎn)程執(zhí)行的代碼,使用包含編程代碼的制造商品??梢酝ㄟ^(guò)組合一個(gè)或多個(gè)包含根據(jù)本發(fā)明的代碼的機(jī)器可讀存儲(chǔ)設(shè)備與用于執(zhí)行其中包含的代碼的適當(dāng)?shù)奶幚碛布?,?shí)踐本發(fā)明的方法。用于實(shí)踐本發(fā)明的裝置可以是一個(gè)或多個(gè)處理設(shè)備,以及包含根據(jù)本發(fā)明編碼的(多個(gè))程序或具有對(duì)其的網(wǎng)絡(luò)訪問(wèn)的存儲(chǔ)系統(tǒng)。 因此,重要的是盡管在具有安裝的(執(zhí)行的)軟件的全功能計(jì)算機(jī)(服務(wù)器)系統(tǒng)的背景下描述本發(fā)明的說(shuō)明性實(shí)施例,本領(lǐng)域的技術(shù)人員將理解本發(fā)明的說(shuō)明性實(shí)施例的軟件方面能夠作為各種形式的程序產(chǎn)品分發(fā),并且本發(fā)明的說(shuō)明性實(shí)施例同樣地應(yīng)用而不管用于實(shí)際攜帶分發(fā)的介質(zhì)的特定類(lèi)型。盡管已經(jīng)參照示例性實(shí)施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將理解的是可以進(jìn)行各種改變,并且等價(jià)物可以替代其元件而不背離本發(fā)明的范圍。此外,可以進(jìn)行許多修改以適應(yīng)特定系統(tǒng)、設(shè)備或其組件,而不背離其實(shí)質(zhì)范圍。因此,旨在本發(fā)明不限于公開(kāi)用于執(zhí)行本發(fā)明的特定實(shí)施例,而是本發(fā)明將包括落入權(quán)利要求范圍內(nèi)的所有實(shí)施例。此夕卜,術(shù)語(yǔ)第一、第二等的使用不代表任何順序或重要性,而是術(shù)語(yǔ)第一、第二等用于將一個(gè)元件與另一個(gè)進(jìn)行區(qū)分。在此使用的術(shù)語(yǔ)僅僅為了描述特定實(shí)施例的目的,而不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一(a)”、“一(an)”和“該(the)”旨在也包括復(fù)數(shù)形式,除非上下文清楚地另外指示。將進(jìn)一步理解的是當(dāng)在說(shuō)明書(shū)中使用時(shí)術(shù)語(yǔ)“包括”和/或“包含”指定所述特征、整數(shù)、步驟、操作、元件和/或組件存在,而不排除一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或其分組的存在或添加。下面權(quán)利要求中相應(yīng)的結(jié)構(gòu)、材料、動(dòng)作、以及所有裝置或步驟的等價(jià)物加上功能元件旨在包括用于結(jié)合如具體要求保護(hù)的其它元件執(zhí)行功能的任何結(jié)構(gòu)、材料或動(dòng)作。為了圖示和描述的目的已經(jīng)呈現(xiàn)了本發(fā)明的描述,但是不旨在窮舉或限制本發(fā)明為公開(kāi)的形式。許多修改和變化將對(duì)于本領(lǐng)域的技術(shù)人員顯而易見(jiàn),而不背離本發(fā)明的范圍。選擇并且描述了實(shí)施例,以便最好地說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,并且使得本領(lǐng)域的技術(shù)人員能夠理解對(duì)于具有各種修改的各種實(shí)施例,本發(fā)明適于構(gòu)思的特定使用。
權(quán)利要求
1.在一種數(shù)據(jù)處理系統(tǒng)中,一種用于N維(ND)范圍命令的有效分派/完成的方法,所述方法包括 依靠編譯器,從接收的程序指令生成一個(gè)或多個(gè)命令,其中所述一個(gè)或多個(gè)命令由運(yùn)行時(shí)間調(diào)度程序利用,以便調(diào)度工作用于在數(shù)據(jù)處理系統(tǒng)內(nèi)的一個(gè)或多個(gè)處理單元上執(zhí)行; 依靠與編譯器相關(guān)聯(lián)的ND范圍工作調(diào)度(WS)邏輯,確定由編譯器生成的命令何時(shí)將在ND范圍的操作數(shù)上實(shí)施,以N維配置安排該ND范圍的操作數(shù),其中N大于I ; 當(dāng)N大于I時(shí),將ND范圍的操作數(shù)自動(dòng)分解為包括P個(gè)順序排序的工作項(xiàng)目的一(I)維工作元素,P個(gè)順序排序的工作項(xiàng)目每個(gè)代表一維工作元素中ND范圍的操作數(shù)之一;將單維工作元素放置在數(shù)據(jù)處理系統(tǒng)的命令隊(duì)列的一個(gè)或多個(gè)條目?jī)?nèi),其中一個(gè)或多個(gè)條目的每個(gè)以排序的順序保持工作項(xiàng)目的ID陣列;以及 實(shí)現(xiàn)來(lái)自命令隊(duì)列的工作項(xiàng)目的ID陣列到一個(gè)或多個(gè)處理單元的順序分派,其中分派工作項(xiàng)目的ID陣列用于以排序的順序執(zhí)行。
2.如權(quán)利要求I所述的方法,其中所述將ND范圍的操作數(shù)自動(dòng)分解為一維工作元素還包括 選擇第一映射次序,用于重新安排ND范圍的操作數(shù),由用于分解ND范圍的操作數(shù)的第一邏輯/算法提供該次序,其中所述第一映射次序是預(yù)先編程的第一次序; 利用第一映射次序,將每個(gè)操作數(shù)從ND范圍動(dòng)態(tài)映射到工作元素的單維陣列內(nèi)的位置; 用第一映射次序的指示標(biāo)記工作元素,所述第一映射次序利用來(lái)從ND范圍創(chuàng)建單維陣列。
3.如權(quán)利要求I所述的方法,其中所述將ND范圍的操作數(shù)自動(dòng)分解為一維工作元素還包括 確定ND范圍內(nèi)每一維的數(shù)字大小,其中第一數(shù)字大小代表N維的第一維中操作數(shù)的總數(shù); 以具有順序呈現(xiàn)的每個(gè)數(shù)字大小的索引格式表現(xiàn)每一維的數(shù)字大??; 計(jì)算ND范圍的操作數(shù)內(nèi)操作數(shù)的總數(shù);以及 將總數(shù)和索引格式存儲(chǔ)在數(shù)據(jù)處理系統(tǒng)的永久存儲(chǔ)內(nèi)。
4.如權(quán)利要求3所述的方法,其中所述計(jì)算ND范圍的操作數(shù)內(nèi)操作數(shù)的總數(shù)包括將每一維的數(shù)字大小相互相乘,并且減去不包括操作數(shù)的ND范圍內(nèi)的任何索引空間。
5.如前述任一權(quán)利要求所述的方法,還包括 為命令提供唯一標(biāo)識(shí)(ID); 將唯一 ID與命令的一個(gè)或多個(gè)存儲(chǔ)的參數(shù)相關(guān)聯(lián),所述參數(shù)包括總數(shù)、索引格式和映射次序; 連同一個(gè)或多個(gè)存儲(chǔ)的參數(shù)存儲(chǔ)唯一 ID ;以及 將唯一 ID分配給工作元素并且分配給從工作元素分派的每個(gè)工作項(xiàng)目。
6.如權(quán)利要求5所述的方法,還包括 從對(duì)應(yīng)于分派給一個(gè)或多個(gè)處理單元用于執(zhí)行的單維工作元素的單維工作項(xiàng)目的單維工作輸出結(jié)果內(nèi),檢測(cè)唯一 ID ;從永久存儲(chǔ)檢索與唯一 ID相關(guān)聯(lián)的ND范圍參數(shù);以及 利用把來(lái)自第一算法的總數(shù)、索引格式和第一映射次序計(jì)算在內(nèi)的第二算法,從多個(gè)單維工作輸出結(jié)果生成ND范圍輸出。
7.如前述任一權(quán)利要求所述的方法,還包括 響應(yīng)于從一個(gè)或多個(gè)處理單元接收對(duì)應(yīng)于分派給一個(gè)或多個(gè)處理單元用于執(zhí)行的單維工作元素的單維工作項(xiàng)目的單維工作輸出結(jié)果,ND范圍WS邏輯通過(guò)將接收的單維工作輸出結(jié)果映射到對(duì)應(yīng)于由單維工作項(xiàng)目代表的ND范圍操作數(shù)的原始位置的ND位置,生成ND范圍輸出。
8.如前述任一權(quán)利要求所述的方法,其中 命令隊(duì)列是多節(jié)點(diǎn)、數(shù)據(jù)處理系統(tǒng)的全局命令隊(duì)列;并且 所述方法還包括 為單維工作元素的工作項(xiàng)目分派到的每個(gè)處理單元提供工作項(xiàng)目的唯一 ID ; 使得每個(gè)處理單元能夠以正確的順序次序檢索單維工作元素的順序排序的工作項(xiàng)目,以便保持排序的分派和相對(duì)于來(lái)自ND范圍操作的映射的跟蹤順序; 使得每個(gè)處理單元能夠用唯一 ID和識(shí)別正確的順序次序的信息,標(biāo)記通過(guò)執(zhí)行工作項(xiàng)目生成的每個(gè)工作輸出結(jié)果。
9.如權(quán)利要求8所述的方法,還包括 順序分派每個(gè)工作項(xiàng)目作為順序工作項(xiàng)目的塊內(nèi)的一個(gè)項(xiàng)目,其中分派順序工作項(xiàng)目的塊,作為用于低等待時(shí)間處理節(jié)點(diǎn)的第一大小塊,以及用于高等待時(shí)間處理節(jié)點(diǎn)的更大第二塊大??; 自動(dòng)跟蹤工作元素內(nèi)剩余的工作項(xiàng)目的數(shù)目;以及 將剩余的工作項(xiàng)目的第一計(jì)數(shù)轉(zhuǎn)發(fā)到第一塊的工作項(xiàng)目分派到的第一處理單元,連同第一塊大小利用剩余的工作項(xiàng)目的第一計(jì)數(shù)確定哪些工作項(xiàng)目分派到第一處理單元; 將剩余的工作項(xiàng)目遞減第一塊大小以生成第二計(jì)數(shù),該第二計(jì)數(shù)轉(zhuǎn)發(fā)到第二塊的工作項(xiàng)目分派到的下一個(gè)處理單元;以及 將命令的唯一 ID轉(zhuǎn)發(fā)到工作項(xiàng)目分派到的第一處理單元和隨后的處理單元。
10.一種數(shù)據(jù)處理系統(tǒng),包括 一個(gè)或多個(gè)處理單元; 耦合到一個(gè)或多個(gè)處理單元的存儲(chǔ)器; 從接收的程序指令生成一個(gè)或多個(gè)內(nèi)核/命令的編譯器;其中由運(yùn)行時(shí)間調(diào)度程序利用所述一個(gè)或多個(gè)內(nèi)核/命令調(diào)度工作,用于在數(shù)據(jù)處理系統(tǒng)內(nèi)的一個(gè)或多個(gè)處理單元上執(zhí)行; 與編譯器相關(guān)聯(lián)的ND范圍工作調(diào)度(WS)裝置,用于執(zhí)行以下功能 確定由編譯器生成的命令何時(shí)將在ND范圍的操作數(shù)上實(shí)施,以N維配置安排該ND范圍的操作數(shù),其中N大于I ; 當(dāng)N大于I時(shí),將ND范圍的操作數(shù)自動(dòng)分解為包括P個(gè)順序排序的工作項(xiàng)目的一維工作元素,P個(gè)順序排序的工作項(xiàng)目每個(gè)代表一維工作元素中ND范圍的操作數(shù)之一;以及調(diào)度程序用于執(zhí)行以下功能 將單維工作元素放置在數(shù)據(jù)處理系統(tǒng)的命令隊(duì)列的一個(gè)或多個(gè)條目?jī)?nèi),其中一個(gè)或多個(gè)條目的每個(gè)以排序的順序保持工作項(xiàng)目的ID陣列;并且 實(shí)現(xiàn)來(lái)自命令隊(duì)列的工作項(xiàng)目的ID陣列到一個(gè)或多個(gè)處理單元的順序分派,其中分派工作項(xiàng)目的ID陣列用于以排序的順序執(zhí)行。
11.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中所述將ND范圍的操作數(shù)自動(dòng)分解為一維工作元素還包括 選擇第一映射次序,用于重新安排ND范圍的操作數(shù),由用于分解ND范圍的操作數(shù)的第一邏輯/算法提供該次序,其中所述第一映射次序是預(yù)先編程的第一次序; 利用第一映射次序,將每個(gè)操作數(shù)從ND范圍動(dòng)態(tài)映射到工作元素的單維陣列內(nèi)的位置; 用第一映射次序的指示標(biāo)記工作元素,所述第一映射次序利用來(lái)從ND范圍創(chuàng)建單維陣列。
12.如權(quán)利要求10或11所述的數(shù)據(jù)處理系統(tǒng),其中所述將ND范圍的操作數(shù)自動(dòng)分解為一維工作元素還包括 確定ND范圍內(nèi)每一維的數(shù)字大小,其中第一數(shù)字大小代表N維的第一維中操作數(shù)的總數(shù); 以具有順序呈現(xiàn)的每個(gè)數(shù)字大小的索引格式表現(xiàn)每一維的數(shù)字大??; 計(jì)算ND范圍的操作數(shù)內(nèi)操作數(shù)的總數(shù);以及 將總數(shù)和索引格式存儲(chǔ)在數(shù)據(jù)處理系統(tǒng)的永久存儲(chǔ)內(nèi)。
13.如權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),其中所述計(jì)算ND范圍的操作數(shù)內(nèi)操作數(shù)的總數(shù)包括將每一維的數(shù)字大小相互相乘,并且減去不包括操作數(shù)的ND范圍內(nèi)的任何索引空間。
14.如權(quán)利要求10到13的任一所述的數(shù)據(jù)處理系統(tǒng),還包括執(zhí)行以下功能的處理裝置 為命令提供唯一標(biāo)識(shí)(ID); 將唯一 ID與命令的一個(gè)或多個(gè)存儲(chǔ)的參數(shù)相關(guān)聯(lián),所述參數(shù)包括總數(shù)、索引格式和映射次序; 連同一個(gè)或多個(gè)存儲(chǔ)的參數(shù)存儲(chǔ)唯一 ID ;以及 將唯一 ID分配給工作元素并且分配給從工作元素分派的每個(gè)工作項(xiàng)目。
15.如權(quán)利要求14所述的數(shù)據(jù)處理系統(tǒng),其中處理裝置還包括執(zhí)行以下功能的邏輯 從對(duì)應(yīng)于分派給一個(gè)或多個(gè)處理單元用于執(zhí)行的單維工作元素的單維工作項(xiàng)目的單維工作輸出結(jié)果內(nèi),檢測(cè)唯一 ID ; 從永久存儲(chǔ)檢索與唯一 ID相關(guān)聯(lián)的ND范圍參數(shù);以及 利用把來(lái)自第一算法的總數(shù)、索引格式和第一映射次序計(jì)算在內(nèi)的第二算法,從多個(gè)單維工作輸出結(jié)果生成ND范圍輸出。
16.如權(quán)利要求14所述的數(shù)據(jù)處理系統(tǒng),其中處理裝置還包括執(zhí)行以下功能的邏輯 響應(yīng)于從一個(gè)或多個(gè)處理單元接收對(duì)應(yīng)于分派給一個(gè)或多個(gè)處理單元用于執(zhí)行的單維工作元素的單維工作項(xiàng)目的單維工作輸出結(jié)果,ND范圍WS邏輯通過(guò)將接收的單維工作輸出結(jié)果映射到對(duì)應(yīng)于由單維工作項(xiàng)目代表的ND范圍操作數(shù)的原始位置的ND位置,生成ND范圍輸出。
17.如權(quán)利要求14所述的數(shù)據(jù)處理系統(tǒng),其中 命令隊(duì)列是多節(jié)點(diǎn)、數(shù)據(jù)處理系統(tǒng)的全局命令隊(duì)列;并且 所述調(diào)度程序還執(zhí)行以下功能 為單維工作元素的工作項(xiàng)目分派到的每個(gè)處理單元提供工作項(xiàng)目的唯一 ID ; 使得每個(gè)處理單元能夠以正確的順序次序檢索單維工作元素的順序排序的工作項(xiàng)目,以便保持排序的分派和相對(duì)于來(lái)自ND范圍操作的映射的跟蹤順序; 使得每個(gè)處理單元能夠用唯一 ID和識(shí)別正確的順序次序的信息,標(biāo)記通過(guò)執(zhí)行工作項(xiàng)目生成的每個(gè)工作輸出結(jié)果。
18.如權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中所述調(diào)度程序包括執(zhí)行以下功能的邏輯 順序分派每個(gè)工作項(xiàng)目作為順序工作項(xiàng)目的塊內(nèi)的一個(gè)項(xiàng)目,其中分派順序工作項(xiàng)目的塊,作為用于低等待時(shí)間處理節(jié)點(diǎn)的第一大小塊,以及用于高等待時(shí)間處理節(jié)點(diǎn)的更大第二塊大小; 自動(dòng)跟蹤工作元素內(nèi)剩余的工作項(xiàng)目的數(shù)目;以及 將剩余的工作項(xiàng)目的第一計(jì)數(shù)轉(zhuǎn)發(fā)到第一塊的工作項(xiàng)目分派到的第一處理單元,連同第一塊大小利用剩余的工作項(xiàng)目的第一計(jì)數(shù)確定哪些工作項(xiàng)目分派到第一處理單元; 將剩余的工作項(xiàng)目遞減第一塊大小以生成第二計(jì)數(shù),該第二計(jì)數(shù)轉(zhuǎn)發(fā)到第二塊的工作項(xiàng)目分派到的下一個(gè)處理單元;以及 將命令的唯一 ID轉(zhuǎn)發(fā)到工作項(xiàng)目分派到的第一處理單元和隨后的處理單元。
19.如權(quán)利要求14所述的數(shù)據(jù)處理系統(tǒng),其中 用于生成由一個(gè)或多個(gè)處理單元執(zhí)行的工作的處理邏輯包括編譯器和與編譯器相關(guān)聯(lián)的ND范圍WS邏輯; 用于分派工作元素到一個(gè)或多個(gè)處理單元的工作調(diào)度邏輯包括調(diào)度程序;以及用于從單維工作元素的單維工作項(xiàng)目重新創(chuàng)建ND范圍輸出的處理邏輯包括ND范圍WS邏輯。
20.一種體現(xiàn)為計(jì)算機(jī)程序產(chǎn)品的制造商品,包括 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì);以及 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的程序代碼,其由數(shù)據(jù)處理系統(tǒng)的第一處理單元執(zhí)行以提供包括以下的方法功能 觸發(fā)編譯器從接收的程序指令生成一個(gè)或多個(gè)內(nèi)核/命令,其中所述一個(gè)或多個(gè)內(nèi)核/命令由運(yùn)行時(shí)間調(diào)度程序利用,以便調(diào)度工作用于在數(shù)據(jù)處理系統(tǒng)內(nèi)的一個(gè)或多個(gè)處理單元上執(zhí)行; 與編譯器相關(guān)聯(lián)的ND范圍工作調(diào)度(WS)邏輯確定由編譯器生成的內(nèi)核/命令何時(shí)將在ND范圍的操作數(shù)上實(shí)施,以N維配置安排該ND范圍的操作數(shù),其中N大于I ; 當(dāng)N大于I時(shí),將ND范圍的操作數(shù)自動(dòng)分解為包括P個(gè)順序排序的工作項(xiàng)目的一維工作元素,P個(gè)順序排序的工作項(xiàng)目每個(gè)代表一維工作元素中ND范圍的操作數(shù)之一; 將單維工作元素放置在數(shù)據(jù)處理系統(tǒng)的命令隊(duì)列的一個(gè)或多個(gè)條目?jī)?nèi),其中一個(gè)或多個(gè)條目的每個(gè)以排序的順序保持工作項(xiàng)目的ID陣列;以及 實(shí)現(xiàn)來(lái)自命令隊(duì)列的工作項(xiàng)目的ID陣列到一個(gè)或多個(gè)處理單元的順序分派,其中分派工作項(xiàng)目的ID陣列用于以排序的順序執(zhí)行。
21.如權(quán)利要求20所述的制造商品,其中將ND范圍的操作數(shù)自動(dòng)分解為一維工作元素的方法功能還包括 選擇第一映射次序,用于重新安排ND范圍的操作數(shù),由用于分解ND范圍的操作數(shù)的第一邏輯/算法提供該次序,其中所述第一映射次序是預(yù)先編程的第一次序; 利用第一映射次序,將每個(gè)操作數(shù)從ND范圍動(dòng)態(tài)映射到工作元素的單維陣列內(nèi)的位置; 用第一映射次序的指示標(biāo)記工作元素,所述第一映射次序利用來(lái)從ND范圍創(chuàng)建單維陣列; 確定ND范圍內(nèi)每一維的數(shù)字大小,其中第一數(shù)字大小代表N維的第一維中操作數(shù)的總數(shù); 以具有順序呈現(xiàn)的每個(gè)數(shù)字大小的索引格式表現(xiàn)每一維的數(shù)字大??; 通過(guò)將每一維的數(shù)字大小相互相乘,并且減去不包括操作數(shù)的ND范圍內(nèi)的任何索引空間,計(jì)算ND范圍的操作數(shù)內(nèi)操作數(shù)的總數(shù);以及 將總數(shù)和索引格式存儲(chǔ)在數(shù)據(jù)處理系統(tǒng)的永久存儲(chǔ)內(nèi)。
22.如權(quán)利要求21所述的制造商品,其中所述方法還包括 為內(nèi)核/命令提供唯一標(biāo)識(shí)(ID); 將唯一 ID與命令的一個(gè)或多個(gè)存儲(chǔ)的參數(shù)相關(guān)聯(lián),所述參數(shù)包括總數(shù)、索引格式和映射次序; 連同一個(gè)或多個(gè)存儲(chǔ)的參數(shù)存儲(chǔ)唯一 ID ; 將唯一 ID分配給工作元素并且分配給從工作元素分派的每個(gè)工作項(xiàng)目。
從對(duì)應(yīng)于分派給一個(gè)或多個(gè)處理單元用于執(zhí)行的單維工作元素的單維工作項(xiàng)目的單維工作輸出結(jié)果內(nèi),檢測(cè)唯一 ID ; 從永久存儲(chǔ)檢索與唯一 ID相關(guān)聯(lián)的ND范圍參數(shù);以及 利用把來(lái)自第一算法的總數(shù)、索引格式和第一映射次序計(jì)算在內(nèi)的第二算法,從多個(gè)單維工作輸出結(jié)果生成ND范圍輸出。
23.如權(quán)利要求20所述的制造商品,其中所述方法還包括 響應(yīng)于從一個(gè)或多個(gè)處理單元接收對(duì)應(yīng)于分派給一個(gè)或多個(gè)處理單元用于執(zhí)行的單維工作元素的單維工作項(xiàng)目的單維工作輸出結(jié)果,ND范圍WS邏輯通過(guò)將接收的單維工作輸出結(jié)果映射到對(duì)應(yīng)于由單維工作項(xiàng)目代表的ND范圍操作數(shù)的原始位置的ND位置,生成ND范圍輸出。
24.如權(quán)利要求22所述的制造商品,其中 命令隊(duì)列是多節(jié)點(diǎn)、數(shù)據(jù)處理系統(tǒng)的全局命令隊(duì)列(GCQ);并且 所述方法還包括 為單維工作元素的工作項(xiàng)目分派到的每個(gè)處理單元提供工作項(xiàng)目的唯一 ID ; 使得每個(gè)處理單元能夠以正確的順序次序檢索單維工作元素的順序排序的工作項(xiàng)目,以便保持排序的分派和相對(duì)于來(lái)自ND范圍操作的映射的跟蹤順序; 使得每個(gè)處理單元能夠用唯一 ID和識(shí)別正確的順序次序的信息,標(biāo)記通過(guò)執(zhí)行工作項(xiàng)目生成的每個(gè)工作輸出結(jié)果。
25.如權(quán)利要求24所述的制造商品,其中所述方法還包括 順序分派每個(gè)工作項(xiàng)目作為順序工作項(xiàng)目的塊內(nèi)的一個(gè)項(xiàng)目,其中分派順序工作項(xiàng)目的塊,作為用于低等待時(shí)間處理節(jié)點(diǎn)的第一大小塊,以及用于高等待時(shí)間處理節(jié)點(diǎn)的更大第二塊大?。? 自動(dòng)跟蹤工作元素內(nèi)剩余的工作項(xiàng)目的數(shù)目; 將剩余的工作項(xiàng)目的第一計(jì)數(shù)轉(zhuǎn)發(fā)到第一塊的工作項(xiàng)目分派到的第一處理單元,連同第一塊大小利用剩余的工作項(xiàng)目的第一計(jì)數(shù)確定哪些工作項(xiàng)目分派到第一處理單元; 將剩余的工作項(xiàng)目遞減第一塊大小以生成第二計(jì)數(shù),該第二計(jì)數(shù)轉(zhuǎn)發(fā)到第二塊的工作項(xiàng)目分派到的下一個(gè)處理單元;以及 將命令的唯一 ID轉(zhuǎn)發(fā)到工作項(xiàng)目分派到的第一處理單元和隨后的處理單元。
26.一種計(jì)算機(jī)程序,包括當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí),適于執(zhí)行權(quán)利要求I到9的所有步驟的程序代碼裝置。
全文摘要
一種提供數(shù)據(jù)處理系統(tǒng)(DPS)中N維(ND)范圍命令的有效分派/完成的方法。所述方法包括編譯器從接收的程序指令生成一個(gè)或多個(gè)命令;ND范圍工作處理(WP)邏輯確定由編譯器生成的命令何時(shí)將在ND配置的操作數(shù)上實(shí)施,其中N大于1;將ND配置的操作數(shù)自動(dòng)分解為包括P個(gè)順序排序的工作項(xiàng)目的一(1)維(1D)工作元素,P個(gè)順序排序的工作項(xiàng)目每個(gè)代表操作數(shù)之一;將1D工作元素放置在DPS的命令隊(duì)列內(nèi);實(shí)現(xiàn)1D工作項(xiàng)目按排序順序到一個(gè)或多個(gè)處理單元的順序分派;并且通過(guò)將1D工作輸出結(jié)果映射到對(duì)應(yīng)于由1D工作項(xiàng)目代表的操作數(shù)的原始位置的ND位置,生成ND范圍輸出。
文檔編號(hào)G06F9/48GK102792271SQ201080060260
公開(kāi)日2012年11月21日 申請(qǐng)日期2010年12月13日 優(yōu)先權(quán)日2009年12月30日
發(fā)明者B.米諾, B.霍頓, G.H.貝洛斯, J.馬德魯加 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司