專利名稱:用于概率計算機的超標量控制的制作方法
技術(shù)領(lǐng)域:
本公開涉及數(shù)據(jù)處理系統(tǒng)的架構(gòu),更特別地,涉及數(shù)據(jù)處理系統(tǒng)中計算的調(diào)度。聯(lián)邦贊助研究聲明
本發(fā)明的完成得到了國防高級研究計劃局(DARPA)給予的FA8750-07-C-0231下的政府支持。政府具有本發(fā)明的某些權(quán)利。
背景技術(shù):
在數(shù)字處理器的架構(gòu)中,存在至少兩種用于實現(xiàn)指令級并行的方案。一種方案稱為超長指令字(VLIW),將任務(wù)(onus)置于編譯器上以確定程序中的哪些指令可以并行執(zhí)行。這在編譯時確定。在第二種方案中,專用超標量控制器置于芯片本身上。該超標量控制器在運行時確定哪些指令可以并行執(zhí)行。盡管VLIW方案仍用于某些特定應(yīng)用中,但是對于通用處理諸如因特爾或AMD的處理器而言,超標量方案已經(jīng)變得更流行。如今,大量計算機時間主要用于實施貝葉斯公式以計算概率。例如,有在線的內(nèi)容分發(fā)服務(wù),其執(zhí)行應(yīng)用以用于預(yù)測消費者可能高度評級的內(nèi)容,已知消費者先前已經(jīng)對內(nèi)容進行了評級。類似地,存在零售服務(wù),其執(zhí)行應(yīng)用以用于預(yù)測消費者可能想要購買什么產(chǎn)品,已知消費者以前已經(jīng)購買過該產(chǎn)品。于是,有搜索引擎嘗試基于檢索歷史來預(yù)測什么鏈接可能相關(guān)。這些應(yīng)用實質(zhì)上已知在先事件的發(fā)生,計算條件概率,即事件的概率。其他概率應(yīng)用包括用于猜測如何將網(wǎng)頁從一種語言翻譯到另一種語言的方法。在通信領(lǐng)域,當例如蜂窩電話中的嵌入和移動應(yīng)用基于所接收的帶噪聲的信號預(yù)測最初發(fā)射了哪些比特時,發(fā)生概率計算。在機器人技術(shù)中,存在用于預(yù)測穿過困難地形的最可能最佳路徑的應(yīng)用。常規(guī)編程技術(shù)和語言致力于確定性問題的解。雖然這種語言和技術(shù)可以成功地解決概率問題,但是這樣做會是笨拙且低效的。意識到這一點,已經(jīng)出現(xiàn)了概率編程語言的學(xué)術(shù)復(fù)興。概率編程語言的早期示例是IBAL,其由Avi Pfeffer在1997年創(chuàng)建。已知語言包括 Alchemy、Bach、Blaise、Church、CILog2、CP-Logic> Csoft、DBLOG> Dyna、Factorie、Infer. NET、PyBLOG, IBAL、PMTK, PRISM、ProbLog、ProBT, R 和 S+。近來,研究人員已經(jīng)開始發(fā)明電子電路來更高效地運行概率程序。操作中電子電路已經(jīng)能夠高效執(zhí)行的是馬爾可夫鏈式蒙特卡羅和置信傳播。
發(fā)明內(nèi)容
在概率計算的過程中,時常有可以獨立于其他操作執(zhí)行的操作。通過同時,即并行地執(zhí)行這些操作,可以改善性能。出現(xiàn)的困難在于精確識別哪些操作可以并行執(zhí)行,并且進行安排以使計算資源可用于執(zhí)行那些操作。廣義上說,這是調(diào)度器的功能。為了使調(diào)度器適當?shù)貓?zhí)行其功能,應(yīng)能夠確定哪些操作可以并行執(zhí)行,以及什么硬件資源可用于執(zhí)行那些計算。一旦知曉了這兩者,就可以指示適當?shù)挠布?zhí)行適當?shù)牟僮鳌C绹R時申請No. 61/24,740公開了通過利用DMPL (分布式數(shù)學(xué)編程語言)產(chǎn)生因子圖形的模型并且對圖形中的節(jié)點到芯片上的硬件元件的映射強加某些約束而確定的調(diào)度。這將預(yù)定調(diào)度束縛到特定硬件配置。如果硬件配置被改變,那么調(diào)度將不再適用。前述應(yīng)用假定了一組特定操作將在具有固定硬件配置的系統(tǒng)上執(zhí)行。在一些情況下,調(diào)度可能改變到同時操作的不同序列。例如,一序列同時操作可以 儲存在定序器所適用的數(shù)據(jù)表中,類似于VLIW處理器使用一系列指令的情況,其中每個指令編碼將由多個功能單元同時執(zhí)行的多個操縱。在這種情況下,調(diào)度器將在在特定硬件配置上并行執(zhí)行指令的時間之前產(chǎn)生調(diào)度。然而,調(diào)度仍將束縛到特定硬件配置。另一方案基于如下認識,即在概率處理系統(tǒng)中,可以動態(tài)地調(diào)度操作的并行執(zhí)行。根據(jù)本發(fā)明的調(diào)度器因此可以確定什么硬件可用于執(zhí)行各種處理操作以及在運行時產(chǎn)生合適的調(diào)度用于并行地實施操作。例如,調(diào)度器可以被識別將要執(zhí)行的操作序列的數(shù)據(jù)表驅(qū)動,在該情況下調(diào)度器控制利用可用硬件同時執(zhí)行操作。在一方面,本發(fā)明呈現(xiàn)為一種在概率處理系統(tǒng)中并行執(zhí)行操作的方法,所述方法包括提供用于執(zhí)行所述操作的概率處理器;以及提供調(diào)度器用于從所述操作中識別能并行執(zhí)行的那些操作。提供所述調(diào)度器包括編譯以概率編程語言編寫的代碼,所述代碼包括建模指令和用于調(diào)度的指令。該方法的實踐包括如下方法其中提供所述調(diào)度器包括提供在所述操作中賦予順序的調(diào)度器;其中提供所述調(diào)度器包括提供在多種調(diào)度方法中的各種方法之間進行選擇的調(diào)度器;其中提供所述調(diào)度器包括提供從一組調(diào)度方法中隨機選擇調(diào)度方法的調(diào)度器;其中提供所述調(diào)度器包括提供隨機選擇因子圖形中的邊并且隨機選擇與所述邊相關(guān)聯(lián)的方法的調(diào)度器;以及其中提供所述調(diào)度器包括提供隨機選擇因子圖形中的節(jié)點并且更新入射在所述節(jié)點上的邊上的消息的調(diào)度器。另一方面,本發(fā)明呈現(xiàn)為一種制造物品,其包括計算機可讀介質(zhì),該介質(zhì)具有編碼于其上的軟件,該軟件用于執(zhí)行前述方法的任意組合。在又一方面,本發(fā)明呈現(xiàn)為一種數(shù)據(jù)處理系統(tǒng),其配置為執(zhí)行軟件以用于實施前述方法的任意組合。本發(fā)明的這些和其他特征將從下面的詳細描述和附圖變得顯然,如圖中
圖I示出鏈式圖;圖2示出鏈式圖的例示;圖3示出格柵圖形;以及圖4示出格柵圖形的例示,具有用于使消息能控制交織互聯(lián)的通路。
具體實施例方式實施概率計算的一種方式是實現(xiàn)因子圖形模型,其中約束節(jié)點和函數(shù)節(jié)點交換消息。通常,因子圖形在某一狀態(tài)下開始操作,然后在多次迭代的過程中弛豫到代表解(solution)的第二狀態(tài)。在努力使因子圖形更快弛豫時,有用的是調(diào)度消息傳輸。調(diào)度消息傳輸?shù)囊环N方式,其也稱為“殘余置信傳播”,是檢查特定消息的最后兩次發(fā)送。如果消息在那兩次發(fā)送之間顯著地改變,那么該消息在下一個消息傳遞迭代時優(yōu)先更新。未改變的消息一般不會頻繁傳輸,因為它們的優(yōu)先級低。在該方法中,通過僅優(yōu)先傳輸已經(jīng)顯著改變的那些消息,節(jié)省了時間。另一種調(diào)度方法,其可視為殘余置信傳播的變體,是“殘余濺散(residualsplash)”法。在殘余濺散法中,給定節(jié)點的“濺散”是形成子圖形的一組節(jié)點。該子圖形定義以該節(jié)點為其根的樹。殘余濺散調(diào)度法以濺散的殘余對濺散進行分類,并且更新具有最 大殘余的那些濺散的節(jié)點。在它們的執(zhí)行期間,概率程序通常消耗大量計算資源。概率程序頻繁執(zhí)行在標準桌面計算機或者標準X86處理器集群上。這些標準平臺旨在執(zhí)行確定性程序。結(jié)果,它們的計算資源常不符合要求。這往往限制了能在已有硬件平臺上運行的概率程序的大小和復(fù)雜度。上述標準處理器架構(gòu)的替選是概率處理器。概率處理器將使用專用硬件高效地運行概率程序。盡管概率處理器可能不一定是完全圖靈型,且盡管這種處理器可能未被優(yōu)化以用于執(zhí)行諸如Microsoft Word的應(yīng)用的計算,但是對于執(zhí)行概率程序而言這種處理器將會比常規(guī)處理器快三個數(shù)量級那么多。這種概率處理器與調(diào)度器組合地運行。該調(diào)度器與概率處理器的關(guān)系類似于超標量控制器與常規(guī)處理器之間的關(guān)系。二者都旨在識別可以并行執(zhí)行的操作,致力于更高效地使用可用資源。調(diào)度器的一個功能是對圖形模型或生成模型中的計算賦予順序。調(diào)度器的另一功能是決定哪些消息應(yīng)被處理,哪些消息應(yīng)被丟棄。當概率程序定義巨大或者甚至無限大概率圖形模型并且概率處理器僅有有限的能力用于執(zhí)行該圖形所需的概率消息傳遞或者變量采樣計算時,這是尤其重要的。在一實施例中,調(diào)度器是預(yù)選定的調(diào)度方法的硬件實現(xiàn)。例如,一種這樣的調(diào)度器是上述殘余濺散法的硬件實現(xiàn)。由于不同的調(diào)度對于不同的概率圖形模型而言有意義,所以調(diào)度器理想地能夠高效地運行多種調(diào)度方法。例如,盡管殘余濺散方法是一種用于調(diào)度消息傳輸?shù)姆椒ǎ撬皇窃谒协h(huán)境下都是理想的。因此,在一實施例中,調(diào)度器是一種更通用的計算機器,其并不專注于調(diào)度方法的特定選擇。為了實現(xiàn)選擇性選取不同調(diào)度方法的調(diào)度器,對于概率編程語言而言有用的是允許利用該語言定義調(diào)度和推理模型二者。在一種實現(xiàn)中,編程者將調(diào)度方法寫為概率程序本身的一部分,或者包括提供調(diào)度方法的DMPL (“分布式數(shù)學(xué)編程語言”)庫。DMPL更詳細地描述于 2010 年 I 月 13 日提交的題為“ Implementation of Factor GraphCircuitryIA美國臨時申請61/294,740中。
概率程序內(nèi)包括調(diào)度的優(yōu)點有很多。例如,當調(diào)度包括在概率程序中時,不需要將調(diào)度方法的特定選擇硬傳送到概率處理器中。這使得調(diào)度方法能夠被更佳方法替代,如果創(chuàng)造了一種方法用于特定種類的圖形的話。概率程序內(nèi)包括調(diào)度的另一優(yōu)點在于編程者對調(diào)度具有更多控制。這允許編程者提高概率程序運行時的收斂速度。又一優(yōu)點是編程者根本不需要知曉調(diào)度,而可以簡單地從庫中調(diào)用調(diào)度器方法。這使得寫概率程序更快且更容易。最后,將調(diào)度方法包含到概率編程中的能力本身增強了開發(fā)者團體內(nèi)的協(xié)作,因為調(diào)度方法于是將如概率程序那樣容易在開發(fā)者之間共享。調(diào)度方法從DMPL “編譯”成用于概率處理器的調(diào)度器。一旦被編譯,調(diào)度器就發(fā)送控制消息,控制消息導(dǎo)致概率概率處理器上正在執(zhí)行的圖形模型中的消息計算的排序。一實施例對于調(diào)度鏈式圖形而言是有用的。典型的鏈式圖形包括與約束節(jié)點交替的變量節(jié)點的線性鏈,如圖I所示。所示鏈式圖形中的變量節(jié)點實現(xiàn)為軟等于門(soft-equals gate)。某些變量節(jié)點連接到存儲器元件。在這種情況下,該節(jié)點的選擇觸 發(fā)到該存儲器元件的存儲器訪問。調(diào)度器選擇消息用于計算。如果需要,必要的硬件被例示,如圖2所示。對于鏈式圖形,調(diào)度器是環(huán)形計數(shù)器,其通過圖形中的一列節(jié)點來建立索引。該列將圖形中的節(jié)點從左到右排列。當節(jié)點被選擇用于計算時,其入站消息被從存儲器抓取并輸入到電路元件中。然后電路元件在計算用于該節(jié)點的出站消息時使用這些入站消息。在另一實施例中,圖形中的每個節(jié)點被預(yù)映射到硬件中的特定計算元件。結(jié)果,當該節(jié)點被選擇用于更新時,調(diào)度器知曉哪個硬件元件應(yīng)計算該更新。該方法更詳細地描述于 2010 年 I 月 13 日提交的題為 “Implementation of Factor Graph Circuitry” 的美國申請No. 61/294,740中,其內(nèi)容通過引用合并于此。在該實施例中,校驗器在編譯時確認所建議的調(diào)度將不會導(dǎo)致單個硬件元件同時用于兩個不同的計算。在另一實施例中,圖形中的節(jié)點在運行時映射到電路元件。這樣做的一種方式是對于調(diào)度器保持可用于計算的可用硬件元件的存儲器堆棧(stack)。當硬件元件在使用中時,其索引離開堆棧。當它變得可用于計算時,其索引被推回到堆棧上。只要在調(diào)度器需要計算元件來計算圖形節(jié)點時,它就分配堆棧上面的任何硬件元件來執(zhí)行該計算。在調(diào)度器的又一實施例中,比特掩碼包括分配到每個計算元件的比特。比特的狀態(tài)指示該計算元件是空閑還是忙碌。調(diào)度器選擇硬件計算元件,不論它是否空閑。沖突校驗器然后檢查掩碼并確定所選擇的計算元件是否空閑。如果計算元件忙碌,那么沖突校驗器生成錯誤,調(diào)度器再次嘗試另一計算元件。在一些情況下,待實現(xiàn)的圖形中的節(jié)點定義格柵,如圖3所示。這樣的圖形包括用“=”指示的變量節(jié)點和用“ + ”指示的約束節(jié)點,以及連接變量節(jié)點和約束節(jié)點的邊
(edge)ο調(diào)度器的另一實施例提供用于調(diào)度具有固定結(jié)構(gòu)的復(fù)雜環(huán)狀圖形的調(diào)度,諸如用于低密度部分校驗(LDPC)糾錯解碼的調(diào)度。這樣的調(diào)度器描述于2009年3月2日提交的美國臨時申請No. 61/156,792和2010年I月10日提交的美國臨時申請No. 61/293,999中,二者均題為“Belief Propagation Processor”,其內(nèi)容通過引用合并于此。將這樣的調(diào)度器編譯到硬件中以及檢查所得硬件的沖突描述于美國申請No. 61/294,740中。在一實施例中,調(diào)度方法本身是隨機方法且因此通過概率程序適當?shù)乇磉_。一種這樣的調(diào)度方法包括隨機選擇模型中的邊并且隨機選擇該邊上的方向。接著是更新沿隨機選擇的方向指向的隨機選擇的邊上的消息。結(jié)果,每個消息與任意其他消息一樣可能被選中。本質(zhì)上,這導(dǎo)致模型中的全部消息上的均勻概率分布。另一種隨機調(diào)度方法是隨機選擇因子圖形中的約束節(jié)點,然后更新入射在該約束節(jié)點上的所有邊上的消息的方法。類似地,另一隨機調(diào)度方法從因子圖形隨機選擇變量節(jié)點,諸如等于門,然后更新入射在該變量節(jié)點上的所有邊。又一隨機調(diào)度方法包括隨機選擇變量節(jié)點,并且通過Gibbs采樣來更新對應(yīng)的變量。隨機調(diào)度方法的另一示例是隨機殘余置信傳播法。在該方法中,殘余,其對應(yīng)于消息和置信的改變,被歸一化以形成概率分布。然后,對象,其可以是節(jié)點、邊或消息,被從該分布隨機選中。這確保了平均而言具有最高殘余的對象將更頻繁地更新。然而,還確保了具有更小殘余的對象將偶爾更新。隨機調(diào)度方法的第二示例是隨機殘余濺散法。在該方法中,濺散的殘余被歸一化以形成概率分布。然后,濺散被隨機地從該分布隨機選中,該濺散中的全部對象被更新。這 確保了平局而言具有最高殘余的對象將更頻繁地更新。然而,這還確保了具有更小殘余的對象將偶爾更新。隨機調(diào)度方法的第三示例是隨機可能性大小置信傳播法。在該調(diào)度方法中,來自最近迭代的模型中的消息的可能性大小被歸一化以形成概率分布。在下一次迭代中,對象(節(jié)點、邊、消息或濺散)被從該分布隨機選中。這確保了平均而言具有最大可能性大小(最大確定度)的對象將被更頻繁地更新。這還確保了具有更小可能性大小的對象將偶爾被選中。隨機調(diào)度方法的第四示例是隨機可能性置信傳播法。在該調(diào)度方法中,來自最近迭代的消息的可能性被歸一化一形成概率分布。在下一次迭代中,對象(節(jié)點、邊、消息或濺散)被從該分布隨機選中,并被更小。這確保了平均而言具有最大可能性(最大確定度)的對象將被更頻繁地更新。這還確保了具有更小可能性大小的對象將偶爾被選中。在前述方法的每個的變體中,分布可以被采樣而沒有被歸一化。第三和第四示例的變體還包括隨機小可能性大小調(diào)度法,其中被選中的對象的概率反關(guān)聯(lián)到其可能性或可能性大小。這導(dǎo)致更小確定性的對象被更頻繁地調(diào)度以用于更新。在一實施例中,概率處理器是可編程陣列隨機消息傳遞門(用于馬爾可夫鏈式蒙特卡羅或Gibbs采樣),調(diào)度器方法是隨機方法,其在程序運行時從預(yù)定義或推理的概率分布對調(diào)度進行采樣。結(jié)果,調(diào)度方法本身是概率程序。在調(diào)度器方法是隨機方法的情況下,調(diào)度器的在消息上的概率分布定義圖形中的任何給定消息將被計算的概率。如果該分布是均勻的,那么調(diào)度將完全隨機。然而,如果該分布分配更大概率到某些消息,那么調(diào)度器將更可能選擇那些消息用于計算。在一些情況下,盡管一些同時操作易于識別,但是難以識別可能在一序列操作中的所有同時操作。對于這種情況,有用的是在編譯時識別大多數(shù)難以發(fā)現(xiàn)的同時操作,并且在運行時識別剩余的同時操作。在另一實施例中,調(diào)度器是通用圖靈機,其運行調(diào)度方法并控制消息計算機器。在又一實施例中,調(diào)度器包括隨機邏輯器,其運行調(diào)度方法并控制消息計算機器。隨機邏輯器實現(xiàn)為模擬邏輯器、數(shù)字軟門、通用圖靈機或者任意其他類型的計算硬件。已經(jīng)描述了本發(fā)明及其優(yōu)選實施例,主張為新穎的且通過專利證書保護的本發(fā)明定義于所附權(quán)利要求及其等價物中?!?br>
權(quán)利要求
1.一種在概率處理系統(tǒng)中并行執(zhí)行操作的方法,所述方法包括 提供用于執(zhí)行所述操作的概率處理器;以及 提供調(diào)度器用于從所述操作中識別能并行執(zhí)行的那些操作; 其中,提供所述調(diào)度器包括編譯以概率編程語言編寫的代碼,所述代碼包括建模指令和用于調(diào)度的指令。
2.如權(quán)利要求I所述的方法,其中,提供所述調(diào)度器包括提供在所述操作中賦予順序的調(diào)度器。
3.如權(quán)利要求I所述的方法,其中,提供所述調(diào)度器包括提供在多種調(diào)度方法中的各種方法之間進行選擇的調(diào)度器。
4.如權(quán)利要求I所述的方法,其中,提供所述調(diào)度器包括提供從一組調(diào)度方法中隨機選擇調(diào)度方法的調(diào)度器。
5.如權(quán)利要求I所述的方法,其中,提供所述調(diào)度器包括提供隨機選擇因子圖形中的邊并且隨機選擇與所述邊相關(guān)聯(lián)的方向的調(diào)度器。
6.如權(quán)利要求I所述的方法,其中,提供所述調(diào)度器包括提供隨機選擇因子圖形中的節(jié)點并且更新入射在所述節(jié)點上的邊上的消息的調(diào)度器。
7.如權(quán)利要求I所述的方法,進一步被權(quán)利要求2-6中所述的限制的任意組合所限定。
8.一種計算機可讀介質(zhì),具有編碼于其上的軟件,該軟件用于執(zhí)行權(quán)利要求1-6中所述的方法中的任意一種。
9.一種數(shù)據(jù)處理系統(tǒng),配置為執(zhí)行軟件以用于實施權(quán)利要求1-6中所述的方法中的任意一種。
全文摘要
一種在概率處理系統(tǒng)中并行執(zhí)行操作的方法,包括提供用于執(zhí)行所述操作的概率處理器;以及提供調(diào)度器以用于從所述操作中識別能并行執(zhí)行的那些操作。提供所述調(diào)度器包括編譯以概率編程語言編寫的代碼,所述代碼包括建模指令和用于調(diào)度的指令。
文檔編號G06F9/44GK102893255SQ201180019619
公開日2013年1月23日 申請日期2011年2月22日 優(yōu)先權(quán)日2010年2月22日
發(fā)明者B·維格達 申請人:美國亞德諾半導(dǎo)體公司