1. MPI
MPI(Message Passing Interface)是一种消息传递接口,是一个消息传递汉书库的标准说明。在基于MPI编程模型中,计算是由一个或多个彼此通过调用库函数进行消息收、发通信的进程所组成。MPI为程序员提供一个并行环境库,程序员通过调用MPI的库程序来达到程序员所要达到的并行目的。
2.同步/异步
二者区别主要在于:发送操作是否要等 “接收进程接收消息完成” 才完成
同步发送操作: 只有等消息被接收进程安全接收后才算完成。(数据发出去了,而且被接收进程安全接收了,才完成)
异步发送操作: 操作完成后,消息不一定被接收进程接收。(只要把消息发出去就算完成,不管有没有接收)
3.阻塞/非阻塞通讯
二者区别主要在于:调用完成是否依靠某些“事件”
阻塞通讯:调用完成要依赖某些“事件”。(阻塞发送或接收的 函数内部 会等待这个“事件“:”事件“没发生,函数就阻塞在那里;”事件“发生了,函数才返回)
阻塞发送:数据必须成功的发送或被拷贝到系统缓冲区,使得该数据缓冲区可被重新使用。这个“事件”发生,函数才返回,发送操作才完成。
阻塞接收:数据必须保证接收到本地缓冲区。这个“事件“发生,函数才返回,接收操作才完成。
非阻塞通讯:不等任何“事件”,就可完成,不保证数据已正确发送或接收。(发完或接收操作发起后,不等”事件“,直接返回。但是,如果要想知道数据有没有被正确发送或接收,要使用wait(), test()查询)
4.同步阻塞发送/同步无阻塞发送(异步都是非阻塞)
同步阻塞发送:发送操作要等消息被安全接收才算完成。发送操作本身使阻塞,要等某“事件”,发送操作才返回。(发送返回了,说明“事件“肯定发生了。不需要再用wait() test() 查询)
同步非阻塞发送:发送操作要等消息被安全接收才算完成。但是,要想知道数据被正确接收,要用wait(),test这些函数查询。
5.集合通信
通信因子包含一个相互之间通信的进程组。
集合通信是包含在通信因子中的所有进程都参加操作。
集合操作的三种类型:
同步:集合中所有进程都到达后,每个进程再接着运行;
数据传递: 广播(Broadcast), 分散(Scatter), 收集(Gather),全部到全部(Alltoall)。
规约:集合中的一个进程收集说有进程的数据并计算(如:求最大值,最小值,加,乘)
集合操作是阻塞的。
(1)广播(Broadcast)
(2) 分散(Scatter)
(3) 收集(Gather)
(4)全部到全部(Alltoall)
(5)allgather
注:本文参考神威1计算机系统 MPI培训手册