- 接口功能:对mHC架构中的矩阵执行Sinkhorn迭代归一化变换,最终得到双随机矩阵;支持输出迭代过程中的中间归一化结果(norm_out)和求和结果(sum_out),用于反向梯度计算。
Sinkhorn变换共执行次迭代,迭代过程中生成中间归一化结果和求和结果,最终输出最后一次迭代的作为变换结果。
第一次迭代(初始化):
第次迭代():
最终输出
🔍 符号说明
算子采用两段式接口调用:需先调用[object Object]获取计算所需的Device侧内存大小,再调用[object Object]执行实际计算。
[object Object]
[object Object]
参数说明
[object Object]undefined
返回值
返回
[object Object]状态码,第一段接口主要完成入参校验,异常场景如下:[object Object]undefined
确定性计算
- aclnnMhcSinkhorn默认采用确定性实现,相同输入多次调用结果一致。
公共约束
- 输入约束:
- 输入Tensor
[object Object]为空,报错[object Object]; - 所有输入/输出Tensor的数据格式仅支持
[object Object]; - 仅支持
[object Object]数据类型,不支持其他精度(如FLOAT16/DOUBLE)。 - 输入-inf/inf/nan/,输出nan/nan/nan。
- 内存约束:
- Workspace内存需在Device侧申请,且大小需严格匹配第一段接口返回值;
规格约束
[object Object]undefined
以下为C++调用示例,需结合AscendCL环境编译运行,具体流程参考。
[object Object]