阻塞通信

MPI点到点通信之一:阻塞通信

╄→尐↘猪︶ㄣ 提交于 2020-03-17 01:27:33
某厂面试归来,发现自己落伍了!>>> 点到点通信要求send和recv能够匹配,也即一个send对应于一个recv。 阻塞通信中,消息发送有四种模式: 1).标准模式,MPI_Send 2).缓存(Buffer)模式,MPI_Bsend 3).就绪(Ready)模式,MPI_Rsend 4).同步(Synchonous)模式,MPI_Ssend 1. 标准通信模式 中,理论上send会阻塞直到目标进程recv执行接收数据后send才会返回。但是这种模式下MPI环境基本上会对发送进程send的数据进行缓冲,这时即使接收进程没有进行recv发送进程的send也会立即返回。如果发送数据超过MPI提供的缓冲区大小,那么send就会阻塞到缓冲区这里。 int MPI_Send(void *buf , int count , MPI_Datatype datatype , int dest , int tag , MPI_Comm comm); int MPI_Recv(void *buf , int count , MPI_Datatype datatype , int source , int tag ,MPI_Comm comm , MPI_Status *status); send和recv是非对称的。recv会因为没有接收到目标进程的消息而阻塞,不过可以指定接收进程接收通用信封