NCCL通信原语

参考:

https://blog.csdn.net/2401_84208172/article/details/142610913?fromshare=blogdetail&sharetype=blogdetail&sharerId=142610913&sharerefer=PC&sharesource=a1150568956&sharefrom=from_link

1. Broadcast

其实就是把自己卡上面的东西让所有卡都知道

2. Scatter

其实就是把自己的东西分成多块,按照顺序向其他GPU发送data block

3. Reduce

就是把所有卡的部分在自己卡上面作一个sum。注意这里只有自己的卡作sum

4. Gather

其实对应于Scatter,是把分布在其他卡上的data block在自己卡上面拼起来。注意,这里也是只有自己这一张卡

5. AllReduce

每张卡都对所有卡作一个sum=reduce scatter+all gather, 通信成本也等于这俩加起来

官方说法:将每个节点的数据规约并同步到所有节点

6. AllGather

每张卡都把分布在其他卡上的data block拼起来。每一张卡的数据这样都相同

官方说法:将每个节点的部分数据收集到所有节点

7. Reduce Scatter

先Reduce,再Scatter

将每个节点的数据规约并分散到所有节点