




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多核程序设计
第七章编程及性能优化2008年8月25日简介
—及其历史及其历史1993年1.0,目前2消息传递接口,简称一种编程接口标准,而不是一种具体的编程语言。由消息传递接口论坛(,简称)发起讨论并进行规范化的。标准如今已经成为事实意义上的消息传递并行编程标准,也是最为流行的并行编程接口简介
—及其历史(续)标准定义了一组具有可移植性的编程接口。典型的实现包括开源的、以及不开源的。简介
—典型实现简介典型实现简介
典型实现简介
—是影响最大、用户最多的实现。开放源码;与标准同步发展;支持多程序多数据(,)编程和异构集群系统;支持、77和90的绑定;对的支持提供了头文件和模块两种方式;支持类和平台;支持环境非常广泛,包括多核、、集群和大规模并行计算系统;典型实现简介
—
提供了名为()的中间层来支持多架构,兼容多种网络硬件及协议,优化网络互联。图7.1库及其基于的互联结构透明地支持、共享内存,并基于有效支持多种高性能互联系统提供更好的线程安全机制,多线程的程序并不限制的使用。简介
—程序特点消息传递指的是并行执行的各个进程具有自己独立的堆栈和代码段,进程之间的信息交互完全通过显式地调用通信函数来完成。分类:单程序多数据(,简称)prog_aLoadProcessStoreSPMDprog_aNode1Node2Node3图7.2执行模型图7.3串行处理程序的运行过程程序特点
—process0process1process2LoadProcessGatherStore图7.4程序的并行执行过程程序特点
—多程序多数据(a)MPMDMaster/Worker(b)MPMDCoupledAnalysisNode1Node2Node3Node1Node2Node3prog_aprog_bprog_aprog_bprog_c(c)MPMDStreamlineprog_aprog_bprog_cNode1Node2Node3图7.5执行模型程序特点
—(续)(a)是一个管理者()/工人()类型的程序,由一个()来控制整个程序的执行,将任务分配给()来完成工作。(b)联合数据分析程序程序。在大部分的时间内,不同的程序各自独立的完成自己的任务,并在特定的时候交换数据。耦合性最少,通信也少,更容易获得好的并行加速效果。(c)是流式的程序,程序运行由、和组成,这三个程序之间是典型的串行执行。在这种情况下,并行性的取得依赖于执行大量的任务,通过这种流水线获得性能加速。的安装和配置的安装和配置在上安装和配置2在上安装和配置2的安装和配置
—在上安装和配置21:2的下载软件的稳定版本可在下载。2:2的安装安装之前先利用机制进行配置。最基本地,通过脚本指定安装目标路径即可。我们这里的安装路径设为2-1。相应的命令行为:2-1如果配置成功,使用命令即可完成软件包安装。的安装和配置
—(续)3:2的配置与验证进程的创建、启动和管理需借助进程管理器()来完成。本章的测试环境均使用。安装成功后,还需要进一步配置的执行环境。可能的工作有以下几部分。需要软件由实现的一组工具构成,因此首先需确保机器上已经安装了正确版本的解释器,设置主目录下的文件在主机上启动进程,形成运行时环境,目标主机列表由$文件指定。配置无密码登录在利用启动之前,需配置集群环境支持节点间的无密码登录,该功能需要的支持。命令和手册页路径的配置的安装和配置
—(续2)4:启动在安装和上述配置结束后,即可启动进程,创建运行时环境了。具体的命令为:5:应用程序的编译、链接为简化链接过程,环境提供了形如,77,90等编译脚本。可以在源码目录中,通过如下命令来完成编译和链接:–o6:程序的运行2标准建议使用代替来启动应用程序。2实现了标准并通过对标准作了适当扩展。的安装和配置
—在上安装与配置2下面以2003为例说明编写程序的步骤。第一步:建立2003项目,创建命令行界面的应用程序即可。第二步:将2\加入到头文件目录中,配置选项在菜单对话框中。第三步:将2\加入到库文件目录中,配置选项在菜单对话框中。第四步:设置项目的属性,将加入到链接库中。应用程序中为了避免名字冲突。在这里,我们可以将的头文件放在预编译头文件的第一句编程基础简单的程序示例<>""
(,*[]){ ; ;
(,);(,);(,);("\n",,);();0;}04142434每个进程中分别打印各自的进程号(0~3)和总进程数(4)程序结构接口1有128个调用接口2中有287个调用方法函数形式编程基础
—程序的四个基本函数和初始化执行环境,建立多个进程之间的联系,为后续通信做准备则是结束执行环境。这两个函数就是用来定义程序的并行区的。当前进程标识,标识各个进程参数:类型的通信域,标识参与计算的进程组。整型指针,返回进程在相应进程组中的进程号。用来标识相应进程组中有多少个进程通信域包含的进程数编程基础
—的点对点通信两个最重要的函数和。(,,,,,)这个函数的含义是向通信域中的进程发送数据。消息数据存放在中,类型是,个数是个。这个消息的标志是,区别不同消息。输入参数包括:,发送缓冲区的起始地址,可以是各种数组或结构的指针。,整型,发送的数据个数,应为非负整数。,发送数据的数据类型,,整型,目的进程号。,整型,消息标志。,进程组所在的通信域。该函数没有输出参数,返回错误码。编程基础
—的点对点通信(续)(,,,,,,)绝大多数的参数和相对应,有相同的意义,很好理解。唯一的区别就是里面多了一个参数。主要显示接收函数的各种错误状态。输出参数包括:,接收缓冲区的起始地址,可以是各种数组或结构的指针。,结构指针,返回状态信息。输入参数有:,整型,最多可接收的数据的个数。,接收数据的数据类型。,整型,发送数据进程的进程号。,整型,消息标识,与发送的操作消息标识相同。,消息接收进程和消息发送进程所在的通信域。返回状态三个域组成的结构类型通过对和的引用就可以得到返回状态中所包含的发送数据进程的标识发送数据使用的标识和本接收操作返回的错误代码同时包含发送和接收调用的例子其中一个进程进程0向另一个进程进程1发送一条消息该消息是一个字符串,1进程1在接收到该消息后将这一消息打印到屏幕上""(,);**;{[20];;(,);/*程序的初始化*/(,);/*得到当前进程的标识*/(0)/*若是0进程*/{/*先将字符串拷贝到发送缓冲区中然后调用语句将它发出用()指定消息的长度用指定消息的数据类型1指明发往进程1使用的消息标识是99是包含本进程进程0和接收消息的进程进程1的通信域发送方和接收方必须在同一个通信域中由通信域来统一协调和控制消息的发送和接收*/(,",1");(,(),,1,99);}(1)/*若是进程1*/{/*进程1直接执行接收消息的操作这里它使用作为接收缓冲区由此可见对于同一个变量在发送进程和接收进程中的作用是不同的它指定接收消息的最大长度为20消息的数据类型为字符型接收的消息来自进程0而接收消息携带的标识必须为99使用的通信域也是接收完成后的各种状态信息存放在中接收完成后它直接将接收到的字符串打印在屏幕上*/(,20,,0,99,,);(":",);}();/*程序结束*/}编程基础
—消息管理7要素最重要的功能莫过于消息传递。点对点消息通信的参数主要是由以下7个参数组成:发送或者接收缓冲区;数据数量;数据类型;目标或者源进程;消息标签;通信域;.消息状态,只在接收的函数中出现。编程基础
—消息管理7要素(续)消息数据类型需要定义消息数据类型的理由有两个:一是支持异构平台计算的互操作性,二是允许方便地将非连续内存区中的数据,具有不同数据类型的内容组成消息。程序有严格的数据类型匹配要求。类型匹配包涵了两个层面的内容:一是宿主语言的类型(C或者数据类型)和通信操作所指定的类型相匹配;二是发送方和接收方的类型匹配。编程基础
—消息管理7要素(续2)预定义数据类型相应的C数据类型
无对应类型无对应类型基本数据类型(与C数据类型的对应关系)编程基础
—消息管理7要素(续3)导出数据类型还允许通过导出数据类型,将不连续的,甚至是不同类型的数据元素组合在一起形成新的数据类型。我们称这种由用户定义的数据类型为导出数据类型。这种数据类型需要用户使用提供的构造函数来构造。归纳起来类型匹配规则可以概括为:有类型数据的通信,发送方和接收方均使用相同的数据类型;无类型数据的通信,发送方和接收方均以作为数据类型;打包数据的通信,发送方和接收方均使用。编程基础
—消息管理7要素(续4)消息标签是消息信封中的一项,是程序在同一接收者的情况下,用于标识不同类型消息的一个整数。通信域一个通信域()包含一个进程组()及其上下文()。还为通信子提供了各种管理函数,其中包括:通信域比较(1,2,):通信域拷贝(,):通信域分裂(,,,):通信域销毁():编程基础
—消息管理7要素(续5)状态字的主要功能是保存接收到的消息的状态。{; ;; 发送数据进程号; 发送数据使用的; 本接受操作返回的错误码};编程基础
—统计时间统计时间编写并行程序的目的是提高程序运行性能。为了检验并行化的效果,我们经常会用到统计时间的函数。提供了两个时间函数和。函数返回一个双精度数,标识从过去的某点的时间到当前时间所消耗的时间秒数。则返回结果的精度。编程基础
—错误管理在错误管理方面提供了丰富的接口函数,这里我们介绍其中最简单的部分接口。用来获取错误码。终止程序执行的函数。(,)通信域中的任一进程调用此函数都能够使该通信域内所有的进程结束运行。返回给调用的环境。群集通信
—同步同步本函数接口是:()在操作中,通信子中的所有进程相互同步,即它们相互等待,直到所有进程都执行了他们各自的函数,然后再各自接着开始执行后续的代码。群集通信
—广播广播从一个进程向组内所有其他的进程发送一条消息。接口是:(*,,,,)群集通信
—聚集(收集)聚集聚集函数是一个多对一的通信函数。其接口为:(*,,,*,,,,)进程接收该通信组每一个成员进程(包括自已)发送的消息。这n个消息的连接按进程号排列存放在进程的接收缓冲中。群集通信
—播撒(散发)播撒是一对多的传递消息。但是它和广播不同,进程向各个进程传递的消息是可以不同的。实际上执行的是与相反的操作。群集通信
—扩展的聚集和播撒操作扩展的聚集和播撒操作的作用是每一个进程都收集到其他所有进程的消息,它相当于每一个进程都执行了。也就是说每个进程给所有进程都发送了一个相同的消息。(*,,,*,,,)群集通信
—全局交换全局交换的每个进程可以向每个接收者发送数目不同的数据,第i个进程发送的第j块数据将被第j个进程接收并存放在其接收消息缓冲区的第i块,(*,,,*,,,)群集通信
—规约与扫描规约与扫描归约(*,*,,,,,)这里每个进程的待处理数据存放在中,所有进程将这些值通过输入的操作子计算为最终结果并将它存入进程的。数据项的数据类型在域中定义。群集通信
—规约具体的归约操作包括:求最大值求最小值求和求积逻辑与按位与逻辑或按位或逻辑异或按位异或最大值且相应位置最小值且相应位置群集通信
—扫描扫描:特殊的规约(*,*,,,,)常用于对分布于组中的数据作前置归约操作。此操作将序列号为0,···,i(包括i)的进程发送缓冲区的归约结果存入序列号为i的进程接收消息缓冲区中。与规约相比,扫描操作省去了域,因为扫描是将部分值组合成n个最终值,并存放在n个进程的中。具体的扫描操作由域定义。的归约和扫描操作允许每个进程贡献向量值,而不只是标量值。向量的长度由定义。也支持用户自定义的归约操作。不同类型归约操作的简单对比归约前后组归约操作前后扫描操作前后归约并散发操作前后对等模式的程序设计各个部分地位相同功能和代码基本一致处理的数据或对象不同也容易用同样的程序来主从模式的程序设计主进程将向量B广播给所有的从进程然后将矩阵A的各行依次发送给从进程从进程计算一行和B相乘的结果然后将结果发送给主进程主进程循环向各个从进程发送一行的数据直到将A各行的数据发送完毕一旦主进程将A的各行发送完毕则每收到一个结果就向相应的从进程发送结束标志从进程接收到结束标志后退出执行主进程收集完所有的结果后也结束死锁(,,)(.0)(,,,1,,,,)(,,,1,,,)(.1)(,,,0,,,,)(,,,0,,,)
通信模式标准通信模式缓存通信模式同步通信模式就绪通信模式区别:是否缓存数据需要付出代价:延长数据通信的时间,缓冲区也并不是总可以得到是否阻塞通信非堵塞通信:发送操作虽然没有完成但是发送调用可以正确返回标准通信模式是否对发送的数据进行缓存是由自身决定缓存通信模式由用户直接对通信缓冲区进行申请使用和释放在发送消息之前必须有缓冲区可用这由用户保证只有当缓冲区中的消息发送出去后才可以释放该缓冲区就绪通信模式只有当接收进程的接收操作已经启动时才可以在发送进程启动发送操作否则当发送操作启动而相应的接收还没有启动时发送操作将出错要求接收操作先于发送操作而被启动同步通信模式同步发送必须等到相应的接收进程开始后才可以正确返回程序的执行过程阻塞通信/非阻塞通信以上都是阻塞通信由于通信经常需要较长的时间,在阻塞通信还没有结束的时候处理机只能等待,浪费了处理机的计算资源在阻塞通信中对于接收进程在接收消息时除了要求接收到的消息的消息信封和接收操作自身的消息信封相一致外,还要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生认知风格识别与学生管理的有效匹配研究
- 2025年中国内饰顶棚行业投资前景及策略咨询研究报告
- 上呼吸道感染健康教育讲课件
- 上呼吸道感染患儿的护理讲课件
- 绿色能源材料采购合同
- 三年级数学万以内加减混合两步运算题单元监控训练题
- 胡蜂蛰伤急救处理指南
- 现场演出门票买卖合同
- 遗产拍卖合同
- 2025至2030风景游览区产业深度调研及前景趋势与投资报告
- 重庆市渝北区名校2025届生物七下期末复习检测模拟试题含解析
- 2025年5月12日陕西省公务员面试真题及答案解析
- 《临床研究论文撰写》课件
- 隐匿性阴茎的护理
- 扳手订单合同协议
- 购买居间协议书范本
- 沥青路面施工方案
- 【西安交通大学】2025年电力人工智能多模态大模型创新技术及应用报告
- 2025年上海国企中铁十五局集团有限公司招聘笔试参考题库含答案解析
- 2025电梯年检项目整改合同田王
- 2025年自然灾害预防与应急处理安全培训考试试题汇编
评论
0/150
提交评论