一种集群渲染过程中镜头共享数据管理的方法

xiaoxiao2021-3-1  195

一种集群渲染过程中镜头共享数据管理的方法
【技术领域】
[0001]本发明涉及共享数据管理方法,具体涉及一种集群渲染过程中镜头共享数据管理的方法。
【背景技术】
[0002]在渲染高真实感的场景时,场景的数据量很大,在进行并行渲染时,随着同时访问存储节点的计算节点增多,达到存储节点的响应能力以及高速互联网络带宽上限后,数据访问将成为瓶颈,从而影响渲染性能的。此外,在常用渲染算法中,场景着色阶段若需要等待相应的纹理数据准备好后才能继续进行,在等待数据获得相应的时间内,处理器实际上处于空闲等待状态,因此数据访问瓶颈将会降低计算节点处理器利用率,降低渲染性能。
[0003]采用集群并行渲染时,传统的渲染管理软件都是将渲染任务作为普通的任务来处理的,现有渲染农场一般采用静态部署的方法分配计算资源,例如Renderbus自助式云渲染农场,该方式计算资源利用率低。
[0004]中国专利(申请号:200910013740,专利名称:基于DEADLINE图形工作站渲染集群的弹性构建方法)中提出了一致基于DEADLINE图形工作站渲染集群的弹性构建方法,支持按任务动态分配计算资源,在一定程度提高了资源利用率,但未考虑渲染数据访问瓶颈等问题。
[0005]中国专利(申请号:201210431551,专利名称:基于云计算渲染农场的构建方法)中提出了一种基于云计算渲染农场的构建方法,支持渲染服务器即计算资源的动态增减,但同样没有考虑渲染数据本身的特点。
[0006]中国专利(申请号:201310653516,专利名称:一种柔性的渲染集群动态部署系统与方法)中提到了渲染单元的概念,每一个渲染单元负责处理同属于一个镜头的渲染任务。该方法将多个计算节点组成一个渲染单元完成连续帧的渲染,降低了任务分配和重分配带来的通信负担,提高了计算节点的利用率。但是该专利并没有充分考虑到渲染单元内部渲染任务需要的数据上的相关性等。

【发明内容】

[0007]本发明主要是在集群渲染环境下,围绕同一个镜头内的渲染帧任务之间存在共享的静态几何数据和纹理数据的特性,即镜头内帧任务之间的数据相关性,提出一种集群渲染过程中镜头共享数据管理的方法。
[0008]其中,在集群渲染环境下,对计算资源采取分层管理策略:将多个独立的计算节点组成一个渲染单元,作为完成一个渲染子任务的基本单位。按照优先级顺序动态部署渲染单元中计算节点数量,对渲染任务采取分级调度策略:将用户渲染任务中的每个镜头划分成一个或多个渲染子任务,每个渲染子任务由该镜头中的连续帧组成,每一帧交由渲染引擎进行渲染,称之为帧任务。
[0009]为实现上述目的,本发明采用以下技术方案:
[0010]集群渲染过程中镜头共享数据管理的方法,包括:
[0011 ]步骤(1):在集群渲染环境下,将每个渲染单元划分为一个master节点和若干个slave节点,master节点上的master进程与slave节点上的slave进程相互通信;
[0012]步骤(2):master节点读取镜头内共享数据并将其均衡存储于清染单元的各个slave节点中,并在每个slave节点中分别建立用于管理镜头内的共享数据的共享数据管理丰旲块;
[0013]步骤(3):每个slave节点上的渲染引擎开始渲染,在渲染的过程中,若一个渲染引擎所需要的共享数据存储于所述渲染引擎所属的slave节点中,则所述渲染引擎请求的共享数据由共享数据管理模块直接返回至所述渲染引擎;
[0014]若一个渲染引擎所需要的共享数据存储于其他slave节点中,则在所述渲染引擎所属的s lave节点与存储所需要的共享数据的s lave节点之间设置RDMA接口,所述清染弓|擎请求的共享数据通过RDMA接口返回至所述渲染引擎。
[0015]在所述步骤(1)中,任意两个slave节点之间还建立IB通信连接。
[0016]所述步骤(2)中master节点读取的镜头内共享数据包括镜头纹理数据和镜头内静态几何数据。
[0017]所述步骤(2)中master节点依据镜头内共享数据的大小和类型以及当前清染单元里的slave节点的个数,均衡地分割镜头内共享数据,最后确定分发到各个slave节点的镜头内共享数据。
[0018]所述步骤(3)中,在任意两个slave节点之间创建与渲染线程数目相等的连接对象和MR ο
[0019]所述步骤(3)中,RDMA接口采用异步操作读取数据,采用同步操作确保RDMA接口返回的数据可用。
[0020]所述在与RDMA接口相连的每一个连接对象上进行同步操作。
[0021]所述步骤(3)中,在渲染的过程中,渲染引擎还直接读取磁盘中的用于完成渲染任务的私有数据。
[0022]在所述步骤(1)中,任意两个slave节点之间还建立切换连接状态。
[0023]在所述步骤⑶中,所述渲染引擎采用Bleman渲染引擎。
[0024]本发明的有益效果为:
[0025](1)本发明是基于镜头间渲染任务的共享数据相关性的共享数据管理框架设计与实现。通过将数据由磁盘访问切换为内存访问,将能够在一定程度上缓解存储访问瓶颈,从而提尚清染效率;
[0026](2)本发明实现的数据管理模块支持位置透明性、数据访问透明性和数据复制特性,其中,位置透明性是指上层应用程序只需给定文件路径,调用本模块提供的接口即可读取或者写入数据,至于数据是存放在内存中还是磁盘上,对上层应用程序来说是透明的;数据访问透明性指上层应用程序可以透明的使用共享数据管理,无需进行大量的应用代码修改;
[0027 ] (3)本发明会依据共享数据的大小和s 1 ave节点的个数,动态的调整每个节点上开辟的共享内存的大小,从而避免内存的浪费,从而充分的利用集群的存储资源,提高效率。
【附图说明】
[0028]图1为本发明的数据管理共享内存池。
[0029]图2为本地数据访问示意图。
[0030]图3为异地数据访问示意图。
【具体实施方式】
[0031 ]下面结合附图与实施例对本发明做进一步说明:
[0032]本发明的集群环境以包含60个计算节点的Linux集群为例,在该Linux集群中,每个计算节点为12核,通过IB网络连接。
[0033]本发明基于的通过IB网络互连的集群。IB网络(Infiniband)是一个高速低延迟、低CPU开销、尚可靠性和尚可扩展性的互联网络技术。IB的一项关键特性是能够提供RDMA(远程DMA)支持。IB可在两端(服务器之间或者服务器与存储)数据传输的过程中不需要CPU的干预。IB的高效和可扩展性使得它成为了高性能计算、云、web2.0和数据库存储等领域的最优性能和高性价比解决方案。
[0034]MR (Memory Registrat1n)是一种允许应用程序指定网络适配器可访问的程序内存空间的机制,注册时这部分内存会被钉在内存中以避免操作系统将其交换到交换空间中。每一个MR都拥有一个本地键和一个远端键,本地键用于本地HCA访问本地内存,比如在接收数据过程中;远端键允许远端进程通过RDMA访问本地内存。
[0035]HCA(Host Channel Adapter),类似于以太网中的网卡,作为服务器访问IB网络的一个端点,同时还提供了让程序直接访问HCA和程序虚拟内存地址到物理地址映射的地址解析机制。
[0036]运行该实例的时候,将渲染单元、数据管理系统以及Bleman渲染引擎部署在集群上,提交的清染任务的场景文件是符合Render Man规范的。
[0037]其中,每个清染单元划分为一个master节点和若干个slave节点,master节点上的master进程与若干个计算节点上的slave进程进行通信,完成任务的的调度和数据的传输。场景文件存储在文件服务器上,运行的过程中每一个slave节点都从文件服务器上读取数据。上述计算节点为slave节点。
[0038]将镜头内共享数据分布式的存储于渲染单元的各个slave节点中,并建立共享数据管理模块统一管理整个镜头中的共享数据。
[0039]当清染单元内的slave节点需要访问共享数据时,需要向共享数据管理发出数据请求,然后共享数据管理针对该请求做相应操作。
[0040]本发明的集群渲染过程中镜头共享数据管理的方法,包括:
[0041]步骤(1):在集群渲染环境下,将每个渲染单元划分为一个master节点和若干个slave节点,master节点上的master进程与slave节点上的slave进程相互通信;
[0042]步骤(2):master节点读取镜头内共享数据并将其均衡存储于清染单元的各个slave节点中,并在每个slave节点中分别建立用于管理镜头内的共享数据的共享数据管理丰旲块;
[0043]步骤(3):每个slave节点上的渲染引擎开始渲染,在渲染的过程中,若一个渲染引擎所需要的共享数据存储于所述渲染引擎所属的slave节点中,则所述渲染引擎请求的共享数据由共享数据管理模块直接返回至所述渲染引擎;
[0044]若一个渲染引擎所需要的共享数据存储于其他slave节点中,则在所述渲染引擎所属的s lave节点与存储所需要的共享数据的s lave节点之间设置RDMA接口,所述清染弓|擎请求的共享数据通过设置RDMA接口返回至所述渲染引擎。
[0045]具体地,本发明的该集群渲染过程中镜头共享数据管理的方法为:
[0046]首先,启动渲染单元,提交渲染任务,渲染单元会启动数据管理系统;
[0047]数据管理系统针对镜头中的共享数据读取操作进行优化,具体步骤如下:
[0048](1)共享数据管理系统初始化:
[0049]各个节点开辟共享内存区域;各个节点创建共享数据区域,在内存中申请空间;将该部分空间锁在内存中;对元数据、数据访问所需数据结构进行初始化;对远端内存访问通信所要用的连接进行初始化,包括各个节点间建立IB通信连接、注册数据缓存区域、切换连接状态。
[°°50] (2)master节点读取共享文件列表:
[005? ]清染单元通知master节点加载共享数据;清染单元会给数据管理系统提供共享数据的存储路径,master节点根据渲染单元提供的路径参数读取共享文件列表,包括镜头纹理文件和镜头内静态几何文件。
[0052](3)master节点均衡的分配各slave节点需要加载的文件列表:
[0053]slave节点根据分配的文件列表加载对应的共享数据,将数据存储初始化的内存区域,每个slave节点只负责存储共享数据的一部分,形成如图1所示数据管理共享内存池;
[0054](4)在进行渲染的过程中,每个slave节点上的渲染引擎读取文件数据,包括共享数据文件和私有数据文件。对于私有数据,渲染引擎会按照普通磁盘文件的方式去文件服务器上读取,对于共享数据,则是通过数据管理系统读取。
[0055](5)共享数据文件分散存放在整个清染单元的各个s lave节点上,数据的访问会分为本地访问和异地访问两种,本地数据访问和异地数据访问的区别:
[0056]如图2所示,若一个渲染引擎所需要的共享数据存储于所述渲染引擎所属的slave节点中,比如计算节点A,计算节点A正在运行的渲染引擎所属的slave节点,那么所述渲染引擎请求的共享数据由共享数据管理模块直接返回至所述渲染引擎,此过程为本地访问。
[0057]当渲染引擎需要的共享数据存放在本地的内存上,渲染引擎发送数据请求至共享数据管理模块,共享数据管理模块接收请求后,在共享数据管理模块中的共享文件的元数据中找到渲染引擎请求的共享数据的地址,并根据共享数据的地址将相应的共享数据直接返回给渲染引擎。
[0058]但是当引擎需要的场景文件存储在其他的节点的共享内存区域时,当前结点和存储所需文件的节点之间需要进行远端内存数据访问针对这两个过程,采用了 RDMA的方式实现,如图3所示。
[0059]在图3中,计算节点A和计算节点B均为slave节点,此时,计算节点A中的清染引擎所需要的共享数据存储于计算节点B中,则在计算节点A与计算节点B之间设置RDMA接口,所述渲染引擎请求的共享数据通过RDMA接口返回至所述渲染引擎,此过程为异地访问。
[0060]在初始化阶段,每个slave节点之间创建了等同于渲染线程数目的连接对象和MR。[0061 ]使用RDMA接口实现对远端数据访问。使用RDMA读取数据时是异步的,采用RDMA同步操作确保RDMA接口返回数据可用。RDMA的同步操作是在每一个连接对象上进行的。
[0062]上述虽然结合附图对本发明的【具体实施方式】进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
【主权项】
1.集群渲染过程中镜头共享数据管理的方法,其特征在于,包括: 步骤(1):在集群清染环境下,将每个清染单元划分为一个master节点和若干个slave节点,master节点上的master进程与slave节点上的slave进程相互通信; 步骤(2):master节点读取镜头内共享数据并将其均衡存储于清染单元的各个slave节点中,并在每个slave节点中分别建立用于管理镜头内的共享数据的共享数据管理模块; 步骤(3):每个slave节点上的渲染引擎开始渲染,在渲染的过程中,若一个渲染引擎所需要的共享数据存储于所述渲染引擎所属的slave节点中,则所述渲染引擎请求的共享数据由共享数据管理模块直接返回至所述渲染引擎; 若一个渲染引擎所需要的共享数据存储于其他slave节点中,则在所述渲染引擎所属的slave节点与存储所需要的共享数据的slave节点之间设置RDMA接口,所述清染弓|擎请求的共享数据通过RDMA接口返回至所述渲染引擎。2.如权利要求1所述的集群渲染过程中镜头共享数据管理的方法,其特征在于,在所述步骤(1)中,任意两个slave节点之间还建立IB通信连接。3.如权利要求1所述的集群渲染过程中镜头共享数据管理的方法,其特征在于,所述步骤(2)中master节点读取的镜头内共享数据包括镜头纹理数据和镜头内静态几何数据。4.如权利要求1所述的集群渲染过程中镜头共享数据管理的方法,其特征在于,所述步骤(2)中master节点依据镜头内共享数据的大小和类型以及当前清染单元里的slave节点的个数,均衡地分割镜头内共享数据,最后确定分发到各个slave节点的镜头内共享数据。5.如权利要求1所述的集群渲染过程中镜头共享数据管理的方法,其特征在于,所述步骤(3)中,在任意两个slave节点之间创建与渲染线程数目相等的连接对象和MR。6.如权利要求1所述的集群渲染过程中镜头共享数据管理的方法,其特征在于,所述步骤(3)中,RDMA接口采用异步操作读取数据,采用同步操作确保RDMA接口返回的数据可用。7.如权利要求6所述的集群渲染过程中镜头共享数据管理的方法,其特征在于,所述在与RDMA接口相连的每一个连接对象上进行同步操作。8.如权利要求1所述的集群渲染过程中镜头共享数据管理的方法,其特征在于,所述步骤(3)中,在渲染的过程中,渲染引擎还直接读取磁盘中的用于完成渲染任务的私有数据。9.如权利要求1所述的集群渲染过程中镜头共享数据管理的方法,其特征在于,在所述步骤(1)中,任意两个slave节点之间还建立切换连接状态。10.如权利要求1所述的集群渲染过程中镜头共享数据管理的方法,其特征在于,在所述步骤(3)中,所述渲染引擎采用B1 eman渲染引擎。
【专利摘要】本发明公开了一种集群渲染过程中镜头共享数据管理的方法,包括在集群渲染环境下,将每个渲染单元划分为一个master节点和若干个slave节点;master节点读取镜头内共享数据并将其均衡存储于渲染单元的各个slave节点中,并在每个slave节点中分别建立共享数据管理模块;在渲染的过程中,若一个渲染引擎所需要的共享数据存储于渲染引擎所属的slave节点中,则渲染引擎请求的共享数据由共享数据管理模块直接返回至所述渲染引擎;若一个渲染引擎所需要的共享数据存储于其他slave节点中,则在渲染引擎所属的slave节点与存储所需要的共享数据的slave节点之间设置RDMA接口,渲染引擎请求的共享数据通过RDMA接口返回至渲染引擎。
【IPC分类】G06F9/54, G06F9/50
【公开号】CN105487929
【申请号】CN201510810897
【发明人】王璐, 许斌, 徐延宁, 屠长河, 孟祥旭, 居佳佳
【申请人】山东大学
【公开日】2016年4月13日
【申请日】2015年11月19日

最新回复(0)