Hiva::CreateNnEngine
产品支持情况
产品  | 
是否支持  | 
|---|---|
x  | 
|
x  | 
|
√  | 
|
x  | 
|
x  | 
|
x  | 
功能说明
创建NN引擎,加载指定的模型文件,对inTopicInfo发布的数据执行推理,并将推理的结果以outTopicInfo的形式发布出来。
函数原型
1 | 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注册,避免在调用此接口之前执行inTopicInfo的Publish操作。
 - 在调用此接口之后,APP需要对outTopicInfo执行Subscribe操作。
 - 对于同一个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接口