Skip to main content

acltdtDequeueData

acltdtCreateQueue

函数功能

创建队列。同步接口。

函数原型

aclError acltdtCreateQueue(const acltdtQueueAttr *attr, uint32_t *qid)

参数说明

参数名输入/输出说明
attr输入队列属性配置信息的指针。 需提前调用acltdtCreateQueueAttr接口创建acltdtQueueAttr类型的数据,再调用acltdtSetQueueAttr接口设置队列属性值(例如,队列名)。 若该参数为nullptr时,则使用队列属性默认值,即队列名系统自动分配,队列深度默认为8。
qid输出队列ID的指针。

返回值说明

返回0表示成功,返回其它值表示失败。

父主题: 共享队列管理

acltdtDestroyQueue

函数功能

销毁通过acltdtCreateQueue接口创建的队列。同步接口。

函数原型

aclError acltdtDestroyQueue(uint32_t qid)

参数说明

参数名输入/输出说明
qid输入指定需销毁的队列。

返回值说明

返回0表示成功,返回其它值表示失败。

父主题: 共享队列管理

acltdtEnqueueData

函数功能

向队列中添加数据。同步接口。

函数原型

aclError acltdtEnqueueData(uint32_t qid, const void *data, size_t dataSize, const void *userData, size_t userDataSize, int32_t timeout, uint32_t rsv);

参数说明

参数名输入/输出说明
qid输入需要添加数据的队列。 队列需提前调用acltdtCreateQueue接口创建。
data输入内存数据指针,支持Host侧或Device侧的内存。
dataSize输入内存数据大小,单位为Byte。
userData输入用户自定义数据指针。 若用户没有自定义数据,则传nullptr。
userDataSize输入用户自定义数据大小(<=96Byte)。 若用户没有自定义数据,则传0。
timeout输入等待超时时间。当队列满时,如果向队列中添加数据,系统内部会根据设置的等待超时时间来决定如何处理。 该参数取值范围如下:
- -1:阻塞方式,一直等待直到数据成功加入队列。
- 0:非阻塞方式(仅支持device场景,host场景无效),当队列满时,直接返回队列满这个错误,这时由用户自行设定重试间隔。
- >0:配置具体的超时时间,单位为毫秒。队列满时,等待达到超时时间后返回报错。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的超时时间为1ms,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。
rsv输入预留参数,暂不支持。当前可设置为0。

返回值说明

返回0表示成功,返回其它值表示失败。

父主题: 共享队列管理

acltdtDequeueData

函数功能

从队列中获取数据。同步接口。

函数原型

aclError acltdtDequeueData(uint32_t qid, void *data, size_t dataSize, size_t *retDataSize, void *userData, size_t userDataSize, int32_t timeout);

参数说明

参数名输入/输出说明
qid输入需要从哪个队列中获取数据。 队列需提前调用acltdtCreateQueue接口创建。
data输入内存数据指针,支持Host侧或Device侧的内存。
dataSize输入内存数据大小,单位为Byte。
retDataSize输入&输出返回实际数据大小,单位为Byte。
userData输入用户自定义数据指针。 若用户没有自定义数据,则传nullptr。
userDataSize输入用户自定义数据大小(<=96Byte)。 若用户没有自定义数据,则传0。
timeout输入等待超时时间。当队列空时,如果从队列中获取数据,系统内部会根据设置的等待超时时间来决定如何处理。 该参数取值范围如下:
- -1:阻塞方式,一直等待直到队列有数据后返回。
- 0:非阻塞方式(仅支持device场景,host场景无效),当队列空时,直接返回队列空这个错误,这时由用户自行设定重试间隔。
- >0:配置具体的超时时间,单位为毫秒。队列空时,等待达到超时时间后返回报错。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的超时时间为1ms,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。

返回值说明

返回0表示成功,返回其它值表示失败。

父主题: 共享队列管理

acltdtEnqueue

函数功能

向队列中添加数据,存放数据的内存必须调用acltdtAllocBuf接口申请。同步接口。

Atlas 200/500 A2推理产品,不支持该接口。

函数原型

aclError acltdtEnqueue(uint32_t qid, acltdtBuf buf, int32_t timeout)

参数说明

参数名输入/输出说明
qid输入需要添加数据的队列。 队列需提前调用acltdtCreateQueue接口创建。
buf输入共享Buffer指针。 该内存必须提前调用acltdtAllocBuf接口申请。
timeout输入等待超时时间。当队列满时,如果向队列中添加数据,系统内部会根据设置的等待超时时间来决定如何处理。 该参数取值范围如下:
- -1:阻塞方式,一直等待直到数据成功加入队列。
- 0:非阻塞方式,当队列满时,直接返回队列满这个错误,这时由用户自行设定重试间隔。
- >0:配置具体的超时时间,单位为毫秒。队列满时,等待达到超时时间后返回报错。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的超时时间为1ms,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。

返回值说明

返回0表示成功,返回其它值表示失败。

父主题: 共享队列管理

acltdtDequeue

函数功能

从队列中获取数据。同步接口。

Atlas 200/500 A2推理产品,不支持该接口。

函数原型

aclError acltdtDequeue(uint32_t qid, acltdtBuf *buf, int32_t timeout)

参数说明

参数名输入/输出说明
qid输入需要从哪个队列中获取数据。 队列需提前调用acltdtCreateQueue接口创建。
buf输出共享Buffer指针。
timeout输入等待超时时间。当队列空时,如果从队列中获取数据,系统内部会根据设置的等待超时时间来决定如何处理。 该参数取值范围如下:
- -1:阻塞方式,一直等待直到队列有数据后返回。
- 0:非阻塞方式,当队列空时,直接返回队列空这个错误,这时由用户自行设定重试间隔。
- >0:配置具体的超时时间,单位为毫秒。队列空时,等待达到超时时间后返回报错。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的超时时间为1ms,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。

返回值说明

返回0表示成功,返回其它值表示失败。

父主题: 共享队列管理

acltdtBindQueueRoutes

函数功能

当应用存在数据一对多分发时,通过本接口绑定队列间数据转发路由关系。同步接口。

如下图所示,可以建立两条路由关系Q1->Q2, Q1->Q3。

约束说明

  • 数据一对多分发时,传递的共享Buffer数据是无锁的,消费者不能对数据进行inplace操作,如上图所示消费者1对共享数据的修改会导致消费者2访问的数据发生变化。
  • 会对添加的队列路由关系的进行是否成环校验,不允许成环。
  • 不支持多线程并发调用。

函数原型

aclError acltdtBindQueueRoutes(acltdtQueueRouteList *qRouteList)

参数说明

参数名输入/输出说明
qRouteList输入/输出路由关系数组的指针,接口调用完成后返回路由绑定结果。 需提前调用acltdtCreateQueueRouteList接口创建acltdtQueueRouteList类型的数据,再调用acltdtAddQueueRoute接口添加路由关系。

返回值说明

返回0表示成功,返回其它值表示失败。

只有当所有队列关系绑定成功且路由状态正常时,本接口才会返回成功;任何一条绑定失败,本接口返回失败,如果您需要知道具体哪个路由关系绑定失败,您可以先调用acltdtGetQueueRoute接口从路由关系数组中获取每一个路由关系,再调用acltdtGetQueueRouteParam接口查询绑定关系状态。

父主题: 共享队列管理

在线提单