Commit

Applicability

Product

Supported

Atlas A3 training products/Atlas A3 inference products

Atlas A2 training products/Atlas A2 inference products

Atlas 200I/500 A2 inference products

x

Atlas inference product's AI Core

x

Atlas inference product's Vector Core

x

Atlas training products

x

Function

If fine-grained communication is not used, each time this API is called, the server is notified that the task corresponding to handleId can be executed once. During fine-grained communication, each time this API is called, the server is notified that the communication subtask with the step length corresponding to handleId can be executed.

Prototype

1
__aicore__ inline void Commit(HcclHandle handleId)

Parameters

Table 1 API parameters

Parameter

Input/Output

Description

handleId

Input

ID of the corresponding communication task. Only the return value of the API corresponding to the Prepare primitive can be used.

1
using HcclHandle = int8_t;

Returns

None

Restrictions

  • Before calling this API, ensure that the InitV2 and SetCcTilingV2 APIs have been called.
  • The input parameter handleId can use only the return value of the Prepare primitive API.
  • When fine-grained communication is not used, the number of the API callings must equal to the number of repeated times of the Prepare API. During fine-grained communication, the number of the API callings must equal to total number of steps/steps × Prepare repeated times of the communication task.
  • When this API is called on the AIC or AIV core, the calling core must be the same as that of the corresponding Prepare API.

Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
REGISTER_TILING_DEFAULT(ReduceScatterCustomTilingData); // ReduceScatterCustomTilingData is a structure defined in the operator header file.
GET_TILING_DATA_WITH_STRUCT(ReduceScatterCustomTilingData, tilingData, tilingGM);
Hccl hccl;
GM_ADDR contextGM = AscendC::GetHcclContext<0>();  // In the kernel of the AscendC custom operator, obtain the HCCL context through this method.
hccl.InitV2(contextGM, &tilingData);
auto ret = hccl.SetCcTilingV2(offsetof(ReduceScatterCustomTilingData, mc2CcTiling));
if (ret != HCCL_SUCCESS) {
    return;
}
if (AscendC::g_coreType == AIC) {
    HcclHandle handleId = hccl.ReduceScatter(sendBuf, recvBuf, 100, HcclDataType::HCCL_DATA_TYPE_INT8, HcclReduceOp::HCCL_REDUCE_SUM, 10);
    
    for (uint8_t i=0; i<10; i++) {
hccl.Commit(handleId ); //Notify the server that the ReduceScatter task can be executed.
    }
    for (uint8_t i=0; i<10; i++) {
        hccl.Wait(handleId); // Blocking API. Wait until the ReduceScatter task is complete.
    }
hccl.Finalize(); //If there are no other communication tasks to follow, notify the server to exit after executing the above ReduceScatter task.
}