文档管理中心
我的
您当前正在浏览新版开发者文档中心,目录分类和层级有所调整。点击左侧当前文档分类名称前的“☰”图标,可切换文档分类。 了解新版目录

SetSysWorkSpace

功能说明

框架需要使用的workspace称之为系统workspace。Matmul等高阶API需要系统workspace,所以在使用该类API时,需要调用该接口,设置系统workspace的指针。

在kernel侧调用该接口前,需要在host侧调用GetLibApiWorkSpaceSize获取系统workspace的大小,并在host侧设置workspacesize大小。样例如下。

收起
自动换行
深色代码主题
复制
  1. // 开发者自定义的tiling函数
  2. static ge::graphStatus TilingFunc(gert::TilingContext* context)
  3. {
  4. AddApiTiling tiling;
  5. // ...
  6. size_t usrSize = 256; // 设置开发者需要使用的workspace大小。
  7. // 如需要使用系统workspace需要调用GetLibApiWorkSpaceSize获取系统workspace的大小。
  8. auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo());
  9. uint32_t sysWorkspaceSize = ascendcPlatform.GetLibApiWorkSpaceSize();
  10. size_t *currentWorkspace = context->GetWorkspaceSizes(1); // 通过框架获取workspace的指针,GetWorkspaceSizes入参为所需workspace的块数。当前限制使用一块。
  11. currentWorkspace[0] = usrSize + sysWorkspaceSize; // 设置总的workspace的数值大小,总的workspace空间由框架来申请并管理。
  12. // ...
  13. }

函数原型

收起
自动换行
深色代码主题
复制
  1. __aicore__ inline void SetSysWorkSpace(GM_ADDR workspace)

参数说明

表1 接口参数说明

展开
参数名称 输入/输出 描述
workspace 输入 核函数传入的workspace的指针,包括系统workspace和开发者使用的workspace。

支持的型号

Kirin9020系列处理器

Kirin9030系列处理器

KirinX90系列处理器

注意事项

无

返回值

无

调用示例

收起
自动换行
深色代码主题
复制
  1. template<typename aType, typename bType, typename cType, typename biasType>
  2. __aicore__ inline void MatmulLeakyKernel<aType, bType, cType, biasType>::Init(
  3. GM_ADDR a, GM_ADDR b, GM_ADDR bias, GM_ADDR c, GM_ADDR workspace, const TCubeTiling& tiling, float alpha)
  4. {
  5. // 融合算子的初始化操作
  6. // ...
  7. AscendC::SetSysWorkspace(workspace);
  8. if (GetSysWorkSpacePtr() == nullptr) {
  9. return;
  10. }
  11. }