Skip to main content

用户自定义归约算子

以下函数是 MCCL 提供的公共 API,用于创建和销毁自定义归约算子,以便在归约类集合操作中使用。

mcclRedOpCreatePreMulSum

mcclResult_t mcclRedOpCreatePreMulSum(mcclRedOp_t* op, void* scalar, mcclDataType_t datatype, mcclScalarResidence_t residence, mcclComm_t comm)

创建一个新的归约算子,在与其他节点进行求和归约之前,先在本地将输入值乘以指定的标量。输入值与标量的数据类型均为 datatype。该算子只能用于与 comm 通信器和 datatype 数据类型相匹配的集合操作。

residence 参数用于指示 scalar 所指内存的位置与使用方式:

  • 若为 mcclScalarHostImmediate,则表示主机将在函数返回前立即解引用该标量;
  • 若为 mcclScalarDevice,则表示设备将在执行归约集合操作期间解引用。

函数返回时,所创建的新归约算子的句柄将存储在 op 中。

mcclRedOpDestroy

mcclResult_t mcclRedOpDestroy(mcclRedOp_t op, mcclComm_t comm)

销毁归约算子 op。该算子必须是通过 mcclRedOpCreatePreMulSum 函数,使用相同的通信器 comm 创建的。一旦最后一个使用该算子的 MCCL 函数返回后,即可销毁该算子。