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环境设计,取得了良好的并行加速效率。但由于硬件环境 ...
【技术保护点】
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、开辟两个线程,分...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。