中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr lMP中的消息 为什么MP中的发送和接收操作要做得这么复杂呢? MPI Send(&n,l, MPl int i, i,MPI COMM WOrld) send m to Q MPI Recv(&N, I, MPI Int,o, i, MPI CoMM World, &status) receive S from P MPI消息的组成: 消息的内容(即,信的内容称为消息缓冲( message buffer 消息的接收者(即,写在信封上面的东西),称为消息信封( message envelop) 国家高性能计算中心(合肥
国家高性能计算中心(合肥) 为什么MPI中的发送和接收操作要做得这么复杂呢? MPI消息的组成: 消息的内容 (即, 信的内容), 称为消息缓冲(message buffer) 消息的接收者 (即, 写在信封上面的东西), 称为消息信封(message envelop) MPI_Send(&N,1,MPI_INT,i,i,MPI_COMM_WORLD) MPI_Recv(&N,1,MPI_INT,0,i,MPI_COMM_WORLD,&status) send M to Q; receive S from P 1 MPI中的消息
中国料学火计算机科学与波术系 niversity of Science and Technology of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr lMP中的消息 例1用MP发送一个数据数组 考虑一个用C语言声明的由N个复数组成的数组 double a100 假定进程P要把这个数组发送给进程Q 国家高性能计算中心(合肥
国家高性能计算中心(合肥) 考虑一个用C语言声明的由N个复数组成的数组double A[100] 假定进程P要把这个数组发送给进程Q: 例1 用MPI发送一个数据数组 1 MPI中的消息
中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr lMP中的消息 要发送的消息 可用的消息传递系统 说明 1)发送整个数理论的消息传递 消息缓冲由数组A标识,信封就是进程 组A send a to Q 名Q (2)发送数组A商用的消息传递 使用的发送例程形式如下 的头两个元素,(假定在一台计算机上,一个双精度数是64位,sn( (address, length, destination, tag) 即8个字节) ( address, length)定义消息缓冲, A[0和A[] send(A, 16, Q, tag ( destination,tag)定义消息信封 (3)发送数组AMP的消息传递 (1)需要定义导出数据类型 中所有偶数编 double100 号的元素,即 (2)使用发送例程形式如下 MPI Data type Even Elements MPI Send A[O]A[2],A[4], (buffer, count, datatype, destination, tag, MPI Type_vector communicator (50, 1, 2, MPI DOUBLE, & EvenElements) ( buffer; count, datatype定义了消息缓冲, MPI Type commit(& Even Elements ( destination,tag, communicator)构成消 MPI Send (, 1, Even Elements, destination,.) 息信封
国家高性能计算中心(合肥) 要发送的消息 可用的消息传递系统 说 明 (1) 发送整个数 组A 理论的消息传递 send A to Q 消息缓冲由数组 A 标识, 信封就是进程 名 Q. (2) 发送数组A 的头两个元素, 即: A[0]和A[1] 商用的消息传递 (假定在一台计算机上, 一个双精度数是 64 位, 即 8 个字节.) send(A, 16, Q, tag) 使用的发送例程形式如下: send (address, length, destination, tag) (address, length)定义消息缓冲, (destination, tag)定义消息信封. (3) 发送数组 A 中所有偶数编 号的元素, 即: A[0],A[2],A[4], ... MPI 的消息传递 double A[100]; MPI_Data_type EvenElements; ... ... MPI_Type_vector (50, 1, 2, MPI_DOUBLE, &EvenElements); MPI_Type_commit (&EvenElements); MPI_Send (A, 1 , EvenElements, destination, ...); (1) 需要定义导出数据类型 (2) 使用发送例程形式如下: MPI_Send (buffer, count, datatype, destination, tag, communicator) (buffer, count, datatype)定义了消息缓冲, (destination, tag, communicator) 构成消 息信封. 1 MPI中的消息
中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr lMP中的消息 子程序名消息长度接收进程标识号通信子 MPI Send (&N, 1, MPI INT, 1, i, MPI COMM WORLD) 消息地址消息数据类型消息标签 MPI Send(buffer, count, datatype, destination, tag, communicator (buffer, count, datatype) 消息缓冲 ( destination,tag, communicator)消息信封 国家高性能计算中心(合肥
国家高性能计算中心(合肥) MPI_Send (&N, 1, MPI_INT, i, i, MPI_COMM_WORLD) 子程序名 消息地址 消息长度 消息数据类型 接收进程标识号 消息标签 通信子 MPI_Send (buffer, count, datatype, destination, tag, communicator) (buffer, count, datatype) 消息缓冲 (destination, tag, communicator) 消息信封 1 MPI中的消息
中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr lMP中的消息 MPI的四个重要概念 >消息数据类型( message data types >通信子( communicators >通信操作( communication operations) >虚拟拓扑( virtual topology) 国家高性能计算中心(合肥
国家高性能计算中心(合肥) ➢消息数据类型(message data types) ➢通信子(communicators) ➢通信操作(communication operations) ➢虚拟拓扑(virtual topology) MPI的 四个重要概念: 1 MPI中的消息