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




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM