OpenMP在图形数据文件加载中的应用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenMP在图形数据文件加载中的应用.doc

OpenMP在图形数据文件加载中的应用   摘要:为了充分利用多核处理器的硬件资源和计算能力,提出了基于多核并行编程技术的图形数据文件加载优化方案。根据图形数据文件加载的特点,由传统的串行程序改为并行程序,利用多核并行编程模型的思想,找出程序的热点和瓶颈,对其进行优化。实验结果表明,当图形符号数量达到一定数量级之后,优化过后的执行时间较原来串行程序有明显缩短,提高了程序的加速性能,取得了良好的效果。   关键词:OpenMP;程序优化;图形数据文件加载;本地计算   中图分类号:TP317.4文献标识码:A文章编号文章编号2013)0010015904   作者简介:査盛音(1986-),男,华北计算技术研究所地理信息与图形图像技术研发中心硕士研究生,研究方向为多核计算;王玉玫(1962-),女,华北计算技术研究所地理信息与图形图像技术研发中心研究员、硕士生导师,研究方向为图形图像处理、指挥自动化技术;聂颖(1972-),女,华北计算技术研究所地理信息与图形图像技术研发中心高级工程师、硕士生导师,研究方向为计算机图形处理与应用技术。   0引言   多核计算机快速普及,如何正确、有效地使用并行计算机,充分利用并行计算机的资源,以发挥并行计算机的计算能力尤为重要。图形处理系统也基本都运行在多核计算机平台上,然而其内部运行机制仍然是由单核完成串行计算任务,并没有充分利用多核平台的计算优势,导致了巨大的资源浪费。因此,如何充分发掘计算机的计算能力,有效发现程序的可并行能力,将串行计算转换为并行计算成为非常有意义的课题。   在图形处理系统中,对于大容量图形数据文件加载、图形数据重新运算生成、实时目标图形数据处理等对于计算能力的要求非常高。因此,为了充分发挥多核计算机的高性能处理能力,利用多核并行编程技术,将原来串行算法的理念结合多核计算机的架构特点,把串行算法进行变换后得到有效的执行方案,成为了研究重点。   1OpenMP简介   1.1OpenMP的基本概念   OpenMP由OpenMP Architecture Review Board牵头提出,是已被广泛接受的用于共享内存并行系统的多线程程序设计的一套指导性的编译处理方案。OpenMP作为共享存储标准出现,是为共享存储环境编写并行程序而设计的一个应用编程接口,目前支持OpenMP的语言主要有Fortran、C/C++。OpenMP标准中包括一套编译指导语句和一个支持函数库。   1.2Fork/Join并行执行模式概念   OpenMP是一个编译指导指令和库函数的集合,主要为共享式存储计算机上的并行程序设计使用。OpenMP在并行执行程序时,采用的是“Fork/Join”方式,其并行执行模式如图1所示。   标准并行模式执行代码的基本思想是:程序开始时只有一个主线程,程序中的串行部分都是由主线程执行,并行部分通过派生其它线程来执行;但是,如果并行部分没有结束,则不能执行串行部分。从图1中可以看出,OpenMP并行执行的程序要全部结束后才能执行后面的非并行部分的代码。这就是标准的并行模式——Fork/Join并行模式。共享存储式并行程序就是使用Fork/Join并行模式。   1.3内存模型   OpenMP内存模型属于共享存储模型,即不同的处理器共享同一内存。OpenMP线程之间的数据交换是通过共享内存来实现的,这需要把共享变量存放在各线程都能访问到的共享存储区。同时还应允许通过私有化方式来说明,使各个线程可分别维护自己的私有变量。如图2所示,多个处理器通过共享内存来进行数据互通和交换。   1.4OpenMP编译指导语句   在OpenMP中,最主要的是编译指导语句,它指示编译器如何将串行程序转化成并行程序。一条编译指导语句由directive(命令,也叫指令)和clause list(子句列表)组成。以C/C++为例,OpenMP编译指导语句的格式为:   #pragma omp [clause[[,] clause]…]   其中,directive部分包含了具体的编译指导语句,包括parallel、for、parallel for、section、sections、single、master、critical、flush、ordered、atomic等;clause表示子句,常用的子句有firstprivate、if、lastprivate、private、reduction等。   2多核程序计算设计模式   在多核多线程编程中,存在着多种计算设计模式,下面是常见的几种计算设计模式。   2.1线程分组竞争模式   对于有锁计算,当多个线程竞争同一把锁时,会出现排队执行现象,由于同一时刻只能有一个线

文档评论(0)

lmother_lt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档