Broadcast
看名字就很好理解了,其實就是把同一份數據分發廣播給所有人,示意圖如下:

Scatter
不同於Broadcast, scatter可以將不同數據分發給不同的進程。

Gather
這個也很好理解,就是把多個進程的數據拼湊在一起。

Reduce
reduce就是將多個進程中的數據按照指定的映射函數進行運算得到最后的結果存在一個進程中,例如下面兩個圖中的歸約操作都是求和,將4個不同進程的數據歸約求和后存在了第一個進程中


All-reduce
All-reduce與reduce的區別就在於后者最后的結果是只保存在一個進程中,而All-reduce需要每個進程都有同樣的結果。所以All-reduce一般包含scatter操作,所以有時候也會看到reduce-scatter這種說法,其實reduce-scatter可以看成是all reduce的一種實現方式

