当前位置: 首页 > 专利查询>南京大学专利>正文

基于CUDA的多边形栅格化GPU并行计算方法技术

技术编号:20944352 阅读:44 留言:0更新日期:2019-04-24 02:20
本发明专利技术涉及一种基于CUDA的多边形栅格化GPU并行计算方法,由CPU和GPU协同并行处理多边形栅格化;其中,CPU的执行过程包括以下步骤:所有多边形根据PNN进行升序排序,形成第一多边形队列;计算第一多边形队列中各多边形的占用内存MU;按照CUDA中grid、block和thread的层次结构进行多边形的划分:读取每一批次多边形数据并传递给GPU处理,并接收GPU的处理结果。GPU的处理过程包括以下步骤:接收CPU传递的多边形数据;将多边形数据分配给各block及thread;各thread分别调用BAF算法执行栅格化计算;将栅格化结果传递回CPU。本发明专利技术能有效提高并行效率、保证负载均衡,且适用于海量多边形的栅格化。

Parallel Computing Method of Polygon Raster GPU Based on CUDA

The present invention relates to a polygon rasterized GPU parallel computing method based on CUDA, in which CPU and GPU cooperate to process polygon rasterization in parallel. The execution process of CPU includes the following steps: all polygons are sorted in ascending order according to PNN to form the first polygon queue; the memory MU of each polygon in the first polygon queue is calculated; and the memory MU of each polygon in the first polygon queue is calculated according to grid, block and thread in CUDA. Hierarchical structure divides polygons: read each batch of polygon data and pass it to GPU for processing, and receive the results of GPU processing. The process of GPU includes the following steps: receiving the polygonal data transmitted by CPU; distributing the polygonal data to blocks and threads; calling BAF algorithm to perform rasterization calculation separately; and transmitting the rasterized results back to CPU. The invention can effectively improve the parallel efficiency, ensure load balancing, and is suitable for the rasterization of massive polygons.

【技术实现步骤摘要】
基于CUDA的多边形栅格化GPU并行计算方法
本专利技术涉及一种基于CUDA的多边形栅格化GPU并行计算方法,属于地理信息系统

技术介绍
矢量多边形栅格化是地理空间分析中的基础算法,属于矢量多边形数据处理范畴。多边形栅格化过程包括:遍历多边形,在各多边形最小外接矩形内部判断多边形内部及边界上的栅格单元,并将多边形属性值赋给这些栅格单元。栅格化的关键步骤是判断多边形内部及边界上的栅格单元,不同算法有不同的判断方法。现在常用的栅格化算法为边界代数多边形填充算法(BoundaryAlgebraFilling,简称BAF),BAF方法的速度最快、效率最高。BAF法的基本原理为:沿着多边形的边界环绕一圈,当环绕方向向下时,把边界左边一行中所有栅格单元的数值减去属性值,当环绕方向向上时,把边界左边一行中所有栅格单元的数值加上属性值,则多边形外部的栅格正负数值抵消,而内部的栅格被赋予属性值。随着大数据时代的到来,现有单机处理的串行栅格化算法已无法满足海量空间数据快速处理与分析的需求。因此,发展多边形并行栅格化技术十分必要。随着计算机硬件的快速发展,GPU(GraphicProcessingUnit)作为一种新型架构,具有浮点运算能力强、运算密集度高和性价比高等特点,可取得较CPU更好的加速效果)。多边形栅格化具有计算密集、多边形处理独立性强、通信较少的算法特征,符合GPU数据并行处理的特点,研究GPU环境下的多边形栅格化并行技术成为处理大规模矢量多边形数据快速转换的新途径。传统的并行栅格化方法研究主要基于CPU环境设计,取得了良好的并行加速效率。但由于硬件环境及架构设计上的不同,很难将CPU下的并行方法应用到GPU中,需要根据GPU的架构特征进行重新设计。已有许多研究针对多边形空间分析的GPU并行处理进行,如空间查询、空间连接、叠置分析、空间索引构建等,但这些研究对多边形的处理侧重于不同多边形之间空间关系的判定,通常假定多边形之间复杂度差异较小,且以点近似表示多边形并构建索引进行划分。但在栅格化中,多边形复杂程度极大地影响运算效率,采用现有方法很难保证负载均衡。GPU内存容量有限,这限制了数据处理的规模。同时,矢量多边形具有结构复杂、尺寸差异性大、数据量巨大等特点。现有研究并未考虑GPU内存对多边形划分、传输及异常多边形(节点个数过多)处理的影响,从而很难直接适用于海量多边形栅格化处理。
技术实现思路
本专利技术要解决技术问题是:提供一种能有效提高并行效率、保证负载均衡并适用于海量多边形的栅格化方法。为了解决上述技术问题,本专利技术提出的技术方案是:一种基于CUDA的多边形栅格化GPU并行计算方法,由CPU和GPU协同并行处理多边形栅格化;CPU的执行过程包括第一次执行调度和循环执行调度,其中第一次执行调度包括以下步骤:S101、计算各多边形的多边形节点数目PNN,对所有多边形根据PNN进行升序排序,形成第一多边形队列;S102、计算第一多边形队列中各多边形的占用内存MU,MU=sizeof(PointX)+sizeof(PointY)+sizeof(AttributeValue),其中,PointX、PointY分别为第一多边形队列中各多边形的X、Y坐标组成的数组,AttributeValue为多边形属性值;S103、按照CUDA中grid、block和thread的层次结构进行多边形的划分:1)grid层划分当GPU内存限制为MUlimit时,从第一多边形队列首端开始依次划分成若干批次多边形数据,每一批次多边形数据的MU总数小于GPU内存,即每一批次多边形数据的数目满足其中,MUgpuresult为GPU栅格化结果所占内存,其值等于存储栅格化结果的栅格格网所占内存,即等于格网内栅格个数与每个栅格单元所占内存(如采用float型进行存储,则为4字节)的乘积;Nmax为最大多边形数目;2)block层划分:在每一批次多边形数据中包含按多边形节点数目PNN升序排列的第二多边形队列,每次从第二多边形队列的首端和末端各取一个多边形分配给一个block处理,直至第二多边形队列分配完毕,即完成了block层的划分;3)thread层划分:在block内部采用循环分配的方式将待处理多边形分给各线程并行处理:首次给各thread分配一个多边形进行处理;当有线程处理完毕后,则继续分给其一个多边形进行处理,直至该block中多边形处理完毕,即完成了thread层的划分;S104、读取第一批次多边形数据并传递给GPU处理,在GPU执行过程中读取第二批次多边形数据,然后接收GPU处理结果;循环执行调度包括以下步骤:S201、依次读取每一批次多边形数据并传递给GPU处理;S202、开辟两个线程,分别用于写入上一次GPU的处理结果和读取下一批次多边形数据;S203、接收GPU处理结果;S204、重复步骤S201-S203,直至所有多边形处理完毕;GPU的处理过程包括以下步骤:S301、接收CPU传递的多边形数据;S302、将多边形数据分配给各block及thread;S303、各thread分别使用BAF法执行栅格化计算;S304、将栅格化结果传递回CPU。本专利技术是基于CUDA(ComputeUnifiedDeviceArchitecture)的GPU环境下研究多边形栅格化并行算法,其中涉及的grid、block、thread、Multiprocessor、globalmemory、sharedmemory、registers和localmemory等均为CUDA中定义的术语,可参考相关资料,不再赘述。本申请专利技术人研究发现,多边形栅格化具有内在的可并行性:(1)栅格化的计算过程与各多边形参与计算的先后顺序无关,多边形之间的计算是独立执行相同的过程、无相互依赖,且处理过程中通信过程较少,符合GPU数据并行模式的特点。(2)多边形栅格化是用于实现从矢量到目标栅格的转换,而栅格数据具有一致性和规整性的特点,且为矩阵式的存储结构,从而支持栅格化结果的并行融合,更易于数据并行。(3)BAF算法结构清晰、处理快速,可以较容易地迁移到GPU上实现。本专利技术采用CPU/GPU协同并行策略,充分利用CPU和GPU计算资源,提高了并行效率。该策略中,CPU负责数据读写的调度,以保证负载均衡,GPU负责多边形的并行填充计算。该策略隐藏了数据传输、读写时间,使CPU在GPU处理过程中完成下一批处理多边形的读入和上一次GPU处理结果的写入,使得CPU的数据读写和GPU的并行处理同步执行。GPU中存储的信息包括多边形X、Y坐标、属性值及栅格化结果。其中,多边形X、Y坐标及栅格化结果所需存储空间大,适合在globalmemory中存储;而属性值存储大小固定,且在BAF法中被反复调用,适合在sharedmemory中存储。考虑到sharedmemory容量较小,无法存储所有多边形属性值(如NVIDIATeslaK20mGPU,sharedmemory为48KB,最多存储12288个属性值);且当多个线程对sharedmemory同一位置读取数据时,会发生访问冲突,影响执行性能。因此在GPU多边形栅格化中,在sharedmemory中给各thread分配唯一的存储地址本文档来自技高网
...

【技术保护点】
1.一种基于CUDA的多边形栅格化GPU并行计算方法,其特征在于:由CPU和GPU协同并行处理多边形栅格化;CPU的执行过程包括第一次执行调度和循环执行调度,其中第一次执行调度包括以下步骤:S101、计算各多边形的多边形节点数目PNN,对所有多边形根据PNN进行升序排序,形成第一多边形队列;S102、计算第一多边形队列中各多边形的占用内存MU;S103、按照CUDA中grid、block和thread的层次结构进行多边形的划分:1)grid层划分当GPU内存限制为MUlimit时,从第一多边形队列首端开始依次划分成若干批次多边形数据,每一批次多边形数据的MU总数小于GPU内存,即每一批次多边形数据的数目满足

【技术特征摘要】
1.一种基于CUDA的多边形栅格化GPU并行计算方法,其特征在于:由CPU和GPU协同并行处理多边形栅格化;CPU的执行过程包括第一次执行调度和循环执行调度,其中第一次执行调度包括以下步骤:S101、计算各多边形的多边形节点数目PNN,对所有多边形根据PNN进行升序排序,形成第一多边形队列;S102、计算第一多边形队列中各多边形的占用内存MU;S103、按照CUDA中grid、block和thread的层次结构进行多边形的划分:1)grid层划分当GPU内存限制为MUlimit时,从第一多边形队列首端开始依次划分成若干批次多边形数据,每一批次多边形数据的MU总数小于GPU内存,即每一批次多边形数据的数目满足其中,MUgpuresult为GPU栅格化结果所占内存,Nmax为最大多边形数目;2)block层划分:在每一批次多边形数据中包含按PNN升序排列的第二多边形队列,每次从第二多边形队列的首端和末端各取一个多边形分配给一个block处理,直至第二多边形队列分配完毕,即完成了block层的划分;3)thread层划分:在block内部采用循环分配的方式将待处理多边形分给各线程并行处理:首次给各线程分配一个多边形进行处理;当有线程处理完毕后,则继续分给其一个多边形进行处理,直至该block中多边形处理完毕,即完成了thread层的划分;S104、读取第一批次多边形数据并传递给GPU处理,在GPU执行过程中读取第二批次多边形数据,然后接收GPU的处理结果;循环执行调度包括以下步骤:S201、依次读取每一批次多边形数据并传递给GPU处理;S202、开辟两个线程,分...

【专利技术属性】
技术研发人员:周琛李满春陈振杰
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1