* @note If this function is not called, default values are used.
*/
int setNPU_constraint (npudev_h dev, uint32_t model_id,
- npuConstraint constraint);
+ npu_constraint constraint);
/**
* @brief Execute inference.
#define writeNPU_logError(tag, format, ...) \
writeNPU_log (NPU_LOG_ERROR, tag, format, ##__VA_ARGS__)
+/** NPU Request/Submit Interface (decoupled version for runNPU_* APIs) */
+
+/**
+ * @brief Create NPU inferance request
+ * @param[in] dev The NPU device handle
+ * @param[in] model_id The model to be inferred.
+ * @param[out] req_id The ID of created request
+ * @return 0 if no error. Otherwise a negative errno
+ * @note the created request is not submitted until runNPU_request is called
+ */
+int createNPU_request (npudev_h dev, uint32_t model_id, int *req_id);
+
+/**
+ * @brief Set request's input/output data
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] input The input data buffers
+ * @param[in] in_info The input data info (format, type)
+ * @param[in] output The output data buffers
+ * @param[in] out_info The output data info (format, type)
+ * @return 0 if no error. Otherwise a negative errno
+ * @note The data and its data info are user-expected ones. When data format/type are
+ * different from the model-assumed ones, npu-engine performs data manipulation
+ * internally (e.g., NHWC <-> TRIV2).
+ */
+int setNPU_requestData (npudev_h dev, int req_id, input_buffers *input,
+ tensors_data_info *in_info, output_buffers *output,
+ tensors_data_info *out_info);
+
+/**
+ * @brief Set output callback of the request
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] cb The output callback handler
+ * @param[in] [nullable] data The data to pass to callback handler
+ * @return 0 if no error. Otherwise a negative errno
+ */
+int setNPU_requestCallback (npudev_h dev, int req_id, npuOutputNotify cb,
+ void *data);
+
+/**
+ * @brief Set the request's inference mode
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] mode Configures how this inference works.
+ * @return 0 if no error. Otherwise a negative errno
+ */
+int setNPU_requestMode (npudev_h dev, int req_id, npu_infer_mode mode);
+
+/**
+ * @brief [OPTIONAL] Set the request's inference mode
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] constraint inference constraint (e.g., timeout, priority)
+ * @return 0 if no error. Otherwise a negative errno
+ * @note if this is not called, the default values are used (see typedef.h).
+ */
+int setNPU_requestConstraint (npudev_h dev, int req_id,
+ npu_constraint constraint);
+
+/**
+ * @brief [OPTIONAL] Set the request's VD NPU manager parameter
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] param npumgr parameter
+ * @return 0 if no error. Otherwise a negative errno
+ */
+int setNPU_requestNpumgrParam (npudev_h dev, int req_id, npumgr_param param);
+
+/**
+ * @brief Submit the request to the NPU
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @return 0 if no error. Otherwise a negative errno
+ */
+int submitNPU_request (npudev_h dev, int req_id);
+
#if defined(__cplusplus)
}
#endif
return ret;
}
+
+/**
+ * @brief Create NPU inferance request
+ * @param[in] dev The NPU device handle
+ * @param[in] model_id The model to be inferred.
+ * @param[out] req_id The ID of created request
+ * @return 0 if no error. Otherwise a negative errno
+ * @note the created request is not submitted until runNPU_request is called
+ */
+int
+createNPU_request (npudev_h dev, uint32_t model_id, int *req_id) {
+ /* NYI */
+ return -EPERM;
+}
+
+/**
+ * @brief Set request's input/output data
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] input The input data buffers
+ * @param[in] in_info The input data info (format, type)
+ * @param[in] output The output data buffers
+ * @param[in] out_info The output data info (format, type)
+ * @return 0 if no error. Otherwise a negative errno
+ * @note The data and its data info are user-expected ones. When data format/type are
+ * different from the model-assumed ones, npu-engine performs data manipulation
+ * internally (e.g., NHWC <-> TRIV2).
+ */
+int
+setNPU_requestData (npudev_h dev, int req_id, input_buffers *input,
+ tensors_data_info *in_info, output_buffers *output,
+ tensors_data_info *out_info) {
+ /* NYI */
+ return -EPERM;
+}
+
+/**
+ * @brief Set output callback of the request
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] cb The output callback handler
+ * @param[in] [nullable] data The data to pass to callback handler
+ * @return 0 if no error. Otherwise a negative errno
+ */
+int
+setNPU_requestCallback (npudev_h dev, int req_id, npuOutputNotify cb,
+ void *data) {
+ /* NYI */
+ return -EPERM;
+}
+
+/**
+ * @brief Set the request's inference mode
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] mode Configures how this inference works.
+ * @return 0 if no error. Otherwise a negative errno
+ */
+int
+setNPU_requestMode (npudev_h dev, int req_id, npu_infer_mode mode) {
+ /* NYI */
+ return -EPERM;
+}
+
+/**
+ * @brief [OPTIONAL] Set the request's inference mode
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] constraint inference constraint (e.g., timeout, priority)
+ * @return 0 if no error. Otherwise a negative errno
+ * @note if this is not called, the default values are used (see typedef.h).
+ */
+int
+setNPU_requestConstraint (npudev_h dev, int req_id, npu_constraint constraint) {
+ /* NYI */
+ return -EPERM;
+}
+
+/**
+ * @brief [OPTIONAL] Set the request's VD NPU manager parameter
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @param[in] param npumgr parameter
+ * @return 0 if no error. Otherwise a negative errno
+ */
+int
+setNPU_requestNpumgrParam (npudev_h dev, int req_id, npumgr_param param) {
+ /* NYI */
+ return -EPERM;
+}
+
+/**
+ * @brief Submit the request to the NPU
+ * @param[in] dev The NPU device handle
+ * @param[in] req_id The request ID
+ * @return 0 if no error. Otherwise a negative errno
+ */
+int
+submitNPU_request (npudev_h dev, int req_id) {
+ /* NYI */
+ return -EPERM;
+}