TP下,集合通信采用多stream实现,stream个数=TP维度卡数-1。
如图1 界面图所示,TP=8,使用stream6,与stream18~stream23共7条stream完成。其中stream6作为通信主stream,负责与计算stream同步,stream18~stream23作为通信从stream,配合stream6完成基于mesh拓扑的集合通信操作。
如图2 界面图所示,stream2为计算stream,stream6为TP通信主stream,stream2与stream6通过event彼此同步,完成TP中计算任务与通信任务的交替执行
如图3 界面图所示,pipeline并行中的send、recv在stream4上,通过Event与计算stream2同步,pipeline并行中的allgather与TP在同一个通信域维度,在主stream6与从stream18~23上执行,同样通过Event与计算stream2同步。
如图4 界面图所示,stream8是DP1维度集合通信算子,通信完成后与计算stream同步,由于通信数据量较大,通信内部会按照HCCL_BUFFSIZE为粒度对DP数据量进行切分并串行完成通信。