学习资料 中国科技大学 《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 

        

学习感想