Hiva::CreateNnEngine
函数功能
创建NN引擎,加载指定的模型文件,对inTopicInfo发布的数据执行推理,并将推理的结果以outTopicInfo的形式发布出来。
函数原型
uint32_t Hiva::CreateNnEngine(const std::string& engineName, const EngineAttr& engineAttr, const NnTopicInfo& inTopicInfo, const NnTopicInfo& outTopicInfo)
参数说明
参数名 |
输入/输出 |
说明 |
||
---|---|---|---|---|
engineName |
输入 |
指推理引擎的名字,必须唯一、不能为空,不能超过128字节,不能包含 '\'、'*'。 |
||
engineAttr |
输入 |
指推理引擎的属性,包括推理模型的路径、所在分组、模型优先级等。
|
||
inTopicInfo |
输入 |
模型输入数据的Topic名称(vector结构)及queue size,所有输入数据拥有相同的队列长度,开启队列流控和写覆盖。topicVec中的topic name首字母必须为'/'。 |
||
outTopicInfo |
输出 |
模型输出数据的topic名称(vector结构)及queue size,所有输出数据拥有相同的队列长度,关闭队列流控和写覆盖。topicVec中的topic name首字母必须为'/'。 |
返回值
返回uint32_t类型,成功返回HIVA_SUCCESS,该值为0;其他值为失败。
使用说明
通过调用此接口,APP可以将inTopicInfo发布的数据传递给NN进行异步推理,并将推理的结果以outTopicInfo的形式发布出来。
- 在调用此接口之前,APP需要先进行inTopicInfo注册,避免在调用此接口之前执行inTopicInfo的Publish操作。
- 在调用此接口之后,APP需要对outTopicInfo执行Subscribe操作。
1 2 3 4 | typedef struct NnTopicInfo_{ const std::vector<std::string> topicVec; const uint32_t queueSize; // queueSize的范围1-127 }NnTopicInfo; |
注意事项
- 本接口不可重入,同步接口。
- 对于同一个inTopicInfo的数据,可通过此接口创建多个不同的NNEngine执行推理,但需要确保使用不同的模型和outTopicInfo。
- inTopicInfo发布的数据需要采用buffer管理的接口申请共享内存,并采用Publish接口发布。
- outTopicInfo需要使用Subscriber接口订阅。
- NN推理完成后,会对inTopicInfo发布的数据执行释放操作;同一个数据多个推理时,会在最后一个推理完成后释放。
- NN推理完成后,会调用订阅outTopicInfo的回调,回调中传入的是Tensor类型的共享内存指针,此共享内存会在回调完成后由框架释放。
- 本接口非NodeHandle成员函数。
模型分组
模型分组是通过配置文件(yaml文件)来设置各组的属性,配置文件示例如下。如需修改配置文件,需通过CfgMgr接口操作(可参见配置管理相关接口)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | AIGroups: group0: aicore_number: 8 aivector_number: 4 sdma_number: 255 # 代表使用默认值 aicpu_number: 255 # 代表使用默认值 active_sq_number: 1 group1: aicore_number: 2 aivector_number: 4 sdma_number: 255 # 代表使用默认值 aicpu_number: 255 # 代表使用默认值 active_sq_number: 1 group2: aicore_number: 0 # 该值为0,则其他值无作用 aivector_number: 0 sdma_number: 255 # 代表使用默认值 aicpu_number: 255 # 代表使用默认值 active_sq_number: 1 group3: aicore_number: 0 # 该值为0,则其他值无作用 aivector_number: 0 sdma_number: 255 # 代表使用默认值 aicpu_number: 255 # 代表使用默认值 active_sq_number: 1 |
父主题: NnEngine接口