首页 / 专利库 / 资料储存系统 / 大数据 / 基于GPU并行计算的视景特效仿真方法

基于GPU并行计算的视景特效仿真方法

阅读:1042发布:2020-06-09

专利汇可以提供基于GPU并行计算的视景特效仿真方法专利检索,专利查询,专利分析的服务。并且本 发明 提供一种于GPU并行计算的视景特效仿真方法,采用GPU并行计算技术应用于轨迹、烟雾、火光等的实时模拟运算和各种大规模地形仿真运算中。采用优化的文件/内存映射方式进行 大数据 量影像数据的读写 访问 ,根据模拟参数实时计算仿真特效的模拟仿真状态,提高了大数据量影像文件的存储和访问效率、全球三维环境下多要素显示调度功能的内部并发能 力 、功能间的并发处理能力,并对三维显示调度处理 算法 优化及代码的优化。,下面是基于GPU并行计算的视景特效仿真方法专利的具体信息内容。

1.一种基于GPU并行计算的视景特效仿真方法,其特征在于包括以下步骤:
(1)采用优化的文件/内存映射方式进行大数据量影像数据的读写访问,以提高大数据量影像文件的存储和访问效率;
(2)采用多线程的运行模式,使单个数据显示处理功能的内部处理流程可以利用操作系统提供的并行处理机制,充分利用系统资源,提高处理效率;
(3)系统将提供多任务、批处理的数据显示处理方式;操作者可利用系统提供的批处理功能,同时提交多个数据显示处理任务,系统并发地处理这些任务,并实时返回这些任务的处理状态,可发挥多CPU、GPU的处理能并提高系统的使用效率;
(4)在三维显示处理算法优化及代码的优化采取相应的措施,包括控制算法复杂性、编码控制、多线程技术、多级缓存机制的运用;
(5)在数据显示处理完成后,处理的结果需要从GPU内存中传输到CPU的内存中以便进行后续的处理,在GPU内进行数据显示处理的过程中,根据具体需求对数据进行分处理,以便充分发挥GPU的性能;
(6)数据传输的优化:将各种需要传输的数据打包,通过一次性的数据传输将尽可能多的数据传输完成;使用cudaMallocHost分配主机内存,系统会自动将内存的开始位置进行字节对齐等优化处理,从而提高系统带宽;
(7)矩阵分块策略的优化:进行分块处理,将每个活动块被分割成线程,线程调度程序定期从一个Warp切换到另一个Warp以最大限度利用多处理器的计算资源,块之间或块中的Warp之间的执行次序是不确定的,也就是说可以是任何次序。
(8)GPU内存访问策略的优化:将同时执行的多个线程访问全局内存的连续区域,这样可以保证在同样的时钟周期内获取尽量多的数据。

说明书全文

基于GPU并行计算的视景特效仿真方法

技术领域

[0001] 本发明属于视景仿真技术领域,涉及一种基于GPU并行计算的视景特效仿真方法,创造直接应用于虚拟现实视景仿真中数据可视化的高效调度和显示绘制。

背景技术

[0002] 三维视景仿真系统经常需要对环境中的一些特殊效果,如爆炸、火焰、烟雾、扬尘等进行实时模拟和仿真,构设高度逼真的虚拟环境态势。环境特效由实时数据和仿真数据驱动,同特定的模型相对应,具有确切的时间触发点和空间位置。驱动显示这些环境特效往往需要耗费大量的计算机资源,尤其是CPU。传统的三维特效技术往往采用非实时的方式实现,即利用三维特效处理软件,通过特效处理参数,经过长时间的特效处理过程,生成美观、逼真的三维特效画面。采用的工具软件如Maya、3DSMax等。
[0003] 然而在实时性要求较高的三维军事对抗仿真平台系统中,传统的战场特效技术很难满足要求。在军事对抗仿真过程中,特效从触发(例如炮弹射出)到展现(炮弹命中),往往只有数秒甚至更短的时间。在如此短的时间内,计算机无法通过传统的方式,利用软件生成特效,再通过某种方式加载到场景中,需要利用现代化的计算机图形学技术和先进的计算机图形硬件实时生成具有高逼真度的战场特效。

发明内容

[0004] 利用传统的CPU并行运算无法保证运算效率,因此很难达到可接受的模拟效果。本发明提供一种于GPU并行计算的视景特效仿真方法,采用GPU并行计算技术应用于轨迹、烟雾、火光等的实时模拟运算和各种大规模地形仿真运算中,涉及到光照特效、纹理特效等大规模实时运算。
[0005] 本发明的技术方案如下:
[0006] 一种基于GPU并行计算的视景特效仿真方法,其特征在于包括以下步骤:
[0007] (1)采用优化的文件/内存映射方式进行大数据量影像数据的读写访问,以提高大数据量影像文件的存储和访问效率;
[0008] (2)采用多线程的运行模式,使单个数据显示处理功能的内部处理流程可以利用操作系统提供的并行处理机制,充分利用系统资源,提高处理效率;
[0009] (3)系统将提供多任务、批处理的数据显示处理方式;操作者可利用系统提供的批处理功能,同时提交多个数据显示处理任务,系统并发地处理这些任务,并实时返回这些任务的处理状态,可发挥多CPU、GPU的处理能并提高系统的使用效率;
[0010] (4)在三维显示处理算法优化及代码的优化采取相应的措施,包括控制算法复杂性、编码控制、多线程技术、多级缓存机制的运用;
[0011] (5)在数据显示处理完成后,处理的结果需要从GPU内存中传输到CPU的内存中以便进行后续的处理,在GPU内进行数据显示处理的过程中,根据具体需求对数据进行分处理,以便充分发挥GPU的性能;
[0012] (6)数据传输的优化:将各种需要传输的数据打包,通过一次性的数据传输将尽可能多的数据传输完成;使用cudaMallocHost分配主机内存,系统会自动将内存的开始位置进行字节对齐等优化处理,从而提高系统带宽;
[0013] (7)矩阵分块策略的优化:进行分块处理,将每个活动块被分割成线程,线程调度程序定期从一个Warp切换到另一个Warp以最大限度利用多处理器的计算资源,块之间或块中的Warp之间的执行次序是不确定的,也就是说可以是任何次序。
[0014] (8)GPU内存访问策略的优化:将同时执行的多个线程访问全局内存的连续区域,这样可以保证在同样的时钟周期内获取尽量多的数据。
[0015] 本发明简单实用,充分利用了计算机资源,对传统绘制显示方法效率提升是一个有益的补充。本发明主要工作就是实现对遥感数据和三维环境下的数据可视化的高效调度和显示绘制,显示效率关系整个系统的效率和功能性能指标,数据显示处理效率的优化将是本系统研发中的一个重要技术问题。数据显示处理效率反映在如下几个方面:
[0016] 根据模拟参数实时计算仿真特效的模拟仿真状态;
[0017] 大数据量影像文件的存储和访问效率;
[0018] 全球三维环境下多要素显示调度功能的内部并发能力;
[0019] 功能间的并发处理能力;
[0020] 三维显示调度处理算法优化及代码的优化。附图说明
[0021] 图1是GPU三维显示处理示意图;
[0022] 图2是数据分块与线程分块对应关系图。

具体实施方式

[0023] 本发明的具体实施方式如下:
[0024] (1)大数据量影像文件的存储和访问效率
[0025] 采用优化的文件/内存映射方式进行大数据量影像数据的读写访问。
[0026] (2)全球三维环境下多要素显示调度功能的内部并发处理能力
[0027] 内部可采用多线程的运行模式,使单个数据显示处理功能的内部处理流程可以利用操作系统提供的并行处理机制,充分利用系统资源,提高处理效率。
[0028] (3)功能的并发处理
[0029] 系统将提供多任务、批处理的数据显示处理方式。操作者可利用系统提供的批处理功能,同时提交多个数据显示处理任务,系统并发地处理这些任务,并实时返回这些任务的处理状态,可发挥多CPU、GPU的处理能力并提高系统的使用效率。
[0030] (4)三维显示调度处理算法优化及代码的优化
[0031] 在开发过程中在三维显示处理算法优化及代码的优化采取相应的措施,包括控制算法复杂性、编码控制、多线程技术、多级缓存机制的运用等。
[0032] (5)系统的计算部分可以利用基于GPU完成
[0033] 如图1所示,三维可视化显示处理一般都是以视域为单位进行处理的,目前的典型的 GPU的内存都能一次性的将数据载入到GPU内存中。在数据显示处理完成后,处理的结果需要从GPU内存中传输到CPU的内存中以便进行后续的处理。在GPU内进行数据显示处理的过程中,通常要根据具体需求对数据进行分块处理,以便充分发挥GPU的性能。
[0034] (6)数据传输的优化
[0035] 在现有的技术体系下,GPU内存和主机内存分别在不同的空间中,必须要通过特殊的函数才能够实现数据的双向传输。尽管GPU已经采用了PCI-E2.0的接口,单向理论带宽高达 4GBps,但与GPU的私有内存的访问速度相比,这个速度还是相当低的。因此,为了能够充分发挥GPU的性能,必须要将GPU和CPU间通信的时间最小化。目前,可以采取的优化措施包括:
[0036] 一是将各种需要传输的数据打包,通过一次性的数据传输将尽可能多的数据传输完成。由于每次调用CUDA的API函数都会产生额外的开销,因此可以将多个数据打包为一个较大的数据包,一次性的进行传输,从而提高处理效率。
[0037] 二是使用cudaMallocHost分配主机内存,系统会自动将内存的开始位置进行字节对齐等优化处理,从而提高系统带宽。CUDA存储器模型中存在两种不同的主机端存储器:pageable memory和page-locked memory。现代操作系统使用了虚拟内存和内存分页管理,这种设计在带来种种好处的同时,也有很多弊端:新开辟的空间可能会被分配在低速的磁盘上,空间的物理地址有可能发生改变。page-locked memory能够保证分配的空间一定存在于物理内存中且地址固定,可以有效的提高主机端与设备端的通信效率。
[0038] (7)矩阵分块策略的优化
[0039] 在实际处理的过程中,一般都是进行分块处理。如图2所示,其中分块的大小对GPU 处理的性能影响很大,这主要是由于CUDA的执行模型来决定的。CUDA为了提高性能,每个硬件多处理器都能同时积极处理多个块。块的数量取决于每个线程的寄存器的数量,每个块的共享内存是由给定的Kernel提出要求的。在同一时间被同一多处理器处理的块被称为“活动的”。对资源要求最低的Kernel可以更好地利用(或占用)每个多处理器,因为多处理器的寄存器和共享内存在所有的活动的块的线程之间被分开。使用CUDA占有率计算器来寻求线程数量和活动的块与寄存器数量和共享内存量之间的平衡。找到正确的结合点可以极为有效地加强Kernel的性能。如果每个多处理器上没有足够的寄存器或共享内存可以处理至少一个块,内核可能就不能启动。每个活动块被分割成线程SIMD(单指令多数据)群,称为Warp。每个Warp包含同样数量的线程,称为Warp Size,被多处理器以SIMD方式执行。这意味着Warp中的每个线程传递的都是指令库中的相同指令,指导线程执行一些操作或操纵本地和/或全局内存。从硬件度看,SIMD模型效率高而且经济有效。活动Warp(比如所有活动块的所有Warp)是以时间片分配的:线程调度程序定期从一个Warp切换到另一个Warp以最大限度利用多处理器的计算资源。块之间或块中的Warp之间的执行次序是不确定的,也就是说可以是任何次序。
[0040] (8)GPU内存访问策略的优化
[0041] 为了提高内存访问的速度,最重要的一点就是确保每个线程块要访问的内存地址是连续的,这样可以保证系统缓存具有最高的利用效率。GPU的流处理器对全局内存的访问的需要 400~600个时钟周期的延迟,经常成为成像处理性能的瓶颈,因此对GPU全局内存的优化是提高性能的关键。对GPU全局内存优化的关键是将同时执行的多个thread访问全局内存的连续区域,这样可以保证在同样的时钟周期内获取尽量多的数据。为了能够实现上述性能,需要满足如下条件:
[0042] 各个线程访问的GPU全局内存必须是连续的区域
[0043] 该全局内存的起始地址必须是访问数据类型的整数倍
[0044] 参加访问的第k个线程的访问的必须是第k个地址
[0045] 为了提高数据访问的速度,必须要优化对shared memory和register的访问。GPU的内存结构分为三个层次,register属于最底层的存储器,在每个thread中使用;shared memory 数据处于中层的内存,由一个block中的数据有thread共享使用;而global memory数据属于最高层的内存结构,由一个grid中的所有block共享使用。三者之间的访问速度是递减的关系,而容量是递增的关系。由于shared memroy和register的访问速度比global memory要快上百倍,因此有效地使用shared memroy和register能够极大地提高数据处理速度。为了使成像处理软件能够获得更高的shared memroy使用率,必须控制一个block中每个线程的 shared memory和register的使用量。当block线程处理有比较多的公用数据时,最好让一个线程获取更多的数据来提高指令流和访存效率。通过调整block大小,动态分配shared memory都可以提高shared memory的使用效率。
[0046] 与shared memory相比,register的数据量更少,同时在程序中控制register的使用更加困难。这是因为register的使用率是由内核程序中使用寄存器最多的时刻的用量决定的,且由于编译器会对register变量进行优化。通常情况下,在数据处理的过程中暂存中间结果一般需要比较多的寄存器。使用下列方法可能可以节约寄存器的使用:使用shared memory存储变量;用字节数据比较多的变量代替多个字节数据比较少的字节的变量;使用占用寄存器较小的等效指令代替原有指令。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈