第六章OpenMP编程1.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章OpenMP编程1

* 并行程序设计-14 * * 内容提要 一 并行编程硬件基础 (3学时) 二 并行编程软件基础 (3学时) 三 多线程编程基础 (2学时) 四 Linux多线程编程 (2学时) 五 Windows多线程编程 (3学时) 六 OpenMP编程 (7学时) 七 MPI编程 (4学时) 八 其他编程语言和方法 (2学时) 九 并行程序设计的应用实例 (2学时) 1. OpenMP引言 2. OpenMP导例和开发 (本节课内容) 3. OpenMP多线程编程概论 4. OpenMP并行区域编程 5. OpenMP循环并行化编程 6. OpenMP工作分区编程 7. OpenMP单一线程编程 8. OpenMP工作共享方法 9. OpenMP线程同步与线程数据语句 10.OpenMP数据域属性子句 11. 语句绑定和嵌套规则、库函数和环境变量设置 12. OpenMP计算实例 13. OpenMP应用程序设计的性能分析 六 OpenMP编程 * * 问题 1) 扩展性问题 目前,随着多核处理器的流行,并行编程需要考虑程序性能随CPU核数的扩展性,即硬件升级到更多核后,能够不修改程序就让程序性能增长,这要求程序中创建的线程数量需要随CPU核数变化,不能创建固定数量的线程,否则在CPU核数超过线程数量上的机器上运行,将无法完全利用机器性能。 6.1 OpenMP引言 * * 2)负载分配问题 在多核编程时,要求计算均摊到各个CPU核上去,所有的程序都需要并行化执行,对计算的负载均衡有很高要求。这就要求在同一个函数内或同一个循环中,可能也需要将计算分摊到各个CPU核上,需要创建多个线程。操作系统API创建线程时,需要线程入口函数,很难满足这个需求,除非将一个函数内的代码手工拆成多个线程入口函数,这将大大增加程序员的工作量。 3)可移植性问题 目前各个主流操作系统的线程API互不兼容,缺乏事实上的统一规范,要满足可移植性得自己写一些代码,将各种不同操作系统的api封装成一套统一的接口。 * * OpenMP概述 Open应用编程接口API是在共享存储体系结构上的一个编程模型 包含编译制导(Compiler Directive)、运行库例程(Runtime Library)和环境变量(Environment Variables) 支持增量并行化(Incremental Parallelization) * * * * 编译制导 在编译器编译程序的时候,会识别特定的注释 这些注释就包含着OpenMP程序的一些语义 #pragma omp directive [clause[ [,] clause]…] 其中directive部分就包含了具体的编译制导指令,包括parallel, for, parallel for, section, sections, single, master, critical, flush, ordered和atomic。 clause部分是相关的数据子句. 在无法识别OpenMP语义的普通编译器中,这些注释被忽略 将串行的程序逐步地改造成一个并行程序 * * 结合了两种并行编程的方式 编译指导语句,在编译过程并行化代码 运行时库函数,在运行时对并行环境支持 OpenMP应用程序的组成部分 特点 OpenMP的设计目标为:标准性、简洁实用、使用方便、可移植性。 OpenMP API(Application Programming Interface,应用编程接口)由三个基本部分(编译指令、运行部分和环境变量)构成,是C/C++ 和Fortan等的标准API,已经被大多数计算机硬件和软件厂家所接受。OpenMP是建立在如图所示的共享内存模式。 OpenMP不包含的性质有:不是建立在分布式存储系统上的、不是在所有的环境下都是一样的、不是能保证让多数共享存储器均能有效的利用。 * * 历史 1994年,第1个ANSI X3H5草案提出,被否决。 1997年,OpenMP标准规范代替原先被否决的ANSI X3H5,被人们认可。 1997年10月公布了与Fortran语言捆绑的第1个标准规范FORTRAN 1.0。 1998年11月9日公布了支持C和C++的标准规范C/C++ 1.0。 2000年11月推出FORTRAN 2.0。 2002年3月推出C/C++ 2.0。 2005年5月推出的OpenMP 2.5将原来的Fortran和C/C++标准规范结合在一起。 2008年5月推出OpenMP 3.0。 2008年11月推出OpenMP 3

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档