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