cann/asc-devkit设置系统工作空间

📅 2026/7/17 15:44:48
cann/asc-devkit设置系统工作空间
SetSysWorkSpace【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况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支持Kirin 9030支持功能说明框架需要使用的workspace称之为系统workspace。Matmul Kernel侧接口等高阶API需要系统workspace所以在使用该类API时需要调用该接口设置系统workspace的指针。采用工程化算子开发方式或者kernel直调方式开启HAVE_WORKSPACE编译选项时不需要开发者手动设置框架会自动设置。其他场景下需要开发者调用SetSysWorkSpace进行设置。在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。约束说明无返回值说明无调用示例templatetypename aType, typename bType, typename cType, typename biasType __aicore__ inline void MatmulLeakyKernelaType, bType, cType, biasType::Init( GM_ADDR a, GM_ADDR b, GM_ADDR bias, GM_ADDR c, GM_ADDR workspace, const TCubeTiling tiling, float alpha) { // 融合算子的初始化操作 // ... // workspace为核函数传入的GM指针用于设置系统workspace AscendC::SetSysWorkspace(workspace); if (GetSysWorkSpacePtr() nullptr) { return; } // 后续Matmul指令 ... }【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考