CANN/asc-devkit消息空间申请API
2026/5/10 5:13:40 网站建设 项目流程

AllocMessage

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

x

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

功能说明

AIV从消息队列里申请消息空间,用于存放消息结构体,返回当前申请的消息空间的地址。消息队列的深度固定为4,申请消息空间的顺序为自上而下,然后循环。当消息队列指针指向的消息空间为FREE状态时,AllocMessage返回空间的地址,否则循环等待,直到当前空间的状态为FREE。

图 1AllocMessage示意图
![](https://raw.gitcode.com/cann/asc-devkit/raw/0f09e05bd80fac60c9606596c6011b45973c6a0b/docs/api/context/figures/AllocMessage示意图.png "AllocMessage示意图"?utm_source=gitcode_repo_files)

函数原型

template <PipeMode pipeMode = PipeMode::SCALAR_MODE> __aicore__ inline __gm__ CubeMsgType *AllocMessage()

参数说明

表 1模板参数说明

参数名

描述

pipeMode

用于配置发送消息的执行单元。PipeMode类型,其定义如下:

enum class PipeMode : uint8_t { SCALAR_MODE = 0, // Scalar执行单元往GM上写消息。 MTE3_MODE = 1, // 使用MTE3单元往GM上写消息。 MAX }

注意,pipeMode为MTE3_MODE时,后续只能使用PostMessage接口发送消息。同时两个接口AllocMessage与PostMessage的模板参数pipeMode需要相同。

返回值说明

当前申请的消息空间的地址。

约束说明

调用示例

auto queIdx = AscendC::GetBlockIdx(); handle.AssignQueue(queIdx); auto msgPtr = handle.AllocMessage(); // 绑定队列后,从该队列中申请消息空间,消息空间地址为msgPtr。

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询