CN103077088B - 集群渲染环境中基于pkdt树的动态反馈负载均衡方法 - Google Patents
集群渲染环境中基于pkdt树的动态反馈负载均衡方法 Download PDFInfo
- Publication number
- CN103077088B CN103077088B CN201310018156.8A CN201310018156A CN103077088B CN 103077088 B CN103077088 B CN 103077088B CN 201310018156 A CN201310018156 A CN 201310018156A CN 103077088 B CN103077088 B CN 103077088B
- Authority
- CN
- China
- Prior art keywords
- subtask
- node
- rendering
- playing
- machine node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 74
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000013632 homeostatic process Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Abstract
本发明公开了一种集群渲染环境中基于PKDT树的动态反馈负载均衡方法,包括如下步骤:(1)针对需要渲染的三维模型,服务器将渲染的每帧任务划分成若干子任务,将这些子任务预先指定给每个渲染机器节点,并逐个进行传送;(2)每个渲染机器节点执行完一个子任务后,向服务器机器节点返回渲染结果图像,并申请下一个子任务;(3)服务器记录每个渲染机器节点完成每个子任务的时间以及每个渲染机器节点完成的子任务的数量,并按照该记录结果将未完成的子任务在渲染机器节点之间进行动态平衡分配,直至完成渲染这帧任务。本发明集群渲染环境中基于PKDT树的动态反馈负载均衡方法,将每帧渲染任务按屏幕空间进行均匀划分,并将划分后的子任务在各渲染机器节点中进行动态平衡分配,充分挖掘集群渲染系统的最佳渲染能力。
Description
技术领域
本发明涉及集群渲染领域,具体涉及一种集群渲染环境中基于PKDT树的动态反馈负载均衡方法。
背景技术
目前,高真实感渲染在很多领域已经有了越来越多的应用,例如在电影特效的制作,真实感场景的展示等方面都有重要应用。
高真实感渲染需要极高的计算能量,如果对渲染速度也有较高要求,那么单机的渲染能力已经无法满足,二需要使用集群技术。
负载均衡问题是影响集群渲染系统整体性能的重要因素之一。集群渲染系统中,由于不同渲染节点间处理能力上的差异或者任务分配的不均匀,会出现不同渲染节点任务完成时间不一致的情况,这样完成时间早的节点只能闲置等待处理时间慢的渲染节点,从而造成了集群渲染系统资源的浪费。
目前解决负载不均衡问题的方法从大类上来说有两种,一是静态平衡方法;二是动态平衡方法。
静态平衡方法通过对整个集群渲染系统中各个渲染节点的计算能力进行估算,然后在初始化阶段就将任务分配好,一旦分配就不再改变。这种方法局限性非常大,首先,通常难以准确估算渲染节点的计算能力以及网络环境等;其次,由于每个渲染节点的计算环境、网络环境一直处于不断的变化之中,这些渲染节点的计算能力以及网络传输能力也是不停地变化的,因此,这种方法通常难以取得好的效果。
动态平衡方法是目前流行的方法,目前有很多这一类算法,像Diffustion方法,,Median-cut算法Master-slave方法等,但是仍没有成熟的动态负载平衡方法能够用于集群渲染环境中按屏幕空间划分的方式。
PKDT(PredictionKDTree)即预测KD树,它记录了当前屏幕空间的一种任务划分,PKDT树的每个叶子节点对应着屏幕空间中的一个像素子块。PKDT树基于如下理论前提:前帧和后帧之间的同一像素子块存在时空连续性,即某一子块的下一帧渲染所需的时间跟上一帧非常接近,所以能够利用上一帧记录的时间作为预估值。
发明内容
本发明提供了一种集群渲染环境中基于PKDT树的动态反馈负载均衡方法,集群渲染系统的服务器将每帧渲染任务按屏幕空间进行任务划分,并将划分后的子任务在各渲染机器节点中进行动态平衡分配,充分挖掘集群渲染系统的最佳渲染能力。
一种集群渲染环境中基于PKDT树的动态反馈负载均衡方法,包括如下步骤:
(1)针对需要渲染的三维模型,服务器将渲染任务划分成若干子任务,将这些子任务预指定给每个渲染机器节点,并逐个进行传送;
(2)每个渲染机器节点执行完一个子任务后,向服务器返回渲染结果图像,并申请下一个子任务;
(3)服务器节点记录每个渲染机器节点完成每个子任务的时间以及每个渲染机器节点完成的子任务的数量,并依据该记录结果将未完成的子任务在渲染机器节点之间进行动态平衡分配,直至完成该帧渲染任务。
集群渲染系统的服务器节点将渲染任务依据屏幕空间划分为若干子任务,并将子任务预先指定给每个渲染机器节点,每个渲染机器节点即集群渲染系统中的某台机器,预先指定时,遵循每台渲染机器完成预先指定的子任务的时间尽可能一样的原则,最后,每次向渲染机器传送一个子任务,服务器节点记录每台渲染机器完成每个子任务的时间,并依据该记录结果将未完成的子任务在各台渲染机器之间进行新的预先指定。
在新的预先指定过程中,首先对未完成的子任务进行重新划分以及将重新划分后的所有子任务在不同的渲染机器节点(机器)之间进行新的预先指定。
作为优选,所述步骤(1)中服务器节点向渲染机器节点预先指定子任务之前,根据每个子任务中(需要渲染的像素的数量)预估每个子任务的计算量。优选地,所述步骤(1)中划分渲染任务时,每个子任务的计算量相同。也即每个子任务需要渲染的像素的数量相同。
作为优选,所述步骤(1)中子任务数目是渲染节点数目的整数倍。便于在渲染机器节点中平均分配子任务,使每个渲染机器节点在相同的时间内完成渲染任务。
作为优选,所述步骤(1)中将需要渲染的三维模型投影到屏幕空间,对于屏幕空间的像素,若与三维模型相对应的几何点落到该像素,则该像素即为需要渲染的像素。
作为优选,所述步骤(3)中对比各个渲染机器节点完成每个子任务的时间,优先向完成时间短的渲染机器节点传送下一个子任务。也即渲染速度快的渲染机器节点将完成较多的渲染任务,使整个集群渲染系统的渲染速度达到性能最高。
本发明集群渲染环境中基于PKDT树的动态反馈负载均衡方法具有以下有益效果:
(1)将每帧渲染任务划分为若干子任务,子任务分别由不同的渲染机器完成,可以有效平衡不同渲染机器之间的渲染计算量;
(2)子任务的划分数目可以人为设置,计算能力弱的渲染机器也可以加入到集群系统中,大大地提高集群渲染系统的扩展性;
(3)子任务的划分结束后,依次向各台渲染机器进行传送即可,可以减小图像处理和传输的时间消耗;
(4)充分利用了集群渲染系统的整体计算能力,使集群渲染系统的整体性能达到最好。
附图说明
图1为一颗8节点的PKDT树;
图2为一个宽度为12的子块初次划分时的示意图。
具体实施方式
下面结合附图,对本发明集群渲染环境中基于PKDT树的动态反馈负载均衡方法做详细描述。
一种集群渲染环境中基于PKDT树的动态反馈负载均衡方法,包括以下步骤:
(1)首先,针对需要渲染的三维节点模型,服务器预先将渲染任务划分成若干子任务。
每帧的渲染任务就是需要渲染得到的最终结果,渲染任务划分采用屏幕空间的方式划分,将其按照像素区域划分成若干相互独立的子像素区域,其中,每一个子像素区域被称为子任务,任务划分结束后,对每一个子任务进行编号标记。例如将一张1920*1080的图像分割成192*108的100张子图像,其对应100个子任务。
(2)将步骤(1)中划分得到的子任务预先指定给每个渲染机器节点,并逐个进行传送。
服务器节点预先将渲染任务划分成若干子任务后进行初始化预指定,以步骤(1)中1920*1080的图像举例,如果有10台渲染机器,也即10个渲染机器节点,那么每台渲染机器会被预指定10个子任务,每台渲染机器每次被传送1个子任务。
(3)每个渲染渲染节点对传送的子任务进行渲染运算,每次子任务完成后,立即将渲染结果图像返回给服务器节点,完成预指定的所有子任务并将所有渲染结果图像返回给服务器节点之后,该渲染机器节点向服务器节点请求下一次渲染任务。
(4)服务器节点记录每个渲染机器节点完成每个子任务的时间以及每个渲染机器节点完成的子任务的数量,并依据该记录结果调整每个渲染机器节点预指定的子任务的数量。
例如,有三台机器,分别为A、B和C,A完成一个子任务的时间是2s,B完成一个子任务的时间是10s,C完成一个子任务的时间是20s,那么增加A的子任务的数量,减少C的子任务的数量,维持B的子任务的数量不变,能够达到A、B和C完成预指定的子任务的时间尽可能地相同,最大限度地利用每台渲染机器的计算能力,提高整体集群系统渲染的效率。
服务器节点得到所有渲染机器节点的渲染结果图像后,将最终的渲染图像呈现在屏幕上。
下面结合PKDT树具体描述动态负载反馈均衡方法:
一颗PKDT树的根节点r代表整个屏幕空间的每帧渲染任务,每个渲染机器节点都有两个子节点,代表当前节点划分出来的两个子块,子节点可以继续划分,直到叶子节点(即子块)的数目接近子任务的数目为止,每个叶子节点对应一个子任务。
PKDT树的所有叶子树节点(子块),记为L(T),表示了屏幕空间每帧任务的实际划分情况,每个叶子节点l∈L(T)。
记录每个子块的相对宽高和位置的同时,还记录完成该块任务所需的时间t(l)。
为了保持屏幕空间划分的均衡性和连续性,用扫描线沿坐标方向进行扫描,然后计算该扫描线所经区域和剩余区域的渲染任务的时间,两个区域的渲染任务时间一个递减,一个递增,在扫描线动态移动过程中的某一点会相同,经过该点的扫描线即为分割线。
为了尽可能快递趋近于负载均衡,初始化时对屏幕空间里的子任务所需的渲染时间预估,然后根据预估的时间划分屏幕空间,这样能够有效达到负载平衡所需的步骤和时间。
首先,根据相机(camera)设置把需要渲染的三维模型投影到大小为W*H(宽*高)的屏幕空间,对于屏幕空间的每一个像素C(i,j)(0≤i<H,0≤j<W),其中,i为C像素的横坐标,j为C像素的纵坐标,若模型的几何面片落到该像素,则该像素被标记为1,若模型的几何面片没有落到该像素,则该像素被标记为0。
如图1所示,对于左上角位置为(x0,y0),大小为w*h(宽*高,且假设w>h)的当前子块D,利用式计算渲染子块D所需要的时间,
其中,i表示屏幕空间中C像素点的横坐标;
j表示屏幕空间中C像素点的纵坐标;
ED表示D渲染子块所需要的时间。
按D像素把子块所对应的渲染区域任务分为w列,D(i,j)表示D子块中第i列到第j列所组成的任务区域,划分的目标是找到分割线k,把子块D分成D(0,k)((x0,y0),大小k*h),和D(k+1,w)(x0+k+1,y0),大小(w-k)*h)两部分,使得分割线k同时满足: 和
分割线k从0到w递增,当分割线k同时满足:和时,即可求得分割线k,但是用该方法求分割线k时,需要事先知道ED,因此,初次划分屏幕空间时,要先遍历D子块中的所有像素求得ED,存在冗余计算,利用动态规划的方法一次遍历找到分割线k,具体操作如下:
如图2所示,记f(i)为D(0,i)所对应的分割线k值,f(0)初始化为0,从第0列开始,每增加一列,更新ED(0,f(i-1))和ED(0,i),同时判断是否需要改变f(i)值,若则f(i)值不变,反之f(i)值加1,计算公式如下:
完成对D子块的划分之后,再递归地对划分出来的D(0,k)和D(k+1,w)继续划分,能够知道渲染D(0,k)和D(k+1,w)所需要时间以及因此,在求D(0,k)和D(k+1,w)的分割线k值的时候,分割线k从0到w递增,当分割线k同时满足:和时,即可求得分割线k,当子块数跟叶子节点数接近时,递归划分结束,具体如下:
初始化k=0;计算第k列的ek=∑C(k,j),
如果则k就是所求的分割线k,此时子块D被分成两个子块D(0,k)和D(k+1,w);
否则k=k+1,继续计算
将子块D继续划分成两个子块D(0,k)和D(k+1,w)后,再分别对每个子块按照相同的方法求分割线k,直至划分的子块数与集群节点数接近。
初始化时,每次划分都被记录在PKDT中,完成后,即生成一颗完整的PKDT。
通常情况下考虑到估算的方法比较复杂,同时初始化生成PKDT的时间是极小的,因此,可以在划分渲染任务时采取平均划分的方法,比如将一张1920*1080的图像平均划分为1000个子任务,这样就大大减少了渲染任务的划分耗费的时间,但是在某些情况下负载均衡很重要,那么就利用本发明前面所讲的方法对任务进行划分。
PKDT树生成之后,渲染任务对应PKDT中叶子节点划分为若干子任务(每个子任务对应一个子块),并将子任务预先指定给每个渲染机器节点。
在每个渲染机器节点完成任务后,服务器节点记录每个渲染机器节点完成子任务的时间t,对每个叶子节点l∈L(T),更新该叶子节点(对应一个子块)的完成时间t(l)值为t,开始分配下一个子任务时,把上一个子任务渲染时的t(l)作为分配下一个子任务的依据。
分配子任务时,相应每个子任务的计算时间重新估计,也即中的C(i,j)重新赋值,根据C(i,j)中的i,j到PKDT中查找其所在叶子节点的t(l)值,然后利用下式计算C(i,j)的值,
C(i,j)=t(l(i,j))/(wl*hl)
其中l(i,j)表示屏幕空间内的一个像素在PKDT中叶子节点对应的子块,通过二分查找PKDT可以得到,wl*hl为子块的大小;得到C(i,j)之后,即可按照初次划分方法重新建成新的PKDT树。
在动态平衡过程中,可以对PKDT进行优化,在生成PKDT时,尽量多地构造叶子节点,这样能够得到较多数量的子任务,每个渲染机器节点每次完成子任务之后,继续向服务器节点请求另外一个子任务,服务器动态地派发子任务,并动态地调整每一个子任务的渲染子块,使所有渲染机器节点预指定的子任务完成时间大致相同。
可以设置一个任务派发模块,在渲染机器节点之间分发子任务,首先,任务派发模块根据子任务的预先分配的结果,给所有的渲染机器节点分别派发一个子任务,当渲染机器图像节点完成该子任务时,将渲染结果以及相关时间信息反馈至任务派发模块,任务派发模块记录相应渲染机器节点完成任务的时间,如果该节点还有指定的子任务没有完成,就继续派发一个子任务给该渲染机器节点。每个渲染机器节点完成的子任务数量不同,速度快的渲染机器完成的子任务数较多,本发明的划分方法适合集群内部机器之间计算能力相差很大的集群系统。任务派发模块根据每个子任务的实际计算时间动态地调整子任务被预先指定的渲染机器,同时记录每个渲染机器的计算速度,当子任务数量较少时,任务将被优先分发给计算能力强的渲染机器。
服务器节点将子任务预先指定给所有的渲染机器节点后,会依据渲染机器节点子任务的完成情况,调整子任务被预先指定的渲染机器,在动态调整的过程中,使整个集群渲染系统达到任务均衡状态。
Claims (1)
1.一种集群渲染环境中基于PKDT树的动态反馈负载均衡方法,其特征在于,包括如下步骤:
(1)针对需要渲染的三维模型,服务器节点将每帧渲染任务划分成若干计算量相同的子任务,将这些子任务预先指定给每个渲染机器节点,并逐个进行传送;
子任务数目是渲染机器节点数目的整数倍,服务器向渲染节点预先指定子任务之前,根据每个子任务中需要渲染的像素的数量预估每个子任务的计算量;
将需要渲染的模型投影到屏幕空间,对于屏幕空间的每一个像素,若与模型相对应的几何面片落到该像素,则该像素即为需要渲染的像素;
(2)每个渲染机器节点执行完一个子任务后,向服务器机器返回渲染结果图像,并申请下一个子任务;
(3)服务器节点记录每个渲染机器节点完成每个子任务的时间以及每个渲染机器节点完成的子任务的数量,并依据该记录结果将未完成的子任务在渲染机器节点之间进行动态平衡,直至完成该帧渲染任务;
所述的动态平衡为:对未完成的子任务进行重新划分以及将重新划分后的所有子任务在不同的渲染机器节点之间进行新的预先指定;
对比各个渲染机器节点完成每个子任务的时间,优先向完成时间短的渲染机器节点传送下一个子任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310018156.8A CN103077088B (zh) | 2013-01-17 | 2013-01-17 | 集群渲染环境中基于pkdt树的动态反馈负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310018156.8A CN103077088B (zh) | 2013-01-17 | 2013-01-17 | 集群渲染环境中基于pkdt树的动态反馈负载均衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103077088A CN103077088A (zh) | 2013-05-01 |
CN103077088B true CN103077088B (zh) | 2016-01-13 |
Family
ID=48153623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310018156.8A Expired - Fee Related CN103077088B (zh) | 2013-01-17 | 2013-01-17 | 集群渲染环境中基于pkdt树的动态反馈负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103077088B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9401003B2 (en) * | 2013-11-18 | 2016-07-26 | Zebrafish Labs, Inc. | Just-in-time processing of images |
US9654602B2 (en) | 2014-01-22 | 2017-05-16 | Zebrafish Labs, Inc. | User interface for just-in-time image processing |
CN105468455B (zh) * | 2015-11-23 | 2018-12-21 | 天脉聚源(北京)传媒科技有限公司 | 一种用于多设备的动态任务分配的方法及装置 |
CN106598728A (zh) * | 2016-11-09 | 2017-04-26 | 上海电机学院 | 一种模式动态分区的方法 |
CN107196781B (zh) * | 2017-01-06 | 2021-03-19 | 北京神州泰岳信息安全技术有限公司 | 安全配置核查任务分配方法及装置 |
CN108875401B (zh) * | 2018-04-17 | 2021-11-26 | 安徽师范大学 | 一种基于改进kd树数据结构的隐私保护方法 |
CN109343942B (zh) * | 2018-09-03 | 2020-11-03 | 北京邮电大学 | 基于边缘计算网络的任务调度方法 |
CN109600629A (zh) * | 2018-12-28 | 2019-04-09 | 北京区块云科技有限公司 | 一种视频渲染方法、系统及相关装置 |
CN112929728A (zh) * | 2021-01-20 | 2021-06-08 | 北京奇艺世纪科技有限公司 | 一种视频渲染方法、装置、系统、电子设备及存储介质 |
CN113923519B (zh) * | 2021-11-11 | 2024-02-13 | 深圳万兴软件有限公司 | 视频渲染方法、装置、计算机设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702244A (zh) * | 2009-11-10 | 2010-05-05 | 南京大学 | 一种适用于绘制区域任意划分的并行绘制负载平衡方法 |
CN102752594A (zh) * | 2012-06-21 | 2012-10-24 | 浙江大学 | 一种基于图像编解码与传输并行的集群渲染方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7075541B2 (en) * | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
-
2013
- 2013-01-17 CN CN201310018156.8A patent/CN103077088B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702244A (zh) * | 2009-11-10 | 2010-05-05 | 南京大学 | 一种适用于绘制区域任意划分的并行绘制负载平衡方法 |
CN102752594A (zh) * | 2012-06-21 | 2012-10-24 | 浙江大学 | 一种基于图像编解码与传输并行的集群渲染方法 |
Non-Patent Citations (1)
Title |
---|
基于GPU的高真实感集群渲染系统;任崇辉;《中国优秀硕士学位论文全文数据库信息科技辑》;20110731(第7期);第19-22页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103077088A (zh) | 2013-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103077088B (zh) | 集群渲染环境中基于pkdt树的动态反馈负载均衡方法 | |
US10841241B2 (en) | Intelligent placement within a data center | |
CN106095583B (zh) | 基于新神威处理器的主从核协同计算编程框架 | |
CN110411464B (zh) | 三维点云地图生成方法、装置、设备及存储介质 | |
CN103605500B (zh) | 利用一个或多个约束计算设备的设置的系统、方法 | |
CN103414752B (zh) | 一种网络感知的云数据中心虚拟机分配方法 | |
CN110399825A (zh) | 面部表情迁移方法、装置、存储介质及计算机设备 | |
CN107220997A (zh) | 一种立体匹配方法及系统 | |
CN104661010A (zh) | 三维立体模型的建立方法和装置 | |
CN205193879U (zh) | 一种云计算渲染系统 | |
CN109977273A (zh) | 一种拓扑图生成方法、装置、设备及可读存储介质 | |
CN112508184A (zh) | 一种基于卷积神经网络的快速图像识别加速器设计方法 | |
CN109410330A (zh) | 一种基于bim技术无人机航拍建模方法 | |
CN111476893A (zh) | 基于海上油气田设备设施的三维实景建模方法及装置 | |
CN106408653A (zh) | 一种面向大规模三维重建的实时鲁棒的集束调整方法 | |
CN106201259A (zh) | 一种虚拟现实系统中分享全景影像的方法和装置 | |
CN106952304A (zh) | 一种利用视频序列帧间相关性的深度图像计算方法 | |
CN103530243B (zh) | 用于确定用于设备的设置的系统、方法 | |
CN103955964B (zh) | 基于三对非平行点云分割片的地面激光点云拼接方法 | |
CN114971819A (zh) | 基于多智能体强化学习算法在联邦学习下的用户竞价方法及装置 | |
CN107341834B (zh) | 一种保持双目视差的全景立体校正方法及系统 | |
CN114356544A (zh) | 面向边缘集群的并行计算方法和系统 | |
CN102427420B (zh) | 基于图模式匹配的虚拟网络映射方法及装置 | |
CN113256125B (zh) | 异构机器人集群任务分配方法、系统、设备及存储介质 | |
US20100332427A1 (en) | Data processing apparatus generating motion of 3D model and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160113 |