Iterate
产品支持情况
产品 |
是否支持 |
---|---|
√ |
|
√ |
|
x |
|
x |
|
x |
|
x |
|
x |
功能说明
每次调用Iterate时,会计算出一个baseM * baseN的结果矩阵,并将该结果写入L0C Buffer。接口内部会维护迭代进度,每次调用后,矩阵的起始地址将进行偏移。如果传入的数据未对齐存在尾块,则在最后一次迭代中输出尾块的计算结果。本接口需与GetTensorC接口配合使用;在调用本接口后,再调用GetTensorC接口,L0C Buffer中的数据将被写入目标地址。
函数原型
1 2 | template <bool sync = true> __aicore__ inline bool Iterate(bool enPartialSum = false) |
参数说明
参数名 |
输入/输出 |
描述 |
---|---|---|
enPartialSum |
输入 |
预留参数,用户无需感知。 |
返回值说明
false:设置的SingleShape上的所有数据已经算完。
true:数据仍在迭代计算中。
约束说明
- Iterate接口必须在初始化接口及输入输出配置接口之后进行调用,完成卷积反向计算,调用顺序如下。
1 2 3 4 5 6
Init(...); ... // 输入输出配置 while (Iterate()) { GetTensorC(); } End();
- 在多轮循环计算的场景中,在单次循环里计算单核SetSingleShape设置的数据大小。每次单核计算完成后,必须将Conv3DBackpropInput对象的ctx.isFirstIter_设置为true,以确保下一轮循环中的单核计算能够正确进行。
调用示例
1 2 3 4 5 | while (gradInput_.Iterate()) { gradInput_.GetTensorC(gradInputGm_[offsetC_]); } // SingleShape计算完成后,需要将ctx.isFirstIter_设置为true,确保下一块SingleShape的正确计算 gradInput_.ctx.isFirstIter_ = true; |
父主题: Conv3DBackpropInput