Skip to content

Iterate

产品支持情况

  • Ascend 950PR/Ascend 950DT:不支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持

功能说明

每次调用Iterate时,会计算出一个baseM * baseN的结果矩阵,并将该结果写入L0C Buffer。接口内部会维护迭代进度,每次调用后,矩阵的起始地址将进行偏移。如果传入的数据未对齐存在尾块,则在最后一次迭代中输出尾块的计算结果。本接口需与GetTensorC接口配合使用;在调用本接口后,再调用GetTensorC接口,L0C Buffer中的数据将被写入目标地址。

函数原型

Text
template <bool sync = true>
__aicore__ inline bool Iterate(bool enPartialSum = false)

参数说明

表1 接口参数说明

参数名输入/输出描述
enPartialSum输入预留参数,用户无需感知。

返回值说明

false:设置的SingleShape上的所有数据已经算完。

true:数据仍在迭代计算中。

约束说明

  • Iterate接口必须在初始化接口及输入输出配置接口之后进行调用,完成卷积反向计算,调用顺序如下。

    Text
    Init(...);
    ... // 输入输出配置
    while (Iterate()) {
        GetTensorC();
    }
    End();
    
  • 在多轮循环计算的场景中,在单次循环里计算单核SetSingleShape设置的数据大小。每次单核计算完成后,必须将Conv3DBackpropInput对象的ctx.isFirstIter_设置为true,以确保下一轮循环中的单核计算能够正确进行。

调用示例

Text
while (gradInput_.Iterate()) {
    gradInput_.GetTensorC(gradInputGm_[offsetC_]);
}
// SingleShape计算完成后,需要将ctx.isFirstIter_设置为true,确保下一块SingleShape的正确计算
gradInput_.ctx.isFirstIter_ = true;

免责声明:本站内容由 asc-devkit 仓 master 分支自动编译生成,属于持续开发版本,可能存在缺陷,仅供预览与参考。如需稳定及商用资料,请查阅官方 昇腾社区