更新时间:2021-03-18 GMT+08:00
IAINNNode
NN Node接口,业务提供方实现。IAINNNode类在ai_nn_node.h中定义。
class IAINNNode { public: virtual ~IAINNNode(){} /* * @brief 初始化接口,业务在该接口中实现模型加载或其他初始化动作 * @param [in] model_desc 模型信息,如果不需要模型,则传入空的vector * @param [in] config 配置参数 * @return SUCCESS 成功 * @return 其他 失败 */ virtual AIStatus Init(const AIConfig &config, const std::vector<AIModelDescription> &model_descs = {}) = 0; /* * @brief 设置监听 * @parm [in] 如果listener设置为nullptr,表示process接口为同步调用,否则为异步 * @return SUCCESS 成功 * @return 其他 失败 */ virtual AIStatus SetListener(std::shared_ptr<IAIListener> listener) = 0; /* * @brief 计算接口 * @param [in] context 运行时上下文信息,包含nnnode运行时的一些可变参数配置 * @param [in] in_data 输入数据 * @param [out] out_data 输出数据 * @param [in] timeout 超时时间,同步调用时无效 * @return SUCCESS 成功 * @return 其他 失败 */ virtual AIStatus Process(AIContext &context, const std::vector<std::shared_ptr<IAITensor>> &in_data, std::vector<std::shared_ptr<IAITensor>> &out_data, uint32_t timeout) = 0; /* * @brief 创建输出的Tensor列表 * @param [in] in_data 输入tensor列表,计算输出时可能使用 * @param [out] out_data 输出的tensor列表 * @return SUCCESS 成功 * @return 其他 失败 */ virtual AIStatus CreateOutputTensor( const std::vector<std::shared_ptr<IAITensor>> &in_data, std::vector<std::shared_ptr<IAITensor>> &out_data) { (void)in_data;(void)out_data;return SUCCESS; } /* * @brief 是否可以预分配输出内存,该接口由业务NNNode实现,默认值为true. */ virtual bool IsPreAllocateOutputMem() { return true; } /* * @brief 判断nnnode是否有效 */ virtual AIStatus IsValid() { return SUCCESS; } /* * @brief 查询node 支持的同步方式 * @return BOTH 支持同步异步 * @return ASYNC 仅支持异步 * @return SYNC 仅支持同步 */ virtual AI_NODE_EXEC_MODE GetSupportedExecMode() { return AI_NODE_EXEC_MODE::BOTH; } #ifdef __LITE__ /* * @brief nnnode闲置超时,需要释放的资源,由用户自定义实现,适用于lite场景。如果使用了modelmanger,需要在实现该函数时调用相应modelmanager释放资源的方法IdleRelease */ virtual AIStatus IdleRelease() { return SUCCESS; } /* * @brief nnnode超时后恢复,包含打开设备,加载模型等,由用户自定义实现,适用于lite场景。如果使用了modelmanger,需要在实现该函数时调用相应modelmanager的方法IdleResume */ virtual AIStatus IdleResume() { return SUCCESS; } /* * @brief 设置最大闲置时间,如果超过该时间则自动销毁释放资源,未设置情况下,默认60s * 业务构造函数中调用 * 在AIServiceBase中实现 * @param [in] time 最大闲置时间,单位ms */ virtual void SetMaxIdleTime(const int32_t time) { (void)time;} #endif // __LITE__ /* * @brief 获取业务最大使用内存 * @return 业务最大使用内存大小 */ virtual uint32_t GetMaxUsedMemory() { return 0; } };
父主题: 其他用于编译依赖的接口