HcclCommWorkingDevNicSet
产品支持情况
| 
          产品  | 
        
          是否支持  | 
       
|---|---|
| 
          | 
        
          √  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
功能说明
在集群场景下,配置通信域内的通信网卡。支持在同一NPU下,在某一Device网卡和备用网卡之间切换通信,备用网卡为同一NPU中的另一个Die网卡。
单次通信网卡配置时,同一通信域内的所有卡都需要调用该接口,且所有卡下发的ranks、useBackup和nRanks参数配置需保持一致。
 
     配置通信网卡过程中,请注意以下操作的影响:
- 同时下发切换到备网卡和切换到主网卡的命令时,如果在链路两端,一端切换到主网卡,一端切换到备用网卡,则命令执行失败。
 - 如果存在一条卡1和卡2的链路,第一次下发命令使卡1切到备用网卡,第二次下发命令使卡2换到默认网卡,此时卡1和卡2之间的链路会使用默认网卡通信,卡1和其他卡的链路会使用备用网卡通信。
 - 如果卡1和卡2的网卡互为备用网卡,并且两张卡同时下发切换到备用网卡的命令,那么卡1和卡2使用的通信网卡将会互换。
 
函数原型
          1
           | 
         
          HcclResult HcclCommWorkingDevNicSet(HcclComm comm, uint32_t *ranks, bool *useBackup, uint32_t nRanks)  | 
        
参数说明
| 
          参数名  | 
        
          输入/输出  | 
        
          描述  | 
       
|---|---|---|
| 
          comm  | 
        
          输入  | 
        
          指定通信网卡的通信域。 HcclComm类型的定义可参见HcclComm。  | 
       
| 
          ranks  | 
        
          输入  | 
        
          指定通信网卡的rank在通信域中的rank id组成的数组。  | 
       
| 
          useBackup  | 
        
          输入  | 
        
          指定ranks中的卡是否使用备用网卡。  | 
       
| 
          nRanks  | 
        
          输入  | 
        
          指定切换网卡的rank数量。  | 
       
返回值
HcclResult:接口成功返回HCCL_SUCCESS,其他失败。
约束说明
- 配置前,请确保当前环境上的通信任务已完成。
 - 属于同一通信域的rank调用该接口时传入的ranks和useBackup数组长度与nRanks数量保持一致。
 - 使用该接口需满足以下两种情况时,才会发生实际的网卡切换。
 - 对于不支持的场景,如HCCL_OP_RETRY_ENABLE未开启重执行时,会返回HCCL_SUCCESS并在日志中打印WARNING,但实际未切换网卡。
 - 针对同一个rank,HcclCommWorkingDevNicSet接口需要one by one保序调用,不支持并发下发。
 - 针对整个通信域,调用HcclCommWorkingDevNicSet接口时,在不同rank间要保证同一下发顺序。
 - comm句柄指向的通信域必须已下发过算子才能执行网卡配置,后续新下发同类型同参数的算子会继续使用同样的网卡配置,其他新下发的算子会使用默认网卡通信。不满足以上要求,会出现网卡配置失败。
 
调用示例
     一个简单的代码示例片段如下:
     
      
       
        
         
      
     
    
   
           1 2 3 4 5  | 
          
           HcclComm comm; uint32_t nRanks = 4; uint32_t rankIds[4] = {0,3,7,12}; bool useBackup[4] = {true,true,true,true}; HCCLCHECK(HcclCommWorkingDevNicSet(comm, rankIds, useBackup, nRanks));  | 
         
     父主题: 通信域管理