学习笔记-MPI非阻塞通信
非阻塞通信主要用于计算和通信的重叠。
在非阻塞通信中,同样有之前提到的四种通信模式,其效果是将非阻塞通信的基本特征和具体的通信模式相结合后的综合体现。
非阻塞通信模式 | 发送 | 接收 |
---|---|---|
标准 | MPI_Isend | MPI_Irecv |
缓存 | MPI_Ibsend | MPI_Irecv |
同步 | MPI_Issend | MPI_Irecv |
就绪 | MPI_Irsend | MPI_Irecv |
以标准通信模式的非阻塞发送与接收为例
不管在什么通信模式中,非阻塞发送与接收与阻塞发送与接收的区别在于增加了返回的非阻塞通信对象request。该对象用来描述非阻塞发送或接收的完成情况。
MPI_Request request;
MPI_Send(buffer,size,MPI_XX,dest,tag,MPI_COMM_WORLD);//标准阻塞发送
MPI_Isend(buffer,size,MPI_XX,dest,tag,MPI_COMM_WORLD,&request);//标准非阻塞发送
MPI_Status status;
MPI_Request request;
MPI_Recv(buffer,size,MPI_XX,source,tag,MPI_COMM_WORLD,&status);//标准阻塞接收
MPI_Irecv(buffer,size,MPI_XX,source,tag,MPI_COMM_WOR