文档
注册

SetSysWorkSpace

功能说明

框架需要使用的worksapce称之为系统workspace。在进行融合算子编程时,由于框架通信机制需要使用到worksapce,也就是系统workspace,所以在该场景下,开发者要调用该接口,设置系统workspace的指针。

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

// 用户自定义的tiling函数
static ge::graphStatus TilingFunc(gert::TilingContext* context)
{
    AddApiTiling tiling;
    ...
    size_t usrSize = 256; // 设置用户需要使用的workspace大小。
    // 如需要使用系统workspace需要调用GetLibApiWorkSpaceSize获取系统workspace的大小。
    auto ascendcPlatform = platform_ascendc:: PlatformAscendC(context->GetPlatformInfo());
    uint32_t sysWorkspaceSize = ascendcPlatform.GetLibApiWorkSpaceSize();
    size_t *currentWorkspace = context->GetWorkspaceSizes(1); // 通过框架获取workspace的指针,GetWorkspaceSizes入参为所需workspace的块数。当前限制使用一块。
    currentWorkspace[0] = usrSize + sysWorkspaceSize; // 设置总的workspace的数值大小,总的workspace空间由框架来申请并管理。
    ...
}

函数原型

__aicore__ inline void SetSysWorkSpace(GM_ADDR workspace)

参数说明

表1 接口参数说明

参数名称

输入/输出

描述

workspace

输入

核函数传入的workspace的指针,包括系统workspace和用户使用的workspace。

支持的型号

Atlas 训练系列产品

Atlas推理系列产品(Ascend 310P处理器)AI Core

Atlas A2训练系列产品/Atlas 800I A2推理产品

注意事项

返回值

调用示例

template<typename aType, typename bType, typename cType, typename biasType>
__aicore__ inline void MatmulLeakyKernel<aType, bType, cType, biasType>::Init(
    GM_ADDR a, GM_ADDR b, GM_ADDR bias, GM_ADDR c, GM_ADDR workspace, const TCubeTiling& tiling, float alpha)
{
    // 融合算子的初始化操作
    // ...
    SetSysWorkspace(workspace);
    if (GetSysWorkSpacePtr() == nullptr) {
        return;
    }
}
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词