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