*** API *** The ElcoreNN API consists of the following parts: * ``elcorenn/elcorenn.h``: ElcoreNN CPU library API. ElcoreNN CPU library API ======================== ``elcorenn/elcorenn.h`` defines the ElcoreNN CPU library API functions. .. doxygentypedef:: ENNModelId ``ENNModelId`` is a model descriptor. That descriptor refers to the model loaded into **DSP** (Elcore50) memory. Use LoadModel function to easily load model into DSP memory. .. doxygenenum:: ENNDataType ``ENNDataType`` is a data type enumerator. It describes the types of input data used in InvokeModel function. It also sets type of calculations during inference. .. doxygenenum:: ENNHeapSize .. doxygenfunction:: InitBackend(ENNHeapSize dsp_heap) .. doxygenfunction:: InitBackend(uint32_t devices_count, uint32_t* devices, ENNHeapSize dsp_heap) .. doxygenfunction:: ReleaseDevice .. doxygenfunction:: LoadModel(const char* model_json, const char* model_weights, ENNDataType optimization) The function takes paths for model description and model weights files. Optional parameter optimization is used for model data type conversion. Available two data types: float32 (model loaded without changes) and float16 (model optimized for DSP inference), default value is float16. .. doxygenfunction:: GetInputsNumber .. doxygenfunction:: GetOutputsNumber .. doxygenfunction:: GetInputName .. doxygenfunction:: GetInputShape .. doxygenfunction:: GetOutputName .. doxygenfunction:: GetOutputShape .. doxygenfunction:: InvokeModel(ENNModelId model_id, void** input_data, ENNDataType* input_data_type, float** output_data, uint32_t batch_size) The function takes model inputs as an arrays of types defined in input_data_type array and puts network's result into a float arrays. .. doxygenfunction:: InvokeModel(ENNModelId model_id, float** input_data, float** output_data, uint32_t batch_size) The function takes model inputs as a float arrays and puts network's result into a float arrays. .. doxygenfunction:: InvokeModel(ENNModelId model_id, int* input_dmabuf_fd_array, float** output_data, uint32_t batch_size) The function takes model inputs as integer arrays of dmabuf file descriptors and puts network's result into a float arrays. (Limitation: only one model input, input data should be float). .. doxygenfunction:: InvokeModel(ENNModelId model_id, int* input_dmabuf_fd_array, int* output_dmabuf_fd_array, uint32_t batch_size) The function takes model inputs as integer arrays of dmabuf file descriptors and puts network's result into a dmabufs. (Limitation: only one model input, only one model output, input data should be float). .. note:: ElcoreNN uses the data parallelization paradigm. Input data distributes between DSP cores by batch dimension. .. doxygenfunction:: SaveModelStatisticToCSV During inference, ElcoreNN collects number of cores cycles instructions for each layer. This can be useful for performance analysis.