SetWorkspace
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:不支持
- Atlas 推理系列产品AI Core:不支持
- Atlas 推理系列产品Vector Core:不支持
- Atlas 训练系列产品:不支持
- Kirin X90:支持
功能说明
Iterate计算的异步场景,调用本接口申请一块临时空间来缓存计算结果,然后调用GetTensorC时会在该临时空间中获取C的矩阵分片。
IterateNBatch计算时,调用本接口申请一块临时空间来缓存计算结果,然后根据同步或异步场景进行其它接口的调用。
函数原型
建议用户使用GlobalTensor类型传入:
Text
template <class T> __aicore__ inline void SetWorkspace(GlobalTensor<T>& addr)
Text
template <class T> __aicore__ inline void SetWorkspace(__gm__ const T* addr, int size)
参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| addr | 输入 | 用户传入的GM上的workspace空间,GlobalTensor类型。 |
| addr | 输入 | 用户传入的GM上的workspace空间,GM地址类型。 |
| size | 输入 | 传入GM地址时,需要配合传入元素个数。 |
返回值说明
无
约束说明
当开启MixDualMaster(双主模式)场景时,即模板参数enableMixDualMaster设置为true,不支持使用该接口。
调用示例
Text
REGIST_MATMUL_OBJ(&pipe, GetSysWorkSpacePtr(), mm, &tiling);
mm.SetWorkspace(workspaceGM); //设置异步时使用的临时空间
mm.SetTensorA(gm_a);
mm.SetTensorB(gm_b);
if (tiling.isBias) {
mm.SetBias(biasGlobal);
}
mm.template Iterate<false>();
for (int i = 0; i < singleCoreM/baseM * singleCoreN/baseN; ++i) {
mm.template GetTensorC<false>(ub_c);
}