HcclCommDestroy

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

Atlas inference products

Atlas training products

For Atlas A2 training products/Atlas A2 inference products, 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.

Description

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; 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.

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]);
}