GetBatchC
功能说明
调用一次GetBatchC,会获取C矩阵片,该接口可以与IterateNBatch异步接口配合使用。用于在调用IterateNBatch迭代计算后,获取一片std::max(batchA, batchB) * singleCoreM * singleCoreN大小的矩阵分片。
函数原型
1 2 | template <bool sync = true> __aicore__ inline GlobalTensor<DstT> GetBatchC(uint32_t batchA, uint32_t batchB, bool enSequentialWrite = false) |
1 2 | template <bool sync = true> __aicore__ inline void GetBatchC(const LocalTensor<DstT>& c, uint32_t batchA, uint32_t batchB, bool enSequentialWrite = false) |
参数说明
参数名 |
描述 |
|---|---|
sync |
通过该参数设置同步或者异步模式:同步模式设置为true;异步模式设置为false,默认为同步模式。 |
参数名 |
输入/输出 |
描述 |
|---|---|---|
batchA |
输入 |
左矩阵的batch数 |
batchB |
输入 |
右矩阵的batch数 |
enSequentialWrite |
输入 |
输出是否连续存放数据,默认false(非连续写模式) |
c |
输入 |
C矩阵放置于Local Memory的地址,用于保存矩阵分片 |
返回值
GlobalTensor<DstT>,返回计算的矩阵分片。
支持的型号
Atlas A2训练系列产品/Atlas 800I A2推理产品
注意事项
无
调用示例
// 计算需要多Batch计算循环次数
int for_exent = tiling.ALayoutInfoB * tiling.ALayoutInfoN * g_lay / tiling.BatchNum;
mm1.SetTensorA(gm_a[0], isTransposeAIn);
mm1.SetTensorB(gm_b[0], isTransposeBIn);
if (tiling.isBias) {
mm1.SetBias(gm_bias[0]);
}
// 多batch Matmul计算
mm1.template IterateNBatch<false>(for_extent, batchA, batchB, false);
...other compute
for (int i = 0; i <for_exent ; ++i) {
mm.GetBatchC<false>(ubCmatrix);
...other compute
}
父主题: Matmul