BroadcastOperation
产品支持情况
| 
          硬件型号  | 
        
          是否支持  | 
        
          特殊说明  | 
       
|---|---|---|
| 
          | 
        
          √  | 
        
          -  | 
       
| 
          | 
        
          √  | 
        
          不支持  | 
       
| 
          | 
        
          √  | 
        
          -  | 
       
| 
          | 
        
          x  | 
        
          -  | 
       
| 
          | 
        
          x  | 
        
          -  | 
       
功能
将通信主卡上的数据广播到其他每张卡上。该算子为原地操作,输出tensor与输入tensor内存地址相同。
该算子涉及多卡相关操作,可根据实际需求配置HCCL相关环境变量,具体请参见《CANN 环境变量参考》中的“集合通信”章节。
使用场景
1对多,广播方式。主节点0将数据发送到其他节点,且数据内容相同。
    使用示例
参数设置
rankRoot=0 rankSize=2
输入输出
npu0 (通信主卡): x=[67,60,-75] output=[67,60,-75] npu1: x=[0,0,0] output=[67,60,-75]
定义
          1 2 3 4 5 6 7 8 9 10 11  | 
         
          struct BroadcastParam { int rank = 0; int rankSize = 0; int rankRoot = 0; HcclComm hcclComm = nullptr; CommMode commMode = COMM_MULTI_PROCESS; std::string backend = "hccl"; std::string rankTableFile; std::string commDomain; uint8_t rsv[64] = {0}; };  | 
        
参数列表
| 
          成员名称  | 
        
          类型  | 
        
          默认值  | 
        
          描述  | 
       
|---|---|---|---|
| 
          rank  | 
        
          int  | 
        
          0  | 
        
          当前卡所属通信编号。  | 
       
| 
          rankSize  | 
        
          int  | 
        
          0  | 
        
          通信的卡的数量。  | 
       
| 
          rankRoot  | 
        
          int  | 
        
          0  | 
        
          主通信编号。  | 
       
| 
          hcclComm  | 
        
          HcclComm  | 
        
          nullptr  | 
        
          HCCL通信域指针。 默认为空,加速库为用户创建;若用户想要自己管理通信域,则需要传入该通信域指针,加速库使用传入的通信域指针来执行通信算子。  | 
       
| 
          commMode  | 
        
          CommMode  | 
        
          COMM_MULTI_PROCESS  | 
        
          通信模式,CommMode类型枚举值。hccl多线程只支持外部传入通信域方式。  | 
       
| 
          backend  | 
        
          string  | 
        
          “hccl”  | 
        
          通信后端指示,支持“hccl”和“lccl”。  | 
       
| 
          rankTableFile  | 
        
          string  | 
        
          -  | 
        
          集群信息的配置文件路径,用于单机以及多机通信场景,当前仅支持HCCL后端场景。 若单机配置了ranktable,则以ranktable来初始化通信域。 配置请参见《TensorFlow 1.15模型迁移指南》的“模型训练>执行分布式训练>准备ranktable资源配置文件”章节。  | 
       
| 
          commDomain  | 
        
          string  | 
        
          -  | 
        
          通信device组用通信域名标识,多通信域时使用。当backend为lccl时,commMode为多进程时,commDomain需要设置0-65535,支持设置通信域的内存大小,用于性能优化,配置方式通信域:通信域大小(MB),如“0:400”,当同一个通信域中多个算子配置冲突时,以第一个执行到的该通信域算子配置为准。 限制:默认值为200,当前配置大小不支持小于200。  | 
       
| 
          rsv[64]  | 
        
          uint8_t  | 
        
          {0}  | 
        
          预留参数。  | 
       
输入
| 
          参数  | 
        
          维度  | 
        
          数据类型  | 
        
          格式  | 
        
          描述  | 
       
|---|---|---|---|---|
| 
          x  | 
        
          [dim_0, dim_1, ..., dim_n]  | 
        
         
  | 
        
          ND  | 
        
          输入tensor。  | 
       
规格约束
rank、rankSize、rankRoot需满足以下条件。
- 0 ≤ rank < rankSize
 - 0 ≤ rankRoot < rankSize
 
