并行编程 - 20070703 - Linux编程介绍.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux编程简介 曙光信息产业(北京)有限公司 技术支持中心 赵崇山 并行程序开发环境 共享存储模型(Shared Memory) 消息传递模型(Message Passing) HPF(High Performance Fortran) 共享存储模型 特点: 一个并行程序由多个共享内存的并行任务组成,数据的交换通过隐含地使用共享数据来完成。 一般仅需指定可以并行执行的循环,而不需考虑计算与数据如何划分,以及如何进行任务间通信,编译器会自动完成上述功能。 OpenMP: 目前流行的共享内存模型开发标准是OpenMP。 OpenMP定义了一套编译指导语句,用于指定程序的并行性、数据的共享/私有等信息。其目标是为SMP系统提供可移植、可扩展的开发接口。 OpenMP由OpenMP Architecture Review Board于1997年推出,现在已发展到2.0版。OpenMP支持的编程语言包括Fortran、C和C++。 OpenMP得到了工业界的广泛支持,有大量的商业编译器和其他开发工具支持OpenMP的开发,如IBM、HP、Sun、SGI、Intel等硬件厂商均有支持OpenMP的编译器产品,另外还有一些第三方厂商的OpenMP编译器。 消息传递模型 特点: 一个并行程序由多个并行任务组成 每个并行任务拥有自己的数据并对其进行计算操作 任务之间数据的交换是通过显式的消息传递语句来完成的 现在广泛使用的消息传递模型有两个:PVM和MPI PVM即Parallel Virtual Machine(并行虚拟机) MPI即Message Passing Interface(消息传递界面) 几乎所有的高性能计算系统都支持PVM和MPI HPF HPF(High Performance Fortran)的思想与OpenMP类似,都是通过定义编译指导语句来帮助编译器生成并行代码。 HPF的目标系统与OpenMP不同,它支持DMP系统。因此,除了指定并行性的编译指导语句外,HPF还指定数据划分的编译指导语句。 HPF与消息传递模型的不同之处则在于:HPF通过编译器来生成通信语句,不需要程序员手工编写。 HPF得到了工业界的广泛支持,如IBM、HP、Sun都有HPF编译器。第三方产品则有PGI的PGHPF、APR的Forge xHPF等。其不足是对于某些问题无法得到与手工编写的消息传递程序相同的性能。 并行库 基本思想是:用户不需要自己编写通用的并行算法代码,而由程序库提供并行算法,并对用户透明。用户只需要根据自己的需求,调用相应的库函数,就可以编写出并行程序。 由于库函数的编写者一般经验丰富,而且库函数会采取较为优化的算法,并采用优化编译,使得库函数的执行效率很高。对于大量使用通用计算算法的用户来说,使用并行库是一种高效的开发模式。 并行库的缺点是无法帮助那些需要自己书写非通用并行算法的用户。 常用并行库 目前的并行库很多,包括PBLAS(Parallel Basic Linear Algebra Subroutines),以及建立在其基础上的LAPACK和ScaLAPACK,提供了一些线性代数问题的并行求解算法,如求特征值、最小二乘问题等。LAPACK是为SMP系统优化的,ScaLAPACK是为DMP系统优化的。大多数高性能计算系统都提供在本系统上优化的PBLAS、LAPACK、ScaLAPACK。 另一个著名的并行库是PETSc。PETSc是一套基于MPI的数据结构和库函数,用于解决基于偏微分方程的典型科学计算问题。 MATLAB是很常用的科学计算软件。很多公司和研究机构也在进行并行化MATLAB的工作,如RTExpress。 开发工具 调试工具 性能分析与预测 资源管理和负载平衡系统 调试工具 IBM的pdb(命令行方式)、pedb(Xwindow图形界面)、HP的DDE(XWindow图形界面)和LaDebug(用于Alpha系统)、Sun的Prism等 Etnus公司的TotalView是最著名的第三方并行调试器。它提供对C、C++、Fortran程序的图形化符号调试,可以调试MPI、PVM、HPF、OpenMP程序,支持SGI、Sun、HP、IBM等几乎所有的高性能厂商的产品,还提供对Linux的支持。 Intel公司的 Thread Analyzer是一个支持OpenMP的程序正确性检测工具,用于自动发现程序中的常见错误。它目前仅支持IA32和IA64上的Linux 性能分析与预测 程序性能分析(profiling)可以帮助用户找到程序中最费时的部分,从而集中精力进行改进和优化,是改进程序性能的有效手段 传统的性能分析工具一般仅提供子程序级的性能分析 但对于高性能程序来说,对于循环程序的性能分析是必不可少的。现有

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档