專利名稱:并行化的約束滿足問題解算機(jī)中的無(wú)鎖狀態(tài)合并的制作方法
并行化的約束滿足問題解算機(jī)中的無(wú)鎖狀態(tài)合并祖旦 疼尿諸如處理器、存儲(chǔ)器和存儲(chǔ)等硬件方面的技術(shù)進(jìn)步持續(xù)地?fù)?dān)當(dāng)用于創(chuàng)建更大且更復(fù)雜的、通過處理許多不同類型的媒體數(shù)據(jù)類型(例如,語(yǔ)音、文本和視頻)來提供更豐富的用戶體驗(yàn)的軟件應(yīng)用程序、開發(fā)程序等的催化劑。在單處理器系統(tǒng)中這些廠商所依靠的硬件支持可能是遙遠(yuǎn)的,因?yàn)榕c摩爾定律相關(guān)聯(lián)的歷史上的電路高速發(fā)展(speedup)不再看上去是可容易地獲得的。 摩爾定律的原理方面是通常由于設(shè)備制造方面的技術(shù)進(jìn)步,芯片上的晶體管數(shù) 量將約每十八個(gè)月翻倍一次。歷史上,當(dāng)這實(shí)現(xiàn)時(shí),處理器時(shí)鐘速度也可被提 高。然而,現(xiàn)在與更緊密地壓縮的晶體管相關(guān)聯(lián)的熱密度太高以致于提高時(shí)鐘 速度意味著無(wú)法高效且有效地散熱。因此,更小的設(shè)備不再直接轉(zhuǎn)換成更快且 更涼快運(yùn)行的機(jī)器。正在利用的一種替換方案是簡(jiǎn)單地采用更多的設(shè)備。換言之,例如,在處 理器領(lǐng)域,設(shè)計(jì)并行或多處理器系統(tǒng)以適應(yīng)軟件需求。然而,并行處理系統(tǒng)需 要用于處理算法或計(jì)算線程處理的復(fù)雜的協(xié)調(diào)技術(shù)。約束解決在測(cè)試這些協(xié)調(diào)技術(shù)時(shí)是有用的。然而,傳統(tǒng)順序算法眾所周知地難以按有效地利用所有可用 共享存儲(chǔ)器的并行處理器的方式來重構(gòu)。諸如布爾可滿足性(SAT)解算機(jī)等約束滿足問題(CSP)解算機(jī)對(duì)于先 前的觀察結(jié)果也絕不例外。通常,順序CSP解算機(jī)具有包括部分解(對(duì)約束變 量中的某一些的賦值)的當(dāng)前狀態(tài),該解算機(jī)試圖從該當(dāng)前狀態(tài)移至具有通過 對(duì)一個(gè)或多個(gè)當(dāng)前未賦值的變量賦值來創(chuàng)建的增廣解的新狀態(tài)。該新的賦值可 通過約束的傳播來引起其他賦值。約束的傳播進(jìn)而可導(dǎo)致檢測(cè)到肯定是部分完 成的、必須被改變?yōu)樾沦x值并重新傳播的當(dāng)前賦值中的沖突(為了解除沖突)。在并行處理系統(tǒng)中,該問題解決制度的并行實(shí)現(xiàn)必然具有以剛剛描述的方式傳播約束的若干并行計(jì)算。問題是將若干無(wú)沖突解算機(jī)狀態(tài)合并(后傳播) 成單個(gè)無(wú)沖突解算機(jī)狀態(tài)。概述以下呈現(xiàn)了本發(fā)明的簡(jiǎn)化概述,以提供對(duì)所公開的本發(fā)明的某些方面的基 本理解。該概述不是詳盡的概覽,它不旨在標(biāo)識(shí)關(guān)鍵/重要的元素,也不旨在描 繪其范圍。其唯一的目的是以簡(jiǎn)化的形式來介紹一些概念,作為稍后提出的更為詳細(xì)的描述的序言。所公開的體系結(jié)構(gòu)提供了對(duì)通用約束滿足問題(CSP)解算機(jī)中的并行處 理的支持。解算機(jī)的計(jì)算線程的狀態(tài)被表示為一組支持圖。各組支持圖是經(jīng)常是通用CSP解算機(jī)的重要組件的真值維護(hù)系統(tǒng)(TMS)的高效實(shí)現(xiàn)中的已識(shí)別機(jī)制。如此處所描述的,支持圖通過以成對(duì)的方式來合并這些圖從而產(chǎn)生新 的無(wú)沖突圖來以新方式使用。這允許通過在多個(gè)新賦值上映射約束的并行傳播 并通過合并從多個(gè)傳播所得的狀態(tài)來歸約到新問題解算機(jī)狀態(tài)(具有更多賦值的變量)來構(gòu)造CSP解算機(jī)。該體系結(jié)構(gòu)一般可應(yīng)用于具有特定形式特性的任 何CSP解算機(jī)。例如,在一個(gè)實(shí)現(xiàn)中,該體系結(jié)構(gòu)可特別地在布爾可滿足性 (SAT)解算機(jī)的上下文中應(yīng)用。此處所公開和所要求保護(hù)的體系結(jié)構(gòu)包括便于解算機(jī)處理的計(jì)算機(jī)實(shí)現(xiàn) 的系統(tǒng)。該系統(tǒng)包括用于將計(jì)算線程的輸入解算機(jī)狀態(tài)表示為一組圖的薄記組 件。合并組件執(zhí)行該組圖中的至少兩個(gè)輸入圖到表示計(jì)算線程的最終狀態(tài)的合 并圖的成對(duì)合并。為了實(shí)現(xiàn)前述及相關(guān)目的,在這里結(jié)合下列描述及附圖來描述所公開的本 發(fā)明的某些說明性方面。然而,這些方面僅指示了其中可利用此處公開的原理 的各種方法中的少數(shù)幾種,且旨在包括所有這些方面及其等效方面。結(jié)合附圖 閱讀下面的詳細(xì)描述,則其他優(yōu)點(diǎn)和新穎特征將變得清楚。附圖簡(jiǎn)述
圖1示出了根據(jù)并行實(shí)現(xiàn)的便于解算機(jī)處理的系統(tǒng)。 圖2示出了根據(jù)本發(fā)明的處理解算機(jī)狀態(tài)的方法。圖3示出了采用學(xué)習(xí)和推理來推斷對(duì)答案賦值的猜測(cè)的替換并行解算機(jī) 系統(tǒng)。圖4示出了從示例性約束傳播過程中導(dǎo)出的(L,/0演繹圖。圖5示出了用于處理從圖4的支持圖輸出的沖突約束的新的圖。圖6示出了準(zhǔn)備并合并兩個(gè)支持圖的方法。圖7示出了用于成對(duì)合并過程的削減兩個(gè)輸入支持圖的方法。圖8示出了處理合并圖的沖突的方法。圖9示出了削減支持圖并將其合并成順序SAT解算機(jī)的最終合并的無(wú)沖 突圖的方法。圖10示出了削減支持圖并將其合并成并行SAT解算機(jī)的最終合并的無(wú)沖 突圖的方法。圖11示出了將本發(fā)明的解算機(jī)狀態(tài)處理應(yīng)用于多核處理系統(tǒng)的系統(tǒng)的圖。圖12示出了將根據(jù)本發(fā)明的解算機(jī)狀態(tài)處理應(yīng)用于多核多處理器系統(tǒng)的 系統(tǒng)的圖。圖13示出了將根據(jù)本發(fā)明的解算機(jī)狀態(tài)處理應(yīng)用于跨各單獨(dú)計(jì)算系統(tǒng)的 解算機(jī)狀態(tài)處理的系統(tǒng)的圖。圖14示出了將應(yīng)用程序的真值維護(hù)系統(tǒng)和推斷引擎用作大型搜索空間中 的問題解算機(jī)的CSP解算機(jī)系統(tǒng)的圖。圖15示出了可用于采用所公開的并行化的解算機(jī)狀態(tài)體系結(jié)構(gòu)的計(jì)算系 統(tǒng)的框圖。圖16示出了可利用根據(jù)所公開的本發(fā)明的并行化的解算機(jī)處理的示例性 計(jì)算環(huán)境的示意性框圖。詳細(xì)描述所公開的體系結(jié)構(gòu)提供了對(duì)于常規(guī)上已眾所周知地難以甚至作為順序問 題來解決的共享存儲(chǔ)器的并行處理器系統(tǒng)的解決方案。本發(fā)明提供了并行約束 滿足問題(CSP)解算機(jī)中的無(wú)鎖狀態(tài)合并。解算機(jī)的計(jì)算線程的狀態(tài)被表示 為一組支持圖。(為了簡(jiǎn)化起見,在不會(huì)隨之發(fā)生混淆時(shí)將使用短語(yǔ)"支持圖" 而不是"一組支持圖"。)這些支持圖通過以描述無(wú)鎖的過程并產(chǎn)生新的無(wú)沖突 支持圖的成對(duì)方式合并這些圖來以新的方式使用。該體系結(jié)構(gòu)一般可應(yīng)用于其 中底層問題可歸納為布爾可滿足性的任何CSP解算機(jī),并且在一個(gè)具體實(shí)現(xiàn)中,該體系結(jié)構(gòu)可特別地在布爾可滿足性(SAT)解算機(jī)的上下文中應(yīng)用。在該SAT解算機(jī)的具體實(shí)現(xiàn)中,SAT解算機(jī)問題開始于以兩種方式中的 一種引起該問題的一組布爾公式。期望知道該公式是否始終為真。換言之,期 望確定該公式是否是定理。通過對(duì)任何公式取補(bǔ)(或反), 一等價(jià)問題是確定 該公式是否是可滿足的。即詢問,存在使該公式為真的變量賦值嗎?出于機(jī)械 化的目的,這可以是處理該問題的方式。它作為可滿足性問題而不是定理證明 問題來處理。在數(shù)字設(shè)計(jì)的空間中,期望知道布爾公式是否是定理。顯示否定式不是可 滿足的,而不是證明將顯示的公式是定理。布爾公式以諸如例如析取范式等正 則形式來呈現(xiàn)。析取范式是其中公式組是有窮的表示,并且在任一個(gè)公式中只 出現(xiàn)兩個(gè)邏輯連接符,目卩,求反符(邏輯NOT)和析取(或邏輯OR)。因此, 為了使原始問題(現(xiàn)在是正則形式)變?yōu)榭蓾M足的,存在確保這些析取公式為 真的變量賦值。正則形式的每一個(gè)公式被稱為子句。如此處所使用的,術(shù)語(yǔ)"子 句"也可指約束。通常在諸如CSP解算機(jī)等這些復(fù)雜領(lǐng)域中,不存在可用于導(dǎo)出甚至部分 解的分析方法。必須假設(shè)答案,這基本上是猜測(cè)。因此,初始假設(shè)一旦被程序 認(rèn)為是真就可隨著時(shí)間改變并在稍后被發(fā)現(xiàn)為假。因此,該程序具有基于稍后 被發(fā)現(xiàn)為假的假設(shè)來撤銷其可能已做出的推斷的問題。為了高效,該過程試圖 盡可能少地撤銷。由于為了展示可滿足性而猜測(cè)答案的部分賦值,SAT面臨剛剛描述的問 題。該猜測(cè)使得其他布爾變量答案由于新猜測(cè)的邏輯結(jié)果而被賦值。這一猜測(cè) 的結(jié)果是或者最終做出使得所有變量變?yōu)橐奄x值的一組成功的猜測(cè),或者所做 出的最后一次猜測(cè)導(dǎo)致此時(shí)放棄這些猜測(cè)中的一個(gè)的邏輯不一致性。常規(guī)上,可采用按時(shí)間順序的回溯來向后移動(dòng),從而選擇在某一時(shí)刻的一 個(gè)變量的值。該回溯可繼續(xù)直到變量沒有剩下供賦值的合法值。所公開的本發(fā)明通過提供撤銷最相關(guān)的假設(shè)(例如,只改變一個(gè)假設(shè)以及 對(duì)中間假設(shè)不做改變)的能力來采用"不按時(shí)間順序的"回溯。換言之,與其中 備份改變當(dāng)前位置和某一早先位置之間的所有節(jié)點(diǎn)的常規(guī)系統(tǒng)相反,該算法能 夠以任意路徑返回,挑選一個(gè)假設(shè)并且只改變?cè)摷僭O(shè)。相同的附圖標(biāo)記用于指代全文中相同的元 素。在以下描述中,為解釋起見,描繪了眾多具體細(xì)節(jié)以提供對(duì)本發(fā)明的全面 理解。然而,顯然,本發(fā)明可以在沒有這些具體細(xì)節(jié)的情況下實(shí)現(xiàn)。在其它情 況下,以框圖形式示出了公知的結(jié)構(gòu)和設(shè)備以便于描述它們。最初參考各附圖,圖1示出了根據(jù)并行實(shí)現(xiàn)的便于解算機(jī)處理的系統(tǒng)100。 系統(tǒng)100包括薄記組件102,其用于將與計(jì)算線程并行解算機(jī)的處理相關(guān)聯(lián)的 解算機(jī)狀態(tài)104 (表示為解算機(jī)狀態(tài)"解算機(jī)狀態(tài)2,…,解算機(jī)狀態(tài)N,其中N 是正整數(shù))表示為一組支持圖。解算機(jī)狀態(tài)104能夠以并行的方式從不同的系 統(tǒng)接收以供薄記組件102處理。薄記組件102將解算機(jī)狀態(tài)104處理成支持圖 以供后續(xù)合并。系統(tǒng)100還可包括合并組件106,其用于將該組支持圖中的至 少兩個(gè)輸入支持圖成對(duì)地合并成表示計(jì)算線程的最終狀態(tài)的合并圖。薄記和合并組件(102和106)對(duì)支持圖的操縱可以是同時(shí)的。換言之, 來自一個(gè)解算機(jī)的解算機(jī)狀態(tài)在處理來自另一個(gè)解算機(jī)的解算機(jī)狀態(tài)期間接收并處理。在一個(gè)實(shí)現(xiàn)中,薄記組件102從在計(jì)算線程上操作的并行CSP解算機(jī)接 收輸入解算機(jī)狀態(tài)104。如將在下文中更詳細(xì)地描述的,CSP解算機(jī)根據(jù)評(píng)估 點(diǎn)陣J和一組值D來定義,其中D和^是同一集合。在一更具體的替換實(shí)現(xiàn) 中,薄記組件102從在計(jì)算線程上操作的并行布爾SAT解算機(jī)接收輸入解算 機(jī)狀態(tài)104。在輸入解算機(jī)狀態(tài)104是來自在計(jì)算線程上操作的兩個(gè)并行SAT解算機(jī) 的情況下,合并組件102幫助將"個(gè)新的且不同的文字添加到丄完整的、尺一 致的演繹圖的"個(gè)副本中的每一個(gè),其中"是正整數(shù)。這也將在以下進(jìn)一步描 述。合并組件106在沒有循環(huán)的情況下以無(wú)鎖的方式將輸入解算機(jī)狀態(tài)合并 成合并圖,并消除合并圖中的沖突,由此輸出無(wú)沖突的圖108。對(duì)于無(wú)鎖處理,實(shí)現(xiàn)并行性的一種方式是具有處理并行線程處理的能力。 換言之,存在最終需要結(jié)果最終化(finalization)的多個(gè)并行線程。執(zhí)行并行線程處理的一種常規(guī)方式是第一線程簡(jiǎn)單地將其他線程鎖定在 某一共享數(shù)據(jù)結(jié)構(gòu)之外直到該第一線程已達(dá)到一結(jié)果。該第一線程對(duì)獲取與先前線程結(jié)果一致的結(jié)果的其他線程負(fù)有責(zé)任。
本發(fā)明通過提前一步并行地處理并且然后組合結(jié)果來避免常規(guī)鎖定。因
此,該方法是無(wú)鎖的,這表現(xiàn)在,因?yàn)榇嬖趍個(gè)獨(dú)立代理,其中m是正整數(shù), 所以每一個(gè)代理都提前一步并且為了獲得總答案,這些代理必須組合結(jié)果。在 該過程的中心, 一次組合兩個(gè)結(jié)果。
在合并支持圖時(shí),存在可能發(fā)生的若干不合乎需要的事情。第一,在兩個(gè) 圖之間發(fā)生沖突。換言之,變量x已在第一圖中被賦予一真值而另一圖中的同 一變量x具有賦值假。通過求解,合并這兩個(gè)圖并發(fā)現(xiàn)導(dǎo)致該沖突的一組假設(shè)。 一旦發(fā)現(xiàn),就撤回相關(guān)聯(lián)的假設(shè)或假設(shè)中的一個(gè)。
第二問題可能在一個(gè)圖中的賦值是假設(shè)而另 一個(gè)圖中的相同的賦值是通 過單項(xiàng)消解來導(dǎo)出的時(shí)候發(fā)生。如果現(xiàn)在試圖合并圖,則所得圖將展示循環(huán)。 為了解決,使用貪婪法以非常經(jīng)濟(jì)的方式來放棄假設(shè)。這將在下面將更詳細(xì)地 描述。
圖2示出了根據(jù)本發(fā)明的處理解算機(jī)狀態(tài)的方法。盡管出于解釋簡(jiǎn)明的目 的,此處例如以流圖或流程圖形式示出的一個(gè)或多個(gè)方法被示出并描述為一系 列動(dòng)作,但是可以理解和明白,本發(fā)明不受動(dòng)作的次序的限制,因?yàn)楦鶕?jù)本發(fā) 明,某些動(dòng)作可以按與此處所示并描述的不同的次序和/或與其它動(dòng)作同時(shí)發(fā) 生。例如,本領(lǐng)域技術(shù)人員將會(huì)明白并理解,方法可被替換地表示為一系列相 互關(guān)聯(lián)的狀態(tài)或事件,諸如以狀態(tài)圖的形式。而且,并非所有示出的動(dòng)作都是 實(shí)施根據(jù)本發(fā)明的方法所必需的。
在200,從并行解算機(jī)的解算機(jī)狀態(tài)中生成支持圖。在202,接收解算機(jī) 狀態(tài)的支持圖,該解算機(jī)狀態(tài)與計(jì)算線程的處理相關(guān)聯(lián)。在204,同時(shí)削減來 自每一個(gè)解算機(jī)的支持圖以合并具有相同文字的節(jié)點(diǎn)。在206,將支持圖成對(duì) 地合并成表示計(jì)算線程的最終狀態(tài)的合并的支持圖。在208,啟動(dòng)約束傳播以 實(shí)現(xiàn)合并圖的完整性。在210,在約束傳播期間利用不按時(shí)間順序的回溯來改 變先前的假設(shè)并解決沖突。在212,消除沖突的文字以輸出無(wú)沖突的合并圖。
現(xiàn)在參考圖3,示出了采用學(xué)習(xí)和推理來推斷對(duì)答案賦值的猜測(cè)的替換并 行解算機(jī)系統(tǒng)300。系統(tǒng)300包括生成解算機(jī)狀態(tài)的多個(gè)系統(tǒng)(例如,兩個(gè)順 序解算機(jī)系統(tǒng))302。例如,第一系統(tǒng)304 (表示為系統(tǒng)A),例如,第一順序CSP解算機(jī),生成解算機(jī)狀態(tài)306 (表示為解算機(jī)狀態(tài)M,…,解算機(jī)狀態(tài)As,其 中S是正整數(shù)),而第二系統(tǒng)308 (表示為系統(tǒng)B),例如,第二串行CSP解 算機(jī),生成解算機(jī)狀態(tài)308 (表示為解算機(jī)狀態(tài)m,…,解算機(jī)狀態(tài)BT,其中T是 正整數(shù))。
薄記組件102從相應(yīng)的第一和第二系統(tǒng)(304和308)接收解算機(jī)狀態(tài)(306 和310)并創(chuàng)建關(guān)于并行線程處理并解決系統(tǒng)約束的解算機(jī)狀態(tài)的圖(例如, 支持圖)。這些圖被傳遞給合并組件106以便合并成具有無(wú)沖突狀態(tài)108的合 并圖。然而,該合并圖可能不是完整的。因此,利用由傳播組件312來促進(jìn)的 約束傳播來確保合并圖中的完整性。這將在下面將更詳細(xì)地描述。傳播組件312 還幫助作為約束傳播的一部分的不按時(shí)間順序的回溯以便在不改變中間假設(shè) 的情況下直接改變?cè)缦鹊募僭O(shè)。
系統(tǒng)300還采用幫助在約束傳播期間基于猜測(cè)來做出關(guān)于變量賦值的推 斷的學(xué)習(xí)和推理組件314 (此處也被稱為推斷引擎)。
系統(tǒng)300可以在其中并非所有答案都是已知的應(yīng)用中操作。因此,做出關(guān) 于世界上正在發(fā)生什么的假設(shè)。例如,當(dāng)服務(wù)器程序被展示給更多數(shù)據(jù)時(shí),可 能發(fā)生該程序所做出的早先的假設(shè)將被發(fā)現(xiàn)為假。該程序然后具有撤銷可能已 基于假前提做出的推斷的問題。
在可滿足性問題中,可能存在類似的問題,因?yàn)闉榱苏故究蓾M足性,可能 必須猜測(cè)答案的賦值。換言之,在順序的情況下,當(dāng)做出新猜測(cè)時(shí),這導(dǎo)致其 他布爾變量答案由于該新猜測(cè)的邏輯結(jié)果而被賦值。此外,兩件事情中的一件 最終發(fā)生?;蛘咦龀鍪沟盟凶兞孔?yōu)橐奄x值的一組成功的猜測(cè),或者所做出 的最后一個(gè)猜測(cè)導(dǎo)致邏輯不一致性,此時(shí)放棄這些猜測(cè)中的一個(gè)。
在布爾可滿足性的最經(jīng)典版本中,改變最后一個(gè)猜測(cè)的符號(hào),于是如果早 先布爾變量被賦值為假,則將該賦值改為真并且該過程再次繼續(xù)。邏輯不一致 性在賦值可以是既不為真也不為假時(shí)發(fā)生是可能的,這意味著某一早先做出的 賦值肯定是錯(cuò)誤的。
標(biāo)識(shí)導(dǎo)致所觀察到的沖突的一組實(shí)際假設(shè),而不是在需要時(shí)重復(fù)備份并前 進(jìn)。 一旦已觀察到?jīng)_突,期望確切地診斷出是什么導(dǎo)致了可能是或不是最后一 個(gè)假設(shè)所造成的沖突??删_地做出這一診斷并且因此標(biāo)識(shí)一組不兼容的假設(shè)。
本主題體系結(jié)構(gòu)(例如,結(jié)合選擇)可采用各種基于學(xué)習(xí)和推理的方案來 實(shí)現(xiàn)其各個(gè)方面。例如,用于確定要切換(例如,從真到假或從假到真)哪個(gè) 賦值的過程可經(jīng)由自動(dòng)分類器系統(tǒng)和進(jìn)程來促進(jìn)。
分類器是將輸入屬性向量x-(xl, x2 ,x3, x4, x")映射到類標(biāo)簽c/fl^(x)的函 數(shù)。分類器也可輸出該輸入屬于一個(gè)類的置信度,即f(x"co"/We"ce(cto單力。 這樣的分類可采用概率和/或其它統(tǒng)計(jì)分析(例如,分解成分析效用和成本以最 大化對(duì)一人或多人的期望價(jià)值)來預(yù)測(cè)或推斷用戶期望自動(dòng)執(zhí)行的動(dòng)作。
如此處所使用的,術(shù)語(yǔ)"推斷"和"推論"通常是指從經(jīng)由事件和/或數(shù)據(jù)捕捉 的一組觀測(cè)推理或推斷系統(tǒng)、環(huán)境和/或用戶的狀態(tài)的過程。例如,推斷可用于 標(biāo)識(shí)特定的上下文或動(dòng)作,或可生成狀態(tài)的概率分布。推斷可以是概率性的, 即,基于對(duì)數(shù)據(jù)和事件的考慮計(jì)算所關(guān)注狀態(tài)的概率分布。推斷也可以指用于 從一組事件和/或數(shù)據(jù)合成更高級(jí)事件的技術(shù)。這類推斷導(dǎo)致從一組觀察到的事 件和/或儲(chǔ)存的事件數(shù)據(jù)中構(gòu)造新的事件或動(dòng)作,而無(wú)論事件是否在相鄰時(shí)間上 相關(guān),也無(wú)論事件和數(shù)據(jù)是來自一個(gè)還是若干個(gè)事件和數(shù)據(jù)源。
支持向量機(jī)(SVM)是可采用的分類器的一個(gè)示例。SVM通過在可能的 輸入空間中査找以最佳方式將觸發(fā)輸入事件和非觸發(fā)事件分離開來的超曲面 進(jìn)行操作。直觀上,這使得分類對(duì)于接近但不等同于訓(xùn)練數(shù)據(jù)的測(cè)試數(shù)據(jù)正確。 可采用其它定向和非定向模型分類方法,包括,例如,各種形式的統(tǒng)計(jì)回歸、 樸素貝葉斯、貝葉斯網(wǎng)絡(luò)、決策樹、神經(jīng)網(wǎng)絡(luò)、模糊邏輯模型以及表示不同獨(dú) 立性模式的其他統(tǒng)計(jì)分類模型。如此處所使用的分類也包括用于分派排序和/ 或優(yōu)先級(jí)的方法。
如從本說明書中可以容易地理解的,本主題體系結(jié)構(gòu)可以使用顯式訓(xùn)練 (例如,經(jīng)由一般訓(xùn)練數(shù)據(jù))以及隱式訓(xùn)練(例如,經(jīng)由觀察用戶行為、接收 外來信息)的分類器。例如,SVM經(jīng)由分類器構(gòu)造器和特征選擇模塊內(nèi)的學(xué) 習(xí)或訓(xùn)練階段來配置。因此,可采用分類器來根據(jù)預(yù)定準(zhǔn)則自動(dòng)學(xué)習(xí)和執(zhí)行多 個(gè)功能。
換言之,學(xué)習(xí)和推理組件314可將學(xué)到的約束應(yīng)用于沖突處理。 一個(gè)示例, 如下所述,可將一個(gè)學(xué)到的約束添加到順序SAT解算機(jī)以便解決沖突。類似地,在并行SAT解算機(jī)中,可在約束傳播處理期間添加若干學(xué)到的約束。
在査看約束傳播示例之前,提供預(yù)備信息以便更好地理解。約束滿足問題 (CSP)通常如下描述給定一有限變量集F、(通常是有限的) 一組值D, (可能是無(wú)限的)評(píng)估點(diǎn)陣」和有限函數(shù)(約束)集/^1 — A在D^中找出
一元組以使得在所有約束下該元組的圖像之間的點(diǎn)陣滿足在」中最大。以下是
其中D和A兩者都是布爾點(diǎn)陣的描述,從而在SAT解算機(jī)的上下文中具體描 述了本發(fā)明。盡管有此限制,但本發(fā)明可推廣到其中和^是相同的集合的 任何CSP。
變量被表示為Xi,^,...^,其中n是正整數(shù)。文字是"有符號(hào)的(signed)" 變量x^jq,X2,,X2,...。 L是1的范圍在L上的文字集。子句是包括表示為口的 空子句的有限文字集。子句0q,,X2,X3,,X4)經(jīng)常被改寫為;d v,x2vx3v,x4 (其
元素的邏輯OR (v))。任何有限命題公式集都可被呈現(xiàn)為在邏輯上等價(jià)的有 限子句集。
變量可以是未賦值的,或被賦予值真(例如,A)或假(例如,,x。。 對(duì)變量;c的值為真的賦值與文字x合并。對(duì)變量x的值為假的賦值與文字,x 合并。評(píng)估作為將賦值從變量提升到子句的結(jié)果歸因于子句。滿足具有賦值真 的子句,而違反具有賦值假的子句??蓾M足性是是否存在滿足一組子句的邏輯
變量的賦值的問題。重言式是每一個(gè)賦值是否滿足子句集的問題??蓾M足性和 重言式是其中公式當(dāng)且僅當(dāng)其否定式是不可滿足的時(shí)候才是重言式的對(duì)偶概念。
讓《成為丄中的文字上的子句集。(丄,。演繹圖是有向圖,其節(jié)點(diǎn)用與Z 的子集配對(duì)的單獨(dú)文字來標(biāo)記并且其邊用《的成員來標(biāo)記。當(dāng)不存在關(guān)于哪個(gè) 丄和《是有意義的混淆的時(shí)候,該圖簡(jiǎn)單地被稱為演繹圖。節(jié)點(diǎn)是僅在存在其 中邊用子句A來標(biāo)記的從第一個(gè)節(jié)點(diǎn)到第二個(gè)節(jié)點(diǎn)的有向邊的情況下的對(duì)于另 一個(gè)節(jié)點(diǎn)的A前項(xiàng)。
(丄,/Q演繹圖僅在以下情況下才是正確標(biāo)記的(well-labeled):節(jié)點(diǎn)上的標(biāo) 簽是其前項(xiàng)節(jié)點(diǎn)的標(biāo)簽的并集,如果節(jié)點(diǎn)/不具有傳入弧,則它用W來標(biāo)記, 對(duì)于文字/的節(jié)點(diǎn)的所有傳入邊都用/ v A形式的子句來標(biāo)記,來自文字/的節(jié) 點(diǎn)的所有傳出邊都用W v A形式的子句來標(biāo)記。只要存在入射到/節(jié)點(diǎn)的被標(biāo)記為/ V /7 V ... V /w的邊,就存在也入射到/節(jié)點(diǎn)的被標(biāo)記為/ V V ... V /w的
m-l個(gè)其他邊。
(丄,iO演繹圖中用由其本身組成的單元素集(例如,,x9@{,x9})來標(biāo)記的 節(jié)點(diǎn)/被稱為假設(shè)文字。正確標(biāo)記的(A^)演繹圖在入射到節(jié)點(diǎn)的傳入弧用正好 一個(gè)子句來標(biāo)記的情況下被唯一地證明。正確標(biāo)記的(A"演繹圖僅在它不包含 節(jié)點(diǎn)1和^兩者的情況下是K 一致的。正確標(biāo)記的(4^)演繹圖僅在以下情況下
是《完整的對(duì)于/vA V…v/m形式的《中的每一個(gè)A而言,只要,A,…,,/m
在該圖中,/就在輸入入射邊用A來標(biāo)記的圖中。無(wú)環(huán)正確標(biāo)記的(4/0演繹圖 G在不存在更大的(在節(jié)點(diǎn)方面)正確標(biāo)記的圖G,的情況下是Z完整的。
圖4和圖5示出了采用支持圖來進(jìn)行沖突處理的并行化的解算機(jī)示例。圖 4示出了從示例性約束傳播過程中導(dǎo)出的(丄,^)演繹圖400。為了示出以上定義 的應(yīng)用,考慮可滿足性問題和所嘗試的部分解的示例。開始于初始約束集C, 其包括
O)j三(,X! V X2)
2 ■: (,X! V X3 V X9)
①3 = (,X2 V ,X3 V X4)
(04畫(ix4 V X5 V X10)
(O5三(,x4 V X6 V Xu)
C06三(,X5 V ,x6)
7三(Xj V X7 V ,Xu)
C08三(Xl v x8)
C09 = (,X7 V ,X8 V ,x13)
以及當(dāng)前假設(shè)棧。在演繹圖400中,假設(shè)被建模為不具有輸入弧的假設(shè)節(jié) 點(diǎn)。因此,圖400的假設(shè)包括
~"X9@{,X9},,X10@{,X1()},以及
圖400包括四個(gè)假設(shè)節(jié)點(diǎn)第一假設(shè)節(jié)點(diǎn)402,其中Xl已被賦值為真(例
如,Xl);第二假設(shè)節(jié)點(diǎn)404,其中X9已被賦值為假(例如,,X9);第三假設(shè)
節(jié)點(diǎn)406,其中xu)已被賦值為假(例如,,x1());以及第四假設(shè)節(jié)點(diǎn)408,其 中xn已被賦值為假(例如,~"x )。
查看一瞬時(shí)快照,圖400指示假設(shè)節(jié)點(diǎn)具有對(duì)^的賦值真(例如,x。,
而假設(shè)節(jié)點(diǎn)404具有對(duì)&的賦值假(例如,,X9)?,F(xiàn)在考慮被標(biāo)記為C02邊, 即,如以上所列出的約束子句C02S(^^VX3VX9);換言之,它可讀作"非Xl或 X3或X9"。然而,注意,在約束(02中,Xl作為"^來否定地出現(xiàn),這意味著圖 400中為真的賦值使得析取為假,并且如被否定地賦值的X9也使得X9析取為 假。但總約束(02必須為真,且能夠使得約束子句(02為真的僅剩的方式是將
X3賦值為真(例如,x3)。這正是圖400在節(jié)點(diǎn)410處通過將x,賦值為真所指 示的。因此,基于輸入節(jié)點(diǎn)402和404處的假設(shè),以及相關(guān)聯(lián)的約束(D2,滿足
約束C02的唯一方式是將Xj賦值為真。這是單項(xiàng)消解的應(yīng)用。
繼續(xù)査看其他節(jié)點(diǎn),到節(jié)點(diǎn)412的邊使用約束co^(,Xi vx2)。然而,在 節(jié)點(diǎn)402處的;q被賦值為真,這使得滿足約束^的僅剩的可能性是將在節(jié)點(diǎn)
412處的X2賦值為真。査看被標(biāo)記為C03的邊,約束子句(03 = ("X2 V ,X3 V X4)
只可通過將在節(jié)點(diǎn)414處的々賦值為真來滿足。換言之,414的輸入節(jié)點(diǎn)是分 別將X3和x2賦值為真的410和412,從而使得滿足 3的僅剩的可能方式是
將X4賦值為真。
査看被標(biāo)記為 4的邊,約束子句C04 = (,X4 V X5 V X!o)只可通過將在節(jié)點(diǎn)
416處的X5賦值為真來滿足,因?yàn)檩斎?^被賦值為假并且輸入&被賦值為真。
被標(biāo)記為w5的邊使用約束子句(05 = ("X4 V X6 V x ),該子句只可通過將在節(jié)點(diǎn)
418處的X6賦值為真來滿足,因?yàn)檩斎氡毁x值為假并且輸入^被賦值為真。
最后,被標(biāo)記為W6的邊使用約束子句C06E(,X5V,X6),其基于對(duì)在相應(yīng)的節(jié)點(diǎn)
416和418處的x5和x6的賦值真而約束失敗。
約束傳播導(dǎo)致(丄,/Q演繹圖400并且當(dāng)?shù)竭_(dá)最后一個(gè)節(jié)點(diǎn)420時(shí),輸出新導(dǎo)出的約束(以不同的形式來編寫的)。
(0C(K((06))三,(Xi a ,X9 a ,X10 a ,Xn),
其中K (卡W幼表示"沖突"并且該約束是什么出錯(cuò)的報(bào)告。在此,輸出 (Dc(K(C06))指示X7為真,Xp為假,X/。為假,并且X"為假無(wú)法同時(shí)成立,必 須放棄其中之一以便進(jìn)一步處理。這等價(jià)于正確形式的非Xl或&或Xu)或X 。
圖5示出了用于處理從圖4的支持圖輸出的沖突約束的新的圖500。選擇對(duì)以
上各項(xiàng)中的三個(gè)或四個(gè)的假設(shè)(例如,TC;c和,x/7)產(chǎn)生了新的圖500以
及又一新導(dǎo)出的輸出約束。
CDC(K(0)9))三,(,X9 A ,X10 A ,Xu A X12 A X13)。
更具體而言,圖500通過做出假設(shè)(丟棄早先假設(shè)中的一個(gè)),即,將假 設(shè)節(jié)點(diǎn)502、504和506分別用作"^9@{"^}, 和,"@{,"}來創(chuàng)建。
開始于這些假設(shè)并將該新導(dǎo)出的約束(Dc(K(a)6))應(yīng)用于各邊產(chǎn)生對(duì)在節(jié)點(diǎn)508處 的Xl的賦值假以滿足約束(oc(k(co6))。
查看被標(biāo)記為C07的邊,引入了另一假設(shè)節(jié)點(diǎn)510 (被賦值為x12@{x12}), 并且約束子句(o7 ^(Xl v x7 v ,xu)只可通過將在節(jié)點(diǎn)512處的x7賦值為真來滿
足,因?yàn)檩斎隭!被賦值為假并且輸入Xu被賦值為真。
査看被標(biāo)記為《8的邊,約束子句(08 = v x8)只可通過將在節(jié)點(diǎn)514處
的Xs賦值為真來滿足,因?yàn)檩斎隭i被賦值為假。現(xiàn)在考慮被標(biāo)記為C09的邊,
約束子句o)9 e (,X7 v ix8 v "13)無(wú)法使用當(dāng)前輸入(節(jié)點(diǎn)512、節(jié)點(diǎn)514和假設(shè) 節(jié)點(diǎn)516)來滿足。因此,在節(jié)點(diǎn)518處輸出的新導(dǎo)出的約束coc(k(o)9)) = ,(,x9
a ,X1() a ,x a X12 a化)是演繹圖500出了什么問題的報(bào)告。該約束導(dǎo)出過程繼
續(xù)直到不存在沖突狀態(tài)。
更一般而言, 一旦獲取了每一個(gè)并行解算機(jī)線程的解算機(jī)狀態(tài)的支持圖, 就可開始合并。盡管描述集中于成對(duì)合并,但合并可使用不止兩個(gè)圖來實(shí)現(xiàn)也 在考慮范圍之內(nèi)。狀態(tài)合并是無(wú)鎖的。換言之,實(shí)現(xiàn)并行性的一種常規(guī)方式涉及線程處理。例如,在多個(gè)并行線程正在處理數(shù)據(jù)的情況下,最終期望合并這 些線程的結(jié)果。這樣做的一種方式是通過第一線程簡(jiǎn)單地將其他線程鎖定在某 一共享數(shù)據(jù)結(jié)構(gòu)之外直到該第一線程完成其過程。因此,其他被鎖在外的線程 對(duì)寫入與已被寫入的結(jié)果一致的結(jié)果負(fù)有責(zé)任。該常規(guī)體系結(jié)構(gòu)至少是低效 的。所公開的體系結(jié)構(gòu)避免了這一顯式鎖定機(jī)制。
如上所述,該算法提前一步并行地進(jìn)行處理并且然后組合結(jié)果。換言之, 為了到達(dá)總結(jié)果,每一個(gè)代理都提前一步進(jìn)行處理并組合單獨(dú)的中間結(jié)果,并 且這繼續(xù)直到到達(dá)總答案。另外,解決沖突處理并且該合并過程是無(wú)循環(huán)的。
如上所述,在解沖突(deconflict)處理中,在這些圖中的一個(gè)或另一個(gè)中
可能放棄一個(gè)或多個(gè)假設(shè)。此外,期望對(duì)于關(guān)于放棄什么假設(shè)非常節(jié)約。通過 定義供所公開的體系結(jié)構(gòu)使用的所有信息集(例如,假設(shè)、演繹、圖,…),
歸約算法(此處也被稱為redux)以放棄正在合并的兩個(gè)圖之間的盡可能少的 假設(shè)的方式來做出選擇?;叵朐趩蝹€(gè)圖的情況下,標(biāo)識(shí)這些沖突的目的是標(biāo)識(shí) 如果被放棄將具有盡可能小的后果的假設(shè),而不是必須備份若干先前的假設(shè), 這是對(duì)于一組支持圖的目的。
現(xiàn)在將相同的技術(shù)應(yīng)用于一對(duì)圖,以無(wú)循環(huán)的方式合并這些圖以使得如果 放棄一假設(shè),則影響或丟失盡可能小。這可通過利用"貪婪"法或算法來解決。 換言之,該方法找出通過做出看上去在特定時(shí)刻是最佳的選擇來最小化被放棄 的東西的容易的方式??刹捎美枚嗟枚嗟姆治龅母芗乃惴ǎ蝗欢?,在一 個(gè)實(shí)現(xiàn)中,該貪婪法足夠了。
圖6示出了準(zhǔn)備并合并兩個(gè)支持圖的方法。在600,接收供處理的兩個(gè)支 持圖。在602,使用貪婪法來削減(或減少)這些圖以便合并對(duì)應(yīng)于相同的文 字的節(jié)點(diǎn)以減少或消除循環(huán)。在604,將支持圖合并成合并圖。在606,在需 要時(shí)通過傳播約束來處理合并圖以實(shí)現(xiàn)完整性。在608,在需要時(shí)處理合并圖 以解決沖突。在610,輸出表示無(wú)沖突的解算機(jī)狀態(tài)的最終合并圖。
在準(zhǔn)備關(guān)于如何能夠合并兩個(gè)(4。演繹圖的更詳細(xì)的描述時(shí),呈現(xiàn)以下 定義如果G、 G,是非循環(huán)的、丄完整的(丄,X)演繹圖,貝U
Q^.是圖G和G'所共有的假設(shè)集。」C是G的假設(shè)集。 是G的推論集。 A^.是G中作為G'的推論的假設(shè)集。
是G中未在G'中提到的假設(shè)集
/g:厶—2^g-/g是產(chǎn)生G中的假設(shè)的依賴項(xiàng)的函數(shù)。 —2^-/^是產(chǎn)生G中的推論的前項(xiàng)的函數(shù)。
圖7示出了用于成對(duì)合并過程的削減兩個(gè)輸入支持圖的方法。在700,在 該特定實(shí)現(xiàn)中,根據(jù)被稱為redux的函數(shù)來啟動(dòng)該過程。函數(shù)redux(G,G)產(chǎn)生 如下定義的一對(duì)圖(G;,&)。在702,提供了第一定義令/e^,G.為一節(jié)點(diǎn)以 使得J/b,(/)1 (依賴項(xiàng)集的大小)至少與」(^,中的任何其他假設(shè)節(jié)點(diǎn)的選擇一樣 大。在704,提供了第二定義令/'e^.,c為一節(jié)點(diǎn)以使得l/b.(/')l至少與^.,G 中的任何其他假設(shè)節(jié)點(diǎn)的選擇一樣大。在706,如果l/b.(/)l比l^.(/')l小,則顛倒 G和G'的角色。在708,選擇/"e (/)以使得l/b. (OI與/〃的任何其他選擇 一樣小。在710,將G〃定義為缺少/〃和任一節(jié)點(diǎn)/2的G'的子圖以使得/2處于 1/^.(/")l中。在712,如果^^,= JG.,,G = 0,則退出redux,并返回對(duì)(G,G")。 在714,如果非Aj,gf爿g",g-0,則調(diào)用redux(G,G")。
最終,redux削減了這兩個(gè)圖以使得對(duì)應(yīng)于相同的文字的節(jié)點(diǎn)能夠在不害 怕循環(huán)的情況下合并。如下所示,redux在其試圖放棄盡可能少的派生(derived) (非假設(shè)文字)的意義上以"貪婪的"方式削減。期望以最終實(shí)現(xiàn)盡可能多的并 行前向進(jìn)展的方式來消減。然而,可以理解,可采用消減圖以便在不害怕循環(huán) 的情況下合并的其他算法。
注意,合并圖(再次稱之為G)不再是丄完整的,這可通過傳播約束以使 其是丄完整的來補(bǔ)救。合并圖包含沖突的文字/和,/也是可能的,在這種情 況下,針對(duì)該圖計(jì)算deconflict(G),其產(chǎn)生無(wú)沖突的圖。圖8示出了處理合并 圖的沖突的方法。在800,在該特定實(shí)現(xiàn)中,根據(jù)被稱為deconflict的函數(shù)來 啟動(dòng)移除沖突。在802,選擇/'e/^(/)以使得l/b.(/')l與任何其他這樣的選擇一樣小。在804,選擇/"e /^卜/)以使得l/HOI與任何其他這樣的選擇一樣小。 在806,如果|/^,(/')| ^ 1/^(/")|,則將/(否則是D選為將連同其所有依賴項(xiàng)一 起被刪除的假設(shè)。在808,重復(fù)該過程直到消除所有沖突的節(jié)點(diǎn)。
redux和deconflict函數(shù)可通過安置merge函數(shù)來在SAT解算機(jī)中采用, 該merge函數(shù)首先對(duì)一對(duì)圖應(yīng)用redux,并且然后對(duì)結(jié)果應(yīng)用deconflict。圖9 示出了消減支持圖并將其合并成順序SAT解算機(jī)的最終合并的無(wú)沖突的圖的 方法。在900,在順序SAT解算機(jī)中啟動(dòng)圖消減(例如,使用redux)和沖突 處理(例如,使用deconflict)。在902,順序SAT解算機(jī)的內(nèi)循環(huán)將一個(gè)新 的文字添加到丄完整的、《一致的演繹圖。在904,削減支持圖以合并節(jié)點(diǎn)并 產(chǎn)生無(wú)循環(huán)處理。在906,傳播約束以使得合并圖i:完整。在908,通過可任 選地添加一個(gè)學(xué)到的約束來提供無(wú)沖突的合并圖(使用例如,函數(shù)deconflict)。 在910,在需要時(shí)重復(fù)該過程以輸出解算機(jī)狀態(tài)的合并的、無(wú)沖突的圖。
圖10示出了削減支持圖并將其合并成并行SAT解算機(jī)的最終合并的、無(wú) 沖突的圖的方法。在1000,在并行SAT解算機(jī)中啟動(dòng)圖削減(例如,使用redux) 和沖突處理(例如,使用deconflict)。在1002,并行SAT解算機(jī)的內(nèi)循環(huán)將 "個(gè)新的且不同的文字添加到I完整的、K一致的支持圖的"個(gè)副本中的每一 個(gè)。在1004,削減這"個(gè)圖以合并節(jié)點(diǎn)并產(chǎn)生無(wú)循環(huán)處理。在1006,在每一 個(gè)演繹圖中傳播約束以使得合并圖丄完整。在1008,通過可任選地添加學(xué)到 的約束來輸出無(wú)沖突的合并圖(使用例如,函數(shù)deconflict)。
圖11示出了將本發(fā)明的解算機(jī)狀態(tài)處理應(yīng)用于多核處理系統(tǒng)1102的系統(tǒng) 1100的圖。多核處理系統(tǒng)1102是共享處理器并行處理系統(tǒng),其可由兩者都在 同一管芯上制造的第一處理核1104 (表示為核。和第二處理核1106 (表示為 核2)來促進(jìn)。處理系統(tǒng)1002還可包括用于正在處理的計(jì)算線程的共享緩沖的 板載存儲(chǔ)器1108。盡管被示為在同一管芯上,但存儲(chǔ)器1108可位于該管芯的 外部并用于相同的目的。
為了支持每一個(gè)核(1104和1106)對(duì)共享線程的處理,提供了一對(duì)解算 機(jī)。例如,提供第一解算機(jī)1110 (表示為解算機(jī)》和第二解算機(jī)1112 (表示 為解算機(jī)2)(兩者都可以是例如CSP解算機(jī))以便在處理器系統(tǒng)1102的多 個(gè)核(1104和1106)之間執(zhí)行線程期間執(zhí)行約束處理。提供了用于根據(jù)所公開的本發(fā)明的成對(duì)的支持圖處理的狀態(tài)系統(tǒng)1114。 狀態(tài)系統(tǒng)1114提供了對(duì)以支持圖形式從相關(guān)聯(lián)的并行化的解算機(jī)(1110和 1112)接收到的解算機(jī)狀態(tài)(表示為解算機(jī)i狀態(tài)和解算機(jī)2狀態(tài))的成對(duì)處 理。狀態(tài)系統(tǒng)1114可包括上述用于實(shí)現(xiàn)支持圖歸約(或削減)、支持圖合并、 沖突處理和變量賦值的薄記組件102、合并組件106、傳播組件312和推斷組 件314。
可以理解,狀態(tài)系統(tǒng)1114可嚴(yán)格地用軟件、嚴(yán)格地用硬件(例如,作為 ASIC —專用集成電路設(shè)備或現(xiàn)場(chǎng)可編程門陣列(FPGA))或作為硬件和軟件 兩者的組合來實(shí)現(xiàn)?;蛘?,狀態(tài)系統(tǒng)1114的組件(102、 106、 312和314)可 單獨(dú)地作為硬件和/或軟件的組合來實(shí)現(xiàn)。
圖12示出了將根據(jù)本發(fā)明的解算機(jī)狀態(tài)處理應(yīng)用于多核多處理器系統(tǒng)的 系統(tǒng)1200的圖。多核多處理器系統(tǒng)1200包括各自是共享存儲(chǔ)器并行處理系統(tǒng) 的第一多核處理器系統(tǒng)1202和第二多核處理器系統(tǒng)1204。該第一處理器系統(tǒng) 1202包括第一處理核1206 (表示為核。和第二處理核1208 (表示為核2), 這兩者在同一管芯上制造并且共享用于正在處理的計(jì)算線程的共享緩沖的共 享存儲(chǔ)器1208。
該第二多核處理器系統(tǒng)1204包括第一處理核1212 (表示為核。和第二 處理核1214 (表示為核2),這兩者被在同一管芯上制造并且共享用于正在處 理的計(jì)算線程的共享緩沖的共享存儲(chǔ)器1216。
為了支持每一個(gè)核(1206和1208)對(duì)共享線程的處理,提供了相應(yīng)的解 算機(jī)集。例如,提供第一解算機(jī)1218 (表示為解算機(jī)。和第二解算機(jī)1220 (表示為解算機(jī)2)(兩者都可以是例如CSP解算機(jī))以便在處理器系統(tǒng)1202 的多個(gè)核(1206和1208)之間執(zhí)行線程期間執(zhí)行約束處理。類似地,為了支 持每一個(gè)核(1212和1214)對(duì)共享線程的處理,提供了相應(yīng)的解算機(jī)集。例 如,提供第三解算機(jī)1222 (表示為解算機(jī)3)和第四解算機(jī)1224 (表示為解算 機(jī)4)(兩者都可以是例如CSP解算機(jī))以便在處理器系統(tǒng)1204的多個(gè)核(1212 和1224)之間執(zhí)行線程期間執(zhí)行約束處理。
每一個(gè)解算機(jī)(1218、 1220、 1222和1224)將解算機(jī)狀態(tài)傳遞給狀態(tài)處 理系統(tǒng)1226。例如,將解算機(jī)狀態(tài)(表示為S!狀態(tài)和S2狀態(tài))從該第一處理系統(tǒng)1202轉(zhuǎn)發(fā)到狀態(tài)系統(tǒng)1226并且將解算機(jī)狀態(tài)(表示為S3狀態(tài)和S4狀態(tài)) 從該第二處理器系統(tǒng)1204轉(zhuǎn)發(fā)到狀態(tài)系統(tǒng)1226。
提供了用于根據(jù)所公開的本發(fā)明的成對(duì)的支持圖處理的狀態(tài)系統(tǒng)1226。 狀態(tài)系統(tǒng)1226提供了對(duì)以支持圖的形式從并行化的解算機(jī)(1218、 1220、 1222 和1224)接收到的解算機(jī)狀態(tài)的成對(duì)處理。例如,在這些多核多處理器系統(tǒng)中, 線程計(jì)算處理可跨核(1206、 1208、 1212和1214)的任何組合來發(fā)生。例如, 處理可使用核1208、 1212和1214來發(fā)生。因此,來自這三個(gè)核的狀態(tài)應(yīng)被傳 遞給狀態(tài)系統(tǒng)1226以便根據(jù)所公開的算法來進(jìn)行成對(duì)處理。為了對(duì)其進(jìn)行支 持,狀態(tài)系統(tǒng)1226可包括用于基于線程正在經(jīng)歷的狀態(tài)處理來從每一個(gè)解算 機(jī)(1218、 1220、 1222和1224)中選擇相關(guān)狀態(tài)的選擇組件1228。換言之, 無(wú)關(guān)狀態(tài)將不會(huì)被選擇以供支持圖處理。然而,可以理解,狀態(tài)處理現(xiàn)在也可 通過包括附加狀態(tài)系統(tǒng)(未示出)以使得每一個(gè)處理器系統(tǒng)(1202或1204) 都具有一個(gè)專用狀態(tài)系統(tǒng)來并行地執(zhí)行。
如上所述,狀態(tài)系統(tǒng)1226還可包括上述用于實(shí)現(xiàn)支持圖歸約(或削減)、 支持圖合并、沖突處理和變量賦值的薄記組件102、合并組件106、傳播組件 312和推斷組件314。
另外,將會(huì)認(rèn)識(shí)到,狀態(tài)系統(tǒng)1226可嚴(yán)格地用軟件、嚴(yán)格地用硬件(例 如,ASIC、 FPGA)或作為硬件和軟件兩者的組合來實(shí)現(xiàn)。
狀態(tài)系統(tǒng)(圖11的1114和/或1226)還可被實(shí)現(xiàn)為用于安裝到用于處理 解算機(jī)狀態(tài)的計(jì)算系統(tǒng)中的獨(dú)立軟件和/或硬件可插入模塊。例如,具有高速接 口和存儲(chǔ)器(例如,非易失性或閃存)的卡可用作處理器子系統(tǒng)的合適的接口 以及用于解算機(jī)狀態(tài)處理?;蛘?,或與之組合,可安裝根據(jù)所公開的本發(fā)明來 處理解算機(jī)狀態(tài)的軟件模塊。
圖13示出了將根據(jù)本發(fā)明的解算機(jī)狀態(tài)處理應(yīng)用于跨各單獨(dú)計(jì)算系統(tǒng)的 解算機(jī)狀態(tài)處理的系統(tǒng)1300的圖。在此,第一計(jì)算系統(tǒng)1302是具有用于執(zhí)行 程序和數(shù)據(jù)處理的系統(tǒng)處理器1304 (以及單個(gè)核1306)的單處理器系統(tǒng)。第 二計(jì)算系統(tǒng)1308是具有用于執(zhí)行程序和數(shù)據(jù)處理的多處理器子系統(tǒng)1310 (以 及兩個(gè)處理器1312和1314)的多處理器系統(tǒng)。這些系統(tǒng)(1302和1308)被設(shè) 置為在網(wǎng)絡(luò)1316 (或合適的高速接口)上進(jìn)行通信并且進(jìn)一步與圖12的狀態(tài)系統(tǒng)1226進(jìn)行通信以便進(jìn)行解算機(jī)狀態(tài)處理。如果一線程跨這兩個(gè)系統(tǒng)(1302 和1308)處理,則類似于以上在圖12中所提供的描述,解算機(jī)狀態(tài)可跨這兩 個(gè)系統(tǒng)處理。
圖14示出了采用真值維護(hù)系統(tǒng)1402和推斷引擎1404 (使用學(xué)習(xí)和推理) 以便作為大型搜索空間中的問題解算機(jī)來應(yīng)用的CSP解算機(jī)系統(tǒng)1400的圖。 引擎1404探査各替換方案、做出選擇并為了正確性分析選擇。當(dāng)發(fā)生沖突時(shí), 真值維護(hù)系統(tǒng)幫助消除沖突并相應(yīng)地更新其知識(shí)庫(kù)以供將來使用。
如在本申請(qǐng)中所使用的,術(shù)語(yǔ)"組件"和"系統(tǒng)"旨在表示計(jì)算機(jī)相關(guān)的實(shí) 體,其可以是硬件、硬件和軟件的組合、軟件、或者執(zhí)行中的軟件。例如,組 件可以是但不限于,在處理器上運(yùn)行的進(jìn)程、處理器、硬盤驅(qū)動(dòng)器、(光和/ 或磁存儲(chǔ)介質(zhì)的)多個(gè)存儲(chǔ)驅(qū)動(dòng)器、對(duì)象、可執(zhí)行代碼、執(zhí)行的線程、程序、 和/或計(jì)算機(jī)。作為說明,運(yùn)行在服務(wù)器上的應(yīng)用程序和服務(wù)器都可以是組件。 一個(gè)或多個(gè)組件可以駐留在進(jìn)程和/或執(zhí)行的線程內(nèi),且組件可以位于一臺(tái)計(jì)算 機(jī)內(nèi)上/或分布在兩臺(tái)或更多的計(jì)算機(jī)之間。
現(xiàn)在參考圖15,示出了可用于采用所公開的并行化的解算機(jī)狀態(tài)體系結(jié) 構(gòu)的計(jì)算系統(tǒng)1500的框圖。為了提供用于其各方面的附加上下文,圖15及以 下討論旨在提供對(duì)其中可實(shí)現(xiàn)本發(fā)明的各方面的合適的計(jì)算系統(tǒng)1500的簡(jiǎn)要 概括描述。盡管以上描述是在可在一個(gè)或多個(gè)計(jì)算機(jī)上運(yùn)行的計(jì)算機(jī)可執(zhí)行指 令的一般上下文中進(jìn)行的,但是本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,本發(fā)明也可結(jié)合 其它程序模塊和/或作為硬件和軟件的組合來實(shí)現(xiàn)。
一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、 程序、組件、數(shù)據(jù)結(jié)構(gòu)等等。此外,本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明的方 法可用其它計(jì)算機(jī)系統(tǒng)配置來實(shí)施,包括單處理器或多處理器計(jì)算機(jī)系統(tǒng)、小 型機(jī)、大型計(jì)算機(jī)、以及個(gè)人計(jì)算機(jī)、手持式計(jì)算設(shè)備、基于微處理器的或可 編程消費(fèi)電子產(chǎn)品等,其每一個(gè)都可操作上耦合到一個(gè)或多個(gè)相關(guān)聯(lián)的設(shè)備。
所示的本發(fā)明的各方面也可在其中某些任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程 處理設(shè)備來執(zhí)行的分布式計(jì)算環(huán)境中實(shí)施。在分布式計(jì)算環(huán)境中,程序模塊可 以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。
計(jì)算機(jī)通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)訪問的任何可用介質(zhì),且包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。 作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì) 算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其 它數(shù)據(jù)之類的信息的任意方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可
移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于RAM、 ROM、 EEPROM、閃存或者 其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字視頻盤(DVD)或其它光盤存儲(chǔ)、磁帶盒、 磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以用于存儲(chǔ)所需信息并且可以由計(jì)算 機(jī)訪問的任何其它介質(zhì)。
再次參考圖15,用于實(shí)現(xiàn)各方面的示例性計(jì)算系統(tǒng)1500包括計(jì)算機(jī)1502, 計(jì)算機(jī)1502包括處理單元1504、系統(tǒng)存儲(chǔ)器1506和系統(tǒng)總線1508。系統(tǒng)總 線1508提供了用于包括,但不限于系統(tǒng)存儲(chǔ)器1506的系統(tǒng)組件對(duì)處理單元 1504的接口。處理單元1504可以是各種市場(chǎng)上可購(gòu)買到的處理器中的任意一 種。雙微處理器和其它多處理器體系結(jié)構(gòu)也可用作處理單元1504。
系統(tǒng)總線1508可以是若干種總線結(jié)構(gòu)中的任一種,這些總線結(jié)構(gòu)還可互 連到存儲(chǔ)器總線(帶有或沒有存儲(chǔ)器控制器)、外圍總線、以及使用各類市場(chǎng) 上可購(gòu)買到的總線體系結(jié)構(gòu)中的任一種的局部總線。系統(tǒng)存儲(chǔ)器1506包括只 讀存儲(chǔ)器(ROM) 1510和隨機(jī)存取存儲(chǔ)器(RAM) 1512。基本輸入/輸出系統(tǒng) (BIOS)儲(chǔ)存在諸如ROM、 EPROM、 EEPROM等非易失性存儲(chǔ)器1510中, 其中BIOS包含幫助諸如在啟動(dòng)期間在計(jì)算機(jī)1502內(nèi)的元件之間傳輸信息的基 本例程。RAM 1512還可包括諸如靜態(tài)RAM等高速RAM來用于高速緩存數(shù) 據(jù)。
計(jì)算機(jī)1502還包括內(nèi)置硬盤驅(qū)動(dòng)器(HDD) 1514 (例如,EIDE、 SATA), 該內(nèi)置硬盤驅(qū)動(dòng)器1514還可被配置成在合適的機(jī)殼(未示出)中外部使用; 磁軟盤驅(qū)動(dòng)器(FDD) 1516 (例如,從可移動(dòng)磁盤1518中讀取或向其寫入); 以及光盤驅(qū)動(dòng)器1520 (例如,從CD-ROM盤1522中讀取,或從諸如DVD等 其它高容量光學(xué)介質(zhì)中讀取或向其寫入)。硬盤驅(qū)動(dòng)器1514、磁盤驅(qū)動(dòng)器1516 和光盤驅(qū)動(dòng)器1520可分別通過硬盤驅(qū)動(dòng)器接口 1524、磁盤驅(qū)動(dòng)器接口 1526 和光盤驅(qū)動(dòng)器接口 1528連接到系統(tǒng)總線1508。用于外置驅(qū)動(dòng)器實(shí)現(xiàn)的接口 1524包括通用串行總線(USB)和正EE 1394接口技術(shù)中的至少一種或兩者。其它外部驅(qū)動(dòng)器連接技術(shù)在本發(fā)明所考慮的范圍之內(nèi)。
驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)提供了對(duì)數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可 執(zhí)行指令等的非易失性存儲(chǔ)。對(duì)于計(jì)算機(jī)1502,驅(qū)動(dòng)器和介質(zhì)容納適當(dāng)?shù)臄?shù)字
格式的任何數(shù)據(jù)的存儲(chǔ)。盡管以上對(duì)計(jì)算機(jī)可讀介質(zhì)的描述涉及HDD、可移 動(dòng)磁盤以及諸如CD或DVD等可移動(dòng)光學(xué)介質(zhì),但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng) 理解,示例性操作環(huán)境中也可使用可由計(jì)算機(jī)讀取的任何其它類型的介質(zhì),諸 如zip驅(qū)動(dòng)器、磁帶盒、閃存卡、盒式磁帶等等,并且任何這樣的介質(zhì)可包含 用于執(zhí)行所公開的發(fā)明的方法的計(jì)算機(jī)可執(zhí)行指令。
多個(gè)程序模塊可被存儲(chǔ)在驅(qū)動(dòng)器和RAM 1512中,包括操作系統(tǒng)1530、 一個(gè)或多個(gè)應(yīng)用程序1532 (例如,上述無(wú)鎖CSP解算機(jī)處理系統(tǒng))、其它程 序模塊1534和程序數(shù)據(jù)1536。所有或部分操作系統(tǒng)、應(yīng)用程序、模塊和/或數(shù) 據(jù)也可被高速緩存在RAM 1512中。應(yīng)該明白,本發(fā)明可以用各種市場(chǎng)上可購(gòu) 得的操作系統(tǒng)或操作系統(tǒng)的組合來實(shí)施。
用戶可以通過一個(gè)或多個(gè)有線/無(wú)線輸入設(shè)備,例如鍵盤1538和諸如鼠標(biāo) 1540等定點(diǎn)設(shè)備將命令和信息輸入到計(jì)算機(jī)1502中。其它輸入設(shè)備(未示出) 可包括話筒、IR遙控器、操縱桿、游戲手柄、指示筆、觸摸屏等等。這些和其 它輸入設(shè)備通常通過耦合到系統(tǒng)總線1508的輸入設(shè)備接口 1542連接到處理單 元1504,但也可通過其它接口連接,如并行端口、正EE 1394串行端口、游戲 端口、 USB端口、 IR接口等等。
監(jiān)視器1544或其它類型的顯示設(shè)備也經(jīng)由接口,諸如視頻適配器1546 連接至系統(tǒng)總線1508。除了監(jiān)視器1544之外,計(jì)算機(jī)通常包括諸如揚(yáng)聲器和 打印機(jī)等的其它外圍輸出設(shè)備(未示出)。
計(jì)算機(jī)1502可使用經(jīng)由有線和/或無(wú)線通信至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),諸 如遠(yuǎn)程計(jì)算機(jī)1548的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)1548可以是 工作站、服務(wù)器計(jì)算機(jī)、路由器、個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)、基于微處理器 的娛樂設(shè)備、對(duì)等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點(diǎn),并且通常包括以上相對(duì)于計(jì)算 機(jī)1502描述的許多或所有元件,盡管為簡(jiǎn)明起見僅示出了存儲(chǔ)器/存儲(chǔ)設(shè)備 1550。所描繪的邏輯連接包括到局域網(wǎng)(LAN) 1552和/或例如廣域網(wǎng)(WAN) 1554等更大的網(wǎng)絡(luò)的有線/無(wú)線連接。這一 LAN和WAN聯(lián)網(wǎng)環(huán)境常見于辦公室和公司,并且方便了諸如內(nèi)聯(lián)網(wǎng)等企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò),所有這些都可連接 到例如因特網(wǎng)等全球通信網(wǎng)絡(luò)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)1502通過有線和/或無(wú)線通信網(wǎng)絡(luò) 接口或適配器1556連接到局域網(wǎng)1552。適配器1556可以方便到LAN 1552的 有線或無(wú)線通信,并且還可包括其上設(shè)置的用于與無(wú)線適配器1556通信的無(wú) 線接入點(diǎn)。
當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)1502可包括調(diào)制解調(diào)器1558,或 連接到WAN 1554上的通信服務(wù)器,或具有用于通過WAN 1554,諸如通過因 特網(wǎng)建立通信的其它裝置?;?yàn)閮?nèi)置或?yàn)橥庵靡约坝芯€或無(wú)線設(shè)備的調(diào)制解調(diào) 器1558經(jīng)由串行端口接口 1542連接到系統(tǒng)總線1508。在網(wǎng)絡(luò)化環(huán)境中,相對(duì) 于計(jì)算機(jī)1502所描述的程序模塊或其部分可以存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器/存儲(chǔ)設(shè)備 1550中。應(yīng)該理解,所示網(wǎng)絡(luò)連接是示例性的,并且可以使用在計(jì)算機(jī)之間建 立通信鏈路的其它手段。
計(jì)算機(jī)1502可用于與操作上設(shè)置在無(wú)線通信中的任何無(wú)線設(shè)備或?qū)嶓w通 信,這些設(shè)備或?qū)嶓w例如有打印機(jī)、掃描儀、臺(tái)式和/或便攜式計(jì)算機(jī)、便攜式 數(shù)據(jù)助理、通信衛(wèi)星、與無(wú)線可檢測(cè)標(biāo)簽相關(guān)聯(lián)的任何一個(gè)設(shè)備或位置(例如, 公用電話亭、報(bào)亭、休息室)以及電話。這至少包括Wi-Fi和藍(lán)牙TM無(wú)線技術(shù)。
由此,通信可以如對(duì)于常規(guī)網(wǎng)絡(luò)那樣是預(yù)定義結(jié)構(gòu),或者僅僅是至少兩個(gè)設(shè)備 之間的自組織(adhoc)通信。
現(xiàn)在參考圖16,示出了可利用根據(jù)所公開的本發(fā)明的并行化的解算機(jī)處 理的示例性計(jì)算環(huán)境1600的示意性框圖。系統(tǒng)1600包括一個(gè)或多個(gè)客戶機(jī) 1602。客戶機(jī)1602可以是硬件和/或軟件(例如,線程、進(jìn)程、計(jì)算設(shè)備)。 客戶機(jī)1602可例如使用通過本發(fā)明而容納cookie和/或相關(guān)聯(lián)的上下文信息。
系統(tǒng)1600還包括一個(gè)或多個(gè)服務(wù)器1604。服務(wù)器1604也可以是硬件和/ 或軟件(例如,線程、進(jìn)程、計(jì)算設(shè)備)。服務(wù)器1604可以例如通過使用本 體系結(jié)構(gòu)來容納線程以執(zhí)行變換。在客戶機(jī)1602和服務(wù)器1604之間的一種可 能的通信能夠以適合在支持并行化的解算機(jī)狀態(tài)處理的兩個(gè)或多個(gè)計(jì)算機(jī)進(jìn) 程之間傳輸?shù)臄?shù)據(jù)分組的形式進(jìn)行。數(shù)據(jù)分組可包括例如cookie和/或相關(guān)聯(lián) 的上下文信息。系統(tǒng)1600包括可以用來使客戶機(jī)1606和服務(wù)器1602之間通信更容易的通信框架1604 (例如,諸如因特網(wǎng)等全球通信網(wǎng)絡(luò))。
通信可經(jīng)由有線(包括光纖)和/或無(wú)線技術(shù)來促進(jìn)??蛻魴C(jī)1602操作上 被連接到可以用來存儲(chǔ)對(duì)客戶機(jī)1602本地的信息(例如,cookie和/或相關(guān)聯(lián) 的上下文信息)的一個(gè)或多個(gè)客戶機(jī)數(shù)據(jù)存儲(chǔ)1608。同樣地,服務(wù)器1604可 在操作上連接到可以用來存儲(chǔ)對(duì)服務(wù)器1604本地的信息的一個(gè)或多個(gè)服務(wù)器 數(shù)據(jù)存儲(chǔ)1610。
上面描述的包括所公開的本發(fā)明的各示例。當(dāng)然,描述每一個(gè)可以想到的 組件和/或方法的組合是不可能的,但本領(lǐng)域內(nèi)的普通技術(shù)人員應(yīng)該認(rèn)識(shí)到,許 多其它組合和排列都是可能的。因此,本發(fā)明旨在涵蓋所有這些落入所附權(quán)利 要求書的精神和范圍內(nèi)的更改、修改和變化。此外,就在說明書或權(quán)利要求書 中使用術(shù)語(yǔ)"包括"而言,這一術(shù)語(yǔ)旨在以與術(shù)語(yǔ)"包含"在被用作權(quán)利要求 書中的過渡詞時(shí)所解釋的相似的方式為包含性的。
權(quán)利要求
1.一種便于約束解算機(jī)處理的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)(100),包括用于將計(jì)算線程的輸入計(jì)算機(jī)狀態(tài)(104)表示為一組支持圖的薄記組件(102);以及用于將所述一組支持圖中的至少兩個(gè)輸入圖成對(duì)地合并成表示所述計(jì)算線程的最終狀態(tài)的合并圖的合并組件(106)。
2. 如權(quán)利要求1所述的系統(tǒng),其特征在于,將由所述合并組件來合 并的一組表示輸入支持圖是無(wú)沖突的支持圖。
3. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述薄記組件從在所述 計(jì)算線程上操作的并行布爾可滿足性(SAT)解算機(jī)接收所述輸入解算機(jī)狀態(tài)。
4. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述薄記組件從在所述 計(jì)算線程上操作的并行約束滿足問題(CSP)解算機(jī)接收所述輸入解算機(jī)狀態(tài)。
5. 如權(quán)利要求4所述的系統(tǒng),其特征在于,所述CSP解算機(jī)根據(jù)評(píng) 估點(diǎn)陣j和一組值"來定義,其中D和J是相同的集合。
6. 如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括用于傳播約束以 生成所述合并圖的完整性的傳播組件。
7. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述傳播組件便于作為 所述約束傳播的一部分來進(jìn)行不按時(shí)間順序的回溯以便在不改變中間假設(shè)的 情況下直接改變?cè)缦鹊募僭O(shè)。
8. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述合并組件以無(wú)鎖的 方式將所述輸入解算機(jī)狀態(tài)合并成所述合并圖。
9. 如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括用于在約束傳播過程期間基于猜測(cè)來推斷變量賦值的學(xué)習(xí)和推理組件。
10.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述輸入解算機(jī)狀態(tài)來自在所述計(jì)算線程上操作的兩個(gè)并行SAT解算機(jī),并且所述合并組件幫助將" 個(gè)新的且不同的文字添加到丄完整的、《一致的演繹圖的w個(gè)副本中的每一個(gè), 其中"是正整數(shù)。
11.一種約束解算機(jī)處理的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括接收與并行解算機(jī)的解算機(jī)狀態(tài)相關(guān)聯(lián)的支持圖,所述解算機(jī)狀態(tài)與計(jì)算線程的處理相關(guān)聯(lián)(202);削減來自所述并行解算機(jī)中的每一個(gè)的支持圖以合并具有相同文字的節(jié)點(diǎn)(204);以及將所述支持圖成對(duì)地合并成表示所述計(jì)算線程的最終狀態(tài)的合并圖(206)。
12. 如權(quán)利要求11所述的方法,其特征在于,還包括削減所述支持圖 以便根據(jù)具有相同文字的節(jié)點(diǎn)來成對(duì)地合并。
13. 如權(quán)利要求11所述的方法,其特征在于,還包括通過傳播約束來 解決所述合并圖的完整性。
14. 如權(quán)利要求11所述的方法,其特征在于,還包括處理所述合并圖 中的沖突的文字以使得所述合并圖無(wú)沖突。
15. 如權(quán)利要求11所述的方法,其特征在于,還包括在所述并行解算 機(jī)的合并圖的約束傳播期間添加不止一個(gè)學(xué)到的約束,所述并行解算機(jī)是并行 SAT解算機(jī)。
16. 如權(quán)利要求ll所述的方法,其特征在于,還包括使用貪婪法來削 減所述支持圖以便成對(duì)地合并所述支持圖以實(shí)現(xiàn)最優(yōu)的并行前向進(jìn)展。
17. 如權(quán)利要求11所述的方法,其特征在于,還包括同時(shí)操縱各個(gè)并 行解算機(jī)的支持圖。
18. 如權(quán)利要求11所述的方法,其特征在于,還包括從沖突的文字集中消除沖突的文字并將所述集合中的其余沖突的文字指定為新演繹圖的假設(shè)。
19. 如權(quán)利要求11所述的方法,其特征在于,所述并行解算機(jī)是布爾 SAT解算機(jī)。
20. —種計(jì)算機(jī)實(shí)現(xiàn)的解算機(jī)系統(tǒng)(300),包括 用于從并行CSP解算機(jī)接收支持圖的計(jì)算機(jī)實(shí)現(xiàn)的裝置(102),所述支持圖表示與計(jì)算線程的處理相關(guān)聯(lián)的并行解算機(jī)狀態(tài);用于削減來自所述并行CSP解算機(jī)中的每一個(gè)的支持圖的計(jì)算機(jī)實(shí)現(xiàn)的 裝置(106);用于將所述支持圖成對(duì)地合并成合并圖的計(jì)算機(jī)實(shí)現(xiàn)的裝置(106);以及用于消除所述合并圖中的沖突以輸出表示所述計(jì)算線程的最終狀態(tài)的無(wú) 沖突的合并圖的計(jì)算機(jī)實(shí)現(xiàn)的裝置(312)。
全文摘要
并行約束滿足問題(CSP)解算機(jī)中的解算機(jī)狀態(tài)合并。并行CSP解算機(jī)的計(jì)算線程的處理期間的解算機(jī)狀態(tài)被表示為一組支持圖。這些支持圖以成對(duì)的方式合并,從而產(chǎn)生一新的無(wú)沖突圖。該合并過程是無(wú)循環(huán)的,沖突被移除并且線程處理是無(wú)鎖的。該體系結(jié)構(gòu)一般可應(yīng)用于具有特定形式特性的任何CSP解算機(jī)(例如,布爾SAT解算機(jī))。提供了一種便于解算機(jī)處理的系統(tǒng),該系統(tǒng)包括用于將計(jì)算線程的輸入解算機(jī)狀態(tài)表示為一組圖的薄記組件,以及用于將該組圖中的至少兩個(gè)輸入圖成對(duì)合并成表示該計(jì)算線程的最終狀態(tài)的合并圖的合并組件。
文檔編號(hào)G06F15/16GK101542460SQ200780042823
公開日2009年9月23日 申請(qǐng)日期2007年11月19日 優(yōu)先權(quán)日2006年11月20日
發(fā)明者A·L·小布朗 申請(qǐng)人:微軟公司