Broadcast,Scatter,Gather,Reduce,All-reduce分别是什么?

Broadcast

看名字就很好理解了,其实就是把同一份数据分发广播给所有人,示意图如下:

Scatter

不同于Broadcast, scatter可以将不同数据分发给不同的进程。

image.png

Gather

这个也很好理解,就是把多个进程的数据拼凑在一起。

image.png

Reduce

reduce就是将多个进程中的数据按照指定的映射函数进行运算得到最后的结果存在一个进程中,例如下面两个图中的归约操作都是求和,将4个不同进程的数据归约求和后存在了第一个进程中

image.png

image.png

All-reduce

All-reduce与reduce的区别就在于后者最后的结果是只保存在一个进程中,而All-reduce需要每个进程都有同样的结果。所以All-reduce一般包含scatter操作,所以有时候也会看到reduce-scatter这种说法,其实reduce-scatter可以看成是all reduce的一种实现方式

image.png

参考



MARSGGBO原创





2019-9-10



posted @ 2019-09-10 15:37  marsggbo  阅读(4541)  评论(0编辑  收藏  举报