專利名稱:用于逼真成像工作量分布的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算機(jī)聯(lián)網(wǎng)和并行處理的領(lǐng)域,更具體地涉及用于改進(jìn)的逼真 (photorealistic)成像工作量分配的系統(tǒng)和方法。
背景技術(shù):
諸如微處理器系統(tǒng)之類的現(xiàn)代電子計(jì)算系統(tǒng)通常配置為將計(jì)算密集的任務(wù)分成離散的子任務(wù)。對(duì)于多機(jī)種(heterogeneous)系統(tǒng)來(lái)說(shuō),一些系統(tǒng)采用高速緩存感知的任務(wù)分解來(lái)提高分布式應(yīng)用的性能。隨著技術(shù)的進(jìn)步,快速的局部高速緩存和大的慢速存儲(chǔ)器之間的差距擴(kuò)大,并且高速緩存變得更加重要。一般地,典型的現(xiàn)代系統(tǒng)試圖在多個(gè)處理元件(PE)之間分配工作,以便提高高速緩存命中率并且降低數(shù)據(jù)停止時(shí)間。例如,光線跟蹤、逼真成像技術(shù)是計(jì)算上代價(jià)大的算法,其通常不具有固定的數(shù)據(jù)訪問(wèn)模式。然而,光線跟蹤任務(wù)仍然可能具有非常高的空間和時(shí)間局域性。因而,對(duì)于光線跟蹤應(yīng)用的高速緩存感知的任務(wù)分配可能帶來(lái)高的性能收益。但是典型的光線跟蹤方法不能配置為充分利用高速緩存感知的任務(wù)分配。例如, 當(dāng)前的光線跟蹤器通過(guò)將圖像分拆成瓦片(tile)來(lái)分解渲染問(wèn)題。典型的光線跟蹤器或者明確地在計(jì)算單元之間分配這些瓦片或者貪婪地保留瓦片以用于由PE通過(guò)工作竊取來(lái)訪問(wèn)ο這兩種方法都有顯著的缺點(diǎn)。在典型的明確分配系統(tǒng)中,管理瓦片的分配所需的額外的工作量抑制了性能。在一些情況下,該額外的工作量可能減輕通過(guò)管理的分配實(shí)現(xiàn)的任何收益。在典型的工作竊取系統(tǒng)中,每個(gè)PE在它已經(jīng)處理了它的先前的調(diào)配之后抓取新的瓦片。但是由于PE從通用池抓取瓦片,因此瓦片很少會(huì)具有高的空間局域性。因而,在工作竊取系統(tǒng)中,PE用新的場(chǎng)景數(shù)據(jù)有規(guī)律地刷新它們的高速緩存,因此PE對(duì)于下一幀是冷的(cold),完全不能利用任務(wù)的空間局域性的優(yōu)點(diǎn)。
發(fā)明內(nèi)容
提供以下發(fā)明內(nèi)容以便于理解只有本公開(kāi)的實(shí)施例才有的一些創(chuàng)新的特征并且不意圖是詳盡的描述。對(duì)實(shí)施例的各個(gè)方面的完整理解可以通過(guò)將整個(gè)說(shuō)明書(shū)、權(quán)利要求書(shū)、附圖和摘要作為整體考慮而獲得。圖形客戶端接收幀,該幀包括場(chǎng)景模型數(shù)據(jù)。基于該場(chǎng)景模型數(shù)據(jù)設(shè)置服務(wù)器負(fù)載平衡因子。基于該場(chǎng)景模型數(shù)據(jù)設(shè)置預(yù)期渲染因子?;谠摲?wù)器負(fù)載平衡因子和預(yù)期渲染因子將幀分割成多個(gè)服務(wù)器帶。將服務(wù)器帶分配給多個(gè)計(jì)算服務(wù)器。從該計(jì)算服務(wù)器接收處理后的服務(wù)器帶?;诮邮盏奶幚砗蟮姆?wù)器帶組合處理后的幀。發(fā)送處理后的幀以作為圖像顯示給用戶。在可替換的實(shí)施例中,一種系統(tǒng)包括圖形客戶端。該圖形客戶端配置為接收幀, 該幀包括場(chǎng)景模型數(shù)據(jù);基于該場(chǎng)景模型數(shù)據(jù)設(shè)置服務(wù)器負(fù)載平衡因子;基于該場(chǎng)景模型數(shù)據(jù)設(shè)置預(yù)期渲染因子;基于該服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子將該幀分割成多個(gè)服務(wù)器帶;將多個(gè)服務(wù)器帶分配給多個(gè)計(jì)算服務(wù)器;從多個(gè)計(jì)算服務(wù)器接收處理后的服務(wù)器帶;基于接收的處理后的服務(wù)器帶組合處理后的幀;以及發(fā)送處理后的幀以作為圖像顯示給用戶。從第一方面看來(lái),本發(fā)明提供一種在數(shù)據(jù)處理系統(tǒng)中用于逼真成像工作量分配的方法,該方法包括步驟由圖形客戶端接收幀;基于服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子將該幀分割成多個(gè)服務(wù)器帶;將多個(gè)服務(wù)器帶分配給多個(gè)計(jì)算服務(wù)器;從多個(gè)計(jì)算服務(wù)器接收處理后的服務(wù)器帶;基于接收的處理后的服務(wù)器帶組合處理后的幀;以及發(fā)送該處理后的幀以作為圖像顯示給用戶;并且其中分割該幀還包括在水平服務(wù)器帶和垂直服務(wù)器帶之間選擇。優(yōu)選地,本發(fā)明提供一種方法還包括接收用戶輸入;以及其中設(shè)置該預(yù)期渲染因子還包括基于接收的用戶輸入設(shè)置該預(yù)期渲染因子。優(yōu)選地,本發(fā)明提供一種方法還包括從該多個(gè)服務(wù)器的至少一個(gè)中接收?qǐng)?bào)告的渲染時(shí)間;以及其中設(shè)置該服務(wù)器負(fù)載平衡因子還包括基于報(bào)告的渲染時(shí)間設(shè)置該服務(wù)器負(fù)載平衡因子。優(yōu)選地,本發(fā)明提供一種方法,其中組合處理后的幀帶還包括解壓縮接收的處理后的服務(wù)器帶。從第二方面看來(lái),本發(fā)明提供一種在服務(wù)器數(shù)據(jù)處理系統(tǒng)中用于逼真成像工作量分配的方法,該方法包括步驟由計(jì)算服務(wù)器接收原始的顯示帶,該原始的顯示帶包括場(chǎng)景模型數(shù)據(jù);該計(jì)算服務(wù)器包括多個(gè)處理元件(PE);基于PE負(fù)載平衡因子將原始的顯示帶分割成多個(gè)PE塊;將多個(gè)PE塊分配給多個(gè)PE ;由每個(gè)PE渲染該P(yáng)E塊以產(chǎn)生渲染的PE塊; 由該計(jì)算服務(wù)器組合該渲染的PE塊以產(chǎn)生處理后的顯示帶;由該計(jì)算服務(wù)器確定每個(gè)PE 的渲染時(shí)間;基于確定的渲染時(shí)間修改該P(yáng)E負(fù)載平衡因子;以及將處理后的顯示帶發(fā)送到圖形客戶端。優(yōu)選地,本發(fā)明提供一種方法,其中所述發(fā)送包括壓縮處理后的顯示帶。優(yōu)選地,本發(fā)明提供一種方法還包括基于確定的渲染時(shí)間將渲染時(shí)間報(bào)告給圖形客戶端。優(yōu)選地,本發(fā)明提供一種方法還包括其中該原始的顯示帶還包括預(yù)期的渲染輸入;以及其中分割該原始的顯示帶包括基于該P(yáng)E負(fù)載平衡因子和預(yù)期的渲染輸入進(jìn)行分割。優(yōu)選地,本發(fā)明提供一種方法,其中修改PE負(fù)載平衡因子還包括基于確定的渲染時(shí)間和接收的預(yù)期的渲染輸入來(lái)修改該P(yáng)E負(fù)載平衡因子。從另一個(gè)方面看來(lái),本發(fā)明提供一種系統(tǒng),包括圖形客戶端,該圖形客戶端配置為接收幀;設(shè)置服務(wù)器負(fù)載平衡因子;設(shè)置預(yù)期渲染因子;基于該服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子將該幀分割成多個(gè)服務(wù)器帶;將多個(gè)服務(wù)器帶分配給多個(gè)計(jì)算服務(wù)器;從多個(gè)計(jì)算服務(wù)器接收處理后的服務(wù)器帶;基于接收的處理后的服務(wù)器帶組合處理后的幀;以及發(fā)送處理后的幀以作為圖像顯示給用戶。優(yōu)選地,本發(fā)明提供一種系統(tǒng)還包括其中該圖形客戶端還配置為接收用戶輸入; 以及其中設(shè)置該預(yù)期渲染因子還包括基于接收的用戶輸入設(shè)置該預(yù)期渲染因子。
優(yōu)選地,本發(fā)明提供一種系統(tǒng)還包括其中該圖形客戶端還配置為從該多個(gè)服務(wù)器的至少一個(gè)中接收?qǐng)?bào)告的渲染時(shí)間;以及其中設(shè)置該服務(wù)器負(fù)載平衡因子還包括設(shè)置該服務(wù)器負(fù)載平衡因子和報(bào)告的渲染時(shí)間。優(yōu)選地,本發(fā)明提供一種系統(tǒng)還包括多個(gè)計(jì)算服務(wù)器,每個(gè)計(jì)算服務(wù)器耦接到該圖形客戶端并且包括多個(gè)處理元件(PE),并且每個(gè)計(jì)算服務(wù)器配置為從該圖形客戶端接收原始的顯示帶,該原始的顯示帶包括場(chǎng)景模型數(shù)據(jù);基于PE負(fù)載平衡因子將原始的顯示帶分割成多個(gè)PE塊;以及將多個(gè)PE塊分配給多個(gè)PE ;其中每個(gè)PE配置為渲染該P(yáng)E塊以產(chǎn)生渲染的PE塊;以及其中每個(gè)計(jì)算服務(wù)器還配置為組合由該計(jì)算服務(wù)器的PE渲染的渲染后的PE塊以產(chǎn)生處理后的顯示帶;確定該計(jì)算服務(wù)器的PE的每一個(gè)的渲染時(shí)間;基于確定的渲染時(shí)間修改該P(yáng)E負(fù)載平衡因子;以及將處理后的顯示帶發(fā)送到圖形客戶端。優(yōu)選地,本發(fā)明提供一種系統(tǒng)還包括其中該原始的顯示帶還包括預(yù)期的渲染輸入;以及其中分割該原始的顯示帶包括基于該P(yáng)E負(fù)載平衡因子和預(yù)期的渲染輸入進(jìn)行分割。從另一個(gè)方面看來(lái),本發(fā)明提供一種計(jì)算機(jī)程序,包括在加載到計(jì)算機(jī)系統(tǒng)中并且被運(yùn)行時(shí)執(zhí)行如上所述的方法的所有步驟的計(jì)算機(jī)程序代碼。從另一個(gè)方面看來(lái),本發(fā)明提供一種用于處理數(shù)字化的圖形幀的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品存儲(chǔ)在其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用介質(zhì)中,該計(jì)算機(jī)可用程序代碼包括配置為圖形客戶端接收幀的計(jì)算機(jī)可用程序代碼,該幀包括場(chǎng)景模型數(shù)據(jù);配置為基于該場(chǎng)景模型數(shù)據(jù)設(shè)置服務(wù)器負(fù)載平衡因子的計(jì)算機(jī)可用程序代碼; 配置為基于該場(chǎng)景模型數(shù)據(jù)設(shè)置預(yù)期渲染因子的計(jì)算機(jī)可用程序代碼;配置為基于該服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子將幀分割成多個(gè)服務(wù)器帶的計(jì)算機(jī)可用程序代碼;配置為將多個(gè)服務(wù)器帶分配給多個(gè)計(jì)算服務(wù)器的計(jì)算機(jī)可用程序代碼;配置為從多個(gè)計(jì)算服務(wù)器接收處理后的服務(wù)器帶的計(jì)算機(jī)可用程序代碼;配置為基于接收的處理后的服務(wù)器帶組合處理后的幀的計(jì)算機(jī)可用程序代碼;配置為發(fā)送處理后的幀以作為圖像顯示給用戶的計(jì)算機(jī)可用程序代碼。優(yōu)選地,本發(fā)明提供一種計(jì)算機(jī)程序產(chǎn)品還包括配置為接收用戶輸入的計(jì)算機(jī)可用程序代碼;以及其中設(shè)置該預(yù)期渲染因子還包括基于該場(chǎng)景模型數(shù)據(jù)和接收的用戶輸入設(shè)置該預(yù)期渲染因子。優(yōu)選地,本發(fā)明提供一種計(jì)算機(jī)程序產(chǎn)品,其中分割該幀還包括在水平服務(wù)器帶和垂直服務(wù)器帶之間選擇。優(yōu)選地,本發(fā)明提供一種計(jì)算機(jī)程序產(chǎn)品還包括配置為從該多個(gè)服務(wù)器的至少一個(gè)中接收?qǐng)?bào)告的渲染時(shí)間的計(jì)算機(jī)可用程序代碼;以及其中設(shè)置該服務(wù)器負(fù)載平衡因子還包括基于該場(chǎng)景模型數(shù)據(jù)和報(bào)告的渲染時(shí)間設(shè)置該服務(wù)器負(fù)載平衡因子。優(yōu)選地,本發(fā)明提供一種計(jì)算機(jī)程序產(chǎn)品,其中組合處理后的幀帶還包括解壓縮接收的處理后的服務(wù)器帶。從另一個(gè)方面看來(lái),本發(fā)明提供一種用于處理數(shù)字化的圖形幀的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品存儲(chǔ)在其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用介質(zhì)中,該計(jì)算機(jī)可用程序代碼包括配置為接收原始的顯示帶的計(jì)算機(jī)可用程序代碼,該原始的顯示帶包括場(chǎng)景模型數(shù)據(jù);配置為基于PE負(fù)載平衡因子將原始的顯示帶分割成多個(gè)PE塊的計(jì)
6算機(jī)可用程序代碼;配置為將多個(gè)PE塊分配給多個(gè)PE的計(jì)算機(jī)可用程序代碼;配置為由每個(gè)PE渲染該P(yáng)E塊以產(chǎn)生渲染的PE塊的計(jì)算機(jī)可用程序代碼;配置為組合該渲染的PE 塊以產(chǎn)生處理后的顯示帶的計(jì)算機(jī)可用程序代碼;配置為確定每個(gè)PE的渲染時(shí)間的計(jì)算機(jī)可用程序代碼;配置為基于確定的渲染時(shí)間修改該P(yáng)E負(fù)載平衡因子的計(jì)算機(jī)可用程序代碼;以及配置為將處理后的顯示帶發(fā)送到圖形客戶端的計(jì)算機(jī)可用程序代碼。優(yōu)選地,本發(fā)明提供一種計(jì)算機(jī)程序產(chǎn)品,其中所述發(fā)送包括壓縮處理后的顯示
市ο優(yōu)選地,本發(fā)明提供一種計(jì)算機(jī)程序產(chǎn)品還包括配置為基于確定的渲染時(shí)間將渲染時(shí)間報(bào)告給圖形客戶端的計(jì)算機(jī)可用程序代碼。優(yōu)選地,本發(fā)明提供一種計(jì)算機(jī)程序產(chǎn)品還包括其中該原始的顯示帶還包括預(yù)期的渲染輸入;以及其中分割該原始的顯示帶包括基于該P(yáng)E負(fù)載平衡因子和預(yù)期的渲染輸入進(jìn)行分割。優(yōu)選地,本發(fā)明提供一種計(jì)算機(jī)程序產(chǎn)品,其中修改PE負(fù)載平衡因子還包括基于確定的渲染時(shí)間和接收的預(yù)期的渲染輸入來(lái)修改該P(yáng)E負(fù)載平衡因子。
附圖進(jìn)一步示出了實(shí)施例并且與詳細(xì)描述一起用來(lái)說(shuō)明這里公開(kāi)的實(shí)施例,在附圖中,貫穿各個(gè)圖,相似的參考數(shù)字指代相同的或功能上相似的元件,附圖并入說(shuō)明書(shū)并且組成說(shuō)明書(shū)的一部分。圖1示出了根據(jù)優(yōu)選實(shí)施例的顯示改進(jìn)的逼真成像系統(tǒng)的框圖;圖2示出了根據(jù)優(yōu)選實(shí)施例的顯示改進(jìn)的圖形客戶端的框圖;圖3示出了根據(jù)優(yōu)選實(shí)施例的顯示改進(jìn)的計(jì)算服務(wù)器的框圖4示出了描述可以根據(jù)優(yōu)選實(shí)施例實(shí)現(xiàn)的改進(jìn)的逼真成像工作量分配方法的邏輯操作步驟的高級(jí)流程圖;圖5示出了描述可以根據(jù)優(yōu)選實(shí)施例實(shí)現(xiàn)的改進(jìn)的逼真成像工作量分配方法的邏輯操作步驟的高級(jí)流程圖;和圖6示出了顯示可以配置為合并一個(gè)或多個(gè)優(yōu)選實(shí)施例的示范性計(jì)算機(jī)系統(tǒng)的框圖。
具體實(shí)施例方式可以改變?cè)谶@些非限制的示例中討論的特定值和配置并且引用它們僅僅是為了示出至少一個(gè)實(shí)施例并且不打算限制本發(fā)明的范圍。在下面的討論中,闡述許多的細(xì)節(jié)以提供對(duì)本發(fā)明的徹底的理解。本領(lǐng)域技術(shù)人員將理解,可以在沒(méi)有這樣的細(xì)節(jié)的情況下實(shí)踐本發(fā)明。在其它的情況下,已經(jīng)以示意性或框圖的形成示出了公知的元件以便不致多余的細(xì)節(jié)混淆本發(fā)明。另外,對(duì)于大部分來(lái)說(shuō),涉及網(wǎng)絡(luò)通信、電磁信令技術(shù)、用戶界面或輸入/輸出技術(shù)等的細(xì)節(jié)已被省略,因?yàn)檫@樣的細(xì)節(jié)不被認(rèn)為是獲得對(duì)本發(fā)明的完整理解所必需的,并且被認(rèn)為在本領(lǐng)域普通技術(shù)人員的理解范圍之內(nèi)。本領(lǐng)域技術(shù)人員將理解,本發(fā)明可以被具體化為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因
7此,本發(fā)明可以采取全部硬件實(shí)施例、全部軟件實(shí)施例(包括固件、常駐軟件、微代碼等)或組合軟件和硬件方面的實(shí)施例(這里一般可以稱為“電路”、“模塊”或“系統(tǒng)”)的形式。此外,本發(fā)明可以采取以其中具有計(jì)算機(jī)可用程序代碼的任何有形介質(zhì)的表達(dá)實(shí)現(xiàn)的計(jì)算機(jī)程序產(chǎn)品的形式??梢允褂靡粋€(gè)或多個(gè)計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是例如電、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置、設(shè)備或傳播介質(zhì),但是不限于此。計(jì)算機(jī)可讀介質(zhì)的更特定的示例(非窮舉的列表)將包括以下項(xiàng)具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPR0M或閃速存儲(chǔ)器)、光纖、便攜式光盤(pán)只讀存儲(chǔ)器(CDROM)、光存儲(chǔ)器設(shè)備、諸如支持互聯(lián)網(wǎng)或內(nèi)部網(wǎng)之類的傳輸介質(zhì)、或磁存儲(chǔ)器。注意,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)甚至可以是上面打印程序的紙或另一種合適的介質(zhì),因?yàn)槌绦蚩梢越?jīng)由例如光學(xué)掃描紙或其它介質(zhì)而被電子地捕獲、然后必要時(shí)以合適的方式編譯、翻譯、或處理、 然后存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。在此文檔的背景下,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是可以包含、存儲(chǔ)、通信、傳播或傳輸該程序以由指令執(zhí)行系統(tǒng)、裝置、或設(shè)備使用或與它們相關(guān)的任何介質(zhì)。計(jì)算機(jī)可用介質(zhì)可以包括在基帶中或作為載波的一部分傳播的其中包含有計(jì)算機(jī)可用程序代碼的數(shù)據(jù)信號(hào)。計(jì)算機(jī)可用程序代碼可以使用任何合適的介質(zhì)來(lái)發(fā)送,包括無(wú)線、有線、光纖電纜、RF等等,但是不限于此。用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī)程序代碼可以用一個(gè)或多個(gè)編程語(yǔ)言的任何組合來(lái)編寫(xiě),包括諸如JaVa、Smalltalk、C++等之類的面向?qū)ο蟮木幊陶Z(yǔ)言以及諸如“C”編程語(yǔ)言或類似的編程語(yǔ)言之類的傳統(tǒng)程序設(shè)計(jì)語(yǔ)言。程序代碼可以全部運(yùn)行在用戶的計(jì)算機(jī)上、部分運(yùn)行在用戶的計(jì)算機(jī)上、作為獨(dú)立軟件包、部分運(yùn)行在用戶的計(jì)算機(jī)且部分運(yùn)行在遠(yuǎn)程計(jì)算機(jī)上或全部運(yùn)行在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上。在后一種情況下,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任何類型的網(wǎng)絡(luò)連接到用戶的計(jì)算機(jī),包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN),或者可以連接到外部計(jì)算機(jī)(例如,使用互聯(lián)網(wǎng)服務(wù)供應(yīng)商通過(guò)互聯(lián)網(wǎng))。下面參考根據(jù)本發(fā)明的實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖說(shuō)明和/或框圖來(lái)描述本發(fā)明。應(yīng)當(dāng)理解,流程圖說(shuō)明和/或框圖的每個(gè)塊以及流程圖說(shuō)明和/或框圖中的塊的組合可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)??梢詫⑦@些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程的數(shù)據(jù)處理裝置的處理器以產(chǎn)生一種機(jī)制,以使得經(jīng)由計(jì)算機(jī)或其它可編程的數(shù)據(jù)處理裝置的處理器運(yùn)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖和/ 或框圖塊中指定的功能/動(dòng)作的裝置。這些計(jì)算機(jī)程序指令也可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,可以指示計(jì)算機(jī)或其它可編程的數(shù)據(jù)處理裝置以特定的方式運(yùn)行,以使得存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生一種包括實(shí)現(xiàn)該流程圖和/或框圖塊中指定的功能/動(dòng)作的指令裝置的制品。計(jì)算機(jī)程序指令也可以被加載到計(jì)算機(jī)或其它可編程的數(shù)據(jù)處理裝置上以使得在計(jì)算機(jī)或其它可編程的裝置上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,以使得運(yùn)行在計(jì)算機(jī)或其它可編程的裝置上的指令提供用于實(shí)現(xiàn)在流程圖和/或框圖塊中指定的功能/動(dòng)作的過(guò)程。適合于存儲(chǔ)和/或運(yùn)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括直接或通過(guò)系統(tǒng)總線間接耦接到存儲(chǔ)元件的至少一個(gè)處理器。存儲(chǔ)元件可以包括在程序代碼的實(shí)際運(yùn)行期間采用
8的本地存儲(chǔ)器、大容量存儲(chǔ)器、以及提供至少一些程序代碼的臨時(shí)存儲(chǔ)以便降低在運(yùn)行期間必須從大容量存儲(chǔ)器檢索代碼的次數(shù)的高速緩存存儲(chǔ)器。輸入/輸出或I/O設(shè)備(包括鍵盤(pán)、顯示器、指示設(shè)備等,但是不限于此)可以直接或通過(guò)插入的I/O控制器耦接到系統(tǒng)。網(wǎng)絡(luò)適配器也可以耦接到該系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠變得通過(guò)插入的私有或公共網(wǎng)絡(luò)耦接到其它數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅僅是幾個(gè)當(dāng)前可用的類型的網(wǎng)絡(luò)適配器?,F(xiàn)在參考附圖,圖1是示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的改進(jìn)的逼真成像工作量分配的系統(tǒng)100的某些組件的高級(jí)框圖。系統(tǒng)100包括圖形客戶端110。圖形客戶端110是圖形客戶端模塊或設(shè)備,如下面結(jié)合圖2更詳細(xì)地描述。圖形客戶端110耦接到顯示器120。顯示器120在其他方面是傳統(tǒng)的顯示器,配置為向用戶顯示數(shù)字化的圖形圖像。圖形客戶端110也耦接到用戶接口 130。用戶接口 130在其他方面是傳統(tǒng)的用戶界面,配置為向用戶132發(fā)送信息且從用戶132接收信息。在一個(gè)實(shí)施例中,圖形客戶端 110從用戶接口 130接收用戶輸入。在一個(gè)實(shí)施例中,用戶輸入包括多個(gè)圖像幀,每個(gè)幀包括場(chǎng)景模型數(shù)據(jù),場(chǎng)景模型數(shù)據(jù)描述布置在圖像中的對(duì)象。在一個(gè)實(shí)施例中,用戶輸入也包括用于描述從一個(gè)圖像幀到另一個(gè)的視角(或“眼睛”)移動(dòng)的相機(jī)移動(dòng)命令。在示出的實(shí)施例中,圖形客戶端110也耦接到網(wǎng)絡(luò)140。網(wǎng)絡(luò)140在其他方面是傳統(tǒng)的網(wǎng)絡(luò)。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)140是千兆位以太網(wǎng)。在可替換的實(shí)施例中,網(wǎng)絡(luò)140是 Infiniband 網(wǎng)絡(luò)。網(wǎng)絡(luò)140耦接到多個(gè)計(jì)算服務(wù)器150。每個(gè)計(jì)算服務(wù)器150是如下面結(jié)合圖3更詳細(xì)地描述的計(jì)算服務(wù)器。在示出的實(shí)施例中,圖形客戶端110通過(guò)網(wǎng)絡(luò)140耦接到計(jì)算服務(wù)器150。在可替換的實(shí)施例中,圖形客戶端110通過(guò)直接鏈路152耦接到一個(gè)或多個(gè)計(jì)算機(jī)服務(wù)器150。在一個(gè)實(shí)施例中,鏈路152是直接的物理鏈路。在可替換的實(shí)施例中,鏈路 152是虛擬鏈路,諸如例如虛擬專用網(wǎng)絡(luò)(VPN)鏈路。一般,在下面更詳細(xì)地描述的示范性操作中,系統(tǒng)100操作如下。用戶132通過(guò)用戶接口 130指示圖形客戶端110在顯示器120上顯示一系列圖像。圖形客戶端110例如通過(guò)從圖形客戶端110上的存儲(chǔ)器或從用戶接口 130檢索一系列幀來(lái)接收一系列圖像,作為一系列數(shù)字化的圖像“幀”。一般,每個(gè)幀包括描述安排在場(chǎng)景中的元素的場(chǎng)景模型數(shù)據(jù)。對(duì)于每個(gè)幀,圖形客戶端110基于服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子將該幀分割成多個(gè)服務(wù)器帶,每個(gè)服務(wù)器帶與特定的計(jì)算服務(wù)器150相關(guān)聯(lián)。圖形客戶端110將服務(wù)器帶分配給計(jì)算服務(wù)器150。每個(gè)計(jì)算服務(wù)器150(包括多個(gè)處理元件(PE))基于PE負(fù)載平衡因子將接收的服務(wù)器帶(作為“原始的顯示帶”接收)分成PE塊,每個(gè)PE塊與特定的PE相關(guān)聯(lián)。在一些實(shí)施例中,計(jì)算服務(wù)器150基于從圖形客戶端110接收到的PE負(fù)載平衡因子和預(yù)期渲染信息將服務(wù)器帶分成PE塊。計(jì)算服務(wù)器150將PE塊分配給它們的PE。PE處理PE塊,渲染原始的幀數(shù)據(jù)并且執(zhí)行將原始的幀數(shù)據(jù)轉(zhuǎn)變成適合于目標(biāo)顯示器120的形式的計(jì)算密集的工作。在逼真成像處理中,渲染可以包括光線跟蹤、環(huán)境遮擋 (ambient occlusion)和其它技術(shù)。PE將處理后的PE塊返回給它們的父計(jì)算服務(wù)器150, 其將處理后的PE塊組合成處理后的顯示帶。
在一些實(shí)施例中,計(jì)算服務(wù)器150壓縮處理后的顯示帶用于發(fā)送給圖形客戶端 110。在一些實(shí)施例中,一個(gè)或多個(gè)計(jì)算服務(wù)器150在不用額外壓縮的情況下發(fā)送處理后的顯示帶。每個(gè)計(jì)算服務(wù)器150確定它的每個(gè)PE渲染它的PE塊所花的時(shí)間以及整個(gè)原始的顯示帶的總渲染時(shí)間。計(jì)算服務(wù)器150基于每個(gè)PE的獨(dú)立渲染時(shí)間調(diào)節(jié)它們的PE負(fù)載平衡因子。在一個(gè)實(shí)施例中,每個(gè)計(jì)算服務(wù)器150也向圖形客戶端110報(bào)告它的總渲染時(shí)間。圖形客戶端110接收處理后的顯示帶并且將這些帶組合成處理后的幀。圖形客戶端110向顯示器120發(fā)送處理后的幀用于向用戶顯示。在一個(gè)實(shí)施例中,圖形客戶端110 基于從計(jì)算服務(wù)器150接收到的報(bào)告的渲染時(shí)間修改負(fù)載平衡因子。因而,如上面總體所述以及下面更詳細(xì)所述,圖形客戶端110部分基于服務(wù)器之間的相對(duì)負(fù)載且部分基于從用戶接收到的預(yù)期渲染信息,將未處理的服務(wù)器帶分配給計(jì)算服務(wù)器150。計(jì)算服務(wù)器150基于PE塊之間的相對(duì)負(fù)載和預(yù)期渲染信息將未處理的服務(wù)器帶分成PE塊。PE處理這些塊,計(jì)算服務(wù)器150將這些塊組合成處理后的帶并且返回給圖形客戶端110。圖形客戶端110將接收的處理后的帶組合成適合于向用戶顯示的形式。計(jì)算服務(wù)器150和圖形客戶端110 二者均使用渲染時(shí)間來(lái)動(dòng)態(tài)地調(diào)節(jié)負(fù)載平衡因子。因而,系統(tǒng)100可以在執(zhí)行計(jì)算密集的任務(wù)的元件之間動(dòng)態(tài)地分配工作量。隨著幀數(shù)據(jù)變化,幀的某些部分變得比其它部分更計(jì)算密集,并且系統(tǒng)可以通過(guò)重新分配任務(wù)來(lái)響應(yīng),以便保持響應(yīng)時(shí)間大約相等。如本領(lǐng)域技術(shù)人員將理解的,大約相等的響應(yīng)時(shí)間指示平衡的負(fù)載并且有助于減少PE/服務(wù)器的空閑時(shí)間。圖2是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的示范性圖形客戶端200的框圖。具體地, 客戶端200包括控制處理單元(PU) 202??刂芇U 202在其他方面是傳統(tǒng)的處理單元,如這里所述配置。在一個(gè)實(shí)施例中,客戶端200是PlayMati0n3TM(PS3)。在可替換的實(shí)施例中, 客戶端200是x86機(jī)制。在可替換的實(shí)施例中,客戶端200是薄的客戶端??蛻舳?00還包括負(fù)載平衡模塊204。一般,控制PU 202和負(fù)載平衡模塊204基于服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子將圖形圖像幀分割成多個(gè)帶。具體地,在一個(gè)實(shí)施例中,負(fù)載平衡模塊204配置為基于服務(wù)器響應(yīng)時(shí)間和用戶輸入設(shè)置和修改服務(wù)器負(fù)載平衡因子。在一個(gè)實(shí)施例中,用戶輸入包括手動(dòng)服務(wù)器負(fù)載平衡設(shè)置。在一個(gè)實(shí)施例中,負(fù)載平衡模塊204將幀分成包括幀數(shù)據(jù)的帶,并且系統(tǒng)200將分割的幀數(shù)據(jù)發(fā)送到計(jì)算服務(wù)器用于渲染。在可替換的實(shí)施例中,客戶端200發(fā)送用于劃定幀中的每個(gè)帶的界線的坐標(biāo)信息。在一個(gè)實(shí)施例中,坐標(biāo)信息包括用于參考高速緩存的 (且公共可訪問(wèn)的)幀的坐標(biāo)。負(fù)載平衡模塊204還配置為基于場(chǎng)景模型數(shù)據(jù)、用戶輸入和服務(wù)器響應(yīng)時(shí)間設(shè)置和修改預(yù)期渲染因子。在一個(gè)實(shí)施例中,用戶輸入包括相機(jī)移動(dòng)信息。在一個(gè)實(shí)施例中,相機(jī)移動(dòng)信息包括視角或相機(jī)“眼睛”以及指示視角的變化的速度和方向的移動(dòng)矢量。例如,在一個(gè)實(shí)施例中,客戶端200接受包括相機(jī)移動(dòng)信息的用戶輸入,因此知道眼睛的移動(dòng)的方向和速度。在可替換的實(shí)施例中,客戶端200接受包括人用戶的眼睛移動(dòng)的跟蹤信息的用戶輸入,用人用戶的眼睛移動(dòng)替代相機(jī)眼睛移動(dòng)。因而,負(fù)載平衡模塊204 可以基于預(yù)期的幀之間的計(jì)算負(fù)載的變化來(lái)提前調(diào)節(jié)服務(wù)器帶分割。也就是說(shuō),本領(lǐng)域技術(shù)人員將理解,幀的某些部分比其它部分更計(jì)算密集。例如,僅僅由實(shí)心的、單色背景組成的幀片段不如包含反射來(lái)自于多個(gè)源的光的迪斯科球的幀片段計(jì)算上密集。因而,例如,負(fù)載平衡模塊204可以將幀分成三個(gè)帶,一個(gè)帶包括迪斯科球的一半,以及兩個(gè)帶每個(gè)包括整個(gè)背景和迪斯科球的四分之一。此外,當(dāng)相機(jī)眼睛改變時(shí),幀中的場(chǎng)景元素(例如,迪斯科球)在幀的不同的位置中或多或少占據(jù)幀。在一個(gè)實(shí)施例中,相機(jī)眼睛移動(dòng)信息包括相機(jī)或人眼改變的方向和速度作為“跟蹤矢量”。在可替換的實(shí)施例中,相機(jī)眼睛移動(dòng)信息包括相機(jī)眼睛聚焦在其上的目標(biāo)場(chǎng)景對(duì)象以及目標(biāo)場(chǎng)景對(duì)象與當(dāng)前視角點(diǎn)的相對(duì)距離。也就是說(shuō),如果系統(tǒng)知道作為用戶的注意焦點(diǎn)的特定對(duì)象,即“目標(biāo)場(chǎng)景對(duì)象”,則系統(tǒng)可以預(yù)測(cè)場(chǎng)景將轉(zhuǎn)變以將該特定對(duì)象向觀察窗口的中間或接近中間移動(dòng)。如果例如目標(biāo)場(chǎng)景對(duì)象位于當(dāng)前視角的右上方, 則相機(jī)眼睛以及因而場(chǎng)景將有可能接下來(lái)向右上方移動(dòng),并且負(fù)載平衡模塊可以優(yōu)化用于該跟蹤矢量的服務(wù)器帶分割。因而,在一個(gè)實(shí)施例中,負(fù)載平衡模塊204使用相機(jī)眼睛移動(dòng)信息和場(chǎng)景模型數(shù)據(jù)來(lái)提前調(diào)節(jié)服務(wù)器帶分割,其趨于均衡計(jì)算服務(wù)器之間的計(jì)算負(fù)載。在一個(gè)實(shí)施例中, 負(fù)載平衡模塊204使用跟蹤矢量、目標(biāo)場(chǎng)景對(duì)象和相對(duì)距離來(lái)確定服務(wù)器帶分隔調(diào)節(jié)的大小。在一個(gè)實(shí)施例中,服務(wù)器帶分隔調(diào)節(jié)的大小是服務(wù)器帶分割的“積極性”的度量。一般,在將幀分割成服務(wù)器帶后,客戶端200將服務(wù)器帶分配給它們的分配的計(jì)算服務(wù)器。作為回報(bào),客戶端200從計(jì)算服務(wù)器接收處理后的顯示帶。在一個(gè)實(shí)施例中,客戶端200確定每一個(gè)計(jì)算服務(wù)器的響應(yīng)時(shí)間。在可替換的實(shí)施例中,客戶端200從每個(gè)計(jì)算服務(wù)器接收?qǐng)?bào)告的響應(yīng)時(shí)間??蛻舳?00還包括高速緩存206。高速緩存206在其他方面是傳統(tǒng)的高速緩存。 一般,客戶端200將處理后的和未處理的幀和其它信息存儲(chǔ)在高速緩存206中。客戶端200還包括解壓器208。在一個(gè)實(shí)施例中,客戶端200從計(jì)算服務(wù)器接收壓縮的處理后的服務(wù)器帶。因而,解壓器208配置為將壓縮的處理后的服務(wù)器帶解壓縮。客戶端200還包括顯示器接口 210、用戶接口 212和網(wǎng)絡(luò)接口 214。顯示器接口 210在其他方面是傳統(tǒng)的顯示器接口,配置為例如與諸如圖1的顯示器120之類的顯示器接口連接。用戶接口 212在其他方面是傳統(tǒng)的用戶接口,配置為例如圖1的用戶接口 130。 網(wǎng)絡(luò)接口 214在其他方面是傳統(tǒng)的網(wǎng)絡(luò)接口,配置為例如與諸如圖1的網(wǎng)絡(luò)140之類的網(wǎng)絡(luò)接口連接。如上所述,客戶端200例如是諸如圖1的圖形客戶端110之類的圖形客戶端。因此,客戶端200將原始的服務(wù)器帶發(fā)送給計(jì)算機(jī)服務(wù)器用于渲染并且接收處理后的顯示帶用于顯示。圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的示范性計(jì)算服務(wù)器。具體地,圖3是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的示范性計(jì)算服務(wù)器300的框圖。 具體地,服務(wù)器300包括控制處理單元(PU) 302。如圖所示,控制PU 302在其他方面是傳統(tǒng)的處理單元,配置為如下所述操作。服務(wù)器300還包括多個(gè)處理元件(PE) 310。一般,每個(gè)PE 310在其他方面是傳統(tǒng)的PE,被配置有局部存儲(chǔ)器312。如下面更詳細(xì)地所述,每個(gè)PE 310接收用于渲染的PE塊、 渲染該P(yáng)E塊、并且將渲染的PE塊返回給控制PU 302。服務(wù)器300還包括負(fù)載平衡模塊304。一般,控制PU 302和負(fù)載平衡模塊304基于PE負(fù)載平衡因子將接收的原始的顯示帶分割成多個(gè)PE塊。具體地,在一個(gè)實(shí)施例中,負(fù)
11載平衡模塊304配置為基于PE響應(yīng)時(shí)間設(shè)置和修改PE負(fù)載平衡因子。在可替換的實(shí)施例中,PE負(fù)載平衡因子包括預(yù)期渲染因子,以及負(fù)載平衡模塊304配置為基于PE響應(yīng)時(shí)間和用戶輸入修改PE負(fù)載平衡因子。在一個(gè)實(shí)施例中,負(fù)載平衡模塊304將接收的原始的顯示帶分成包括幀數(shù)據(jù)的PE 塊,以及控制PU 302將分割的幀數(shù)據(jù)發(fā)送給PE用于渲染。在可替換的實(shí)施例中,控制PU 302發(fā)送用于劃定每個(gè)PE塊的界線的坐標(biāo)信息。在一個(gè)實(shí)施例中,坐標(biāo)信息包括用于參考高速緩存的(且公共可訪問(wèn)的)幀的坐標(biāo)。一般,在將原始的顯示帶分割成PE塊后,服務(wù)器300將PE塊分配給它們指定的 PE。PE 310渲染它們的接收的PE塊并且將渲染的PE塊返回給控制PU 302。在一個(gè)實(shí)施例中,每個(gè)PE 310將渲染的PE塊存儲(chǔ)在高速緩存306中并且向控制PU 302指示PE已經(jīng)完成了渲染它的PE塊。因而,服務(wù)器300還包括高速緩存306。高速緩存306在其他方面是傳統(tǒng)的高速緩存。一般,服務(wù)器300將處理后的和未處理的帶、PE塊和其它信息存儲(chǔ)在高速緩存306中。服務(wù)器300還包括壓縮器308。在一個(gè)實(shí)施例中,圖形客戶端從計(jì)算服務(wù)器接收壓縮的處理后的服務(wù)器帶。因而,壓縮器308配置為壓縮處理后的顯示帶用于發(fā)送給圖形客戶端。服務(wù)器300還包括網(wǎng)絡(luò)接口 314。網(wǎng)絡(luò)接口 314在其他方面是傳統(tǒng)的網(wǎng)絡(luò)接口,配置為例如與諸如圖1的網(wǎng)絡(luò)140之類的網(wǎng)絡(luò)接口連接。一般,服務(wù)器300從圖形客戶端接收原始的顯示帶。控制PU 302和負(fù)載平衡模塊 304基于PE負(fù)載平衡因子將接收的顯示帶分成PE塊。PE 310渲染它們的指定的塊并且控制PU 302將渲染的PE塊組合成處理后的顯示帶。壓縮器308壓縮處理后的顯示帶并且服務(wù)器300將處理后的顯示帶發(fā)送給圖形客戶端。在一個(gè)實(shí)施例中,控制PU 302基于每一個(gè)PE 310的渲染時(shí)間調(diào)節(jié)PE負(fù)載平衡因子。在一個(gè)實(shí)施例中,控制PU 302也確定整個(gè)顯示帶的總渲染時(shí)間并且向圖形客戶端報(bào)告該總渲染時(shí)間。因而,一般服務(wù)器300可以修改PE負(fù)載平衡因子以適應(yīng)于PE上的變化的負(fù)載。因而,服務(wù)器300可以平衡PE之間的渲染負(fù)載,這又幫助改善(最小化)響應(yīng)時(shí)間。下面更詳細(xì)地描述圖形客戶端和計(jì)算服務(wù)器的操作。更具體地,參考圖4描述示范性圖形客戶端的操作,以及參考圖5描述示范性計(jì)算服務(wù)器的操作。圖4示出了用于逼真成像工作量分配的方法的一個(gè)實(shí)施例。具體地說(shuō),圖4示出了描述由例如可以根據(jù)優(yōu)選實(shí)施例實(shí)現(xiàn)的圖2的系統(tǒng)200執(zhí)行的邏輯操作步驟的高級(jí)流程圖400。一般,控制PU 202執(zhí)行該方法的步驟,除非另外指示。如塊405所示,該過(guò)程開(kāi)始,其中系統(tǒng)200接收包括場(chǎng)景模型數(shù)據(jù)的數(shù)字圖形圖像幀用于顯示。例如,系統(tǒng)200可以從用戶或其它輸入接收幀。接著,如塊410所示,系統(tǒng)200 接收用戶輸入。如上所述,在一個(gè)實(shí)施例中,用戶輸入包括相機(jī)移動(dòng)信息。接著,如塊415所示,系統(tǒng)200基于接收的幀設(shè)置或修改服務(wù)器負(fù)載平衡因子。接著,如塊420所示,系統(tǒng)200基于接收的用戶輸入和場(chǎng)景模型數(shù)據(jù)設(shè)置或修改預(yù)期渲染因子。接著,如塊425所示,系統(tǒng)200基于服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子將幀分割成服務(wù)器帶。
基于用戶輸入和預(yù)期渲染因子,系統(tǒng)200知道相機(jī)眼睛的移動(dòng)方向和速度。因而, 系統(tǒng)200可以在不必僅僅依賴于反應(yīng)調(diào)節(jié)的情況下預(yù)調(diào)節(jié)服務(wù)器工作量。例如,如果用戶向上或向下“看”(垂直移動(dòng)相機(jī)眼睛),則系統(tǒng)200可以減小在前緣的計(jì)算服務(wù)器的區(qū)域的大小,以解決將要被引入到該場(chǎng)景中的新的模型幾何圖形。此外,系統(tǒng)200可以基于眼睛移動(dòng)的速度調(diào)節(jié)多么積極地重新平衡工作量。如果相機(jī)眼睛更快速地移動(dòng),則系統(tǒng)200可以更積極地調(diào)節(jié)工作量。如果相機(jī)眼睛較緩慢地移動(dòng),則系統(tǒng)200可以不那么積極地調(diào)節(jié)工作量。另外,系統(tǒng)200可以根據(jù)由用戶輸入演示的眼睛移動(dòng)的類型來(lái)定制工作量重新平衡。也就是說(shuō),某些類型的眼睛移動(dòng)最佳地響應(yīng)不同的調(diào)節(jié)模式。例如,放大或沿著眼睛矢量移動(dòng)引起較小的計(jì)算服務(wù)器之間的不平衡。因而,例如與響應(yīng)于快速的搖攝功能相比,系統(tǒng)200可以不那么積極地響應(yīng)于快速的縮放功能調(diào)節(jié)工作量。在一個(gè)實(shí)施例中,系統(tǒng)200將幀分割成水平的服務(wù)器帶。在可替換的實(shí)施例中,系統(tǒng)200將幀分割成垂直的服務(wù)器帶。在可替換的實(shí)施例中,系統(tǒng)200根據(jù)哪一個(gè)校準(zhǔn)輸出更有效的(負(fù)載平衡)分割來(lái)將幀分割成水平的或垂直的服務(wù)器帶。接著,如塊430所示,系統(tǒng)200將服務(wù)器帶分配給計(jì)算服務(wù)器。接著,如塊435所示,系統(tǒng)200從計(jì)算服務(wù)器接收壓縮的處理后的顯示帶。接著,如塊440所示,系統(tǒng)200將接收的壓縮的處理后的顯示帶解壓縮。接著,如塊445所示,系統(tǒng)200基于處理后的顯示帶組合處理后的幀。接著,如塊 450所示,系統(tǒng)200存儲(chǔ)處理后的幀。接著,如塊455所示,系統(tǒng)200基于處理后的幀顯示圖像。如上所述,在一個(gè)實(shí)施例中,系統(tǒng)200將處理后的幀發(fā)送給顯示器模塊用于顯示。接著,如塊460所示,系統(tǒng)200從計(jì)算服務(wù)器接收?qǐng)?bào)告的渲染時(shí)間。接著,如塊465 所示,系統(tǒng)200基于報(bào)告的渲染時(shí)間修改服務(wù)器負(fù)載平衡因子。過(guò)程返回到塊405,其中圖形客戶端接收用于處理的幀。圖5示出了用于逼真成像工作量分配的方法的一個(gè)實(shí)施例。具體地說(shuō),圖5示出了描述由例如可以根據(jù)優(yōu)選實(shí)施例實(shí)現(xiàn)的圖3的系統(tǒng)300執(zhí)行的邏輯操作步驟的高級(jí)流程圖500。一般,計(jì)算PU 302執(zhí)行該方法的步驟,除非另外指示。如塊505所示,該過(guò)程開(kāi)始,其中計(jì)算服務(wù)器從圖形客戶端接收原始的顯示帶。例如,圖3的系統(tǒng)300從圖2的圖形客戶端200接收原始的顯示帶。接著,如塊510所示,系統(tǒng)300基于PE負(fù)載平衡因子將原始的顯示帶分割成PE塊。在一個(gè)實(shí)施例中,原始的顯示帶包括相機(jī)移動(dòng)信息,并且系統(tǒng)300基于PE負(fù)載平衡因子和相機(jī)移動(dòng)信息將原始的顯示帶分割成PE塊。在一個(gè)實(shí)施例中,系統(tǒng)300以類似于上面相對(duì)于塊425描述的系統(tǒng)200進(jìn)行的方式分割原始的顯示帶。因此,系統(tǒng)300可以動(dòng)態(tài)地分割原始的顯示帶以解決幀圖像的成分的預(yù)期變化,有助于保持PE之間的負(fù)載平衡。接著,如塊515所示,系統(tǒng)300將PE塊分配給處理元件。例如,控制PU 302將PE 塊分配給一個(gè)或多個(gè)PE 310。接著,如塊520所示,每個(gè)PE渲染它的接收的PE塊。例如, PE 310渲染它們的接收的PE塊。接著,如塊525所示,控制PU 302從PE 310接收渲染的PE塊。如上所述,在一個(gè)實(shí)施例中,控制PU 302從PE 310接收渲染的塊在高速緩存306中可用的通知。接著,如塊 530所示,系統(tǒng)300將渲染的PE塊組合成處理后的顯示帶。
接著,如塊535所示,系統(tǒng)300將處理后的顯示帶壓縮用于發(fā)送給圖形客戶端。例如,壓縮器308將處理后的顯示帶壓縮用于發(fā)送給圖形客戶端。接著,如塊540所示,系統(tǒng) 300將壓縮后的顯示帶發(fā)送給圖形客戶端。接著,如塊545所示,系統(tǒng)300確定每個(gè)PE的渲染時(shí)間。例如,控制PU 302確定每個(gè)PE 310的渲染時(shí)間。接著,如塊545所示,系統(tǒng)300向圖形客戶端報(bào)告該渲染時(shí)間。在一個(gè)實(shí)施例中,系統(tǒng)300基于最慢的PE計(jì)算處理后的顯示帶的總渲染時(shí)間,并將總渲染時(shí)間報(bào)告給圖形客戶端。在可替換的實(shí)施例中,系統(tǒng)300將每個(gè)PE的渲染時(shí)間報(bào)告給圖形客戶端。接著,如塊555所示,系統(tǒng)300基于每個(gè)PE的渲染時(shí)間調(diào)節(jié)PE負(fù)載平衡因子。如上所述,系統(tǒng)300可以設(shè)置PE負(fù)載平衡因子以在PE之間劃分工作量,以使得每個(gè)PE花費(fèi)大致相同的時(shí)間量來(lái)完成它的渲染任務(wù)。因此,公開(kāi)的實(shí)施例提供與其它方法和系統(tǒng)相比的許多優(yōu)點(diǎn)。例如,公開(kāi)的實(shí)施例與當(dāng)前方法,特別是工作竊取系統(tǒng)相比,改進(jìn)了平衡的工作量分配。因?yàn)楣_(kāi)的實(shí)施例更好地分配計(jì)算工作量,所以工作竊取是不必要的,并且計(jì)算單元可以在不另外引起在普遍的工作竊取方案下給處理元件重新分配任務(wù)所固有的代價(jià)的情況下保持相關(guān)的高速緩存數(shù)據(jù)。更具體地說(shuō),公開(kāi)的實(shí)施例提供逼真成像工作量分配的平衡,特別是光線跟蹤應(yīng)用。通過(guò)主動(dòng)管理幀的計(jì)算密集的區(qū)域并且使得等待下一幀的計(jì)算單元停止,渲染系統(tǒng)花費(fèi)較少的停止在數(shù)據(jù)上的時(shí)間。此外,公開(kāi)的實(shí)施例提供保持計(jì)算單元聚焦在特定區(qū)域上的方法,甚至在該區(qū)域被擴(kuò)大或縮小時(shí),以保持相對(duì)的工作量。因而,任何特定的計(jì)算單元更可能將有用的幀數(shù)據(jù)保持在它的高速緩存中,這改進(jìn)了高速緩存命中率。此外,改進(jìn)的高速緩存命中率克服了稍微增大的幀內(nèi)停止,改進(jìn)了總體渲染時(shí)間。另外,公開(kāi)的實(shí)施例提供基于預(yù)期的渲染任務(wù)動(dòng)態(tài)地調(diào)節(jié)工作量的系統(tǒng)和方法。 因而,公開(kāi)的實(shí)施例可以通過(guò)預(yù)測(cè)場(chǎng)景中的區(qū)域的計(jì)算強(qiáng)度的變化來(lái)減少快速移動(dòng)的相機(jī)眼睛的性能沖突。其它的技術(shù)優(yōu)點(diǎn)將對(duì)本領(lǐng)域普通技術(shù)人員是顯而易見(jiàn)的。如上所述,這里描述的一個(gè)或多個(gè)實(shí)施例可以被實(shí)踐或否則包括在計(jì)算機(jī)系統(tǒng)中。一般,這里使用的術(shù)語(yǔ)“計(jì)算機(jī)”是指任何自動(dòng)化的計(jì)算機(jī)器。因此,術(shù)語(yǔ)“計(jì)算機(jī)”不僅包括諸如膝上計(jì)算機(jī)、個(gè)人計(jì)算機(jī)、小型計(jì)算機(jī)和大型機(jī)之類的通用計(jì)算機(jī),而且包括諸如個(gè)人數(shù)字助理(PDA)、能夠網(wǎng)絡(luò)的手持設(shè)備、能夠互聯(lián)網(wǎng)或網(wǎng)絡(luò)的移動(dòng)電話、和其它合適的設(shè)備之類的設(shè)備。圖6是提供示出了可用于實(shí)踐這里描述的一個(gè)或多個(gè)實(shí)施例的示范性計(jì)算機(jī)系統(tǒng)的細(xì)節(jié)的框圖。具體地說(shuō),圖6示出了計(jì)算機(jī)系統(tǒng)600。計(jì)算機(jī)系統(tǒng)600包括計(jì)算機(jī)602。計(jì)算機(jī) 602在其他方面是傳統(tǒng)的計(jì)算機(jī)并且包括至少一個(gè)處理器610。處理器610在其他方面是傳統(tǒng)的計(jì)算機(jī)處理器并且可以包括單核、雙核、中央處理單元(PU)、協(xié)作的Pu、附接的PU或其它合適的處理器。處理器610耦接到系統(tǒng)總線612??偩€612在其他方面是傳統(tǒng)的系統(tǒng)總線。如圖所示,計(jì)算機(jī)602的各個(gè)組件耦接到總線612。例如,計(jì)算機(jī)602也包括存儲(chǔ)器620,存儲(chǔ)器 620通過(guò)總線612耦接到處理器610。存儲(chǔ)器620在其他方面是傳統(tǒng)的計(jì)算機(jī)主存儲(chǔ)器,并
14且可以包括例如隨機(jī)存取存儲(chǔ)器(RAM)。一般,存儲(chǔ)器620存儲(chǔ)應(yīng)用622、操作系統(tǒng)6M和訪問(wèn)功能626?!?,應(yīng)用622在其他方面是傳統(tǒng)的軟件程序應(yīng)用,并且可以包括任何數(shù)目的典型程序以及合并本發(fā)明的一個(gè)或多個(gè)實(shí)施例的計(jì)算機(jī)程序。操作系統(tǒng)6M在其他方面是傳統(tǒng)的操作系統(tǒng),并且可以包括例如Unix、AIX、Linux、微軟Windows 、MacOS 和其它合適的操作系統(tǒng)。訪問(wèn)功能6 在其他方面是傳統(tǒng)的訪問(wèn)功能,包括連網(wǎng)功能,并且可以包括在操作系統(tǒng)624中。計(jì)算機(jī)602也包括存儲(chǔ)器630。一般,存儲(chǔ)器630在其他方面是用于存儲(chǔ)數(shù)據(jù)的傳統(tǒng)的設(shè)備和/或多個(gè)設(shè)備。如圖所示,存儲(chǔ)器630可以包括硬盤(pán)632、閃速或其它易失性存儲(chǔ)器634、和/或光存儲(chǔ)設(shè)備636。本領(lǐng)域技術(shù)人員將理解,也可以采用其它的存儲(chǔ)介質(zhì)。I/O接口 640也耦接到總線612。I/O接口 640在其他方面是傳統(tǒng)的接口。如圖所示,I/O接口 640耦接到計(jì)算機(jī)602之外的設(shè)備。具體地,I/O接口 640耦接到用戶輸入設(shè)備642和顯示設(shè)備644。輸入設(shè)備642在其他方面是傳統(tǒng)的輸入設(shè)備并且可以包括例如鼠標(biāo)、鍵盤(pán)、數(shù)字鍵盤(pán)、觸敏屏幕、麥克風(fēng)、網(wǎng)絡(luò)攝像頭、和其它合適的輸入設(shè)備。顯示設(shè)備644 在其他方面是傳統(tǒng)的顯示設(shè)備并且可以包括例如監(jiān)視器、IXD顯示器、⑶I屏幕、文本屏幕、 觸敏屏幕、盲文顯示器和其它合適的顯示設(shè)備。網(wǎng)絡(luò)適配器650也耦接到總線612。網(wǎng)絡(luò)適配器650在其他方面是傳統(tǒng)的網(wǎng)絡(luò)適配器,并且可以包括例如無(wú)線、以太網(wǎng)、LAN、WAN或其它合適的適配器。如圖所示,網(wǎng)絡(luò)適配器650可以將計(jì)算機(jī)602耦接到其它計(jì)算機(jī)和設(shè)備652。其它計(jì)算機(jī)和設(shè)備652在其他方面是通常在連網(wǎng)環(huán)境中采用的傳統(tǒng)的計(jì)算機(jī)和設(shè)備。本領(lǐng)域技術(shù)人員將理解,存在適合于計(jì)算機(jī)602和計(jì)算機(jī)系統(tǒng)600的許多其它的聯(lián)網(wǎng)配置。圖中的流程圖和框圖示出了根據(jù)本發(fā)明的各個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能的實(shí)施的結(jié)構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)塊可以表示包括用于實(shí)現(xiàn)指定的邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令的代碼的模塊、片段或部分。也應(yīng)注意, 在一些可替換的實(shí)施中,塊中表示的功能可以不按照?qǐng)D中表示的順序出現(xiàn)。例如,根據(jù)涉及的功能,連續(xù)顯示的兩個(gè)塊可以事實(shí)上基本上同時(shí)執(zhí)行,或者塊可以有時(shí)以逆序執(zhí)行。也將注意,框圖和/或流程圖說(shuō)明的每個(gè)塊以及框圖和/或流程圖說(shuō)明中的塊的組合可以由執(zhí)行指定功能或動(dòng)作的基于專用硬件的系統(tǒng)或者專用硬件和計(jì)算機(jī)指令的組合實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員將理解,可以根據(jù)期望將上述公開(kāi)的和其它特征與功能的變化或其替換方式組合成許多其它不同的系統(tǒng)或應(yīng)用。另外,本領(lǐng)域技術(shù)人員可以在以后做出各目前未預(yù)見(jiàn)的或未預(yù)期的替換、修改、變化或改進(jìn),其也意欲由以下的權(quán)利要求書(shū)涵蓋。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中的用于逼真成像工作量分配的方法,該方法包括步驟 由圖形客戶端接收幀;基于服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子,將該幀分割成多個(gè)服務(wù)器帶;將多個(gè)服務(wù)器帶分配給多個(gè)計(jì)算服務(wù)器;從多個(gè)計(jì)算服務(wù)器接收處理后的服務(wù)器帶;基于接收的處理后的服務(wù)器帶組合處理后的幀;以及發(fā)送處理后的幀,用于作為圖像顯示給用戶;以及其中分割該幀還包括在水平的服務(wù)器帶和垂直的服務(wù)器帶之間選擇。
2.如權(quán)利要求1所述的方法,還包括 接收用戶輸入;以及其中設(shè)置該預(yù)期渲染因子還包括基于接收的用戶輸入設(shè)置該預(yù)期渲染因子。
3.如權(quán)利要求1所述的方法,還包括從多個(gè)服務(wù)器中的至少一個(gè)接收?qǐng)?bào)告的渲染時(shí)間;以及其中設(shè)置該服務(wù)器負(fù)載平衡因子還包括基于報(bào)告的渲染時(shí)間設(shè)置該服務(wù)器負(fù)載平衡因子。
4.如權(quán)利要求1所述的方法,其中組合處理后的幀帶還包括解壓縮接收的處理后的服務(wù)器帶。
5.一種用于在服務(wù)器數(shù)據(jù)處理系統(tǒng)中逼真成像工作量分配的方法,該方法包括步驟 由計(jì)算服務(wù)器接收原始的顯示帶,該原始的顯示帶包括場(chǎng)景模型數(shù)據(jù);該計(jì)算服務(wù)器包括多個(gè)處理元件(PE);基于PE負(fù)載平衡因子將該原始的顯示帶分割成多個(gè)PE塊;將多個(gè)PE塊分配給多個(gè)PE ;由每個(gè)PE渲染PE塊以產(chǎn)生渲染的PE塊;由該計(jì)算服務(wù)器組合渲染的PE塊以產(chǎn)生處理后的顯示帶;由該計(jì)算服務(wù)器確定每個(gè)PE的渲染時(shí)間;基于確定的渲染時(shí)間修改該P(yáng)E負(fù)載平衡因子;以及將處理后的顯示帶發(fā)送給圖形客戶端。
6.如權(quán)利要求5所述的方法,其中該發(fā)送包括壓縮處理后的顯示帶。
7.如權(quán)利要求5所述的方法,還包括基于確定的渲染時(shí)間將渲染時(shí)間報(bào)告給圖形客戶端。
8.如權(quán)利要求5所述的方法,還包括其中該原始的顯示帶還包括預(yù)期的渲染輸入;以及其中分割該原始的顯示帶包括基于該P(yáng)E負(fù)載平衡因子和預(yù)期的渲染輸入進(jìn)行分割。
9.如權(quán)利要求5所述的方法,其中修改PE負(fù)載平衡因子還包括基于確定的渲染時(shí)間和接收的預(yù)期的渲染輸入來(lái)修改該P(yáng)E負(fù)載平衡因子。
10.一種包括圖形客戶端的系統(tǒng),該圖形客戶端配置為 將幀分割成多個(gè)服務(wù)器帶;基于服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子將該幀分割成多個(gè)服務(wù)器帶; 將多個(gè)服務(wù)器帶分配給多個(gè)計(jì)算服務(wù)器;從多個(gè)計(jì)算服務(wù)器接收處理后的服務(wù)器帶;基于接收的處理后的服務(wù)器帶組合處理后的幀;以及發(fā)送處理后的幀,用于作為圖像顯示給用戶;以及其中分割該幀還包括在水平的服務(wù)器帶和垂直的服務(wù)器帶之間選擇。
11.如權(quán)利要求10所述的系統(tǒng),還包括 其中該圖形客戶端還配置為接收用戶輸入;以及其中設(shè)置該預(yù)期渲染因子還包括基于接收的用戶輸入設(shè)置該預(yù)期渲染因子。
12.如權(quán)利要求10所述的系統(tǒng),還包括其中該圖形客戶端還配置為從多個(gè)服務(wù)器中的至少一個(gè)接收?qǐng)?bào)告的渲染時(shí)間;以及其中設(shè)置該服務(wù)器負(fù)載平衡因子還包括設(shè)置該服務(wù)器負(fù)載平衡因子和報(bào)告的渲染時(shí)間。
13.如權(quán)利要求10所述的系統(tǒng),還包括多個(gè)計(jì)算服務(wù)器,每個(gè)計(jì)算服務(wù)器耦接到該圖形客戶端并且包括多個(gè)處理元件(PE), 以及每個(gè)計(jì)算服務(wù)器配置為從該圖形客戶端接收原始的顯示帶;基于PE負(fù)載平衡因子將該原始的顯示帶分割成多個(gè)PE塊;以及將多個(gè)PE塊分配給多個(gè)PE ;其中每個(gè)PE配置為渲染該P(yáng)E塊以產(chǎn)生渲染的PE塊;以及其中每個(gè)計(jì)算服務(wù)器還配置為組合由該計(jì)算服務(wù)器的PE渲染的渲染的PE塊以產(chǎn)生處理后的顯示帶; 確定該計(jì)算服務(wù)器的PE的每一個(gè)的渲染時(shí)間; 基于確定的渲染時(shí)間修改該P(yáng)E負(fù)載平衡因子;以及將處理后的顯示帶發(fā)送給該圖形客戶端。
14.如權(quán)利要求10所述的系統(tǒng),還包括其中該原始的顯示帶還包括預(yù)期的渲染輸入;以及其中分割該原始的顯示帶包括基于該P(yáng)E負(fù)載平衡因子和預(yù)期的渲染輸入進(jìn)行分割。
15.一種計(jì)算機(jī)程序,包括在加載到計(jì)算機(jī)系統(tǒng)中并且被運(yùn)行時(shí)執(zhí)行如權(quán)利要求1至IJ 9 中的任何一個(gè)所述的方法的所有步驟的計(jì)算機(jī)程序代碼。
全文摘要
圖形客戶端接收幀,該幀包括場(chǎng)景模型數(shù)據(jù)。設(shè)置服務(wù)器負(fù)載平衡因子和預(yù)期渲染因子?;谠摲?wù)器負(fù)載平衡因子和預(yù)期渲染因子將幀分割成多個(gè)服務(wù)器帶。將服務(wù)器帶分配給多個(gè)計(jì)算服務(wù)器。從該計(jì)算服務(wù)器接收處理后的服務(wù)器帶?;诮邮盏奶幚砗蟮姆?wù)器帶組合處理后的幀。發(fā)送處理后的幀以作為圖像顯示給用戶。
文檔編號(hào)H04L29/08GK102239678SQ200980148614
公開(kāi)日2011年11月9日 申請(qǐng)日期2009年12月2日 優(yōu)先權(quán)日2008年12月6日
發(fā)明者喬奎恩.馬德魯加, 巴里.米諾爾, 馬克.R.努特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司