昇腾社区首页
中文
注册

Finalize

产品支持情况

产品

是否支持

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

Atlas 200I/500 A2 推理产品

x

Atlas 推理系列产品AI Core

x

Atlas 推理系列产品Vector Core

x

Atlas 训练系列产品

x

Atlas 200/300/500 推理产品

x

功能说明

通知服务端后续无通信任务,执行结束后退出。

函数原型

1
2
template <bool sync = true>
__aicore__ inline void Finalize()

参数说明

参数名

输入/输出

描述

sync

输入

是否需要等待服务端的通信完成。bool类型,参数取值如下:

  • true:默认值,表示客户端将检测并等待最后一个通信任务完成。
  • false:表示客户端不会等待通信任务完成,而是直接退出。

Atlas A3 训练系列产品/Atlas A3 推理系列产品,该参数支持默认值true,仅在通信任务为BatchWrite时,支持取值为false。

Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件,该参数仅支持默认值true。

返回值说明

约束说明

  • 调用本接口前确保已调用过InitSetCcTiling接口。
  • 本接口在AI Cube核或者AI Vector核上调用必须与对应的Prepare接口的调用核保持一致。

调用示例

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