一種基于動態(tài)一致性約束的圖計算異步迭代方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及半導(dǎo)體制造領(lǐng)域,更具體地說,本發(fā)明涉及一種基于動態(tài)一致性約束的圖計算異步迭代方法。
【背景技術(shù)】
[0002]迭代計算是圖計算的重要方式,也是許多機(jī)器學(xué)習(xí)數(shù)據(jù)挖掘算法的基礎(chǔ)。迭代計算用數(shù)值逼近的方式解決了許多科學(xué)計算問題。在數(shù)據(jù)規(guī)模越來越大的條件下,分布式/并行計算能有效提高計算效率。并行的迭代方法起源于BSP (塊同步并行)模型,目前流行的許多圖計算框架都基于BSP模型實現(xiàn),例如Pregel、GraphX等。
[0003]目前的并行迭代方式分為以下幾種:
[0004](1)同步迭代,主要包括最早的BSP模型和其衍生模型。同步迭代下,每一輪的執(zhí)行僅與當(dāng)前輪有關(guān),本輪之內(nèi)各節(jié)點并行計算。只有當(dāng)所有節(jié)點本輪計算完畢之后,才會進(jìn)入下一輪迭代。
[0005](2)異步迭代,異步迭代能充分利用計算資源,避免每輪迭代的同步開銷。異步迭代下,各節(jié)點的計算與其他節(jié)點不相關(guān)。沒有輪與輪同步和節(jié)點的相互等待過程。各節(jié)點并行計算,當(dāng)本節(jié)點迭代一次之后,立即開始下一輪迭代?,F(xiàn)有技術(shù)中的GRACE圖計算模型提供了用戶友好的BSP編程接口,而迭代執(zhí)行時采用異步方式?,F(xiàn)有技術(shù)中的PowerGraph圖計算模型提供了同步和異步迭代兩種計算引擎,用戶只需要描述圖中點的計算,可以指定任意一種執(zhí)行方式。
[0006]異步迭代執(zhí)行面臨數(shù)據(jù)一致性的問題,為了迭代的收斂和迭代速度,針對邊和點的數(shù)據(jù)讀寫,還有異步迭代的不同一致性之分:完全一致、邊一致和點一致。圖中計算存在于點,而數(shù)據(jù)在點和邊上都有分布??紤]到收斂性要求,異步迭代的一致性約束分為三類:
[0007]a)完全一致:當(dāng)前節(jié)點計算時,不允許其他節(jié)點讀寫自己、鄰邊及鄰節(jié)點的數(shù)據(jù)。
[0008]b)邊一致:當(dāng)前節(jié)點計算時,不允許其他節(jié)點讀寫自己和鄰邊的數(shù)據(jù),但是允許讀寫其鄰居節(jié)點的數(shù)據(jù)。
[0009]c)點一致:當(dāng)前節(jié)點計算時,不允許其他節(jié)點讀寫自己,對其鄰邊和鄰居節(jié)點的讀寫不限制。
[0010]不同一致性下的異步迭代執(zhí)行,會有不同的執(zhí)行過程甚至結(jié)果[18]。目前圖計算模型的一致性研究不多,且僅有單一異步一致性的迭代方式,即只單獨使用完全一致、邊一致、點一致三種方式里的一種。
[0011](3)同步和(邊一致)異步迭代結(jié)合,例如PowerSwitch,能夠在計算過程中按照設(shè)定的閾值在同步迭代和異步迭代之間切換。
[0012]但是,在不規(guī)整的圖數(shù)據(jù)上,并行同步迭代各個點上的計算難以同時結(jié)束,同步迭代可能面臨著嚴(yán)重的“落后者問題”。已有的異步迭代方式只有單純的完全一致、邊一致和點一致。圖1、圖2和圖3分別示出了完全一致、邊一致和點一致三種情況下的相鄰的三個節(jié)點1、2、3的讀寫操作。
[0013]完全一致、邊一致和點一致三者都有其不足:
[0014]a)完全一致的異步迭代執(zhí)行能夠有效避免競爭,但是在同一時間段內(nèi)同時執(zhí)行的點數(shù)有限,并行效率較低。
[0015]b)邊一致相對于完全一致約束較松,但在邊上沒有數(shù)據(jù)的條件下,邊一致和點一致相同。(由于寫鎖排斥讀鎖,而讀鎖之間不互相排斥。在異步執(zhí)行時,讀到的鄰居數(shù)據(jù)并不要求是最新值。所以在沒有邊數(shù)據(jù)時,點一致和邊一致都只維持本節(jié)點的范圍計算即可。)
[0016]c)點一致是完全異步的執(zhí)行模式,但是在迭代執(zhí)行的后期,對于一些算法會出現(xiàn)競爭的情況而難以收斂。
[0017]不同的一致性適用于異步執(zhí)行的不同階段。在不同的異步一致性約束條件下,完全一致和邊一致能夠有效避免數(shù)據(jù)一致性問題引發(fā)的死鎖,同時能夠避免競爭危害,而點一致即完全異步會產(chǎn)生嚴(yán)重的競爭危害。在異步執(zhí)行的開始階段,較高的一致性限制會降低各點迭代的速度,因為此時競爭較少,而基于一致性要求,只有不到50%的節(jié)點在同時計算,較多的等待節(jié)點制約了執(zhí)行速度。而在異步執(zhí)行的后期,較高的一致性會加快收斂,而較低的一致性會引發(fā)競爭,甚至難以收斂。
【發(fā)明內(nèi)容】
[0018]本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)中存在上述缺陷,提供一種能夠動態(tài)調(diào)整一致性約束條件的異步迭代方法一一弱一致的異步迭代策略,綜合已有的不同一致性約束條件,根據(jù)異步迭代的不同時間段的特征,選擇最合適的一致性模型,以提高迭代效率,加速計算過程。
[0019]為了實現(xiàn)上述技術(shù)目的,根據(jù)本發(fā)明,提供了一種基于動態(tài)一致性約束的圖計算異步迭代方法,包括:開始圖計算異步迭代處理,并且在開始時將所有節(jié)點中的所述活躍點的異步迭代模式設(shè)置為點一致異步迭代模式;在圖計算異步迭代處理的過程中,改變至少一部分當(dāng)前活躍點的異步迭代模式。
[0020]優(yōu)選地,在圖計算異步迭代處理的過程中,在每輪迭代處理之后、或者每隔預(yù)定輪次的迭代處理、或者以預(yù)定時間間隔、或者在預(yù)定條件下,改變至少一部分當(dāng)前活躍點的異步迭代模式。
[0021]優(yōu)選地,所述預(yù)定條件指的是活躍點的數(shù)量是否處于預(yù)定范圍內(nèi)。
[0022]優(yōu)選地,改變至少一部分當(dāng)前活躍點的異步迭代模式,從而使得所有活躍點的異步迭代模式改變?yōu)橄率鰻顟B(tài)中的一種:
[0023]所有活躍點的異步迭代模式為完全一致異步迭代模式;
[0024]所有活躍點的異步迭代模式為邊一致異步迭代模式;
[0025]部分活躍點的異步迭代模式為完全一致異步迭代模式,其它活躍點為點一致異步迭代模式;
[0026]部分活躍點的異步迭代模式為邊一致異步迭代模式,其它活躍點為點一致異步迭代模式;
[0027]部分活躍點的異步迭代模式為完全一致異步迭代模式,同時另一部分活躍點的異步迭代模式為邊一致異步迭代模式,其它活躍點為點一致異步迭代模式。
【附圖說明】
[0028]結(jié)合附圖,并通過參考下面的詳細(xì)描述,將會更容易地對本發(fā)明有更完整的理解并且更容易地理解其伴隨的優(yōu)點和特征,其中:
[0029]圖1示意性地示出了完全一致的執(zhí)行情況。
[0030]圖2示意性地示出了邊一致的執(zhí)行情況。
[0031]圖3示意性地示出了點一致的執(zhí)行情況。
[0032]圖4示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的基于動態(tài)一致性約束的圖計算異步迭代方法的流程圖。
[0033]圖5示意性地示出了圖著色算法的迭代執(zhí)行結(jié)果的比較示意。
[0034]需要說明的是,附圖用于說明本發(fā)明,而非限制本發(fā)明。注意,表示結(jié)構(gòu)的附圖可能并非按比例繪制。并且,附圖中,相同或者類似的元件標(biāo)有相同或者類似的標(biāo)號。
【具體實施方式】
[0035]為了使本發(fā)明的內(nèi)容更加清楚和易懂,下面結(jié)合具體實施例和附圖對本發(fā)明的內(nèi)容進(jìn)行詳細(xì)描述。
[0036]本發(fā)明提出的一個恰當(dāng)?shù)慕鉀Q方式是在執(zhí)行的初期采用完全異步的方式進(jìn)行迭代,在中后期提高一致性約束加快收斂。在“以點為中心”的計算中,異步迭代執(zhí)行過程以活躍點的數(shù)目描述,指的是同一時刻在執(zhí)行計算的節(jié)點。
[0037]圖4示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的基于動態(tài)一致性約束的圖計算異步迭代方法的流程圖。
[0038]如圖4所示,根據(jù)本發(fā)明優(yōu)選實施例的基于動態(tài)一致性約束的圖計算異步迭代方法包括:
[0039]第一步驟S1:開始圖計算異步迭代處理,并且在開始時將所有節(jié)點的異步迭代模式設(shè)置為點一致異步迭代模式;
[0040]第二步驟S2:在圖計算異步迭代處理的過程中(例如,在每輪迭代處理之后,或者每隔預(yù)定輪次的迭代處理,或者以預(yù)定時間間隔,或者在預(yù)定條件下),改變至少一部分當(dāng)前活躍點的異步迭代模式。
[0041]對于第二步驟S2,改變至少一部分當(dāng)前活躍點的異步迭代模式之后實際上存在下述幾種情況: