[发明专利]基于CUDA的多边形栅格化GPU并行计算方法在审
申请号: | 201811350214.6 | 申请日: | 2018-11-14 |
公开(公告)号: | CN109670001A | 公开(公告)日: | 2019-04-23 |
发明(设计)人: | 周琛;李满春;陈振杰 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F16/29 | 分类号: | G06F16/29;G06T1/20;G06F9/50 |
代理公司: | 南京同泽专利事务所(特殊普通合伙) 32245 | 代理人: | 赵洪玉 |
地址: | 210023 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于CUDA的多边形栅格化GPU并行计算方法,由CPU和GPU协同并行处理多边形栅格化;其中,CPU的执行过程包括以下步骤:所有多边形根据PNN进行升序排序,形成第一多边形队列;计算第一多边形队列中各多边形的占用内存MU;按照CUDA中grid、block和thread的层次结构进行多边形的划分:读取每一批次多边形数据并传递给GPU处理,并接收GPU的处理结果。GPU的处理过程包括以下步骤:接收CPU传递的多边形数据;将多边形数据分配给各block及thread;各thread分别调用BAF算法执行栅格化计算;将栅格化结果传递回CPU。本发明能有效提高并行效率、保证负载均衡,且适用于海量多边形的栅格化。 | ||
搜索关键词: | 多边形数据 多边形栅格 栅格化 并行计算 队列 读取 并行处理 并行效率 层次结构 负载均衡 结果传递 算法执行 传递 升序 调用 内存 排序 协同 占用 分配 保证 | ||
【主权项】:
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。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811350214.6/,转载请声明来源钻瓜专利网。