MPI 学习笔记
参考资料:
因为要和平台组对接工作以及写我们自己的BN同步...所以来了解一下MPI相关...感谢平台组@gyz 菊苣提供指导。
下面写一些自己的理解 ^_^
OVERVIEW
MPI是一个跨语言的通讯协议,用于并行相关
MPI不是一种具体的语言实现,而是一种标准或者说接口,类比sql在关系型数据库中的地位,具体用的时候我们是用某个特定的实现,例如openmpi或者mpich2
对于机器学习问题,MPI很适合用在超算上...
下面随便补一些我认为需要了解的:
** **_communicator _是一个进程的group,该group里的所有进程可以相互通信。
在这组进程中,每个进程有一个唯一的rank,通信按照rank进行(做身份标识的作用?
MPI支持的通信方式有point-to-point 和 collective 两种,也就是点对点和广播
下面分别介绍这两种方式。
Blocking point-to-point communication
Blocking communication 就是阻塞通信
**阻塞通信**是指消息发送方的send调用需要接受方的recv调用的配合才可完成对于非阻塞通信,不必等到通信操作完全完成便可以返回,该通信操作可以交给特定的通信硬件去完成,在该通信硬件完成该通信操作的同时,处理机可以同时进行计算操作,这样便实现了计算与通信的重叠。通过计算与通信的重叠,可以大大提高程序执行的效率。这一方法和通过异步I/O实现I/O与计算的重叠思路是完全一样的。