充分利用并行處理器用于數(shù)據(jù)處理的制作方法
【專利摘要】提供用于充分利用并行處理器以用于數(shù)據(jù)處理的示例性方法、系統(tǒng)和計算機程序產(chǎn)品實施例。在一個實施例中,僅舉例而言,將并行處理器集合根據(jù)并行處理器的集合的索引分割成不相交子集。不相交子集中的每個不相交子集的大小對應(yīng)于被指派為處理該層之一的數(shù)據(jù)組塊的處理器的數(shù)目。向在不同數(shù)據(jù)組塊中的不同層指派處理器中的每個處理器,從而處理器中的每個處理器忙碌、并且數(shù)據(jù)組塊在數(shù)目等同于層的數(shù)目的時間步驟內(nèi)被完全處理。設(shè)計從并行處理器的集合在時間步驟之一的索引到并行處理器的集合在后繼時間步驟的索引的轉(zhuǎn)換函數(shù)。
【專利說明】充分利用并行處理器用于數(shù)據(jù)處理
【技術(shù)領(lǐng)域】
[0001]本發(fā)明總體涉及計算機,并且更具體地涉及用于充分利用并行處理器以用于在計算環(huán)境中的數(shù)據(jù)處理的計算機。
【背景技術(shù)】
[0002]在如今的社會中,計算機系統(tǒng)司空見慣。可以在工作地、在家里或者在學(xué)校找到計算機系統(tǒng)。計算機系統(tǒng)可以包括用于處理和存儲數(shù)據(jù)的數(shù)據(jù)存儲系統(tǒng)或者盤存儲系統(tǒng)。每天需要處理大量數(shù)據(jù),并且當(dāng)前趨勢表明這些數(shù)量將在可預(yù)見的將來繼續(xù)不斷增加。一種用于緩解該問題的高效方式是通過使用去重。在去重系統(tǒng)下面的思想是通過對重復(fù)的數(shù)據(jù)進行定位并且僅存儲它的第一出現(xiàn)來利用反復(fù)復(fù)制和轉(zhuǎn)發(fā)可用數(shù)據(jù)的大量部分而無任何改變這樣的事實。用指向存儲的出現(xiàn)的指針替換后續(xù)部分,如果數(shù)據(jù)確實重復(fù)則這顯著減少存儲要求。處理很大量信息是待解決的關(guān)鍵問題,因此存在對例如通過使用并行工作的處理器的集合來改善處理的需要。在某些應(yīng)用中,可以指派處理器集合以在若干級或者層中執(zhí)行某個任務(wù),并且可以用分級方式將任務(wù)反復(fù)拆分成子任務(wù)。系統(tǒng)的性能最終依賴于如何確切地將處理器分配給它們的子任務(wù)的布局,因此存在對于用于分級并行計算的改進的處理器布局的需求。
[0003]因此,在本領(lǐng)域中存在對解決前述問題的需求。
【發(fā)明內(nèi)容】
[0004]如提到的那樣,處理在存儲系統(tǒng)中出現(xiàn)的很大量信息和數(shù)據(jù)是待解決的關(guān)鍵問題。例如在數(shù)據(jù)去重(數(shù)據(jù)去重指減少和/或者消除冗余數(shù)據(jù))中,使用分組塊方法將數(shù)據(jù)對象——該數(shù)據(jù)對象可以是文件、數(shù)據(jù)流或者某個其它形式的數(shù)據(jù)——分解成稱為組塊的一個或者多個部分。在數(shù)據(jù)去重過程中,數(shù)據(jù)的重復(fù)副本被減少或者消除,從而相應(yīng)地留下最少量的冗余副本或者數(shù)據(jù)的單個副本。使用去重過程提供諸多益處、比如減少所需存儲容量和增加網(wǎng)絡(luò)帶寬。由于這些和其它益處,去重在近年來已經(jīng)在計算存儲系統(tǒng)中作為高度地重要的【技術(shù)領(lǐng)域】而顯現(xiàn)。在另一存儲系統(tǒng)中,可以存在并發(fā)寫入無關(guān)數(shù)據(jù)的多個事務(wù)。
[0005]因而并且鑒于前文,提供用于在多個初始化步驟之后充分利用并行處理器集合以對數(shù)據(jù)組塊序列執(zhí)行任務(wù)的各種示例方法、系統(tǒng)和計算機程序產(chǎn)品實施例,其中數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在若干時間步驟中且被多個層處理,而多個層在時間步驟中的每個時間步驟被多個處理器中的至少一個處理器處置。在一個實施例中,僅舉例而言,將并行處理器集合根據(jù)并行處理器的集合的索引分割成不相交子集,從而不相交子集中的每個不相交子集的大小對應(yīng)于被指派為處理該層之一的數(shù)據(jù)組塊的處理器的數(shù)目。根據(jù)分割向在數(shù)據(jù)組塊中的不同數(shù)據(jù)組塊中的不同層指派處理器中的每個處理器,從而處理器中的每個處理器忙碌、并且數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在數(shù)目等同于多個層的數(shù)目的時間步驟內(nèi)被完全處理。設(shè)計從并行處理器的集合在時間步驟之一的索引到并行處理器的集合在后繼時間步驟的索引的轉(zhuǎn)換函數(shù)。轉(zhuǎn)換函數(shù)與指派相一致。附加系統(tǒng)和計算機程序產(chǎn)品實施例被公開并且提供有關(guān)優(yōu)點。
[0006]從第一方面來看,本發(fā)明提供一種用于在多個初始化步驟之后充分利用多個并行處理器的集合、以在計算環(huán)境中由處理器設(shè)備對數(shù)據(jù)組塊序列執(zhí)行任務(wù)的方法,其中數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在若干時間步驟中且被多個層處理,多個層在時間步驟中的每個時間步驟被多個處理器中的至少一個處理器處置,該方法包括:將多個并行處理器的集合根據(jù)多個并行處理器的集合的索引分割成不相交子集,從而不相交子集中的每個不相交子集的大小對應(yīng)于被指派為在多個層之一處理數(shù)據(jù)組塊的多個處理器的數(shù)目;根據(jù)分割向在數(shù)據(jù)組塊中的不同數(shù)據(jù)組塊中的多個層中的不同層指派多個處理器中的每個處理器,從而多個處理器中的每個處理器忙碌、并且數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在數(shù)目等同于多個層的數(shù)目的時間步驟內(nèi)被完全處理;以及設(shè)計從多個并行處理器的集合在時間步驟之一的索引到多個并行處理器的集合在后繼時間步驟的索引的轉(zhuǎn)換函數(shù),其中轉(zhuǎn)換函數(shù)與指派相一致。
[0007]從又一方面來看,本發(fā)明提供一種用于在多個初始化步驟之后充分利用多個并行處理器的集合、以在計算環(huán)境中對數(shù)據(jù)組塊序列執(zhí)行任務(wù)的系統(tǒng),其中數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在若干時間步驟中且被多個層處理,多個層在時間步驟中的每個時間步驟被多個處理器中的至少一個處理器處置,該系統(tǒng)包括:在計算環(huán)境中操作的處理器設(shè)備,其中處理器設(shè)備適于執(zhí)行用于執(zhí)行本發(fā)明的步驟的方法。
[0008]從又一方面來看,本發(fā)明提供一種用于在多個初始化步驟之后充分利用多個并行處理器的集合、以在計算環(huán)境中由處理器設(shè)備對數(shù)據(jù)組塊序列執(zhí)行任務(wù)的計算機程序產(chǎn)品,其中數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在若干時間步驟中并且被多個層處理,多個層在時間步驟中的每個時間步驟被多個處理器中的至少一個處理器處置,該計算機程序產(chǎn)品包括非瞬態(tài)計算機可讀存儲介質(zhì),該非瞬態(tài)計算機可讀存儲介質(zhì)具有其中存儲的計算機可讀程序代碼部分,這些計算機可讀程序代碼部分包括:第一可執(zhí)行部分,用于將多個并行處理器的集合根據(jù)多個并行處理器的集合的索引分割成不相交子集、從而不相交子集中的每個不相交子集的大小對應(yīng)于被指派為在多個層之一處理數(shù)據(jù)組塊的多個處理器的數(shù)目;第二可執(zhí)行部分,用于根據(jù)分割向在數(shù)據(jù)組塊中的不同數(shù)據(jù)組塊中的多個層中的不同層指派多個處理器中的每個處理器、從而多個處理器中的每個處理器忙碌、并且數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在數(shù)目等同于多個層的數(shù)目的時間步驟內(nèi)被完全處理;以及第三可執(zhí)行部分,用于設(shè)計從多個并行處理器的集合在時間步驟之一的索引到多個并行處理器的集合在后繼時間步驟的索引的轉(zhuǎn)換函數(shù),其中轉(zhuǎn)換函數(shù)與指派相一致。
[0009]從又一方面來看,本發(fā)明提供一種用于在多個初始化步驟之后充分利用多個并行處理器的集合以在計算環(huán)境中由處理器設(shè)備對數(shù)據(jù)組塊序列執(zhí)行任務(wù)的計算機程序產(chǎn)品,其中數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在若干時間步驟中且被多個層處理,多個層在時間步驟中的每個時間步驟被多個處理器中的至少一個處理器處置,該計算機程序產(chǎn)品包括可由處理電路讀取并且存儲有指令的計算機可讀存儲介質(zhì),這些指令用于由處理電路執(zhí)行用于執(zhí)行用于執(zhí)行本發(fā)明的步驟的方法。
[0010]從另一方面來看,本發(fā)明提供一種在計算機可讀介質(zhì)上存儲并且可向數(shù)字計算機的內(nèi)部處理器中加載的計算機程序,該計算機程序包括在所述程序在計算機上被運行時用于執(zhí)行本發(fā)明的步驟的軟件代碼部分。
[0011]除了前述示例方法實施例之外,其它示例系統(tǒng)和計算機產(chǎn)品實施例被提供并且供應(yīng)有關(guān)優(yōu)點。已經(jīng)提供前述
【發(fā)明內(nèi)容】
以用簡化形式介紹以下在【具體實施方式】中進一步描述的概念選集。這一
【發(fā)明內(nèi)容】
未旨在于標(biāo)識要求保護的主題內(nèi)容的關(guān)鍵特征或者實質(zhì)特征,它也未旨在于用作輔助確定要求保護的主題內(nèi)容的范圍。要求保護的主題內(nèi)容不限于解決了在【背景技術(shù)】中指出的任何或者所有缺點的實現(xiàn)方式。
【專利附圖】
【附圖說明】
[0012]現(xiàn)在將參照如以下各圖中所示優(yōu)選實施例僅通過示例描述本發(fā)明:
[0013]圖1圖示了根據(jù)現(xiàn)有技術(shù)的具有示例存儲設(shè)備的計算機存儲環(huán)境,并且在該計算機存儲環(huán)境中可以實施本發(fā)明的優(yōu)選實施例;
[0014]圖2圖示了根據(jù)現(xiàn)有技術(shù)示出計算機中的數(shù)據(jù)存儲系統(tǒng)的硬件結(jié)構(gòu)的示例性框圖,在該示例框圖中可以實施本發(fā)明的優(yōu)選實施例;
[0015]圖3是圖示根據(jù)本發(fā)明的優(yōu)選實施例的用于為用于處理數(shù)據(jù)組塊的分級并行計算而改進處理器布局的示例性方法的流程圖;
[0016]圖4是圖示根據(jù)本發(fā)明的優(yōu)選實施例的用于使轉(zhuǎn)換函數(shù)受到約束的示例性方法的流程圖;
[0017]圖5圖示了示出根據(jù)本發(fā)明的優(yōu)選實施例的用于貯存庫的數(shù)據(jù)組塊的第一種子的示例性框圖;
[0018]圖6圖示了示出根據(jù)本發(fā)明的優(yōu)選實施例的用于若干初始數(shù)據(jù)組塊的處理器布局的示例性框圖;
[0019]圖7圖示了示出根據(jù)本發(fā)明的優(yōu)選實施例的其中可以實現(xiàn)本發(fā)明的方面的處理器分布的示例性框圖;
[0020]圖8圖示了根據(jù)本發(fā)明的優(yōu)選實施例的索引0(零)至30(三十)=2n_2到編索引為O至4的層中的示例性分割;
[0021]圖9圖示了示出根據(jù)本發(fā)明的優(yōu)選實施例的索引0(零)至30(三十)到與并行工作的處理器集合對應(yīng)的子集中的另一分割的示例性表圖;并且
[0022]圖10圖示了示出根據(jù)本發(fā)明的優(yōu)選實施例的用于從時間步驟i向時間步驟i+1轉(zhuǎn)換的索引集合布局的示例性框圖。
【具體實施方式】
[0023]如先前提到的那樣,隨著對于用于存儲信息的更快、更強大和更高效方式的增長需求,對存儲技術(shù)的優(yōu)化正在變成關(guān)鍵挑戰(zhàn)。如以下將描述的那樣,所示實施例的機制尋求解決用于處理數(shù)據(jù)組塊的解決方案,其中指派一個或者多個并行處理器集合以在若干級中對數(shù)據(jù)組塊執(zhí)行任務(wù),并且可以用分級方式將任務(wù)重復(fù)拆分成子任務(wù),從而如果在某一級需要η個處理器,則在下一級中僅需它們的一半、也就是n/2個處理器。使用并行處理器集合以在若干分級連接的層中執(zhí)行任務(wù)的可能性具有許多應(yīng)用。
[0024]大型存儲和備份系統(tǒng)可以借助如先前描述的去重來壓縮,該去重通過對文本的重現(xiàn)(recurrent)子部分進行定位并且用指向先前出現(xiàn)的指針替換它們。可以向每個數(shù)據(jù)塊指派哈希值,但是這僅可以檢測相同塊并且可能在使用大的塊大小時不適合。用相似性替換相同性使得能夠使用更大得多的數(shù)據(jù)組塊,使用相似性的過程可以基于為用于大量串的哈希函數(shù)賦值。例如可以將例如I拍字節(jié)(PB) = 25°字節(jié)級的很大貯存庫分割成固定或者可變大小的組塊,向組塊中的每個組塊指派一個或者多個簽名。組塊的簽名可以是為在組塊內(nèi)的k字節(jié)的每個連續(xù)子串產(chǎn)生的哈希值集合的函數(shù)。貫穿本說明書可以稱為“種子”的這些子串的長度k可以是512位或者更多,但是賦值可能給處理時間帶來負(fù)擔(dān)。在本申請中使用的哈希函數(shù)是以大素數(shù)P為模的余數(shù)函數(shù)。換而言之,將種子B——該種子是長度為K的字符串一用它的ASCII編碼來標(biāo)識,并且將這一編碼視為大的8k位長的整型標(biāo)準(zhǔn)二進制表示。哈希函數(shù)然后由下式表示:
[0025]h ⑶=B mod P
[0026](I)
[0027]其中B是余數(shù)函數(shù)并且P是大素數(shù)。給定組塊C=X1 X2...Xi,其中Xi表示字母表的字符,哈希函數(shù)h可以被應(yīng)用于長度為k的C的子串Bi的集合,其中:
[0028]Bi = Xi xi+l...xi+k_i
[0029](2)
[0030]是在C的第i個字符開始的子串。這可以對于在恒定時間i > I內(nèi)被完成,因為賦值可以基于更早為Bh獲得的值,但是這顯然對于要使用的第一個值而言不成立。也就是說,Bi可能需要與k成比例的賦值時間。
[0031]具體而言,在改進余數(shù)函數(shù)的賦值時間時,在稱為步驟O的第一級中,可以指派η個處理器的集合以對η個數(shù)據(jù)組塊同時工作。在步驟I中,僅使用n/2個處理器,每個處理器對在先前步驟中賦值的兩個組塊作用,并且一般而言,在步驟i中,僅使用11/21個處理器,每個處理器對在先前步驟1-Ι中賦值的兩個組塊作用。最后,在步驟log a中,僅使用單個處理器。盡管所有處理器一起的總工作相對于在單個處理器上的等效依次賦值未減少,但是總處理時間如果對于并行執(zhí)行的命令僅考慮一次則從0(n)運算減少至0(log η)運算。
[0032]然而僅在第一級中充分利用了處理器集合,并且事實上,對于η的合理選擇而言,處理器中的多數(shù)處理器在多數(shù)時間保持空閑。占用的處理器的平均數(shù)目由下式給出:
[0033]((n+(n/2) + (n/4) +...+2+1)/(1+log η)) = ((2n_l)/(1+log n))
[0034](3)
[0035]其中對于n = 64,造成處理器的平均僅約28%忙碌。為了解決先前描述的低效率,所示實施例的機制尋求通過將若干任務(wù)分組到一起來增加處理器的效率以便實現(xiàn)對可用處理能力的充分利用、由此將非工作處理器的低效率減少至零。η個處理器的這一最優(yōu)利用如以下描述的那樣通過向在數(shù)據(jù)組塊的各級的各種任務(wù)指派處理器來實現(xiàn)。在這樣做時,貫穿說明書,對具體處理器指派的引用可以稱為布局。
[0036]為了實現(xiàn)總是充分利用數(shù)目為η的處理器,可以并行執(zhí)行在計算環(huán)境內(nèi)的所需任務(wù)。更準(zhǔn)確而言,由于給定的函數(shù)的對單個組塊的賦值需要log η級,所以可以以使得可以并行同時處理log η個連續(xù)組塊的序列的方式來指派處理器。因此,所示實施例的機制設(shè)計適當(dāng)布局,該布局示出如何在每個時間步驟指派可用處理器。具體而言,布局在從步驟i向步驟i+Ι的時間轉(zhuǎn)換內(nèi)一致,而又符合待賦值的函數(shù)的分級定義。
[0037]轉(zhuǎn)向圖1,描繪其中可以實現(xiàn)本發(fā)明的方面的示例計算機系統(tǒng)10。計算機系統(tǒng)10包括連接到海量存儲設(shè)備14和存儲器設(shè)備16的中央處理單元(CPU) 12。海量存儲設(shè)備可以包括可以在獨立盤冗余陣列(RAID)中配置的硬盤驅(qū)動(HDD)設(shè)備。存儲器設(shè)備16可以包括比如電可擦除可編程只讀存儲器(EEPROM)這樣的存儲器或者有關(guān)設(shè)備的主機。存儲器設(shè)備16和海量存儲設(shè)備14經(jīng)由信號承載介質(zhì)連接到CPU 12。此外,CPU 12還通過通信端口 18連接到具有附著的多個附加計算機系統(tǒng)22和24的通信網(wǎng)絡(luò)20。計算機系統(tǒng)10可以包括用于計算機系統(tǒng)10的每個個體部件的一個或者多個處理器設(shè)備(例如CPU 12)和附加存儲器設(shè)備16。
[0038]圖2是示出根據(jù)本發(fā)明的計算機系統(tǒng)中的數(shù)據(jù)存儲系統(tǒng)的硬件架構(gòu)的示例框圖200。示出主機計算機210、220、225,每個主機計算機充當(dāng)用于執(zhí)行數(shù)據(jù)處理的中央處理單元作為數(shù)據(jù)存儲系統(tǒng)200的一部分。集群主機/節(jié)點(物理或者虛擬設(shè)備)210,220和225可以是用于在數(shù)據(jù)存儲系統(tǒng)200中實現(xiàn)本發(fā)明的目的的一個或者多個新物理設(shè)備或者邏輯設(shè)備。網(wǎng)絡(luò)(例如存儲結(jié)構(gòu))連接260可以是光纖信道結(jié)構(gòu)、光纖信道點到點鏈路、在以太網(wǎng)之上的光纖信道結(jié)構(gòu)或者點到點鏈路、FICON或者ESCON I/O接口。主機210、220和225可以在本地或者分布于一個或者多個位置之中并且可以被配備有去往存儲控制器240的任何類型的結(jié)構(gòu)(或者結(jié)構(gòu)信道)(在圖2中未示出)或者網(wǎng)絡(luò)適配器260、比如光纖信道、FIC0N、ESC0N、以太網(wǎng)、光纖、無線或者同軸適配器。數(shù)據(jù)存儲系統(tǒng)200被相應(yīng)地配備有用于通信的適當(dāng)結(jié)構(gòu)(在圖2中未示出)或者網(wǎng)絡(luò)適配器260。在圖2中描繪包括存儲控制器240以及集群主機210、220和225的數(shù)據(jù)存儲系統(tǒng)200。集群主機210、220和225可以包括集群節(jié)點。
[0039]為了有助于更清楚理解這里描述的方法,在圖2中示出存儲控制器240為如以下將更具體描述的包括微處理器242、系統(tǒng)存儲器243和非易失性存儲裝置(“NVS”)216的單個處理單元。注意在一些實施例中,存儲控制器240由多個處理單元組成,每個處理單元具有它們自己的處理器綜合體和系統(tǒng)存儲器,并且由在數(shù)據(jù)存儲系統(tǒng)200內(nèi)的專用網(wǎng)絡(luò)進行互連。另外,給定使用存儲結(jié)構(gòu)網(wǎng)絡(luò)連接260,可以通過使用存儲結(jié)構(gòu)260以將多個存儲控制器240與連接到每個存儲控制器240的一個或者多個集群主機210、220和225連接到一起來運用附加架構(gòu)配置。
[0040]在一些實施例中,存儲控制器240的系統(tǒng)存儲器243包括操作軟件250并且存儲程序指令和數(shù)據(jù),處理器242可以訪問這些程序指令和數(shù)據(jù)用于執(zhí)行與執(zhí)行本發(fā)明的步驟和方法關(guān)聯(lián)的功能和方法步驟。如圖2中所示,系統(tǒng)存儲器243也可以包括這里也稱為“高速緩存存儲器”的高速緩存245或者與高速緩存245通信,該高速緩存用于緩沖分別是指寫入/讀取請求及其關(guān)聯(lián)數(shù)據(jù)的“寫入數(shù)據(jù)”和“讀取數(shù)據(jù)”。在一個實施例中,高速緩存245在系統(tǒng)存儲器243外部的設(shè)備中被分配、仍然保持可由微處理器242訪問并且可以用來除了執(zhí)行如這里描述的操作之外還提供防范數(shù)據(jù)丟失的附加安全性。
[0041]在一些實施例中,高速緩存245可以用易失性存儲器和非易失性存儲器來實施并且經(jīng)由本地總線(在圖2中未示出)耦合到微處理器242用于增強數(shù)據(jù)存儲系統(tǒng)200的性能。在數(shù)據(jù)存儲控制器中包括的NVS 216可由微處理器242訪問并且服務(wù)于為如在其它圖中描述的操作和執(zhí)行提供附加支持。NVS 216也可以稱為“持久”高速緩存或者“高速緩存存儲器”,并且用可以或者可以未利用外部功率以保持其中存儲的數(shù)據(jù)的非易失性存儲器來實施。NVS可以出于適合于完成本發(fā)明的目的任何目的而被存儲于高速緩存245中和與高速緩存245 —起存儲。在一些實施例中,備用功率源(在圖2中未示出)、比如電池向NVS 216供應(yīng)充足功率以在丟失供給數(shù)據(jù)存儲系統(tǒng)200的功率的情況下保持其中存儲的數(shù)據(jù)。在某些實施例中,NVS 216的容量小于或者等于高速緩存245的總?cè)萘俊?br>
[0042]存儲控制器240可以包括處理器指派模塊255和轉(zhuǎn)換函數(shù)模塊257。處理器指派模塊255和轉(zhuǎn)換函數(shù)模塊257可以是同時工作的一個完整模塊或者是分離模塊。處理器指派模塊255和轉(zhuǎn)換函數(shù)模塊257可以具有某個內(nèi)部存儲器(未示出),轉(zhuǎn)換函數(shù)算法可以在該內(nèi)部存儲器中存儲未處理、已處理或者“半處理”的數(shù)據(jù)。處理器指派模塊255和轉(zhuǎn)換函數(shù)模塊257可以與存儲控制器240、主機210、220、225以及可以經(jīng)由存儲結(jié)構(gòu)260遠(yuǎn)程連接的其它存儲控制器240以及主機210、220和225的每個部件結(jié)合工作。處理器指派模塊255和轉(zhuǎn)換函數(shù)模塊257 二者可以在結(jié)構(gòu)上是一個完整模塊或者可以與其它個體模塊關(guān)聯(lián)和/或包括在一起。處理器指派模塊255和轉(zhuǎn)換函數(shù)模塊257也可以位于高速緩存245或者存儲控制器240的其它部件中。
[0043]存儲控制器240包括用于控制與主機計算機210、220、225的光纖信道協(xié)議的控制交換機241,用于控制全部存儲控制器240的微處理器242,用于存儲用于控制存儲控制器240的操作的微程序(操作軟件)250的非易失性控制存儲器243,用于暫時存儲(緩沖)數(shù)據(jù)的高速緩存245和用于輔助高速緩存245讀取和寫入數(shù)據(jù)的緩沖器244,用于控制用于向或者從處理器指派模塊255和轉(zhuǎn)換函數(shù)模塊257傳送數(shù)據(jù)的協(xié)議的、其中可以設(shè)置信息的控制交換機241??梢詫嵤┒鄠€緩沖器244以輔助如這里描述的方法和步驟。
[0044]在一個實施例中,通過作為接口的網(wǎng)絡(luò)適配器(這可以是光纖信道)260—即,經(jīng)由稱為“結(jié)構(gòu)”的交換機——連接集群主機/節(jié)點210、220、225和存儲控制器240。在一個實施例中,描述圖2中所示系統(tǒng)的操作如下。微處理器242可以控制存儲器243以存儲來自集群主機/節(jié)點設(shè)備(物理或者虛擬)210的命令信息和用于標(biāo)識集群主機/節(jié)點設(shè)備(物理或者虛擬)210的信息??刂平粨Q機241、緩沖器244、高速緩存245、操作軟件250、微處理器242、存儲器243、NVS 216、處理器輔助模塊255和轉(zhuǎn)換函數(shù)模塊257相互通信并且可以是分離部件或者一個個體部件。也可以與存儲器243 —起包括若干部件(如果并非包括所有部件)、比如操作軟件250。在所示設(shè)備內(nèi)的部件內(nèi)的每個部件可以被鏈接在一起并且可以相互通信用于與本發(fā)明相適的目的。
[0045]在一個實施例中,僅舉例而言,可以考慮兩個可能場景。首先,本發(fā)明的機制可以忽略每個處理器讀取指派的數(shù)據(jù)而需要的時間、而是實際上考慮使用一些參數(shù)的可能性,這些參數(shù)僅依賴于數(shù)據(jù)組塊的當(dāng)前處理的層的索引而不是具體組塊本身。這提供其中總是指派處理器以在數(shù)據(jù)(即數(shù)據(jù)組塊)的相同層執(zhí)行任務(wù)的布局。在一些場景中,也考慮輸入操作,這帶來其中對處理器的新數(shù)據(jù)的指派被減少至可能的最少處理器指派這樣的布局。處理器僅在完成處理器已經(jīng)釋放的數(shù)據(jù)的任務(wù)之后讀取新數(shù)據(jù)。如以下描述的所示實施例的機制舉例說明這兩個示例二者并且實現(xiàn)所有時間完全利用η個處理器而并行執(zhí)行在計算環(huán)境內(nèi)的所需任務(wù)。
[0046]圖3是圖示用于為用于處理數(shù)據(jù)組塊的分級并行計算改進處理器布局的示例方法的流程圖。該方法開始(步驟302)。將處理器根據(jù)它們的索引來分割(步驟304)。將待執(zhí)行的任務(wù)分割成層(步驟305)。向任務(wù)的層指派處理器(步驟306)。在數(shù)目與層數(shù)目相等的時間步驟內(nèi)處理數(shù)據(jù)組塊(步驟308)。設(shè)計(和/或計算)從一個時間步驟向后繼時間步驟的轉(zhuǎn)換函數(shù),從而該轉(zhuǎn)換與處理器向?qū)拥闹概梢恢?步驟310)。該方法結(jié)束(步驟312)。
[0047]轉(zhuǎn)向圖4,描繪流程圖,該流程圖圖示用于使轉(zhuǎn)換函數(shù)受到約束的示例方法。方法400開始(步驟402)。在與d層對應(yīng)的d個時間步驟內(nèi)處理每個數(shù)據(jù)組塊,其中向級O指派的處理器數(shù)目是n=〗.1—1,并且假設(shè)2n-l個處理器可用。向在給定的層處理組塊指派的處理器數(shù)目是在先前層向?qū)?shù)據(jù)組塊的處理指派的處理器數(shù)目的一半(1/2)(步驟404)??紤]兩個可能約束:第一約束是限制指派每個處理器總是對相同層工作,而第二約束是對于除了最低層之外的每層,每個處理器被限制為對與在先前層中相同的數(shù)據(jù)組塊一起工作(步驟406)。在步驟408中,方法400檢查哪些約束適用(例如該方法將確定給定的處理器是否被限制為總是對相同層工作)。如果是第一約束,則方法400可以按照整數(shù)O至2n-2來對處理器編索引,并且對于i=0,1,...,d-1,被指派對層i工作的n/2i個處理器是如下處理器,這些處理器的索引具有以O(shè)跟隨有i個I為結(jié)束的標(biāo)準(zhǔn)二進制表示(步驟410)。如果第二約束適用,則方法400可以備選地按照整數(shù)I至2n-l對處理器編索引,并且對于i=0,1,...,d-1,被指派對層i工作的n/2i個處理器是如下處理器,這些處理器的索引具有以I跟隨有i個O為結(jié)束的標(biāo)準(zhǔn)二進制表示(步驟412)。該方法結(jié)束(步驟414)。
[0048]圖5圖示示例框圖,該框圖示出用于貯存庫的數(shù)據(jù)組塊的第一種子。如先前提到的那樣,所示實施例的機制尋求利用所有處理器的處理能力。然而僅對于層0,所有處理器將活躍,而對于下一層,這僅對于處理器的一半成立,并且繼而對于附加級,對于處理器的四分之一成立,等等。對照而言并且為了解決這一低效率,舉例而言,考慮N個獨立數(shù)據(jù)組塊的長序列,其中對每個組塊的第一種子應(yīng)用分級簽名賦值。在典型設(shè)置中涉及到的大小可以視為IPB的貯存庫,該貯存庫被分割成固定大小為16兆字節(jié)(MB)的N個組塊的序列從而實現(xiàn)N=226,這約為6400萬個組塊,對于這些組塊中的每個組塊,處理大小為512字節(jié)的第一種子,如在圖5中描繪的那樣。在圖5中,數(shù)據(jù)組塊504(在附圖中圖示為504A-E)被豎條502 (在附圖中圖示為502A-D)分離,并且簽名必須被賦值的第一種子506 (在附圖中圖示為506A-D)以黑色顯現(xiàn)。在該示例中的這一點,可以假設(shè)對于層O需要η個處理器并且2η-1個處理器可用。
[0049]通過轉(zhuǎn)向圖6進一步考慮和說明該示例,該圖圖示出用于示出若干初始數(shù)據(jù)組塊的處理器布局的示例圖。所示實施例的機制可以在時間O通過向第一組塊(在附圖中圖示為編索引為“組塊O”的組塊)指派η個處理器來開始,其中處理器執(zhí)行并行賦值算法的層
O。在后繼步驟,在時間1,空閑處理器的1/2將執(zhí)行用于組塊O的層1,而重新指派前η個處理器以執(zhí)行組塊I的層O。在時間2,η/2個新處理器將執(zhí)行用于組塊O的層2,并且重新指派在先前步驟中對用于組塊O的層I工作的n/2處理器以執(zhí)行用于組塊I的層I。重新指派在先前步驟中對用于組塊I的層O工作的η個處理器以執(zhí)行用于組塊2的層O。如在圖6中描繪的那樣,實線指示當(dāng)前工作處理器的塊,并且虛線收回(recall)已經(jīng)在更早時間步驟中對更低層工作的處理器。
[0050]—般而言,在時間i, i=0,1,..., log η,將可用處理器的集合分割成:
[0051](i+Ι)個非偶數(shù)部分,這些部分對前(i+Ι)個組塊操縱如下:11/21新處理器可以執(zhí)行組塊O的層i,n/21-1處理器將執(zhí)行組塊I的層1-Ι,…,
[0052]n/2個處理器將執(zhí)行組塊1-Ι的層I,并且η個處理器將執(zhí)行組塊i的層O。換而言之,對于i〈log η,僅^ (η * - )2n +++++ 個處理器的在時間步驟i工作,但是在初始log
n-1個時間步驟之后,所有2n-l個處理器將工作。圖6描繪用于初始步驟的場景。對于后繼步驟,對于j=l,2,...,在時間步驟j+log η,—個處理器可以執(zhí)行組塊j - log η的層logn,兩個處理器可以執(zhí)行組塊j - log n+1的層log n-1,四個處理器將執(zhí)行組塊j _ log n+2的層log n-2,…,n/2個處理器可以執(zhí)行組塊j-1的層I,并且n個處理器可以執(zhí)行組塊j的層O。這可以被概括如下:對于j=l,2,...和i=0,1,..., log η,在時間j+logn, n/2lQgn_i個處理器將執(zhí)行組塊j - log n+i的層log η -1。
[0053]圖7圖示示例框圖,該示例框圖示出其中可以實現(xiàn)本發(fā)明的方面的處理器分布。延續(xù)圖5和6,圖7對于在log η個初始步驟之后的一般情況概括圖6的布局。如在圖6中描繪的那樣,有用于每個時間步驟的分離附圖,但是在圖7中疊加這些時間步驟中的每個時間步驟。更準(zhǔn)確而言,圖7中的每列對應(yīng)于組塊(在圖7中編索引為數(shù)據(jù)組塊j-4至j+1)之一。各種時間步驟在圖7中由各種形狀表征,其中具有相同填充圖案的矩形代表同時工作的處理器集合。實心黑色矩形代表在時間j - log η并行工作的處理器集合:它們的一半對組塊j工作,四分之一對組塊j-Ι工作,以此類推。虛線圖案是在時間j+log n+1在后繼步驟中的工作處理器。因此在圖6和7中觀察到在從一個時間步驟到后繼時間步驟的轉(zhuǎn)換,所有處理器移向后續(xù)塊、但是保持對相同先前層工作。關(guān)注具體組塊,從一個時間步驟向后繼時間步驟的轉(zhuǎn)換對應(yīng)于向下一更高層傳遞并且將對后繼數(shù)據(jù)組塊層工作的處理器數(shù)目減少一半(1/2)。
[0054]作為結(jié)果,通過向數(shù)據(jù)組塊的各種層指派處理器中的每個處理器,無處理器將在log η個時間步驟的初始化階段之后保持空閑,在該初始化步驟之后,所有2η-1個處理器將對log η個連續(xù)組塊并行工作。另外,在log η個連續(xù)時間步驟內(nèi)在log η層中對處理的數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊的簽名賦值。
[0055]在一個實施例中,機制可以設(shè)計布局,從而將處理器劃分成分別為η、η/2、η/4、…、
2、1個處理器的固定集合。如在圖7中描繪的那樣,可以總是指派η個處理器的第一子集以對數(shù)據(jù)組塊層零(0)工作。對于j = O, I,…log n,可以總是指派n/2j個處理器的子集以對層j工作。如果不同常數(shù)用于不同層,則優(yōu)點可以被這一設(shè)計實現(xiàn)。例如在用于并行余數(shù)賦值的應(yīng)用中,每個處理器對由兩個數(shù)據(jù)塊構(gòu)成的輸入作用。這些數(shù)據(jù)塊對于層O為相鄰,但是對于更高層,塊隔開更遠(yuǎn)。塊之間的距離依賴于層的索引。這轉(zhuǎn)化成在處理器中的每個處理器執(zhí)行的賦值過程中使用常數(shù)Ci,并且這一常數(shù)對于在相同層內(nèi)作用的所有處理器相同,但是(^從層到層不同。如果總是向相同層i指派給定的處理器,則無需更新它的常數(shù)Ci,該常數(shù)可以被固定(例如硬接線)到處理器中。以下在圖8中描述根據(jù)這一實施例的處理器索引的可能固定分割。
[0056]圖8圖示索引0(零)至30 (三十)=2n_2向編索引為O至4的層中的示例分割。因而在這一示例中具有η = 16。對級O作用的η個處理器是具有偶數(shù)索引{0,2,4,6,...}的處理器。對數(shù)據(jù)組塊級I作用的n/2個處理器可以是具有1+4的倍數(shù)這一形式的索引{1,5,9,13,...}的處理器。對數(shù)據(jù)組塊級2作用的n/4個處理器可以是具有3+8的倍數(shù)這一形式的索引{3,11,19, 27,...}的處理器,等等。一般而言,對于i=0,1,..., log η,對級i作用的11/^個處理器是具有(2^1) + (2^1)的倍數(shù)這一形式的索引的處理器。換而言之,一種描述這一分割的等效方式一該等效方式也具有示出這一編號方式確實引起分割的優(yōu)點,也就是說,所有的索引都被考慮考并且它們都未出現(xiàn)兩次——是通過引用編號O至2n-2的(1+log η)位標(biāo)準(zhǔn)二進制表示:η個偶數(shù)索引是以O(shè)為結(jié)束的索引,層I的索引是以O(shè)l為結(jié)束的索引,然后為011,等等。一般而言,層i的索引是n/2i個編號,這些編號的(1+log η)位標(biāo)準(zhǔn)二進制表示以011,…I為結(jié)束,其中I的串的長度是i。在圖8中描繪的表帶來用于n-16的分區(qū)以及在十進制和二進制形式中出現(xiàn)的索引,其中強調(diào)它們的后綴。
[0057]這樣的設(shè)計帶來的一個挑戰(zhàn)是在每個步驟,所有處理器可能必須讀取新數(shù)據(jù)并且這一輸入操作所引起的開銷可能是使用并行化的所有益處蕩然無存。為了解決這一挑戰(zhàn),圖9圖示索引1( 一)至31 (Si) = 2n-l到編索引為O至4的層中的示例分割。圖9描繪通過將處理器根據(jù)它們的索引來指派使得要求處理器的僅一半、也就是2n-l中的η個處理器在每個時間步驟讀取新數(shù)據(jù)——這是可能最小值,因為在每個時間步驟訪問新數(shù)據(jù)組塊——的更復(fù)雜編索引方案。其它n-Ι個處理器可以保持用它們在它們已經(jīng)在層O被指派數(shù)據(jù)組塊時已經(jīng)讀取的數(shù)據(jù)。這防止在為了分層處理數(shù)據(jù)組塊而需要的log η個連續(xù)步驟期間輸入命令引起的任何延遲。為了進一步示例與一般情況而不是初始log η個組塊對應(yīng)的說明,考慮以下示例。
[0058]機制可以按照從I至2η_1的整數(shù)對2η_1個處理器編索引,其中可以假設(shè)η是2的冪(例如n = 2d)??紤]這些索引的(左填充O) (d+Ι)位二進制表示。例如對于d = 4,索引是00001、00010、…、11110和11111。處理器被分割如下:向組塊j指派的η個處理器是具有奇數(shù)索引的處理器(換而言之,具有等于I以2為模的索引的處理器),向組塊j-ι指派的n/2個處理器是具有以10為結(jié)束的索引的處理器(換而言之,具有等于2以4為模的索引的處理器),并且一般而言,向組塊j_r指派的n/f個處理器是具有以10…O為結(jié)束的索引的處理器(I跟隨有r-Ι個零,換而言之,具有等于Z以為模的索引的處理器)。可以在下圖10的上部分中看見處理器的這些塊,其中在每列內(nèi)按字典順序?qū)λ鼈兣判?。用于每個塊的固定索引1、10、100等被加框用于強調(diào)。
[0059]圖10圖示示例框圖,該示例框圖示出其中可以實現(xiàn)本發(fā)明的方面的用于從時間步驟i向時間步驟i+Ι轉(zhuǎn)換的索引集合布局。圖10示出對于d = 4和η = 16,從時間步驟i向時間步驟i+Ι轉(zhuǎn)換的細(xì)節(jié)。對于數(shù)據(jù)組塊j_4、j-3、j-2、j-1和j圖示時間步驟i,并且對于數(shù)據(jù)組塊j_3、j-2、j-1、j和j+1圖示時間步驟i+1。
[0060]在對于d = 4、即η = 16從時間步驟i向時間步驟i+Ι傳遞時,向編索引為j = I的待處理的新組塊重新指派對當(dāng)前處理的連續(xù)組塊j、j-1、…、j - log η中的每個組塊工作的處理器的一半,而另一半保持用于處理器開始用于的、然后向更高層傳遞的數(shù)據(jù)組塊。更準(zhǔn)確而言,向新組塊指派具有索引> =η的所有處理器,這些索引的二進制表示始于1(在圖10的粗體矩形中描繪),而具有索引〈η的處理器保持用于早先的數(shù)據(jù)組塊。為了實現(xiàn)一致編號,以下變換可以在時間步驟之間的轉(zhuǎn)換中被應(yīng)用于索引中的每個索引:通過將向左一位的循環(huán)移位應(yīng)用于二進制表示從在時間i的索引A獲得在時間i+Ι的索引B。這樣的函數(shù)是雙射,從而始于在I與2n-l之間的所有編號,獲得在變換之后的相同集合。例如如果 A = 11001 和 23,則 B = 10011 = 19,而如果 A = 01010 = 10,則 B = 10100 = 20。換而言之,索引B由下式給定:
[0061]如果A > = η,則 B = 2 (A-n)+1
[0062]如果A < n,則 B = 2A(4)
[0063]如在圖10中描繪的那樣,在新組塊j+1中的所有索引以I為結(jié)束,在組塊j (現(xiàn)在處理層I)中的所有索引以10為結(jié)束,等等。如在圖10中可見,新布局與先前時間步驟的布局相似。對于t = j, j-1, j-2和j_3,對應(yīng)于時間i+1的在圖的下部中的組塊t的索引列與對應(yīng)于時間i的在圖的上部中的組塊t-Ι的索引列相同。在末列(在該圖的下部中的組塊j = D中的元素未按字典順序被排序以強調(diào)它們的原貌,但是可以容易檢查這一列僅為在該圖的上部的組塊j的列中的元素的排列。
[0064]如在圖9中描繪的那樣,該表概括新布局并且引起與圖8的先前分割表相似的分害I]。一種解釋新分割的備選方式是通過注意在圖8和圖9的表之間的對應(yīng)性。在圖8中的表的某個位置的、編索引為i的元素對應(yīng)于在與在圖9中描繪的表相同的位置的、編索引為i+Ι的元素。
[0065]因此,如圖10中所示,在一個實施例中,本發(fā)明提出一種處理器的編索引機制,該機制允許指派處理器僅對數(shù)據(jù)組塊的在各層的部分作用。在每個時間步驟轉(zhuǎn)換,重新指派處理器的部分使得處理器向數(shù)據(jù)組塊的指派不變,這允許無限轉(zhuǎn)換序列、而又持續(xù)保持所有處理器忙碌。
[0066]如本領(lǐng)域技術(shù)人員將理解的那樣,本發(fā)明的方面僅示出實施這里提出的分級部件的基本思想的可能性之一而無意于限于以上參數(shù)。本領(lǐng)域技術(shù)人員可以將以上思想推廣至不同布局。具體而言,分級樹和對應(yīng)整數(shù)表示未必需要是二進制而可以容易被推廣至基數(shù)k,其中任何整數(shù)k> = 3。例如三進制布局(1-3)將意味著如果對層O需要η個處理器以對η個組塊對函數(shù)賦值,則η/3而不是n/2個處理器可以對下一層工作,然后為n/9而不是n/4,等等。在從時間步驟i向i+Ι的轉(zhuǎn)換指派處理器然后可以相應(yīng)地基于根據(jù)三進制而不是二進制基數(shù)表示它們的索引。
[0067]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明的各個方面還可以實現(xiàn)為在任何一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可用的程序代碼。
[0068]可以采用一個或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置、器件或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的示例(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0069]計算機可讀介質(zhì)上包含的計算機代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于——無線、有線、光纜、射頻(RF)等等,或者上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如Java?、SmalltalkTM, C++等,還包括常規(guī)的過程式程序設(shè)計語言一諸如“C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠(yuǎn)程計算機上執(zhí)行、或者完全在遠(yuǎn)程計算機或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機的情形中,遠(yuǎn)程計算機可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN) —連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0070]以上將參照根據(jù)本發(fā)明示例實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0071]也可以把這些計算機程序指令存儲在計算機可讀介質(zhì)中,這些指令使得計算機、其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品(article of manufacture)。也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令提供實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的過程。
[0072]以上附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0073]盡管已經(jīng)具體舉例說明本發(fā)明的一個或者多個實施例,但是本領(lǐng)域普通技術(shù)人員將理解可以進行對那些實施例的修改和適配而未脫離如在所附權(quán)利要求中闡述的本發(fā)明的范圍。
【權(quán)利要求】
1.一種用于在多個初始化步驟之后充分利用多個并行處理器的集合、以在計算環(huán)境中由處理器設(shè)備對數(shù)據(jù)組塊序列執(zhí)行任務(wù)的方法,其中所述數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在若干時間步驟中且被多個層處理,所述多個層在所述時間步驟中的每個時間步驟被多個處理器中的至少一個處理器處置,所述方法包括: 將所述多個并行處理器的所述集合根據(jù)所述多個并行處理器的所述集合的索引分割成不相交子集,從而所述不相交子集中的每個不相交子集的大小對應(yīng)于被指派為在所述多個層之一處理所述數(shù)據(jù)組塊的多個處理器的數(shù)目; 根據(jù)所述分割向在所述數(shù)據(jù)組塊中的不同數(shù)據(jù)組塊中的所述多個層中的不同層指派所述多個處理器中的每個處理器,從而所述多個處理器中的每個處理器忙碌、并且所述數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在數(shù)目等同于所述多個層的數(shù)目的所述時間步驟內(nèi)被完全處理;以及 設(shè)計從所述多個并行處理器的所述集合在所述時間步驟之一的所述索引到所述多個并行處理器的所述集合在后繼時間步驟的所述索引的轉(zhuǎn)換函數(shù),其中所述轉(zhuǎn)換函數(shù)與所述指派相一致。
2.根據(jù)權(quán)利要求1所述的方法,其中所述多個處理器中被指派為在所述多個層之一處理所述數(shù)據(jù)組塊的所述數(shù)目小于所述多個處理器中被指派為在所述多個層的先前層處理所述數(shù)據(jù)組塊的處理器的數(shù)目。
3.根據(jù)前述權(quán)利要求中的任一權(quán)利要求所 述的方法,還包括使所述轉(zhuǎn)換函數(shù)受到多個約束。
4.根據(jù)權(quán)利要求3所述的方法,其中所述多個約束包括將在所述時間步驟中的每個時間步驟的所述多個處理器中的至少一個處理器限制于所述多個層中被指派為處理所述數(shù)據(jù)組塊的相同層。
5.根據(jù)權(quán)利要求3所述的方法,其中所述多個約束包括將所述多個并行處理器中被指派為在所述多個層中并非第一層的層處理所述數(shù)據(jù)組塊的處理器集合限制為所述多個并行處理器的所述集合中被指派為在所述多個層中的先前層處理所述數(shù)據(jù)組塊的子集。
6.根據(jù)前述權(quán)利要求中的任一權(quán)利要求所述的方法,其中所述多個并行處理器中可用的處理器的數(shù)目是n = 2d-l,其中d是所述多個層的數(shù)目,所述多個處理器中向級O指派的處理器的數(shù)目是n = 2d-l,并且所述多個處理器中被指派為在所述多個層中并非第一層的一層處理所述數(shù)據(jù)組塊的處理器的數(shù)目是所述多個處理器中被指派為在所述多個層中的所述先前層處理所述數(shù)據(jù)組塊的處理器的數(shù)目的一半。
7.根據(jù)前述權(quán)利要求中的任一權(quán)利要求所述的方法,其中所述多個并行處理器是按整數(shù)O至2n-2的編索引集合,對于i = O,1,…,d-Ι,所述多個處理器中被指派為在被編索引為i的所述多個層之一處理所述數(shù)據(jù)組塊的處理器的數(shù)目是11/21,并且n/2i個所述多個并行處理器的所述索引是具有以O(shè)跟隨有i個一為結(jié)束的、長度為(d+Ι)的標(biāo)準(zhǔn)二進制表示的n/2i個編號。
8.根據(jù)權(quán)利要求1至6中的任一權(quán)利要求所述的方法,其中所述多個并行處理器是按整數(shù)O至2n-l的編索引集合,對于i = O,1,…,d-Ι,所述多個處理器中被指派為在被編索引為i的所述多個層之一處理所述數(shù)據(jù)組塊的處理器的數(shù)目是11/21,并且n/2i個所述多個并行處理器的所述索引是具有以I跟隨有i個零為結(jié)束的、長度為(d+Ι)的標(biāo)準(zhǔn)二進制表示的n/2i個編號。
9.根據(jù)前述權(quán)利要求中的任一權(quán)利要求所述的方法,還包括與所述設(shè)計結(jié)合將所述轉(zhuǎn)換函數(shù)選擇為將向左移位至少一位的循環(huán)移位應(yīng)用于所述多個處理器的所述索引的標(biāo)準(zhǔn)二進制表示。
10.一種用于在多個初始化步驟之后充分利用多個并行處理器的集合、以在計算環(huán)境中對數(shù)據(jù)組塊序列執(zhí)行任務(wù)的系統(tǒng),其中所述數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在若干時間步驟中且被多個層處理,所述多個層在所述時間步驟中的每個時間步驟被多個處理器中的至少一個處理器處置,所述系統(tǒng)包括: 在所述計算環(huán)境中可操作的處理器設(shè)備,其中所述處理器設(shè)備適于: 將所述多個并行處理器的所述集合根據(jù)所述多個并行處理器的所述集合的索引分割成不相交子集,從而所述不相交子集中的每個不相交子集的大小對應(yīng)于被指派為在所述多個層之一處理所述數(shù)據(jù)組塊的所述多個處理器的數(shù)目,根據(jù)所述分割向在所述數(shù)據(jù)組塊中的不同數(shù)據(jù)組塊中的所述多個層中的不同層指派所述多個處理器中的每個處理器,從而所述多個處理器中的每個處理器忙碌、并且所述數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在數(shù)目等同于所述多個層的數(shù)目的所述時間步驟內(nèi)被完全處理,以及設(shè)計從所述多個并行處理器的所述集合在所述時間步驟之一的所述索引到所述多個并行處理器的所述集合在后繼時間步驟的所述索引的轉(zhuǎn)換函數(shù),其中所述轉(zhuǎn)換函數(shù)與所述指派相一致。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述多個處理器中被指派為在所述多個層之一處理所述數(shù)據(jù)組塊的 處理器的數(shù)目小于所述多個處理器中被指派為在所述多個層的先前層處理所述數(shù)據(jù)組塊的處理器的數(shù)目。
12.根據(jù)權(quán)利要求10或者11所述的系統(tǒng),其中所述處理器設(shè)備還適于使所述轉(zhuǎn)換函數(shù)受到多個約束。
13.根據(jù)權(quán)利要求10至12中的任一權(quán)利要求所述的系統(tǒng),其中所述多個約束包括將在所述時間步驟中的每個時間步驟的所述多個處理器中的至少一個處理器限制于所述多個層中被指派為處理所述數(shù)據(jù)組塊的相同層。
14.根據(jù)權(quán)利要求12所述的系統(tǒng),其中所述多個約束包括將所述多個并行處理器中被指派為在所述多個層中并非第一層的層處理所述數(shù)據(jù)組塊的處理器集合限制為所述多個并行處理器的所述集合中被指派為在所述多個層中的先前層處理所述數(shù)據(jù)組塊的子集。
15.根據(jù)權(quán)利要求10至14中的任一權(quán)利要求所述的系統(tǒng),其中所述多個并行處理器中可用的處理器的數(shù)目是n = 2d-l,其中d是所述多個層的數(shù)目,所述多個處理器中向級O指派的處理器的數(shù)目是n = 2d-l,并且所述多個處理器中被指派為在所述多個層中并非第一層的一層處理所述數(shù)據(jù)組塊的處理器的數(shù)目是所述多個處理器中被指派為在所述多個層中的先前層處理所述數(shù)據(jù)組塊的處理器的數(shù)目的一半。
16.根據(jù)權(quán)利要求10至14中的任一權(quán)利要求所述的系統(tǒng),其中所述多個并行處理器是按整數(shù)O至2n-2的編索引集合,對于i = 0,1,…,d-Ι,所述多個處理器中被指派為在被編索引為i的所述多個層之一處理所述數(shù)據(jù)組塊的處理器的數(shù)目是11/21,并且11/^個所述多個并行處理器的所述索引是具有以O(shè)跟隨有i個一為結(jié)束的、長度為(d+Ι)的標(biāo)準(zhǔn)二進制表不的n/21個編號。
17.根據(jù)權(quán)利要求10至14中的任一權(quán)利要求所述的系統(tǒng),其中所述多個并行處理器是按整數(shù)O至2n-l的編索引集合,對于i = O,1,…,d-Ι,所述多個處理器中被指派為在被編索引為i的所述多個層之一處理所述數(shù)據(jù)組塊的處理器的數(shù)目是11/21,并且11/^個所述多個并行處理器的所述索引是具有以I跟隨有i個零為結(jié)束的、長度為(d+Ι)的標(biāo)準(zhǔn)二進制表不的n/21個編號。
18.根據(jù)權(quán)利要求10至17中的任一權(quán)利要求所述的系統(tǒng),其中所述處理器設(shè)備還適于與所述設(shè)計結(jié)合將所述轉(zhuǎn)換函數(shù)選擇為將向左移位至少一位的循環(huán)移位應(yīng)用于所述多個處理器的所述索引的標(biāo)準(zhǔn)二進制表示。
19.一種用于在多個初始化步驟之后充分利用多個并行處理器的集合、以在計算環(huán)境中由處理器設(shè)備對數(shù)據(jù)組塊序列執(zhí)行任務(wù)的計算機程序產(chǎn)品,其中所述數(shù)據(jù)組塊中的每個數(shù)據(jù)組塊在若干時間步驟中且被多個層處理,所述多個層在所述時間步驟中的每個時間步驟被多個處理器中的至少一個處理器處置,所述計算機程序產(chǎn)品包括: 計算機可讀存儲介質(zhì),可由處理電路讀取并且存儲有指令,所述指令用于由所述處理電路執(zhí)行以用于執(zhí)行根據(jù)權(quán)利要求1至9中的任一權(quán)利要求所述的方法。
20.一種在計算機可讀介質(zhì)上存儲并且可向數(shù)字計算機的內(nèi)部存儲器中加載的計算機程序產(chǎn)品,包括軟件代碼部分,所述軟件代碼部分在所述程序在計算機上被運行時用于執(zhí)行根據(jù)權(quán)利要求1至9中 的任一權(quán)利要求所述的方法。
【文檔編號】G06F15/16GK104081378SQ201380007148
【公開日】2014年10月1日 申請日期:2013年1月17日 優(yōu)先權(quán)日:2012年1月30日
【發(fā)明者】M·赫希, S·T·克萊因, Y·托夫 申請人:國際商業(yè)機器公司