11bd4fe43Sopenharmony_ci/*
21bd4fe43Sopenharmony_ci * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License.
51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at
61bd4fe43Sopenharmony_ci *
71bd4fe43Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81bd4fe43Sopenharmony_ci *
91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and
131bd4fe43Sopenharmony_ci * limitations under the License.
141bd4fe43Sopenharmony_ci */
151bd4fe43Sopenharmony_ci
161bd4fe43Sopenharmony_ci#ifndef __HI_RUNTIME_API__
171bd4fe43Sopenharmony_ci#define __HI_RUNTIME_API__
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ci#include "hi_type.h"
201bd4fe43Sopenharmony_ci#include "hi_runtime_comm.h"
211bd4fe43Sopenharmony_ci
221bd4fe43Sopenharmony_ci#ifdef __cplusplus
231bd4fe43Sopenharmony_ci#if __cplusplus
241bd4fe43Sopenharmony_ciextern "C" {
251bd4fe43Sopenharmony_ci#endif
261bd4fe43Sopenharmony_ci#endif /* __cplusplus */
271bd4fe43Sopenharmony_ci
281bd4fe43Sopenharmony_ci/* ****************************************************************************
291bd4fe43Sopenharmony_ci*   Prototype    : HI_SVPRT_RUNTIME_Init
301bd4fe43Sopenharmony_ci*   Description  : Environment Init
311bd4fe43Sopenharmony_ci*   Parameters   : HI_CHAR *pszGlobalSetting            GlobalSetting for runtime
321bd4fe43Sopenharmony_ci                                                        if NULL, use default
331bd4fe43Sopenharmony_ci                   HI_RUNTIME_MEM_CTRL_S *pstMemCtrl    Memory Controll by alloc,flush,and free
341bd4fe43Sopenharmony_ci                                                        if NULL, use mmz
351bd4fe43Sopenharmony_ci*   Return Value : HI_SUCCESS: Success; Error codes: Failure.
361bd4fe43Sopenharmony_ci**************************************************************************** */
371bd4fe43Sopenharmony_ciHI_S32 HI_SVPRT_RUNTIME_Init(IN const HI_CHAR* pszGlobalSetting, IN HI_RUNTIME_MEM_CTRL_S* pstMemCtrl);
381bd4fe43Sopenharmony_ci
391bd4fe43Sopenharmony_ci/* ****************************************************************************
401bd4fe43Sopenharmony_ci*   Prototype    : HI_SVPRT_RUNTIME_LoadModelGroupSync
411bd4fe43Sopenharmony_ci*   Description  : Load model
421bd4fe43Sopenharmony_ci*   Parameters   : HI_CHAR*                   pstModelGroupConfig    Input Group Config
431bd4fe43Sopenharmony_ci                   HI_RUNTIME_GROUP_INFO_S*   pstModelGroupAttr      Group Info, such as wk,cop,connector
441bd4fe43Sopenharmony_ci                   HI_RUNTIME_GROUP_HANDLE*   phGroupHandle          output Group Handle
451bd4fe43Sopenharmony_ci*   Return Value : HI_SUCCESS: Success; Error codes: Failure.
461bd4fe43Sopenharmony_ci**************************************************************************** */
471bd4fe43Sopenharmony_ciHI_S32 HI_SVPRT_RUNTIME_LoadModelGroup(IN const HI_CHAR* pstModelGroupConfig,
481bd4fe43Sopenharmony_ci    IN HI_RUNTIME_GROUP_INFO_S* pstModelGroupAttr, OUT HI_RUNTIME_GROUP_HANDLE* phGroupHandle);
491bd4fe43Sopenharmony_ci
501bd4fe43Sopenharmony_ci/* ****************************************************************************
511bd4fe43Sopenharmony_ci * Prototype    : HI_SVPRT_RUNTIME_ForwardGroupSync
521bd4fe43Sopenharmony_ci * Description  : Perform prediction on input sample(s), and output responses for corresponding sample(s), Sync Fuction
531bd4fe43Sopenharmony_ci * Parameters   : HI_RUNTIME_GROUP_HANDLE               hGroupHandle    Group Handle generated by
541bd4fe43Sopenharmony_ci * HI_SVPRT_RUNTIME_LoadModelGroup HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_PTR   pstSrc           Input Blobs
551bd4fe43Sopenharmony_ci * HI_RUNTIME_GROUP_DST_BLOB_ARRAY_PTR   pstDst           Output Blobs.
561bd4fe43Sopenharmony_ci * Return Value: HI_SUCCESS: Success; Error codes: Failure.
571bd4fe43Sopenharmony_ci * *************************************************************************** */
581bd4fe43Sopenharmony_ciHI_S32 HI_SVPRT_RUNTIME_ForwardGroupSync(IN const HI_RUNTIME_GROUP_HANDLE hGroupHandle,
591bd4fe43Sopenharmony_ci    IN const HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_PTR pstSrc, OUT HI_RUNTIME_GROUP_DST_BLOB_ARRAY_PTR pstDst,
601bd4fe43Sopenharmony_ci    IN HI_U64 u64SrcId);
611bd4fe43Sopenharmony_ci
621bd4fe43Sopenharmony_ci/* ****************************************************************************
631bd4fe43Sopenharmony_ci*   Prototype    : HI_SVPRT_RUNTIME_ForwardGroupASync
641bd4fe43Sopenharmony_ci*   Description  : Perform prediction on input sample(s), and output responses for corresponding sample(s),ASync
651bd4fe43Sopenharmony_ciFunction
661bd4fe43Sopenharmony_ci*   Parameters   : HI_RUNTIME_GROUP_HANDLE               hGroupHandle    Group Handle generated by
671bd4fe43Sopenharmony_ciHI_SVPRT_RUNTIME_LoadModelGroup can't be NULL
681bd4fe43Sopenharmony_ci*                  HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_PTR   pstSrc      Input Blobs
691bd4fe43Sopenharmony_ci*                  HI_RUNTIME_GROUP_DST_BLOB_ARRAY_PTR   pstDst      Output Blobs.
701bd4fe43Sopenharmony_ci*                  HI_U64                                u64SrcId    Frame id set by user,
711bd4fe43Sopenharmony_ci*                                                                    can be duplicate number
721bd4fe43Sopenharmony_ci*                  HI_RUNTIME_Forward_CallBack           pCbFun      Callback for ForwardGroup,
731bd4fe43Sopenharmony_ci*                                                                    can't be null
741bd4fe43Sopenharmony_ci*   Return Value: HI_SUCCESS: Success; Error codes: Failure.
751bd4fe43Sopenharmony_ci**************************************************************************** */
761bd4fe43Sopenharmony_ciHI_S32 HI_SVPRT_RUNTIME_ForwardGroupASync(IN const HI_RUNTIME_GROUP_HANDLE hGroupHandle,
771bd4fe43Sopenharmony_ci    IN const HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_PTR pstSrc, OUT HI_RUNTIME_GROUP_DST_BLOB_ARRAY_PTR pstDst,
781bd4fe43Sopenharmony_ci    IN HI_U64 u64SrcId, IN HI_RUNTIME_Forward_Callback pCbFun);
791bd4fe43Sopenharmony_ci
801bd4fe43Sopenharmony_ci/* ****************************************************************************
811bd4fe43Sopenharmony_ci * Prototype    : HI_SVPRT_RUNTIME_UnloadModel
821bd4fe43Sopenharmony_ci * Description  : Unload model
831bd4fe43Sopenharmony_ci * Parameters   : HI_RUNTIME_GROUP_HANDLE   hGroupHandle           Group Handle generated by
841bd4fe43Sopenharmony_ci * HI_SVPRT_RUNTIME_LoadModelGroup can not be NULL
851bd4fe43Sopenharmony_ci *
861bd4fe43Sopenharmony_ci * Return Value : HI_SUCCESS: Success; Error codes: Failure.
871bd4fe43Sopenharmony_ci * *************************************************************************** */
881bd4fe43Sopenharmony_ciHI_S32 HI_SVPRT_RUNTIME_UnloadModelGroup(IN const HI_RUNTIME_GROUP_HANDLE hGroupHandle);
891bd4fe43Sopenharmony_ci
901bd4fe43Sopenharmony_ci/* ****************************************************************************
911bd4fe43Sopenharmony_ci * Prototype    : HI_SVPRT_RUNTIME_deInit
921bd4fe43Sopenharmony_ci * Description  : Environment DeInit
931bd4fe43Sopenharmony_ci * Return Value : HI_SUCCESS: Success; Error codes: Failure.
941bd4fe43Sopenharmony_ci * *************************************************************************** */
951bd4fe43Sopenharmony_ciHI_S32 HI_SVPRT_RUNTIME_DeInit();
961bd4fe43Sopenharmony_ci
971bd4fe43Sopenharmony_ci#ifdef __cplusplus
981bd4fe43Sopenharmony_ci#if __cplusplus
991bd4fe43Sopenharmony_ci}
1001bd4fe43Sopenharmony_ci#endif
1011bd4fe43Sopenharmony_ci#endif /* __cplusplus */
1021bd4fe43Sopenharmony_ci
1031bd4fe43Sopenharmony_ci#endif /* __HI_RUNTIME_API__ */
104