针对同一通信算子在不同卡之间通信时间的波动的分析,其主要目的在于需要识别一些可能存在的通信算子内部瓶颈单元。在分析过程中,主要采用以下几个指标:
- 算子的执行时间以及内部等待耗时的变化和比例

该指标可以用来初步识别是否存在慢卡瓶颈,对每块卡上的wait_ratio,通过比较max_wait_ratio (等待时间长) 与wait_ratio_threshold(当前设置为0.2)的关系,识别是否存在慢节点,当max和min的差值大于阈值threshold时,认为出现了慢节点,慢节点为min_wait_ratio(等待时间短)对应的卡。
- 通信带宽分析
DMA(Direct Memory Access)指的是直接存储访问。当CPU完成传输配置后,将不再参与传输过程,由DMA控制器将数据从一个地址空间复制到另外一个地址空间。
按照传输介质,可以将DMA分为RDMA和SDMA。
- RDMA指的是其他节点通过网卡对当前节点进行直接存储操作。
- SDMA代表在节点内进行的直接存储访问。
通信数据一般通过DMA机制在不同卡和不同节点间传输。在单节点内,遵循如下逻辑分析快慢卡。
- 对比该通信算子在各卡上的数据传输耗时 ,得到通信带宽最慢的rank;
- 计算该rank上的sdma_bw和rdma_bw,并结合sdma_transit_time和rdma_transit_time给出对应平均带宽:


- 同时,我们会设置一个经验带宽,一般设置为最大带宽的0.8,如图1所示。
图1 带宽设置
- 只有SDMA通信
SDMA平均带宽接近经验带宽,表示该通信算子瓶颈是SDMA带宽;SDMA平均带宽小于经验带宽,表示该通信算子瓶颈是SDMA通信效率低。
- 只有RDMA通信
RDMA平均带宽接近经验带宽,表示该通信算子瓶颈是RDMA带宽;RDMA平均带宽小于经验带宽,表示该通信算子瓶颈是RDMA通信效率低。
- SDMA通信和RDMA通信
SDMA耗时最长,表示当前通信算子主要瓶颈在于SDMA通信,并给出瓶颈是SDMA带宽或SDMA通信效率低;RDMA耗时最长,表示当前通信算子主要瓶颈在于RDMA通信,并给出瓶颈是RDMA带宽或RDMA通信效率低。