AllocMessage
功能说明
AIV申请消息队列的空间,用于存放消息结构体,返回当前申请的消息空间的地址。消息队列的深度固定为4,申请消息空间的顺序为自上而下,然后循环。当消息队列指针指向的消息空间为FREE状态,可以进行AllocMessage,否则不允许分配新的消息空间。
图1 AllocMessage示意图
函数原型
1 2 |
template <PipeMode pipeMode = PipeMode::SCALAR_MODE> __aicore__ inline __gm__ CubeMsgType *AllocMessage() |
参数说明
参数名 |
描述 |
||
---|---|---|---|
pipeMode |
用于配置发送消息的执行单元。PipeMode类型,其定义如下:
注意,pipeMode为MTE3_MODE时,后续只能使用PostMessage接口发送消息。同时两个接口AllocMessage与PostMessage的模板参数pipeMode需要相同。 |
返回值
当前申请的消息空间的地址。
支持的型号
Atlas A2训练系列产品/Atlas 800I A2推理产品
约束说明
无
调用示例
1 2 3 |
auto queIdx = AscendC::GetBlockIdx(); qk.AssignQueue(queIdx); auto msgPtr = qk.AllocMessage(); // 绑定队列后,可以申请到一个消息空间,消息空间地址为msgPtr。 |
父主题: CubeResGroupHandle