ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:120KB ,
资源ID:175497      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-175497.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于矢量地图数据的异构混合快速绘制框架.doc)为本站会员(无敌)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

基于矢量地图数据的异构混合快速绘制框架.doc

1、基于矢量地图数据的异构混合快速绘制框架 栗家棋 郑昊 中国电子科技集团公司第十五研究所基础三部 摘 要: 随着测绘、遥感及相关技术的发展, 矢量地图的数据规模和细节层次迅速增加, 它们含有大量复杂的地理空间要素, 且要素间存在复杂的拓扑几何关系, 这使得大规模矢量地图的快速可视化对于高性能并行计算的需求十分迫切。针对这一问题, 本文在原有的 CPU 多核处理的基础上引入 GPU 加速运算, 提出一种基于 CPU-GPU 协同工作的异构混合并行绘制技术。实验结果表明, 这种处理框架在矢量数据的快速可视化中作用较为显著, 在大比例尺数据下并行加速比达到了较高的数值。关键词: 矢量数据; 快速可视化

2、; 并行计算; 异构; CPU-GPU 协同; 作者简介:栗家棋 (1992-) , 男, 山西晋城人, 中国电子科技集团公司第十五研究所基础三部硕士研究生, 研究方向:桌面地理信息系统开发与优化, 地理信息数据快速显示与控制;作者简介:郑昊 (1978-) , 男, 北京人, 正研级高级工程师, 博士, 研究方向:地图数据符号化技术。收稿日期:2017-05-10A Heterogeneous Mixed Fast Drawing Framework Based on Vec-map DataLI Jia-qi ZHENG Hao Dept.of 3rd Base, The 15th Res

3、earch Institute of China Electronics Technology Group Corporation; Abstract: With the development of mapping, remote sensing and related technology, the data scale and detail level of vector map are increasing rapidly. They contain a lot of complicated geospatial elements, and there are complex topo

4、logical geometries among the elements. This makes high-performance parallel computing is very urgent for the rapid visualization of large-scale vector maps. Aiming at this problem, this paper introduces a GPU-accelerated operation based on the original CPU multi-core processing, and proposes a heter

5、ogeneous hybrid parallel rendering technique based on CPU-GPU cooperative work. The experimental results show that this kind of processing frame plays a more important role in the rapid visualization of vector data, and the parallel acceleration ratio achieves higher values under large scale data.Ke

6、yword: vector data; rapid visualization; parallel computing; heterogeneous; CPU-GPU cooperation; Received: 2017-05-100 引言矢量数据可视化的一项重要工作是将单位化了的矢量数据逐一进行预处理并绘制于屏幕上, 从而将整个地图图幅呈现在用户面前。在这种转换过程中, 传统的依赖多核 CPU 开启多进程的运算方式已远远无法满足快速显示的性能要求1;另一方面, 随着显卡硬件技术的不断发展, GPU 作为一种众核处理器逐渐走入开发人员的视野, 并凭借其异构并行的计算优势在各个领域中得到了广泛

7、的应用2。通过对待处理的矢量地图数据进行结构和内容上的分析, 从任务和数据划分的角度看, 可以考虑采用 CPU-GPU 异构混合、多线程协同工作的分布式并行处理方式, 利用并行计算在海量数值计算和数据处理中的优势, 实现矢量数据绘制过程的并行化操作, 从而提升显示效率。1 地理矢量数据可视化的基础工作1.1 矢量数据可视化的一般框架现有的地理信息系统普遍将数据存于本地文件系统或服务器中, 在绘制显示时从这些地方访问并加载所需的地理数据, 然后进行样式解析与绘制3。用户在绘制过程中或绘制结束后进行诸如缩放、平移、修改符号或注记样式等操作会使得软件重新绘制整个数据。为了提高地图的显示效率、减少漫游

8、出现卡顿的问题, 现有的系统在加载地理数据后会进行一些预处理工作 (如数据简化、地图切分等) 4, 在显示结束后也会对本次数据进行缓存, 缩短下次的访问时间6。上述流程可以通过图 1 清晰地展现出来。图 1 矢量数据可视化的一般流程 下载原图1.2 矢量数据显示时间的数学模型地理信息系统的一个基本功能是地图显示。由于整个显示过程涉及地图数据的外存定位、地图数据的读取和地图数据的显示处理这 3 个子模块5, 因此可以将显示过程所耗费的时间用以下公式表示:其中, t P为数据 (外存) 定位时间, t R为数据读取时间, t S为数据显示处理时间, D 1和 V1分别为地图显示需要读取的数据量和数

9、据读取速度, D 2和 V2分别为屏幕区域对应的地图数据集合及其地图显示处理速度。当选定硬件环境后, V 1基本确定。为了提高地图显示的响应时间, 现有的解决思路一般从减小数据外存定位时间 tP、减少数据读取量 D1和提高矢量地图的显示效率 (涉及对 D2和 V2的处理) 等 3 个方面入手。本文着重讨论如何提高矢量地图的显示绘制效率, 通过并行化的处理技术改善现有程序的运行效率。1.3 矢量数据的瓦片化存储在 Google Map 推出 Tile Map Image (瓦片式地图) 方案之前, 各种网络地图技术均采用传统的 WebGIS 方式6:客户每产生一次新的地图请求, 服务器会重新生成

10、地图图片发送至客户端进行响应。瓦片化技术诞生之后, 基于地图瓦片金字塔模型的新模式服务也相继被推出和使用。当前, 海量的矢量数据一般采用诸如 Oracle, SQL Server 之类的大型关系型数据库来存储, 并为地图数据包含的矢量图层建立对应的空间索引结构。空间索引通过其筛选作用, 可以将大量与特定空间操作无关的空间对象排除, 从而提高空间操作的效率7。如图 2 所示, 瓦片化的矢量地图数据以四叉树为存储结构, 采用预生成思想将地图进行横向和纵向分级, 然后根据用户请求动态地检索相应的地图瓦片并完成拼接。图 2 地图瓦片技术 下载原图利用瓦片化技术带来的优势, 可以对不同比例尺 (25 万

11、、100 万、500 万) 和范围 (中国及其周边国家和地区) 的矢量地图数据按比例尺大小划分显示等级, 然后进行地图瓦片行列号的分配, 每一等级的地图瓦片由上一级别的瓦片四叉划分得到;这样得到的正金字塔形数据存储结构将为后续工作提供访问基础。1.4 Open GL 与 GLSL如前文所述, 对于指定的矢量地图数据, 通过定位读取、数据简化、坐标转换等一系列的预处理工作, 最终获得用于显示绘制的工作集数据 (地图瓦片与要素数据) 8。这些工作集 (矢量) 数据的栅格化绘制可以交由图形绘制引擎完成。目前最常用的图形绘制引擎为 GDI/GDI+和 Open GL。GDI 系列的图形接口是微软公司开

12、发的一种图形设备接口。GDI 介于应用程序和不同硬件之间用以封装硬件差异, 使应用程序能够在 Windows 支持的图形设备上运行9, GDI 支持矢量、位图和文本的输出, 其下一代版本 GDI+又增加了易用性更好的新特性。虽然 GDI/GDI+为图形绘制提供了丰富的接口, 但随着硬件设备的进步和制图要求的提高, 其绘图接口的设计缺陷也逐渐显现出来10, 这使得矢量数据在绘制速度和渲染效果 2 个方面的提升均受到了限制。另一方面, Open GL 采用了不同于 GDI 的设计思路。作为一种跨编程语言和平台的二、三维图形绘制接口, Open GL 不仅提供了功能强大的底层图形库, 而且形成了一套

13、相对固定的渲染管线11。渲染管线的流水化处理对于诸如矢量数据的可视化绘制提速具有重要的意义, 也使得地图的显示效果更为逼真。在可编程图形硬件逐渐兴起和 Open GL 使用者逐年增加的趋势下, GLSL 也应运而生12。GLSL (Open GL Shading Language) 是基于 Open GL 进行着色的高级编程语言, 它提供了对 Open GL 固定管线的功能进行编程的接口, 取代了传统的通过设置状态值控制渲染的机制。GLSL 在保持可编程部分与原先固定管线完全兼容的基础上增强了许多功能, 也提供了各种各样的内建函数使开发者可以充分发挥图形处理硬件 (GPU) 的加速优势。1.5

14、 GPU 与异构并行化处理近年来, GPU 凭借其强大的浮点计算能力在高性能计算领域得到了广泛应用, 其并行数据处理能力已远远超过传统 CPU 的计算能力, 以“通用主处理器+加速协处理器”为特征的新型异构并行结构也成为高性能计算机系统发展的一个新方向13。传统的并行模型通常是基于同构 CPU 形成的并行系统, 侧重于利用多核多进程的硬件环境对问题规模进行任务划分, 然后并行处理。这种方法由于不能充分地发挥异构并行系统中 GPU 的加速计算能力, 其加速效果往往不甚理想, 还远不能满足地理矢量数据快速可视化的需要。显卡上 GPU 众核处理器的不断更新为矢量数据的快速绘制提供了新的平台。作为并行

15、数据处理器, GPU 高度优化了 2D 和 3D 数据的处理性能14。GPU 多晶体管的构成专为计算密集型、高度并行化的应用而设计15。在 CUDA 编程模型中, GPU 作为一个协处理器会生成大量线程, 通过大量线程的并行计算可以缩短数据处理的耗时。多级 CPU 架构下显卡执行计算时的最小单位为线程 (thread) , 每个线程都拥有一个私有寄存器, 多个线程又可以形成一个线程块 (block) , 块内线程可对共享线程进行读写访问。GPU 这种异构并行的设计结构为使用 Open GL 和高级着色语言对矢量数据并行加速绘制提供了硬件支持。为了充分发挥 GPU 和 CPU 的优势, 本文将

16、GPU 和CPU 的使用相结合, 提出了一种异构混合的并行显示绘制框架。2 地理矢量数据并行绘制技术2.1 并行加速比对并行化了的程序进行性能评价和优化是设计和实现高效编程必不可少的工作。通过考察并行程序的实际运行性能, 揭示并行程序的性能瓶颈, 才能指导性能的优化16。并行加速比通常是并行优化工作中一个不可忽略的考量因素。简单而言, 并行加速比是指对于一个给定的应用, 并行程序的执行速度相当于串行程序的执行速度加快了很多倍17。如果将问题的规模定义为 n, 设 p 为处理核数, 则对加速比 S (n, p) 的定义公式如下:2.2 地理矢量数据处理的任务划分和数据划分策略2.2.1 任务划分

17、策略从任务并行计算的角度来看, 可以将用户请求显示的矢量地图数据作为当前工作空间。由于待绘制于屏幕上的地图瓦片具有逻辑上的连续性, 因此可以将屏显范围内的地图瓦片以行为单位做瓦片绘制任务的划分。具体划分情况如图 3 所示。图 3 矢量地图瓦片的任务划分 下载原图CPU 绘制主控进程根据地图瓦片的显示范围进行任务划分后, 将每个子任务分发给绘制子进程, 绘制子进程按照某种规则将瓦片内的要素数据进行进一步的划分并分配给每个处理单元, 以完成具体的栅格化绘制工作。所有的绘制工作均完成后, 将绘制结果返回给主控进程, 主控进程进行合成并显示。2.2.2 数据划分策略在单个矢量瓦片栅格化绘制的过程中,

18、通过对矢量数据的特点和相关栅格化算法特征的分析, 可以在地图瓦片任务划分的基础上对瓦片内部的地理信息要素数据进行进一步的划分, 之后交由 GPU 并行绘制, 从而形成一种基于 CPU-GPU异构混合模式的“双层次”并行绘制框架。本文采用的数据划分方法是先一次性地读取地图瓦片所包含的全部数据到内存空间中, 由于地图瓦片图层中存在多个要素数据集, 因而要对这些要素集进行排列并统计总量, 之后根据所开的并行线程数将要素集集合分配至相应的线程执行绘制。为了提高负载均衡的效率, 本文以图层为分组将每一图层中的要素集集合作为一部, 对其中的单一要素集进行了间隔划分。间隔划分策略如图 4 所示。在地图瓦片数

19、据被读入内存时预先获知数据集总数 n, 然后确定 GPU 所要开启的线程数 p;根据图 4 易知第 k (0kp-1) 号线程对应的绘制要素集编号featureset_num 存在以下的数学关系:图 4 地理信息要素的间隔划分 下载原图公式 (3) 存在一些约束条件:每个线程所绘制的要素集之间编号是不连续的, 它们之间相隔 p (步长) , 从而使得每个线程绘制的要素数据较为均匀地分布在了整个图层中。2.3 地理信息要素数据在 GPU 上的并行绘制一个矢量图层中存在着大量的要素数据, 使用 Open GL 进行绘制是要将这些要素数据进行解析并使用 Open GL 提供的内置函数将它们栅格化显示

20、在屏幕上。为此, 首先从当前的地图瓦片中获取要素集集合, 对其进行间隔划分之后得到多个要素集子集合, 这些子集合由 CPU 绘制子进程分发给各 GPU 线程进行解析并绘制。下面伪代码以第 i 个线程为例对绘制过程进行说明。矢量图层中诸如城市、公路、河流以及居民地等显示要素可以通过分解得到点、线和面等 3 种基本的几何图元, 其中, 面又可以看成线和三角形图元的组合18。Open GL 对这些图元的绘制提供了很好的支持。CPU 端执行 Open GL 的步骤如下:step 1 Open GL 绘制环境的初始化;step 2 顶点、帧缓存对象的分配与初始化;step 3 初始化顶点与片元着色器;s

21、tep 4 使用 Open GL 进行渲染;step 5 将数据从显存拷贝到主机内存。GPU 线程负责的任务包括:图元顶点坐标的计算与转换、颜色填充、纹理数据处理等。这些高密度的计算利用 GPU 并行加速可以极大地减少耗时。GPU 端的着色器核心代码如下:2.4 CPU-GPU 异构混合快速绘制框架结合前文提出的任务与数据划分方法及并行绘制技术, 可以得到一种基于 CPU-GPU 协同工作的多核多线程并行绘制框架, 该框架对矢量数据的处理流程概括为以下几个步骤:1) 地图瓦片数据的读取。通过 I/O 操作将存于本地的地图瓦片数据读入内存。2) 任务划分。CPU 绘制主控进程根据内存中的地图瓦片

22、标号, 以行为单位对工作区域内的地图瓦片进行任务划分, 将它们指派给各个绘制子进程进行绘制。3) 数据划分。绘制子进程对地图瓦片中的每一图层所包含的要素数据按预定规则进行划分, 并将所得的多个子集合分发给多个 GPU 线程完成栅格化工作。4) 栅格化绘制工作。GPU 线程利用 Open GL 对拿到的要素数据集合进行图元分解并渲染。5) 结果合成与显示。通过上一步对点、线、面等各种图元符号栅格化的绘制, 各子进程将结果返回给 CPU, 主进程将计算结果合并并投屏显示。3 实验结果对比与分析本章将通过实验对本文提出的异构混合并行框架进行验证, 通过对比优化前后的绘制效率来评价该方法的性能。实验所

23、用的电脑配置如下:CPU 为 Intel Core i5480M 2.66 GHz, 内存大小为 4 G, 显卡型号为 ATI Mobility Radeon HD 5730。整个框架用 C+编写完成, 绘制过程用到了 Open GL 4.3 版本的图形库和 GLSL 高级着色语言。如前文所述, 绘制主控进程根据当前窗口的大小对显示范围内的地图瓦片进行任务划分, 绘制子进程得到任务后定义瓦片对象并逐一进行绘制。因整个绘制过程涉及的瓦片数量较大, 为方便实验与分析, 本文分别从 25 万、100 万和500 万比例尺的矢量地图中选取相同尺寸 (256256) 的一块地图瓦片 (北京及其附近地区)

24、 作为实验数据 (如图 5图 7 所示) 来进行绘制。图 5 25 万比例尺的矢量地图数据 (故宫) 下载原图图 6 100 万比例尺的矢量地图数据 (北京市辖区) 下载原图图 7 500 万比例尺的矢量地图数据 (华北地区) 下载原图首先利用地理信息要素统计工具分别统计 3 块地图瓦片包含的要素个数 (大比例尺地图展示的地理细节更为详尽, 因此包含的地理要素数据量更为庞大) , 得到表 1 的结果。表 1 不同比例尺的矢量地图要素数据统计情况 (数据规模) 下载原表 统计工作结束后, 根据经验设定不同的 GPU 绘制线程数 (设为变量 p) , 分别对不同比例尺的实验数据执行绘制工作。此外,

25、 专门使用 CPU 对 3 块瓦片执行串行绘制并统计耗时, 作为实验对比和分析的重要组成项。表 2 不同比例尺大小的矢量数据显示耗时/s 下载原表 根据表 2 的统计情况可以得到反映显示耗时和绘制线程数关系的折线图, 如图8 所示。图 8 矢量数据显示耗时变化折线图 下载原图从图 8 可以直观地看到随着所开线程数的增加, 3 条折线均表现为下降的趋势, 说明绘制速度明显得到了提升。注意到使用小比例尺数据 (100 万、500 万) 实验时, CPU 串行绘制耗时反而比并行线程数较少时的情况还低, 而且对于不同比例尺的数据并行框架发挥作用时的“临界值”不同 (500 万时 p 的取值为 8, 1

26、00 万时 p 的取值减少到了 7) 。由于 GPU 启动线程需要消耗一定的时间, 在绘制过程中也涉及了线程调度的相关工作, 因此在并行线程较少时采用 CPU 串行绘制反而会得到更小的耗时;当线程数超过一定的临界值时, 随着线程数目的增大绘制耗时相较之前会有明显的下降, 加速效果才得以体现出来。实验数据范围仅为一块瓦片的尺寸, 因此所开线程数目不宜过大, 否则并行效率会大大降低。由表 2 的实验结果, 对 p8 的情况计算并行加速比得到表 3。表 3 采用不同绘制线程数时的并行加速比 下载原表 可以看到随着绘制线程数的增加, 加速比也随之增加, 在 25 万数据的情况下尤为明显, 最高达到了

27、6.09。4 结束语本文针对当前地理信息系统中矢量数据显示较慢的问题进行分析, 提出了利用基于 CPU-GPU 协同工作的异构混合并行框架来解决。在实验分析部分, 通过与传统的 CPU 串行处理进行对比, 以及在 GPU 上开启不同的绘制线程进行多次实验, 发现这种并行处理方法显著地提高了矢量数据的可视化用时, 这对本文的思想方法提供了有力的支持。然而, 在实际应用中矢量地图数据的要素分布并不是均匀的, 这造成了并行化处理过程中的负载不均等问题, 在一定程度上限制了效率的提升, 如何提高并行任务划分的科学性与合理性成为了整个工作中一个必须考虑的问题。弥补这些不足和局限将会是今后研究的重心。参考文献1余莹, 李肯立.多核 CPU-GPU 协同的并行深度优先算法J.计算机应用研究, 2014, 31 (10) :2982-2985. 2吴立新, 杨宜舟, 秦承志, 等.面向新型硬件架构的新一代 GIS 基础并行算法研究J.地理与地理信息科学, 2013, 29 (4) :1-8. 3陈欢.地理矢量数据快速可视化技术研究D.长沙:国防科学技术大学, 2013. 4祝若鑫.云计算环境下的空间矢量数据存储与管理D.郑州:解放军信息工程大学, 2015.

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报