用于MIC架构协处理器的光子映射并行方法.pdf

上传人:a1 文档编号:1640010 上传时间:2018-06-30 格式:PDF 页数:9 大小:750.75KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510143989.6

申请日:

2015.03.30

公开号:

CN104714784A

公开日:

2015.06.17

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/38申请日:20150330|||公开

IPC分类号:

G06F9/38; G06T15/50(2011.01)I

主分类号:

G06F9/38

申请人:

山东大学

发明人:

康春萌; 王璐; 王佩; 徐延宁; 孟祥旭

地址:

250061山东省济南市历下区经十路17923号

优先权:

专利代理机构:

济南圣达知识产权代理有限公司37221

代理人:

赵妍

PDF下载: PDF下载
内容摘要

本发明公开了一种用于MIC架构协处理器的光子映射并行方法,包括开始光子跟踪阶段,上传场景数据至MIC架构协处理器端;光子光线求交阶段,每一个线程每次处理一条光线进行求交计算,返回光线交点信息;光子图生成阶段,根据光线交点信息执行不同的光子碰撞行为,保存碰撞的光子至光子图,直至追踪完成所有的光子线束,生成完整的光子图;开始渲染阶段,上传光子图,组织若干组渲染点,将每一组的渲染点进行层次聚类;最近邻光子搜索阶段,上传聚类完毕的渲染点,并行计算渲染点类中每个渲染点的最近邻光子,并求每个渲染点的出射辐射度;图像生成阶段,计算渲染点的颜色,并把每一组渲染点的颜色返回屏幕空间形成最终图像。

权利要求书

权利要求书
1.  一种用于MIC架构协处理器的光子映射并行方法,其特征在于,包括以下步骤:
步骤(1):开始光子跟踪阶段;
上传场景数据至MIC架构协处理器端;从光源发射光子,将光子分为多束光子线处理;其中,每束光子线包括若干条光子光线;
步骤(2):光子光线求交阶段;
每一个线程每次处理一条光线进行求交计算,返回光线交点信息;
步骤(3):光子图生成阶段;
根据光线交点信息执行不同的光子碰撞行为,保存碰撞的光子至光子图,直至追踪完成所有的光子线束,生成完整的光子图;
步骤(4):开始渲染阶段;
上传光子图至MIC架构协处理器端,组织若干组渲染点,将每一组的渲染点进行层次聚类;
步骤(5):最近邻光子搜索阶段;
上传聚类完毕的渲染点,每一个线程每次处理一个渲染点类,并行计算渲染点类中每个渲染点的最近邻光子,并求每个渲染点的出射辐射度;
步骤(6):图像生成阶段;
计算渲染点的颜色,并把每一组渲染点的颜色返回屏幕空间形成最终图像。

2.  如权利要求1所述的一种用于MIC架构协处理器的光子映射并行方法,其特征在于,所述步骤(1)中开始光子跟踪阶段,包括:
步骤(1.1):将每个线程共享的场景数据上传给MIC端;
步骤(1.2):中央处理器CPU端组织光源发射光子,每次绑定一束光子线上传MIC端计算。

3.  如权利要求1所述的一种用于MIC架构协处理器的光子映射并行方法,其特征在于,所述步骤(2)中光子光线求交阶段,包括:
步骤(2.1):选择一束光子光线数据上传至MIC架构协处理器端,每一个线程每次处理一条光线,采用动态分配策略为每个线程动态分配处理的光线;
步骤(2.2):每条光子光线并行求交。

4.  如权利要求3所述的一种用于MIC架构协处理器的光子映射并行方法,其特征在于,所述光子光线并行求交的具体过程为:
求交时组织4叉场景树的当前要计算的一个层次上的4个兄弟节点的位置向量到一个16位向量寄存器中,把16个浮点数宽度的向量计算单元看成四个模块,每个模块存储场景树四个孩子中的一个分支,把光线的位置信息复制4份填充16位向量,一次判断同一层上的4个兄弟节点是否相交。

5.  如权利要求1所述的一种用于MIC架构协处理器的光子映射并行方法,其特征在于,所述步骤(3)中光子图生成阶段,包括如下步骤:
步骤(3.1):MIC架构协处理器将计算的光线交点信息传递给CPU;
步骤(3.2):CPU根据交点执行不同的光子碰撞行为,重新绑定为一束光子上传MIC端计算,直到达到最大追踪深度;
步骤(3.3):CPU处理全部的光子线束,完成在场景中的传递运算,输出一个缓存的光子图文件。

6.  如权利要求1所述的一种用于MIC架构协处理器的光子映射并行方法,其特征在于,所述步骤(4)中开始渲染阶段,包括如下步骤:
步骤(4.1):将光子图上传至MIC端的共享内存中,为每个渲染点类在MIC上遍历光子图开辟缓存空间;
步骤(4.2):按屏幕空间的划分组织一个grid的渲染点,将渲染点按照的位置和法向的相近关系进行层次聚类。

7.  如权利要求6所述的一种用于MIC架构协处理器的光子映射并行方法,其特征在于,所述步骤(4.2)中描述的层次聚类方法为:
先将每个点看作一类,再将相近的两个类两两聚为一类,然后按照相同的预设规则再次聚类,直到每个类达到预设要求。

8.  如权利要求1所述的一种用于MIC架构协处理器的光子映射并行方法,其特征在于,所述步骤(5)中最近邻光子搜索阶段,包括如下步骤:
步骤(5.1):将聚类好的渲染点信息上传至MIC架构协处理器端内存,MIC架构协处理器端的一个线程负责一个渲染点类,并行地计算每个渲染点类;
步骤(5.2):计算每个渲染点的中心点,按照渲染点类的半径和中心点查找半径的加和来查找这个范围内的最近邻的光子集合;最近邻的光子集合中包含了渲染点类的每个渲染点周围的K个最近邻光子,其中,K≥1;
步骤(5.3):遍历最近邻的光子集合,选取渲染点类的每个渲染点的最近邻的K个光子, 并求每个渲染点的出射辐射度。

9.  如权利要求7所述的一种用于MIC架构协处理器的光子映射并行方法,其特征在于,所述步骤(5.3)中选取每个渲染点的最近邻的K个光子的具体过程为:
首先,每次取一个渲染点类的16个渲染点,并将这16个渲染点的位置法向组织成16位向量表示,每一位代表一个渲染点;再将一个光子的信息复制16份扩展成一个16位向量;最后,将计算的渲染点和光子的距离组织成一个二维的直方图来选取出每个渲染点距离它第K远的光子的距离;
比较渲染点类的每个渲染点分布的第K远光子的距离,使用向量计算的方式选取每个渲染点的分布的K个最近邻光子。

10.  如权利要求9所述的一种用于MIC架构协处理器的光子映射并行方法,其特征在于,所述二维的直方图形成的具体过程为:
将每个渲染点与其计算出的最远光子的距离划分为若干等份,形成一个二维的距离数组;二维直方图统计的是每个与渲染点距离小于所述距离划分范围的光子的数目,所述二维直方图的一个维度是距离的划分,另一个维度是16个不同的渲染点;
将与每个渲染点距离第K远的光子所在的距离划分范围选取出来,再次划分这16个距离范围形成新的直方图的范围划分,如此迭代形成二维直方图,选出渲染点类中的每个渲染点与其距离第K远的光子的距离。

说明书

说明书用于MIC架构协处理器的光子映射并行方法
技术领域
本发明涉及真实感渲染和高性能领域,具体涉及一种用于MIC架构协处理器的光子映射并行方法。
背景技术
真实感渲染是影视动漫制作领域最核心的技术也是最耗时的阶段,真是感渲染技术的加入可以增加三维动漫作品的真实性,同时也带了时间和内存的消耗。真实感渲染技术的实现依赖的是全局光照算法,很多全局光照算法不断提出,比如基于蒙特卡洛光线跟踪的各种算法、辐射度算法、光子映射算法和基于点的渲染技术。但是全局光照算法耗时是普遍问题,和高性能领域结合,采用SIMD(单指令多数据)并行化和从核加速的思想是目前提高密集计算效率的有效方案。
2012年底,Intel公司推出了基于MIC架构(Intel Many Integrated Core架构)的至强融核协处理。这个产品有超过50个核以上的x86架构的核心,用于解决高度并行计算问题,由于MIC的基本指令集与CPU一样使MIC架构从核加速更为灵活。Carsten Benthin等人提出一种使用MIC架构协处理器的并行光线追踪算法,该方法使用offload模式(卸载模式),将光线追踪中光线和场景树求交的运算加载到MIC上并行计算60条光线和场景树求交,并使用四叉树结构利用MIC的516位的向量计算单元一次性计算一条光线和树中的4个兄弟节点的求交结果。
光子映射算法是一种扩展光线跟踪的全局光照算法。光子映射算法可以直接渲染焦散和色溢,相对于光线追踪算法,光子映射可以更加便捷地实现全局光照效果。光线追踪算法从摄像机向屏幕空间发射主光线,并在场景空间递归地跟踪光线,在交点处计算光照,阴影和颜色,信息返回屏幕形成最终图像。在光子映射算法中,在计算交点的光照时,改变计算方法,使用预渲染一遍保存的光子图来收集照射信息。光子图是第一次渲染阶段通过从光源处向场景中发射光子并追踪保存得到的光照缓存数据。在渲染阶段,找到距离光线最近的交点,即渲染点最近邻的K(K≥1)个光子,累加光子能量估计光源的照射效果。
中国专利(申请号:CN 201010138101,专利名称:一种基于光子映射的全局光照方法)中提出了一种将光子映射和光线追踪结合的方法。为保证精度,需要大量的光子发射和高分辨率,这些会造成光子图过来和渲染点过多,在光子跟踪阶段和渲染阶段都是非常耗时的计算。
中国专利(申请号:CN 201410341679,专利名称:一种基于OpenCL的并行化渐进式光 子映射方法和装置)中提出了一种并行化渐进式光子映射的方法。基于OpenCL对视点光线跟踪、光子跟踪和场景渲染进行并行化,把工作负载合理设计在对应的处理器上。该方法将任务划分并行化,并没有针对光子映射算法的特征做并行改变。
发明内容
针对真实感渲染中光子映射算法计算耗时的问题,本发明提供了一种能够处理全局光照且并行加速灵活地用于MIC架构协处理器的光子映射并行方法。
为了实现上述目的,本发明采用以下技术方案:
一种用于MIC架构协处理器的光子映射并行方法,包括以下步骤:
步骤(1):开始光子跟踪阶段
上传场景数据至MIC架构协处理器端;从光源发射光子,将光子分为多束光子线处理;其中,每束光子线包括若干条光子光线;
步骤(2):光子光线求交阶段
每一个线程每次处理一条光线进行求交计算,返回光线交点信息;
步骤(3):光子图生成阶段
根据光线交点信息执行不同的光子碰撞行为,保存碰撞的光子至光子图,直至追踪完成所有的光子线束,生成完整的光子图;
步骤(4):开始渲染阶段
上传光子图至MIC架构协处理器端,组织若干组渲染点,将每一组的渲染点进行层次聚类;
步骤(5):最近邻光子搜索阶段
上传聚类完毕的渲染点,每一个线程每次处理一个渲染点类,并行计算渲染点类中每个渲染点的最近邻光子,并求每个渲染点的出射辐射度;
步骤(6):图像生成阶段
计算渲染点的颜色,并把每一组渲染点的颜色返回屏幕空间形成最终图像。
所述步骤(1)中开始光子跟踪阶段,包括:
步骤(1.1):将每个线程共享的场景数据上传给MIC端;
步骤(1.2):中央处理器CPU端组织光源发射光子,每次绑定一束光子线上传MIC端计算。
所述步骤(2)中光子光线求交阶段,包括:
步骤(2.1):选择一束光子光线数据上传至MIC架构协处理器端,每一个线程每次处理 一条光线,采用动态分配策略为每个线程动态分配处理的光线;
步骤(2.2):每条光子光线并行求交。
所述光子光线并行求交的具体过程为:
求交时组织4叉场景树的当前要计算的一个层次上的4个兄弟节点的位置向量到一个16位向量寄存器中,把16个浮点数宽度的向量计算单元看成四个模块,每个模块存储场景树四个孩子中的一个分支,把光线的位置信息复制4份填充16位向量,一次判断同一层上的4个兄弟节点是否相交。
所述步骤(3)中光子图生成阶段,包括如下步骤:
步骤(3.1):MIC架构协处理器将计算的光线交点信息传递给CPU;
步骤(3.2):CPU根据交点执行不同的光子碰撞行为,重新绑定为一束光子上传MIC端计算,直到达到最大追踪深度;
步骤(3.3):CPU处理全部的光子线束,完成在场景中的传递运算,输出一个缓存的光子图文件。
所述步骤(4)中开始渲染阶段,包括如下步骤:
步骤(4.1):将光子图上传至MIC端的共享内存中,为每个渲染点类在MIC上遍历光子图开辟缓存空间;
步骤(4.2):按屏幕空间的划分组织一个grid的渲染点,将渲染点按照的位置和法向的相近关系进行层次聚类。
所述步骤(4.2)中描述的层次聚类方法为:
先将每个点看作一类,再将相近的两个类两两聚为一类,然后按照相同的预设规则再次聚类,直到每个类达到预设要求。
所述步骤(5)中最近邻光子搜索阶段,包括如下步骤:
步骤(5.1):将聚类好的渲染点信息上传至MIC架构协处理器端内存,MIC架构协处理器端的一个线程负责一个渲染点类,并行地计算每个渲染点类;
步骤(5.2):计算每个渲染点的中心点,按照渲染点类的半径和中心点查找半径的加和来查找这个范围内的最近邻的光子集合;最近邻的光子集合中包含了渲染点类的每个渲染点周围的K个最近邻光子,其中,K≥1;
步骤(5.3):遍历最近邻的光子集合,选取渲染点类的每个渲染点的最近邻的K个光子,并求每个渲染点的出射辐射度。
所述步骤(5.3)中选取每个渲染点的最近邻的K个光子的具体过程为:
首先,每次取一个渲染点类的16个渲染点,并将这16个渲染点的位置法向组织成16位向量表示,每一位代表一个渲染点;再将一个光子的信息复制16份扩展成一个16位向量;最后,将计算的渲染点和光子的距离组织成一个二维的直方图来选取出每个渲染点距离它第K远的光子的距离;
比较渲染点类的每个渲染点分布的第K远光子的距离,使用向量计算的方式选取每个渲染点的分布的K个最近邻光子。
所述二维的直方图形成的具体过程为:
将每个渲染点与其计算出的最远光子的距离划分为若干等份,形成一个二维的距离数组;二维直方图统计的是每个与渲染点距离小于所述距离划分范围的光子的数目,所述二维直方图的一个维度是距离的划分,另一个维度是16个不同的渲染点;
将与每个渲染点距离第K远的光子所在的距离划分范围选取出来,再次划分这16个距离范围形成新的直方图的范围划分,如此迭代形成二维直方图,选出渲染点类中的每个渲染点与其距离第K远的光子的距离。
本发明的有益效果为:
(1)本发明提出了一种用于MIC架构协处理器的光子映射并行方法,是光子映射方法在MIC架构协处理器上的首次实现,MIC架构协处理器由于采用X86架构,有较大的共享内存和操作系统调度,能够处理全局光照且并行加速更加灵活。
(2)本发明在光子追踪阶段和光子搜索阶段都利用了单指令多数据向量计算单元,一次可以处理16个光子或渲染点,使单指令多数据向量计算单元的利用更加合理。
(3)本发明采用了CPU和MIC的主从架构,在MIC端和CPU端使用多线程并行,并使用单指令多数据向量计算,这种多层次的并行相对于CPU原生模式快8-12倍。
(4)本发明针对光子映射中的各个步骤的特点,使用不同的并行策略来实现在MIC架构协处理器上的并行,使本发明中的光子映射并行方法可以完全应用MIC架构协处理器的计算能力,用于提高光子光线求交阶段和光子搜索阶段的速度。
附图说明
图1为用于MIC架构协处理器的光子映射并行方法的总体流程图;
图2a)为四叉场景树树的组织模式示意图;
图2b)为四叉场景树树的中渲染点的组织位置示意图。
具体实施方式
下面结合附图与实施例对本发明做进一步说明:
MIC架构协处理器被布置在装有Intel至强处理器的服务器上,服务器硬件具体为:CPU:Intel Xeon E5-2609(2.4GHz/8core)和MIC:Intel Xeon Phi MIC SC7110P(1.1GHz/61core)。
运行实例时,将渲染引擎和测试实例布置在服务器上,make命令编译好程序后,使用rndr命令提交渲染任务,渲染准备好的场景文件。场景文件分为两部分,第一部分用于指导光子的发射,生成光子图,第二部分用于指导渲染生成最终图片。此实例中,选取的最近距离光子的搜索数目设为300
用于MIC架构协处理器的光子映射并行方法,具体步骤如下:
步骤(1):将渲染引擎和测试实例布置在服务器上,编译好程序后,使用rndr命令提交渲染任务;渲染引擎组织场景后,CPU将初始好的场景数据上传至MIC端的共享内存中;CPU端程序发射光子;
步骤(2):CPU端程序将光子射线数据使用offload语句上传并调用MIC协处理器计算光子射线与场景树求交;
步骤(3):MIC将计算的光线交点信息传递给CPU,CPU根据交点执行不同的光子碰撞行为,对新的光子重新组织成一个光子射线束,调用MIC求交,直到光子碰撞至最大的反弹次数。CPU端发射足够数目的光子,并保存成KD-tree结构的光子图,流程如图1所示。
为了使用MIC卡的向量计算单元,我们采用四叉树的场景树组织。在一条光线和场景树求交时,把16个浮点数宽度的向量计算单元看成四个模块,每个模块组织场景树四个孩子中的一个分支,如图2a)和2b)所示。
步骤(4):将光子图上传至MIC端的共享内存中,为每个渲染点类在MIC上遍历光子图开辟缓存空间。
CPU端组织一组渲染点,将渲染点按照的位置和法向的相近关系进行层次聚类。层次聚类方法即先将每个点看作一类,然后将相近的两个类,两两聚为一类,然后按照相同的规则再次聚类,直到每个类达到要求。
步骤(5):将聚类好的渲染点信息上传至MIC端内存,MIC端内每一个线程每次负责一个渲染点类,并行地计算渲染点类中每个渲染点周围的300个最近邻光子,并求每个渲染点的出射辐射度。在为每个类中的渲染点选择周围的300个最近邻光子时,采用一种分层搜索的方法,并使用向量计算单元加速。具体步骤如下:
步骤(5.1):将聚类好的渲染点信息上传至MIC端内存,MIC端每一个线程每次负一个渲染点类,并行地计算每个渲染点类;
步骤(5.2):计算每个渲染点的中心点,按照渲染点类的半径和中心点查找半径的加和查 找这个范围内的光子集合,这个最近邻的光子集合中包含了渲染点类的每个渲染点的分别的K个最近邻光子;
步骤(5.3):遍历最近邻的光子集合,选取渲染点类的每个渲染点的最近邻的K个光子,并求每个渲染点的出射辐射度。
所述步骤(5.3)中选取每个渲染点的最近邻的K个光子的具体过程为:
首先,每次取一个渲染点类的16个渲染点,并将这16个渲染点的位置法向组织成16位向量表示,每一位代表一个渲染点;再将一个光子的信息复制16份扩展成一个16位向量;最后,将计算的渲染点和光子的距离组织成一个二维的直方图来选取出每个渲染点距离它第K远的光子的距离;比较渲染点类的每个渲染点分布的第300个远光子的距离,使用向量计算的方式选取每个渲染点的分布的300个最近邻光子。
所述二维的直方图形成的具体过程为:
将计算的渲染点和光子的距离组织成一个二维的直方图,一个维度为16个渲染点,一个维度为光子和渲染点距离集合的划分。
每个渲染点与最远的光子距离为{r0,r1,r2…r15},将每个渲染点与其计算出的最远光子的距离划分为32份,如将r0平均划分为32等份,并统计每个和渲染点距离小于该范围划分距离的光子的数目,将r0到r15都作此划分,从而形成了一个二维的直方图。将与每个渲染点距离第300个远的光子所在的距离划分范围选取出来,再次划分这16个距离范围形成新的直方图的范围划分,如此迭代形成二维直方图,为渲染点类中的每个渲染点均选出距离它第300个远的光子的距离。
步骤(6):光照信息的计算结果返回CPU端,CPU端继续完成这个渲染点组的着色计算;将屏幕空间发射光线生成的渲染点都计算完成返回后,形成最终的渲染结果图片。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

用于MIC架构协处理器的光子映射并行方法.pdf_第1页
第1页 / 共9页
用于MIC架构协处理器的光子映射并行方法.pdf_第2页
第2页 / 共9页
用于MIC架构协处理器的光子映射并行方法.pdf_第3页
第3页 / 共9页
点击查看更多>>
资源描述

《用于MIC架构协处理器的光子映射并行方法.pdf》由会员分享,可在线阅读,更多相关《用于MIC架构协处理器的光子映射并行方法.pdf(9页珍藏版)》请在专利查询网上搜索。

本发明公开了一种用于MIC架构协处理器的光子映射并行方法,包括开始光子跟踪阶段,上传场景数据至MIC架构协处理器端;光子光线求交阶段,每一个线程每次处理一条光线进行求交计算,返回光线交点信息;光子图生成阶段,根据光线交点信息执行不同的光子碰撞行为,保存碰撞的光子至光子图,直至追踪完成所有的光子线束,生成完整的光子图;开始渲染阶段,上传光子图,组织若干组渲染点,将每一组的渲染点进行层次聚类;最近邻光。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1