DAWNING 乡 曙光 DAWNING 解剖 greetings程序 科拔计算未来 头文件:mpih/ mpif. h int MPI Init(int argc, char*x*argv) 启动M門环境,标志并行代码的开始 一并行代码之前第一个mpi函数(除 MP Initialize0外) 一要求main必须带能运行,否则出错. 通信子(通信空间):MP| COMM WORLD: 个通信空间是一个进程组和一个上下文的组合.上下文可看作为 一组的超级标签,用于区分不同的通信子 在执行函数MPnt之后,一个MP程序的所有进程形成一个缺省的 组,这个组的通信子即被写作 MPI COMM WORLD 一该参数是MP通信操作函数中必不可少的参数用于限定参加通信 的进程的范围 2021年1月 MP|并行程序设计 28/217
2021年1月 MPI并行程序设计 28/217 解剖greetings程序 • 头文件: mpi.h/mpif.h. • int MPI_Init(int *argc, char ***argv) – 启动MPI环境,标志并行代码的开始. – 并行代码之前,第一个mpi函数(除MPI_Initialize()外). – 要求main必须带能运行,否则出错. • 通信子(通信空间): MPI_COMM_WORLD: – 一个通信空间是一个进程组和一个上下文的组合.上下文可看作为 组的超级标签,用于区分不同的通信子. – 在执行函数MPI_Init之后,一个MPI程序的所有进程形成一个缺省的 组,这个组的通信子即被写作MPI_COMM_WORLD. – 该参数是MPI通信操作函数中必不可少的参数,用于限定参加通信 的进程的范围
DAWNING 乡 曙光 DAWNING 解剖 greetings程序 科拔计算未来 int MPl Comm size(MPl Comm comm, int *size 一获得通信空间comm中规定的组包含的进程的数量 指定一个 communicator,也指定了一组共享该空间的进程,这些进 程组成该 communicator的 group int MPl Comm rank( MPl Comm comm, int *rank 一得到本进程在通信空间中的rank值,即在组中的逻辑编号(从0开始) int MPl Finalized 一标志并行代码的结束结束除主进程外其它进程 之后串行代码仍可在主进程(rank=0)上运行(如果必须 2021年1月 MP|并行程序设计 29217
2021年1月 MPI并行程序设计 29/217 解剖greetings程序 • int MPI_Comm_size ( MPI_Comm comm, int *size ) – 获得通信空间comm中规定的组包含的进程的数量. – 指定一个communicator,也指定了一组共享该空间的进程, 这些进 程组成该communicator的group. • int MPI_Comm_rank ( MPI_Comm comm, int *rank ) – 得到本进程在通信空间中的rank值,即在组中的逻辑编号(从0开始). • int MPI_Finalize() – 标志并行代码的结束,结束除主进程外其它进程. – 之后串行代码仍可在主进程(rank = 0)上运行(如果必须)
DAN消息传送(先可不关心参愛含 义) MPI Send(A, 10, MPI DOUBLE, 1, 99, MPI COMM_ WORLD) MPl Recv (B, 20, MPl DOBULE, 0, 99, MPI COMM_ WORLD, &status); 数据传送+同步操作 Process o Data 发送请求 Data Process 1 Time 需要发送方与接收方合作完成 2021年1月 MP|并行程序设计 30217
2021年1月 MPI并行程序设计 30/217 消息传送(先可不关心参数含 义) MPI_Send(A, 10, MPI_DOUBLE, 1,99, MPI_COMM_WORLD); MPI_Recv(B, 20, MPI_DOBULE, 0, 99, MPI_COMM_WORLD, &status); 数据传送 + 同步操作 需要发送方与接收方合作完成. Process 0 Data Process 1 发送请求 Yes Data Data Data Data Data Data Data Data Time
DAWNING 乡 曙光 DAWNING 最基本的MP 科拔计算未来 MP调用借口的总数虽然庞大,但根据实际编写MP的经验, 常用的MP|调用的个数确实有限。下面是6个最基本的MP|函 数。 1. MPI Init(.) 2. MPl Comm size(.) 3. MPl Comm rank (.) MPI Init(.) 4. MPI Send(.) 并行代码; 5. MPI Recv() 6. MPI Finalize MPI Finalize(; 只能有串行代码 2021年1月 MP|并行程序设计 31217
2021年1月 MPI并行程序设计 31/217 最基本的MPI MPI调用借口的总数虽然庞大,但根据实际编写MPI的经验, 常用的MPI调用的个数确实有限。下面是6个最基本的MPI函 数。 1. MPI_Init(…); 2. MPI_Comm_size(…); 3. MPI_Comm_rank(…); 4. MPI_Send(…); 5. MPI_Recv(…); 6. MPI_Finalize(); MPI_Init(…); … 并行代码; … MPI_Fainalize(); 只能有串行代码;
DAWNING 乡 曙光 DAWNING 讲座内容提示 科拔计算未来 基本的MP 基本概念 点到点通信( Point to point ·MP|中AP的主要内容,为MP最基本,最重要的内容 MP|程序的编译和运行 ·深入MP -用户自定义派生)数据类型( User-defined( Derived) data type 事实上MP的所有数据类型均为MP自定义类型 支持异构系统 允许消息来自不连续的或类型不一致的存储区(结构数组散元) 集合通信( Collective 数据移动,数据聚集,同步 基于 point to point 构建 一MP环境管理函数 ·组,上下文和通信空间/通信子的管理 实例 2021年1月 MP|并行程序设计 32217
2021年1月 MPI并行程序设计 32/217 讲座内容提示 • 基本的MPI – 基本概念 – 点到点通信(Point to point) • MPI中API的主要内容,为MPI最基本,最重要的内容 – MPI程序的编译和运行 • 深入MPI – 用户自定义(/派生)数据类型(User-defined(Derived) data type) • 事实上MPI的所有数据类型均为MPI自定义类型 – 支持异构系统 – 允许消息来自不连续的或类型不一致的存储区(结构,数组散元) – 集合通信(Collective) • 数据移动,数据聚集,同步 • 基于point to point 构建 – MPI环境管理函数 • 组,上下文和通信空间/通信子的管理 • 实例