并行程序设计.pptx

;目录;几个基本概念;更好的理解进程;消息传递;更好的理解通信——以QQ为例;并行程序消息传递模型——MPI;MPI 1.1: 1995 MPICH:是MPI最流行的非专利实现,由美国阿贡国家实验室和密西西比州立大学联合开发,具有更好的可移植性。 MPI 1.2~2.0:动态进程, 并行 I/O, 远程存储访问、支持F90和C++(1997)。;高可移植性 MPI已在IBM PC机上、MS Windows上、所有主要的Unix工作站上和所有主流的并行机上得到实现。 使用MPI作消息传递的C或Fortran并行程序可不加改变地运行在IBM PC、MS Windows、Unix工作站、以及各种并行机上。;下面我们首先分别以C语言和Fortran语言的形式给出一个最简单的MPI并行程序Hello 该程序在终端打印出Hello World!字样。 “Hello World”:一声来自新生儿的问候。 ;;1、C 头文件必须包含mpi.h. MPI 函数返回出错代码或 MPI_SUCCESS成功标志. MPI-前缀,且只有MPI以及MPI_标志后的第一个字母大写,其余小写. 2、Fortran 必须包含mpif.h. 通过子函数形式调用MPI,函数最后一个参数为返回值. MPI-前缀,且函数名全部为大写. 3、MPI函数的参数被标志为以下三种类型: IN:参数在例程的调用中不会被修正. OUT:参数在例程的调用中可能会被修正. INOUT:参数有初始值,且在例程的调用中可能会被修正;1、int MPI_Init(int *argc, char **argv) MPI_INIT是MPI程序的第一个调用,它完成MPI程序的所有初始化工作。所有的MPI程序的第一条可执行语句都是这条语句。 启动MPI环境,标志并行代码的开始. 并行代码之前,第一个mpi函数(除MPI_Initialized()外). 要求main必须带参数运行,否则出错. 2、int MPI_Finalize(void) MPI_FINALIZE是MPI程序的最后一个调用,它结束MPI程序的运行,它是MPI程序的最后一条可执行语句,否则程序的运行结果是不可预知的。 标志并行代码的结束,结束除主进程外其它进程. 之后串行代码仍可在主进程(rank = 0)上运行(如果必须). ;MPI程序编译、运行;MPI程序运行——mpirun;MPI程序——四个基本接口;MPI程序——四个基本接口;;MPI程序——并行模式;MPI程序——并行模式;MPI程序——并行模式;MPI程序设计1-小结;MPI通信——点对点通信;点对点通信——阻塞型;点对点通信——MPI_Send;点对点通信——MPI_Recv;点对点通信——阻塞型??例程序;点对点通信——非阻塞通信;点对点通信——MPI_Isend,MPI_Irecv;点对点通信——非阻塞通信的完成;点对点通信——非阻塞型程序示例;点对点通信——非阻塞型程序示例(修改后);上节课回顾;点对点通信——tag的使用;点对点通信——tag的使用;tag和source的特殊情况——MPI_ANY_TAG/MPI_ANY_SOURCE;进程间通信的组织;进程间通信的组织;进程间通信的组织;死锁的避免;上例的修改;练习一:Jacobi迭代;练习一:Jacobi迭代;练习一:Jacobi迭代——数据划分;练习一: Jacobi迭代——通信;;练习一: Jacobi迭代——第一个版本;MPI_Sendrecv (捆绑发送接收);MPI_Sendrecv;MPI_Sendrecv;练习一:用MPI_Sendrecv实现Jacobi迭代;虚拟进程;练习一:Jacobi迭代——使用MPI_Sendrecv 和虚拟进程的数据交换;练习一:Jacobi迭代——第二版,使用sendrecv;MPI并行程序设计——小结2;主从模式;非阻塞通信的完成与检测;非阻塞通信的完成与检测;非阻塞通信的完成与检测;练习一:Jacobi迭代——优化;练习一:Jacobi迭代——第三版 使用非阻塞通信;重复非阻塞通信;重复非阻塞通信——Send和Recv;重复非阻塞通信——Start和Startall;重复非阻塞通信——第四个版本的jacobi迭代;四个版本的雅可比迭代总结;MPI通信——组通信;广播(Broadcast);MPI_Bcast;Scatter;MPI_Scatter;Gather;MPI_Gather;Allgather;MPI_Allgather;归约(Reduce);归约(Reduce)——数据类型与操作;MPI_Reduce;MPI_Allreduce;MPI_Reduce_scatter;MPI_Reduce_scatter;MPI_Scan;不同类型的归约操作对

文档评论(0)

1亿VIP精品文档

相关文档