[发明专利]基于CUDA的多边形栅格化GPU并行计算方法在审
申请号: | 201811350214.6 | 申请日: | 2018-11-14 |
公开(公告)号: | CN109670001A | 公开(公告)日: | 2019-04-23 |
发明(设计)人: | 周琛;李满春;陈振杰 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F16/29 | 分类号: | G06F16/29;G06T1/20;G06F9/50 |
代理公司: | 南京同泽专利事务所(特殊普通合伙) 32245 | 代理人: | 赵洪玉 |
地址: | 210023 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多边形数据 多边形栅格 栅格化 并行计算 队列 读取 并行处理 并行效率 层次结构 负载均衡 结果传递 算法执行 传递 升序 调用 内存 排序 协同 占用 分配 保证 | ||
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、开辟两个线程,分别用于写入上一次GPU的处理结果和读取下一批次多边形数据;
S203、接收GPU的处理结果;
S204、重复步骤S201-S203,直至所有多边形处理完毕;
GPU的处理过程包括以下步骤:
S301、接收CPU传递的多边形数据;
S302、将多边形数据分配给各block及thread;
S303、各thread分别调用BAF算法执行栅格化计算;
S304、将栅格化结果传递回CPU。
2.根据权利要求1所述的基于CUDA的多边形栅格化GPU并行计算方法,其特征在于:在GPU处理过程中,每个多边形的X坐标、Y坐标、属性值及栅格化结果存储在global memory中,在shared memory中给各thread分配唯一的存储地址,利用shared memory先后存储不同多边形的属性值,各thread执行过程中产生的临时变量及数据存储在registers和localmemory中。
3.根据权利要求1或2所述的基于CUDA的多边形栅格化GPU并行计算方法,其特征在于:在GPU多边形栅格化的过程中,L2 cache存储从global memory最近读取的数据。
4.根据权利要求3所述的基于CUDA的多边形栅格化GPU并行计算方法,其特征在于:CPU在执行步骤S101前,CPU将节点个数超过预设数量的大多边形切割成若干小多边形,切割后的小多边形节点个数Nodes根据L2 cache尺寸及设定的线程数目确定,具体计算公式如下:
其中,Mcache为L2 cache存储尺寸,Nt为设定的线程总数目,Ntpp为每个multiprocessor允许的最大线程数,Np为最大multiprocessor数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811350214.6/1.html,转载请声明来源钻瓜专利网。