Commit
Applicability
Product |
Supported |
|---|---|
√ |
|
√ |
|
x |
|
x |
|
x |
|
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
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.
|
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. } |