




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
消息传递并行编程环境王彦棡2010年5月 MPI 123456789123456789123456789 11111111122222222333333334444444455555555 MPI OPENMP MPI MPI MPI是一种实现手段 进程 单个进程 process 进程与程序相联 程序一旦在操作系统中运行即成为进程 进程拥有独立的执行环境 内存 寄存器 程序计数器等 是操作系统中独立存在的可执行的基本程序单位串行应用程序编译形成的可执行代码 分为 指令 和 数据 两个部分 并在程序执行时 独立地申请和占有 内存空间 且所有计算均局限于该内存空间 内存 进程 单机内多个进程多个进程可同时存在于单机内同一操作系统 操作系统负责调度分时共享处理机资源 CPU 内存 存储 外设等 进程间相互独立 内存空间不相交 在操作系统调度下各自独立地运行 例如多个串行应用程序在同一台计算机运行进程间可以相互交换信息 例如数据交换 同步等待 消息是这些交换信息的基本单位 消息传递是指这些信息在进程间的相互交换 是实现进程间通信的唯一方式 进程 包含于通过网络联接的不同处理器的多个进程进程独立存在 并位于不同的处理器 由各自独立的操作系统调度 享有独立的CPU和内存资源进程间相互信息交换 可依靠消息传递最基本的消息传递操作包括发送消息send 接受消息receive 进程同步barrier 归约reduction等 线程 将一个进程分解成两个部分 一部分由其资源特征构成 仍称之为进程一部分由其执行特征构成 称之为线程进程可由单个线程来执行进程也可由多个线程来并行执行多个线程将共享该进程的所有资源特征 线程 单进程多线程执行示意图 OpenMP OpenMP应用编程接口API是在共享存储体系结构上的一个编程模型包含编译制导 CompilerDirective 运行库例程 RuntimeLibrary 和环境变量 EnvironmentVariables 支持增量并行化 IncrementalParallelization OpenMP 什么是OpenMP应用编程接口API ApplicationProgrammingInterface 由三个基本API部分 编译指令 运行部分和环境变量 构成是C C 和Fortan等的应用编程接口已经被大多数计算机硬件和软件厂家所标准化OpenMP不包含的性质不是建立在分布式存储系统上的不是在所有的环境下都是一样的不是能保证让多数共享存储器均能有效的利用 OpenMP 基于线程的并行编程模型 ProgrammingModel OpenMP使用Fork Join并行执行模型 OpenMP intmain intargc char argv pragmaompparallelforfor inti 0 i 10 i printf i d n i return0 消息传递平台MPI 什么是MPI MessagePassingInterface 是函数库规范 而不是并行语言 操作如同库函数调用是一种标准和规范 而非某个对它的具体实现 MPICH等 与编程语言无关是一种消息传递编程模型 并成为这类编程模型的代表Whatisthemessage DATA ENVELOPEMPI的目标较高的通信性能较好的程序可移植性强大的功能 消息传递平台MPI MPI程序编译与运行程序编译C mpicc ompiprogmpisrc cFortran77 mpif77 ompiprogmpisrc f程序运行 mpirun np4mpiprog程序执行过程中不能动态改变进程的个数申请的进程数np与实际处理器个数无关 例子 include mpi h intmain intargc char argv intmyid numprocs intnamelen charprocessor name MPI MAX PROCESSOR NAME MPI Init 头文件 相关变量声明 程序开始 程序结束 程序体计算与通信 MPI基础知识 MPI重要概念MPI函数一般形式MPI原始数据类型MPI程序基本结构MPI几个基本函数并行编程模式 MPI重要概念 进程组 processgroup 指MPI程序的全部进程集合的一个有序子集且进程组中每个进程被赋于一个在该组中唯一的序号 rank 用于在该组中标识该进程 序号的取值范围是 0 进程数 1 通信器 communicator 理解为一类进程的集合即一个进程组 且在该进程组 进程间可以相互通信任何MPI通信函数均必须在某个通信器内发生MPI系统提供省缺的通信器MPI COMM WORLD组内通信器和组间通信器 MPI重要概念 进程序号 rank MPI程序中的进程由进程组或通信器序号唯一确定 序号相对于进程组或通信器而言 假设np个处理器 标号0 np 1 同一个进程在不同的进程组或通信器中可以有不同的序号 进程的序号是在进程组或通信器被创建时赋予的MPI系统提供了一个特殊的进程序号MPI PROC NULL 它代表空进程 不存在的进程 与MPI PROC NULL间的通信实际上没有任何作用消息 message 分为数据 data 和包装 envelope 两个部分包装由接收进程序号 发送进程序号 消息标号和通信器三部分组成 数据包含用户将要传递的内容 MPI函数一般形式 C error MPI Xxxxx parameter MPI Xxxxx parameter 整型错误码由函数值返回除MPI Wtime 和MPI Wtick 外 所有MPI的C函数均返回一个整型错误码 成功时返回MPI SUCCESS 其他错误代码依赖于执行Fortran CALLMPI XXXXX parameter IERROR 整型错误码由函数的参数返回除MPI WTIME 和MPI WTICK 外为子函数程序 function Fortran77的所有MPI过程都是Fortran77的子例行程序 subroutine MPI原始数据类型 MPI BYTE一个字节MPI PACKED打包数据 MPI原始数据类型 MPI几个基本函数 MPI InitMPI InitializedMPI Comm sizeMPI Comm rankMPI FinalizeMPI AbortMPI Get processor nameMPI Get versionMPI Wtime MPI几个基本函数 初始化MPI系统C intMPI Init int argc char argv Fortran77 MPI INIT IERROR INTEGERIERROR通常为第一个调用的MPI函数 除MPI Initialized外在C接口中 MPI系统通过argc和argv得到命令行参数 并且会把MPI系统专用的参数删除 留下用户的解释参数 MPI几个基本函数 获取通信器的进程数和进程在通信器中的标号C intMPI Comm size MPI Commcomm int size intMPI Comm rank MPI Commcomm int rank Fortran77 MPI COMM SIZE COMM SIZE IERROR MPI COMM RANK COMM RANK IERROR INTEGERCOMM SIZE RANK IERROR MPI几个基本函数 退出MPI系统C intMPI Finalize void Fortran77 MPI FINALIZE IERROR 每个进程都必须调用 使用后不准许调用任何MPI函数若不执行MPI退出函数 进程可能被悬挂用户在调用该函数前 应确保非阻塞通讯结束 MPI几个基本函数 异常终止MPI程序C intMPI Abort MPI Commcomm interrorcode Fortran77 MPI ABORT COMM ERRORCODE IERROR INTEGERCOMM ERRORCODE IERROR在出现了致命错误而希望异常终止MPI程序时执行MPI系统会设法终止comm通信器中所有进程输入整型参数errorcode 将被作为进程的退出码返回给系统 MPI几个基本函数 获取处理器的名称C MPI Get processor name char name int resultlen Fortran77 MPI GET PROCESSOR NAME NAME RESULTLEN IERR 在返回的name中存储所在处理器的名称resultlen存放返回名字所占字节应提供参数name不少于MPI MAX PRCESSOR NAME个字节的存储空间 MPI几个基本函数 获取墙上时间C doubleMPI Wtime void Fortran77 DOUBLEPRECISIONMPI WTIME 返回调用时刻的墙上时间 用浮点数表示秒数经常用来计算程序运行时间 Sample HelloWorld C C MPI include mpi h include includevoidmain intargc char argv intmyid numprocs namelen charprocessor name MPI MAX PROCESSOR NAME MPI Init Sample HelloWorld Fortran Fortran MPIprogrammaininclude mpif h character MPI MAX PROCESSOR NAME processor nameintegermyid numprocs namelen rc ierrcallMPI INIT ierr callMPI COMM RANK MPI COMM WORLD myid ierr callMPI COMM SIZE MPI COMM WORLD numprocs ierr callMPI GET PROCESSOR NAME processor name namelen ierr write HelloWorld Process myid of numprocs on processor namecallMPI FINALIZE ierr end Sample HelloWorld 单处理器 tp5 运行4个进程 4个处理器 tp1 tp2 tp3 tp4 分别运行4个进程 Sample HelloWorld 点对点通信 定义 两个进程之间的通信源进程发送消息到目标进程目标进程接受消息通信发生在同一个通信器内进程通过其在通信器内的标号表示MPI系统的通信方式都建立在点对点通信之上 阻塞式点对点通信 阻塞式消息发送C intMPI Send void buf intcount MPI Datatypedatatype intdest inttag MPI Commcomm Fortran77 MPI SEND BUF COUNT DATATYPE DEST TAG COMM IERROR count不是字节数 而是指定数据类型的个数datatype可是原始数据类型 或为用户自定义类型dest取值范围是0 np 1 或MPI PROC NULL np是comm中的进程总数 tag取值范围是0 MPI TAG UB 用来区分消息 阻塞式点对点通信 阻塞式消息接收C intMPI Recv void buf intcount MPI Datatypedatatype intsource inttag MPI Commcomm MPI Status status Fortran77 MPI RECV BUF COUNT DATATYPE SOURCE TAG COMM STATUS IERROR count是接受缓存区的大小 表示接受上界 具体接受长度可用MPI Get count获得source取值范围是0 np 1 或MPI PROC NULL和MPI ANY SOURCEtag取值范围是0 MPI TAG UB 或MPI ANY TAG 阻塞式点对点通信 消息 message 阻塞式点对点通信 标准阻塞式通信 是否对发送数据进行缓存 由MPI系统决定 而非程序员阻塞 发送成功 意味 1 消息成功发送 2 或者消息被缓存接收成功 意味消息已被成功接收 阻塞式点对点通信 消息传递成功发送进程需指定一个有效的目标接收进程接收进程需指定一个有效的源发送进程接收和发送消息的进程要在同一个通信器内接收和发送消息的tag要相同接收缓存区要足够大 例子 其他点对点通信 捆绑发送和接收MPI SENDRECV SENDBUFF SENDCOUNT SENDTYPE DEST SENDTAG RECVBUFF RECVCOUNT RECVTYPE SOURCE RECVTAG COMM STATUS IERR 捆绑发送和接收 收发使用同一缓存区MPI SENDRECV REPLACE BUFF COUNT DATATYPE DEST SENDTAG SOURCE RECVTAG COMM STATUS IERR 缓存消息发送函数同步消息发送函数就绪消息发送函数 MPI Bsend MPI Ssend MPI Rsend 非阻塞式点对点通信 阻塞式通信与非阻塞式通信 非阻塞式点对点通信 阻塞型与非阻塞型通信函数 聚合通信 定义 一个通信器的所有进程参与 所有进程都调用聚合通信函数MPI系统保证聚合通信函数与点对点调用不会混淆聚合通信不需要消息标号聚合通信函数都为阻塞式函数聚合通信的功能 通信 同步 计算等 三种通信方式 一对多 多对一 多对多 聚合函数列表 MPI BarrierMPI BcastMPI Gather MPI GathervMPI Allgather MPI AllgathervMPI Scatter MPI ScattervMPI Alltoall MPI AlltoallvMPI Reduce MPI Allreduce MPI Reduce scatterMPI Scan 同步 该函数用于进程同步 即一个进程调用该函数后需等待通信器内所有进程调用该函数后返回 Sample Fortran CALLMPI COMM RANK COMM RANK IERR IF RANK EQ 0 THENCALLWORK0 ELSECALLWORK1 CALLMPI BARRIER COMM IERR CALLWORK2 CALLMPI COMM RANK COMM RANK IERR IF RANK EQ 0 THENCALLWORK0 CALLMPI BARRIER COMM IERR ELSECALLWORK1 CALLWORK2 广播 广播 广播 通信器中root进程将自己buffer内的数据发给通信器内所有进程非root进程用自己的buffer接收数据 Sample C includeintmain intargc char argv intrank doubleparam MPI Init ProgramOutputP 0afterbroadcastparameteris23 000000P 6afterbroadcastparameteris23 000000P 5afterbroadcastparameteris23 000000P 2afterbroadcastparameteris23 000000P 3afterbroadcastparameteris23 000000P 7afterbroadcastparameteris23 000000P 1afterbroadcastparameteris23 000000P 4afterbroadcastparameteris23 000000 收集 散发 收集 MPI Gather 收集 MPI Gather 所有进程 包括根进程 将sendbuf的数据传输给根进程 根进程按着进程号顺序依次接收到recvbuf发送与接收的数据类型相同 sendcount和recvcount相同非根进程接收消息缓冲区被忽略 但需要提供 散发 MPI Scatter 散发 MPI Scatter 根进程有np个数据块 每块包含sendcount个类型为sendtype的数据 根进程将这些数据块按着进程号顺序依次散发到各个进程 包含根进程 的recvbuf发送与接收的数据类型相同 sendcount和recvcount相同非根进程发送消息缓冲区被忽略 但需要提供 Sample C聚合通信 includeintmain intargc char argv intrank size i j doubleparam 400 mine intsndcnt revcnt MPI Init ProgramOutputP 0mineis23 000000P 1mineis24 000000P 2mineis25 000000P 3mineis26 000000 根进程向所有进程次序分发1个数组元素 归约 归约 MPI Reduce 各进程提供数据 sendbuf co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度年福建省政府采购评审专家资格通关试题库有答案
- 2025年电焊工三级安全教育考试试题及答案
- 金融行业审计智能化解决方案报告:2025年人工智能算法在风险管理中的应用
- 2025年大学移民管理专业题库- 移民流动性与社会关系网络研究
- 2025年大学劳动教育专业题库- 大学生劳动教育与创新能力培养
- 2024-2025年中国抽水蓄能行业市场调查报告:技术创新推动产业发展
- 2025年大学工会学专业题库- 工会学专业教学方式创新与效果评估
- 2025年大学科学教育专业题库- 科学教育的创新发展与科技
- 2025年统计学专业期末考试:统计数据可视化在金融领域的应用试题
- 2025年大学融合教育专业题库- 社区服务教育在大学融合教育中的地位和作用
- 外科学-第十一章-外科感染(含案例分析)课件
- 《ch棘皮动物》课件
- 急诊科岗位职责
- 中国服用过兴奋剂运动员名单 兴奋剂真的是毒品吗
- 小学英语语法时态讲解与归纳
- 《生存与修炼》熊厚音讲《道德经》教学文案
- 淘宝新店运营计划书文献
- 产教融合校企合作[可修改版ppt]课件
- ICH Q6B 生物技术产品和生物制品的检验方法和可接受标准
- 12贮水花盆案例总结-2015天津中心修改43
- (精心整理)六方最密堆积空间利用率和密度的计算
评论
0/150
提交评论