下载
中文
注册

Commit

功能说明

每调用一次本接口,则通知服务端可以正式执行handleId对应的任务一次,本接口的调用次数应该与Prepare接口的repeat次数一致。

函数原型

1
__aicore__ inline void Commit(HcclHandle handleId)

参数说明

表1 接口参数说明

参数名

输入/输出

描述

handleId

输入

对应通信任务的标识ID,只能使用Prepare原语接口的返回值。

1
using HcclHandle = int8_t;

返回值

支持的型号

Atlas A2 训练系列产品/Atlas 800I A2 推理产品

注意事项

  • 调用本接口前确保已调用过Init接口。
  • 入参handleId只能使用Prepare原语对应接口的返回值。
  • 本接口的调用次数应该与Prepare的repeat次数一致。
  • 该接口只能在AI Cube核或者AI Vector核两者之一上调用。
  • 该接口只在0核上工作。

调用示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
REGISTER_TILING_DEFAULT(ReduceScatterCustomTilingData); //ReduceScatterCustomTilingData为对应算子头文件定义的结构体
auto tiling = (__gm__ ReduceScatterCustomTilingData*)tilingGM;
Hccl hccl;
GM_ADDR contextGM = GetHcclContext<0>();  // AscendC自定义算子kernel中,通过此方式获取Hccl context
__gm__ void *mc2InitTiling = (__gm__ void *)(&tiling->mc2InitTiling);
__gm__ void *mc2CcTiling = (__gm__ void *)(&(tiling->mc2CcTiling));
hccl.Init(contextGM, mc2InitTiling);
auto ret = SetCcTiling(mc2CcTiling);
if (ret) {
  return;
}
if (g_coreType == AIC) {
    HcclHandle handleId = hccl.ReduceScatter(sendBuf, recvBuf, 100, HcclDataType::HCCL_DATA_TYPE_INT8, HcclReduceOp::HCCL_REDUCE_SUM, 10);
    hccl.Commit(handleId ); // 通知服务端可以执行上述的ReduceScatter任务
    int32_t ret = hccl.Wait(handleId); // 阻塞接口,需等待上述ReduceScatter任务执行完毕
    hccl.Finalize(); // 后续无其他通信任务,通知服务端执行上述ReduceScatter任务之后即可以退出
}