对于某些场景Matmul内部需要额外占用VECCALC空间,如果用户希望在算子中复用这个额外占用的VECCALC空间,则该空间需要用户预留,并申请好LocalTensor,将其起始物理地址传入给Matmul。具体需要申请的VECCALC临时空间大小由tiling接口MatmulGetTmpBufSize给出,满足以下几个条件之一就需要使用该接口传入UB临时空间:
请在Iterate或者IterateAll之前调用该接口。
获取到的UB临时空间大小以byte为单位。
1 | __aicore__ inline void SetLocalWorkspace(const LocalTensor<uint8_t>& tmpBuffer) |
参数名 |
输入/输出 |
描述 |
---|---|---|
tmpBuffer |
输入 |
临时空间,由用户申请并管理,Position为VECCALC |
无
Atlas推理系列产品AI Core
无
REGIST_MATMUL_OBJ(&pipe, GetSysWorkSpacePtr(), mm, &tiling); mm.SetLocalWorkspace(mmFormatUb); //设置临时VECCALC空间 mm.SetTensorA(gm_a); mm.SetTensorB(gm_b); mm.SetBias(gm_bias); mm.IterateAll(gm_c);