使用说明

功能说明

本章提供的接口用于实现Device侧的数据队列和数据转发功能。

队列只允许单个消费者或单个生产者操作,Enqueue(指向队列中添加数据)或Dequeue(指从队列中获取数据)时应单线程操作,不支持并发。

典型使用场景举例

用户可以结合本章的队列管理接口、队列方式模型加载接口(指aclmdlLoadFromFileWithQaclmdlLoadFromMemWithQ接口),实现以数据驱动的模型推理功能,该场景下的关键接口调用流程如下:

  1. 调用多次acltdtCreateQueue接口,申请存放模型输入、输出数据的队列,一个输入对应一个输入队列ID,一个输出对应一个输出队列ID。
  2. 调用队列方式模型加载接口(指aclmdlLoadFromFileWithQaclmdlLoadFromMemWithQ接口),传入模型、输入队列ID、输出队列ID等。
  3. 用户申请存放输入、输出数据的内存。
  4. 向内存中读入模型推理的输入数据,并调用acltdtEnqueueData接口将每个输入的数据入队。

    此时,AscendCL内部会根据入队的输入数据自行触发模型推理,推理结束后,结果数据会自行存放到输出队列中。

  5. 调用acltdtDequeueData出队接口,获取每个输出的数据,以便进一步后处理。
  6. 获取推理结果数据后,需及时清理资源,包括释放输入&输出内存、调用aclmdlUnload接口卸载模型、调用acltdtDestroyQueue接口销毁队列等。