文件名称:编写安全的MPI程序-pt100温度传感器电路图
文件大小:1MB
文件格式:PDF
更新时间:2024-06-28 13:53:49
MPI 并行编程 高性能计算 李三立都志辉 MPI入门
7.7 编写安全的MPI程序 编写MPI程序 如果通信调用的顺序使用的不当 很容易造成死锁 比如对于程序 17 所示的例子总会死锁 程序 17 总会死锁的发送接收序列 进程0 进程1 从进程1接收消息A 从进程0接收消息B 向进程1发送消息C 向进程0发送消息D A 等待 等待 C D 环状依赖关系 等待 等待 B 图 23 总会死锁的通信调用次序 进程0的第一条接收语句A能否完成取决于进程1的第二条发送语句D 即A依赖于D 从执 行次序上可以明显地看出 进程0向进程1发送消息的语句C的执行又依赖于它前面的接收语 句A的完成 即C依赖于A 同时 进程1的第一条接收语句B能否完成取决于进程0的第二条发 送语句C的执行 即B依赖于C 从执行次序上可以明显地看出 向进程0发送消息的语句D的 CALL MPI_COMM_RANK(comm, rank, ierr) IF (rank.EQ.0) THEN CALL MPI_RECV(recvbuf, count, MPI_REAL, 1, tag, comm, status, ierr) CALL MPI_SEND(sendbuf, count, MPI_REAL, 1, tag, comm, ierr) ELSE IF( rank .EQ. 1) CALL MPI_RECV(recvbuf, count, MPI_REAL, 0, tag, comm, status, ierr) CALL MPI_SEND(sendbuf, count, MPI_REAL, 0, tag, comm, ierr) END IF