專利名稱:集群渲染環(huán)境中基于pkdt樹的動態(tài)反饋負(fù)載均衡方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集群渲染領(lǐng)域,具體涉及一種集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法。
背景技術(shù):
目前,高真實感渲染在很多領(lǐng)域已經(jīng)有了越來越多的應(yīng)用,例如在電影特效的制作,真實感場景的展示等方面都有重要應(yīng)用。高真實感渲染需要極高的計算能量,如果對渲染速度也有較高要求,那么單機(jī)的渲染能力已經(jīng)無法滿足,二需要使用集群技術(shù)。負(fù)載均衡問題是影響集群渲染系統(tǒng)整體性能的重要因素之一。集群渲染系統(tǒng)中,由于不同渲染節(jié)點(diǎn)間處理能力上的差異或者任務(wù)分配的不均勻,會出現(xiàn)不同渲染節(jié)點(diǎn)任務(wù)完成時間不一致的情況,這樣完成時間早的節(jié)點(diǎn)只能閑置等待處理時間慢的渲染節(jié)點(diǎn),從而造成了集群渲染系統(tǒng)資源的浪費(fèi)。目前解決負(fù)載不均衡問題的方法從大類上來說有兩種,一是靜態(tài)平衡方法;二是動態(tài)平衡方法。靜態(tài)平衡方法通過對整個集群渲染系統(tǒng)中各個渲染節(jié)點(diǎn)的計算能力進(jìn)行估算,然后在初始化階段就將任務(wù)分配好,一旦分配就不再改變。這種方法局限性非常大,首先,通常難以準(zhǔn)確估算渲染節(jié)點(diǎn)的計算能力以及網(wǎng)絡(luò)環(huán)境等;其次,由于每個渲染節(jié)點(diǎn)的計算環(huán)境、網(wǎng)絡(luò)環(huán)境一直處于不斷的變化之中,這些渲染節(jié)點(diǎn)的計算能力以及網(wǎng)絡(luò)傳輸能力也是不停地變化的,因此,這種方法通常難以取得好的效果。動態(tài)平衡方法是目前流行的方法,目前有很多這一類算法,像Diffustion方法,,Median-cut算法Master-slave方法等,但是仍沒有成熟的動態(tài)負(fù)載平衡方法能夠用于集群渲染環(huán)境中按屏幕空間劃分的方式。PKDT(Prediction KD Tree)即預(yù)測KD樹,它記錄了當(dāng)前屏幕空間的一種任務(wù)劃分,PKDT樹的每個葉子節(jié)點(diǎn)對應(yīng)著屏幕空間中的一個像素子塊。PKDT樹基于如下理論前提前巾貞和后巾貞之間的同一像素子塊存在時空連續(xù)性,即某一子塊的下一巾貞渲染所需的時間跟上一幀非常接近,所以能夠利用上一幀記錄的時間作為預(yù)估值。
發(fā)明內(nèi)容
本發(fā)明提供了一種集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,集群渲染系統(tǒng)的服務(wù)器將每幀渲染任務(wù)按屏幕空間進(jìn)行任務(wù)劃分,并將劃分后的子任務(wù)在各渲染機(jī)器節(jié)點(diǎn)中進(jìn)行動態(tài)平衡分配,充分挖掘集群渲染系統(tǒng)的最佳渲染能力。一種集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,包括如下步驟(I)針對需要渲染的三維模型,服務(wù)器將渲染任務(wù)劃分成若干子任務(wù),將這些子任務(wù)預(yù)指定給每個渲染機(jī)器節(jié)點(diǎn),并逐個進(jìn)行傳送;(2)每個渲染機(jī)器節(jié)點(diǎn)執(zhí)行完一個子任務(wù)后,向服務(wù)器返回渲染結(jié)果圖像,并申請下一個子任務(wù);(3)服務(wù)器節(jié)點(diǎn)記錄每個渲染機(jī)器節(jié)點(diǎn)完成每個子任務(wù)的時間以及每個渲染機(jī)器節(jié)點(diǎn)完成的子任務(wù)的數(shù)量,并依據(jù)該記錄結(jié)果將未完成的子任務(wù)在渲染機(jī)器節(jié)點(diǎn)之間進(jìn)行動態(tài)平衡分配,直至完成該幀渲染任務(wù)。集群渲染系統(tǒng)的服務(wù)器節(jié)點(diǎn)將渲染任務(wù)依據(jù)屏幕空間劃分為若干子任務(wù),并將子任務(wù)預(yù)先指定給每個渲染機(jī)器節(jié)點(diǎn),每個渲染機(jī)器節(jié)點(diǎn)即集群渲染系統(tǒng)中的某臺機(jī)器,預(yù)先指定時,遵循每臺渲染機(jī)器完成預(yù)先指定的子任務(wù)的時間盡可能一樣的原則,最后,每次向渲染機(jī)器傳送一個子任務(wù),服務(wù)器節(jié)點(diǎn)記錄每臺渲染機(jī)器完成每個子任務(wù)的時間,并依據(jù)該記錄結(jié)果將未完成的子任務(wù)在各臺渲染機(jī)器之間進(jìn)行新的預(yù)先指定。在新的預(yù)先指定過程中,首先對未完成的子任務(wù)進(jìn)行重新劃分以及將重新劃分后的所有子任務(wù)在不同的渲染機(jī)器節(jié)點(diǎn)(機(jī)器)之間進(jìn)行新的預(yù)先指定。作為優(yōu)選,所述步驟(I)中服務(wù)器節(jié)點(diǎn)向渲染機(jī)器節(jié)點(diǎn)預(yù)先指定子任務(wù)之前,根據(jù)每個子任務(wù)中(需要渲染的像素的數(shù)量)預(yù)估每個子任務(wù)的計算量。優(yōu)選地,所述步驟(I)中劃分渲染任務(wù)時,每個子任務(wù)的計算量相同。也即每個子任務(wù)需要渲染的像素的數(shù)量相同。作為優(yōu)選,所述步驟(I)中子任務(wù)數(shù)目是渲染節(jié)點(diǎn)數(shù)目的整數(shù)倍。便于在渲染機(jī)器節(jié)點(diǎn)中平均分配子任務(wù),使每個渲染機(jī)器節(jié)點(diǎn)在相同的時間內(nèi)完成渲染任務(wù)。作為優(yōu)選,所述步驟(I)中將需要渲染的三維模型投影到屏幕空間,對于屏幕空間的像素,若與三維模型相對應(yīng)的幾何點(diǎn)落到該像素,則該像素即為需要渲染的像素。作為優(yōu)選,所述步驟(3)中對比各個渲染機(jī)器節(jié)點(diǎn)完成每個子任務(wù)的時間,優(yōu)先向完成時間短的渲染機(jī)器節(jié)點(diǎn)傳送下一個子任務(wù)。也即渲染速度快的渲染機(jī)器節(jié)點(diǎn)將完成較多的渲染任務(wù),使整個集群渲染系統(tǒng)的渲染速度達(dá)到性能最高。本發(fā)明集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法具有以下有益效果(I)將每幀渲染任務(wù)劃分為若干子任務(wù),子任務(wù)分別由不同的渲染機(jī)器完成,可以有效平衡不同渲染機(jī)器之間的渲染計算量;(2)子任務(wù)的劃分?jǐn)?shù)目可以人為設(shè)置,計算能力弱的渲染機(jī)器也可以加入到集群系統(tǒng)中,大大地提高集群渲染系統(tǒng)的擴(kuò)展性;(3)子任務(wù)的劃分結(jié)束后,依次向各臺渲染機(jī)器進(jìn)行傳送即可,可以減小圖像處理和傳輸?shù)臅r間消耗;(4)充分利用了集群渲染系統(tǒng)的整體計算能力,使集群渲染系統(tǒng)的整體性能達(dá)到最好。
圖1為一顆8節(jié)點(diǎn)的PKDT樹;圖2為一個寬度為12的子塊初次劃分時的示意圖。
具體實施例方式下面結(jié)合附圖,對本發(fā)明集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法做詳細(xì)描述。一種集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,包括以下步驟(I)首先,針對需要渲染的三維節(jié)點(diǎn)模型,服務(wù)器預(yù)先將渲染任務(wù)劃分成若干子任務(wù)。每幀的渲染任務(wù)就是需要渲染得到的最終結(jié)果,渲染任務(wù)劃分采用屏幕空間的方式劃分,將其按照像素區(qū)域劃分成若干相互獨(dú)立的子像素區(qū)域,其中,每一個子像素區(qū)域被稱為子任務(wù),任務(wù)劃分結(jié)束后,對每一個子任務(wù)進(jìn)行編號標(biāo)記。例如將一張1920*1080的圖像分割成192*108的100張子圖像,其對應(yīng)100個子任務(wù)。(2)將步驟(I)中劃分得到的子任務(wù)預(yù)先指定給每個渲染機(jī)器節(jié)點(diǎn),并逐個進(jìn)行傳送。服務(wù)器節(jié)點(diǎn)預(yù)先將渲染任務(wù)劃分成若干子任務(wù)后進(jìn)行初始化預(yù)指定,以步驟(I)中1920*1080的圖像舉例,如果有10臺渲染機(jī)器,也即10個渲染機(jī)器節(jié)點(diǎn),那么每臺渲染機(jī)器會被預(yù)指定10個子任務(wù),每臺渲染機(jī)器每次被傳送I個子任務(wù)。(3)每個渲染渲染節(jié)點(diǎn)對傳送的子任務(wù)進(jìn)行渲染運(yùn)算,每次子任務(wù)完成后,立即將渲染結(jié)果圖像返回給服務(wù)器節(jié)點(diǎn),完成預(yù)指定的所有子任務(wù)并將所有渲染結(jié)果圖像返回給服務(wù)器節(jié)點(diǎn)之后,該渲染機(jī)器節(jié)點(diǎn)向服務(wù)器節(jié)點(diǎn)請求下一次渲染任務(wù)。(4)服務(wù)器節(jié)點(diǎn)記錄每個渲染機(jī)器節(jié)點(diǎn)完成每個子任務(wù)的時間以及每個渲染機(jī)器節(jié)點(diǎn)完成的子任務(wù)的數(shù)量,并依據(jù)該記錄結(jié)果調(diào)整每個渲染機(jī)器節(jié)點(diǎn)預(yù)指定的子任務(wù)的數(shù)量。例如,有三臺機(jī)器,分別為A、B和C, A完成一個子任務(wù)的時間是2s, B完成一個子任務(wù)的時間是10s,C完成一個子任務(wù)的時間是20s,那么增加A的子任務(wù)的數(shù)量,減少C的子任務(wù)的數(shù)量,維持B的子任務(wù)的數(shù)量不變,能夠達(dá)到A、B和C完成預(yù)指定的子任務(wù)的時間盡可能地相同,最大限度地利用每臺渲染機(jī)器的計算能力,提高整體集群系統(tǒng)渲染的效率。服務(wù)器節(jié)點(diǎn)得到所有渲染機(jī)器節(jié)點(diǎn)的渲染結(jié)果圖像后,將最終的渲染圖像呈現(xiàn)在屏幕上。下面結(jié)合PKDT樹具體描述動態(tài)負(fù)載反饋均衡方法一顆PKDT樹的根節(jié)點(diǎn)r代表整個屏幕空間的每幀渲染任務(wù),每個渲染機(jī)器節(jié)點(diǎn)都有兩個子節(jié)點(diǎn),代表當(dāng)前節(jié)點(diǎn)劃分出來的兩個子塊,子節(jié)點(diǎn)可以繼續(xù)劃分,直到葉子節(jié)點(diǎn)(即子塊)的數(shù)目接近子任務(wù)的數(shù)目為止,每個葉子節(jié)點(diǎn)對應(yīng)一個子任務(wù)。PKDT樹的所有葉子樹節(jié)點(diǎn)(子塊),記為L(T),表示了屏幕空間每幀任務(wù)的實際劃分情況,每個葉子節(jié)點(diǎn)I e L(T)。記錄每個子塊的相對寬高和位置的同時,還記錄完成該塊任務(wù)所需的時間t(l)。為了保持屏幕空間劃分的均衡性和連續(xù)性,用掃描線沿坐標(biāo)方向進(jìn)行掃描,然后計算該掃描線所經(jīng)區(qū)域和剩余區(qū)域的渲染任務(wù)的時間,兩個區(qū)域的渲染任務(wù)時間一個遞減,一個遞增,在掃描線動態(tài)移動過程中的某一點(diǎn)會相同,經(jīng)過該點(diǎn)的掃描線即為分割線。為了盡可能快遞趨近于負(fù)載均衡,初始化時對屏幕空間里的子任務(wù)所需的渲染時間預(yù)估,然后根據(jù)預(yù)估的時間劃分屏幕空間,這樣能夠有效達(dá)到負(fù)載平衡所需的步驟和時間。首先,根據(jù)相機(jī)(camera)設(shè)置把需要渲染的三維模型投影到大小為W*H(寬*高)的屏幕空間,對于屏幕空間的每一個像素C(i,j) (0彡i <H,0< j <W),其中,i為C像素的橫坐標(biāo),j為C像素的縱坐標(biāo),若模型的幾何面片落到該像素,則該像素被標(biāo)記為1,若模型的幾何面片沒有落到該像素,則該像素被標(biāo)記為O。如圖1所示,對于左上角位置為(Xc^yci),大小為w*h(寬*高,且假設(shè)w > h)的當(dāng)前子塊D,利用式
權(quán)利要求
1.一種集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,其特征在于,包括如下步驟: (1)針對需要渲染的三維模型,服務(wù)器節(jié)點(diǎn)將每幀渲染任務(wù)劃分成若干子任務(wù),將這些子任務(wù)預(yù)先指定給每個渲染機(jī)器節(jié)點(diǎn),并逐個進(jìn)行傳送; (2)每個渲染機(jī)器節(jié)點(diǎn)執(zhí)行完一個子任務(wù)后,向服務(wù)器機(jī)器返回渲染結(jié)果圖像,并申請下一個子任務(wù); (3)服務(wù)器節(jié)點(diǎn)記錄每個渲染機(jī)器節(jié)點(diǎn)完成每個子任務(wù)的時間以及每個渲染機(jī)器節(jié)點(diǎn)完成的子任務(wù)的數(shù)量,并依據(jù)該記錄結(jié)果將未完成的子任務(wù)在渲染機(jī)器節(jié)點(diǎn)之間進(jìn)行動態(tài)平衡,直至完成該幀渲染任務(wù)。
2.如權(quán)利要求1所述的集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,其特征在于,所述步驟(1)中服務(wù)器向渲染節(jié)點(diǎn)預(yù)先指定子任務(wù)之前,根據(jù)每個子任務(wù)中需要渲染的像素的數(shù)量預(yù)估每個子任務(wù)的計算量。
3.如權(quán)利要求2所述的集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,其特征在于,所述步驟(1)中劃分渲染任務(wù)時,每個子任務(wù)的計算量相同。
4.如權(quán)利要求3所述的集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,其特征在于,所述步驟(1)中子任務(wù)數(shù)目是渲染機(jī)器節(jié)點(diǎn)數(shù)目的整數(shù)倍。
5.如權(quán)利要求4所述的集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,其特征在于,所述步驟(1)中將需要渲染的模型投影到屏幕空間,對于屏幕空間的每一個像素,若與模型相對應(yīng)的幾何面片落到該像素,則該像素即為需要渲染的像素。
6.如權(quán)利要求5所述的集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,其特征在于,所述步驟(3)中對比各個渲染機(jī)器節(jié)點(diǎn)完成每個子任務(wù)的時間,優(yōu)先向完成時間短的渲染機(jī)器節(jié)點(diǎn)傳送下一個子任務(wù)。
全文摘要
本發(fā)明公開了一種集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,包括如下步驟(1)針對需要渲染的三維模型,服務(wù)器將渲染的每幀任務(wù)劃分成若干子任務(wù),將這些子任務(wù)預(yù)先指定給每個渲染機(jī)器節(jié)點(diǎn),并逐個進(jìn)行傳送;(2)每個渲染機(jī)器節(jié)點(diǎn)執(zhí)行完一個子任務(wù)后,向服務(wù)器機(jī)器節(jié)點(diǎn)返回渲染結(jié)果圖像,并申請下一個子任務(wù);(3)服務(wù)器記錄每個渲染機(jī)器節(jié)點(diǎn)完成每個子任務(wù)的時間以及每個渲染機(jī)器節(jié)點(diǎn)完成的子任務(wù)的數(shù)量,并按照該記錄結(jié)果將未完成的子任務(wù)在渲染機(jī)器節(jié)點(diǎn)之間進(jìn)行動態(tài)平衡分配,直至完成渲染這幀任務(wù)。本發(fā)明集群渲染環(huán)境中基于PKDT樹的動態(tài)反饋負(fù)載均衡方法,將每幀渲染任務(wù)按屏幕空間進(jìn)行均勻劃分,并將劃分后的子任務(wù)在各渲染機(jī)器節(jié)點(diǎn)中進(jìn)行動態(tài)平衡分配,充分挖掘集群渲染系統(tǒng)的最佳渲染能力。
文檔編號G06F9/50GK103077088SQ20131001815
公開日2013年5月1日 申請日期2013年1月17日 優(yōu)先權(quán)日2013年1月17日
發(fā)明者張勤飛, 趙磊, 魯東明, 任艷姣, 陸勝, 李偉 申請人:浙江大學(xué)