HcclCommDestroy

Applicability

Product

Supported

Atlas 350 Accelerator Card

Atlas A3 training product/Atlas A3 inference product

Atlas A2 training product/Atlas A2 inference product

Atlas 200I/500 A2 inference product

Atlas inference product

Atlas training product

For Atlas A2 training product/Atlas A2 inference product, only the Atlas 800T A2 training server, Atlas 900 A2 PoD cluster basic unit, and Atlas 200T A2 Box16 heterogeneous subrack are supported.

For the Atlas inference products, only the Atlas 300I Duo inference card is supported.

Function

Destroys a specified HCCL communicator.

Prototype

1
HcclResult HcclCommDestroy(HcclComm comm)

Parameters

Parameter

Input/Output

Description

comm

Input

Pointer to the communicator to be destroyed.

For details about the definition of the HcclComm type, see HcclComm.

Returns

HcclResult: HCCL_SUCCESS on success, or else failure.

Constraints

  • This API can be called across threads.
    • When the communicator is suspended during link setup or not occupied, this API can be called across threads to destroy the communicator and HCCL_SUCCESS is returned.

      After the communicator is successfully destroyed, the communication operator that is being executed exits without waiting for the timeout and reports an error. The error log is printed, with the keyword of "Terminating operation due to external request".

    • When the communicator is not in the link setup suspension state or is in other occupied states (for example, during communicator link setup or communication operator execution), the HCCL_E_AGAIN error is returned and a log at the WARNING level is printed when this API is called across threads. The log keyword is "[HcclCommDestroy] comm is in use, please try again later".
  • In the multi-thread scenario, the call sequence of the HCCL APIs must be ensured. After this API is called to destroy the communicator, other APIs related to collective communication cannot be called.

Call Example

1
2
3
4
5
6
7
8
9
uint32_t rankSize = 2;
int32_t devices[rankSize] = {0, 1};
HcclComm comms[rankSize];
// Initialize the communicator.
HcclCommInitAll(rankSize, devices, comms);
// Destroy the communicator.
for (uint32_t i = 0; i < rankSize; i++) {
    HcclCommDestroy(comms[i]);
}