学习资料 中国科技大学 《MPI编程指南》PPT
学习笔记
MPI提供的点对点通信(Point-to-Point Communication)包括阻塞和非阻塞两种通信机制。同时也支持多种通信模式。不同通信模式和不同通信机制的结合,便产生了非常丰富的点对点通信函数。
根据缓冲管理,以及发送和接收方之间的同步方式,共有下面四种通信模式: (NOTE 2012-09-19: 思考通过画图的形式理解这四种通信模式)
-> 同步(synchronous)通信模式
只有相应的接收过程已经启动,发送过程才正确返回。
-> 缓冲(buffered)通信模式
发送不管接收操作是否已经启动都可以执行。但是需要用户程序事先申请一块足够大的缓冲区,通过 MPI_Buffer_attach 申请缓冲区, 通过 MPI_Buffer_detach 来回收申请的缓冲区。
-> 标准(standard)通信模式
是否对发送的数据进行缓冲由MPI的实现来决定, 而不是由用户程序来控制。发送可以是同步的或缓冲的,取决于实现。
-> 就绪(ready)通信模式
发送操作只有在接收进程相应的接收操作已经开始才进行发送。当发送操作启动而相应的接收还没有启动,发送操作将出错。 就绪通信模式的特殊之处就是接收操作必须先于发送操作启动。
阻塞通信与非阻塞通信
阻塞和非阻塞通信的主要区别在于返回后的资源可用性。
阻塞通信返回的条件:
-> 通信操作已经完成,即消息已经发送或接收;
-> 调用的缓冲区可用。若是发送操作,则该缓冲区可以被其它的操作更新; 如果是接收操作,该缓冲区的数据已经完整,可以正确引用。
MPI的发送操作支持四种通信模式(同步、缓冲、就绪、标准),它与阻塞属性(阻塞、非阻塞)一起产生MPI的8种发送操作。而MPI的接收操作只有两种, 阻塞接收和非阻塞接收。
MPI对非阻塞通信完成的检测。 非阻塞通信返回并不意味通信操作的完成,检测主要有两种,MPI_Wait 函数和 MPI_Test函数。
MPI 原语 阻塞 非阻塞
Standard Send MPI_Send MPI_Isend
Synchronous Send MPI_Ssend MPI_Issend
Buffered Send MPI_Bsend MPI_Ibsend
Ready Send MPI_Rsend MPI_Irsend
Receive MPI_Recv MPI_Irecv
Completion Check MPI_Wait MPI_Test
学习感想