为了实现基本的MPI通信功能,至少需要几个MPI调用? MPI程序的第一条和最后一条可执行语句应为什么语句,如果不是这些语句,会导致什么样的后果? MPI消息传递包括哪几个阶段? MPI消息的组成是怎样的? 任意源和任意标识的作用是什么? 编写一个简单的实现发送和接收功能的程序。
下面三个例子那个类型匹配有问题?问什么?
例1 … REAL a(20),b(20) … CALL MPI_COMM_RANK(comm, rank, ierr) IF(rank.EQ.0) THEN CALL MPI_SEND(a(1), 10, MPI_REAL, 1, tag, comm, ierr) ELSE IF (rank .EQ. 1) THEN CALL MPI_RECV(b(1), 15, MPI_REAL, 0, tag, comm, status, ierr) END IF
例2 … REAL a(20),b(20) … CALL MPI_COMM_RANK(comm, rank, ierr) IF(rank.EQ.0) THEN CALL MPI_SEND(a(1), 10, MPI_REAL, 1, tag, comm, ierr) ELSE IF (rank .EQ. 1) THEN CALL MPI_RECV(b(1), 40, MPI_BYTE, 0, tag, comm, status, ierr) END IF 例3 … REAL a(20),b(20) … CALL MPI_COMM_RANK(comm, rank, ierr) IF(rank.EQ.0) THEN CALL MPI_SEND(a(1), 40, MPI_BYTE, 1, tag, comm, ierr) ELSE IF (rank .EQ. 1) THEN CALL MPI_RECV(b(1), 60, MPI_BYTE, 0, tag, comm, status, ierr) END IF
指出下面两条调用的消息数据和消息信封部分 MPI_SEND( buf, count,datatype,dest,tag,comm) MPI_RECV(buf,count,datatype,source,tag,comm,status)