Init
功能说明
Hccl客户端初始化接口。该接口默认在所有核上工作,用户也可以在调用前通过GetBlockIdx指定其在某一个核上运行。
函数原型
| 1 | __aicore__ inline void Init(GM_ADDR context) | 
参数说明
| 参数名 | 输入/输出 | 描述 | 
|---|---|---|
| context | 输入 | 通信上下文,对应数据结构HcclCombineOpParam,包含rankDim,rankID等信息,具体参数请参考表2。 | 
返回值
无
支持的型号
Atlas A2训练系列产品/Atlas 800I A2推理产品
注意事项
该接口推荐在AI Cube核或者AI Vector核两者之一上调用
调用示例
- 示例1,默认在所有核上创建Hccl对象并调用Init接口初始化。1 2 3 Hccl hccl; GM_ADDR contextGM1 = GetHcclContext<HCCL_GROUP_ID_0>(); // AscendC自定义算子kernel中,通过此方式获取Hccl context hccl.Init(contextGM1); 
- 示例2,只在Vector核上创建Hccl对象并调用Init接口初始化,后续只能在Vector核上调用Hccl其他接口。1 2 3 4 5 6 if ASCEND_IS_AIV { Hccl hccl; GM_ADDR contextGM1 = GetHcclContext<HCCL_GROUP_ID_0>(); // AscendC自定义算子kernel中,通过此方式获取Hccl context hccl.Init(contextGM1); // 调用Hccl的Prepare、Commit、Wait、Finalize接口 } 
- 示例3,只在Vector的0核上创建Hccl对象并调用Init接口初始化,后续只能在Vector的0核上调用其他接口。1 2 3 4 5 6 7 8 if ASCEND_IS_AIV { if (GetBlockIdx()==0) { Hccl hccl; GM_ADDR contextGM1 = GetHcclContext<HCCL_GROUP_ID_0>(); // AscendC自定义算子kernel中,通过此方式获取Hccl context hccl.Init(contextGM1); // 调用Hccl的Prepare、Commit、Wait、Finalize接口 } } 
父主题: Hccl