blob: 3b955eb497673f067706cc9ec4d4e4dcf77ac3ff [file]
/* Copyright Statement:
*
* This software/firmware and related documentation ("MediaTek Software") are
* protected under relevant copyright laws. The information contained herein
* is confidential and proprietary to MediaTek Inc. and/or its licensors.
* Without the prior written permission of MediaTek inc. and/or its licensors,
* any reproduction, modification, use or disclosure of MediaTek Software,
* and information contained herein, in whole or in part, shall be strictly
* prohibited.
*/
/* MediaTek Inc. (C) 2020. All rights reserved.
*
* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY
* ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY
* THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK
* SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO
* RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN
* FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
* CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER
* WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
* ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER
* TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* The following software/firmware and/or related documentation ("MediaTek
* Software") have been modified by MediaTek Inc. All revisions are subject to
* any receiver's applicable license agreements with MediaTek Inc.
*/
#pragma once
#include <android/log.h>
#include <dlfcn.h>
#include "NeuronAdapter.h"
#define LOAD_ADAPTER_FUNCTION(name) \
static name##_fn fn = reinterpret_cast<name##_fn>(loadAdapterFunction(#name));
#define EXECUTE_ADAPTER_FUNCTION(...) \
if (fn != nullptr) { \
fn(__VA_ARGS__); \
}
#define EXECUTE_ADAPTER_FUNCTION_RETURN_INT(...) \
return fn != nullptr ? fn(__VA_ARGS__) : -1;
#define EXECUTE_ADAPTER_FUNCTION_RETURN_BOOL(...) \
return fn != nullptr ? fn(__VA_ARGS__) : false;
static void* sHandle = nullptr;
inline void* loadAdapterLibrary(const char* name) {
sHandle = dlopen(name, RTLD_LAZY | RTLD_LOCAL);
if (sHandle == nullptr) {
__android_log_print(
ANDROID_LOG_ERROR, "AdapterShimApi", "Unable to open library %s", name);
}
return sHandle;
}
inline void* getAdapterLibraryHandle() {
if (sHandle == nullptr) {
sHandle = loadAdapterLibrary("libneuronusdk_adapter.mtk.so");
}
if (sHandle == nullptr) {
sHandle = loadAdapterLibrary("libneuron_adapter_mgvi.so");
}
if (sHandle == nullptr) {
sHandle = loadAdapterLibrary("libneuron_adapter.so");
}
return sHandle;
}
inline void* loadAdapterFunction(const char* name) {
void* fn = nullptr;
if (getAdapterLibraryHandle() != nullptr) {
fn = dlsym(getAdapterLibraryHandle(), name);
}
if (fn == nullptr) {
__android_log_print(
ANDROID_LOG_ERROR,
"AdapterShimApi",
"Unable to open function %s",
name);
}
return fn;
}
/*************************************************************************************************/
typedef int (*Neuron_getVersion_fn)(NeuronRuntimeVersion* version);
typedef int (*Neuron_getFeatureSupportedStatus_fn)(
NeuronFeatureType type,
bool* supported);
typedef int (*Neuron_getNeuroPilotMagicNumber_fn)(int32_t* magic);
typedef int (*Neuron_getL1MemorySizeKb_fn)(uint32_t* sizeKb);
typedef int (*NeuronModel_create_fn)(NeuronModel** model);
typedef void (*NeuronModel_free_fn)(NeuronModel* model);
typedef int (*NeuronModel_finish_fn)(NeuronModel* model);
typedef int (*NeuronModel_addOperand_fn)(
NeuronModel* model,
const NeuronOperandType* type);
typedef int (*NeuronModel_setOperandValue_fn)(
NeuronModel* model,
int32_t index,
const void* buffer,
size_t length);
typedef int (*NeuronModel_setOperandValueFromModel_fn)(
NeuronModel* model,
int32_t index,
const NeuronModel* value);
typedef int (*NeuronModel_setOperandSymmPerChannelQuantParams_fn)(
NeuronModel* model,
int32_t index,
const NeuronSymmPerChannelQuantParams* channelQuant);
typedef int (*NeuronModel_setOperandPerChannelQuantParams_fn)(
NeuronModel* model,
int32_t index,
const NeuronPerChannelQuantParams* channelQuant);
typedef int (*NeuronModel_addOperation_fn)(
NeuronModel* model,
NeuronOperationType type,
uint32_t inputCount,
const uint32_t* inputs,
uint32_t outputCount,
const uint32_t* outputs);
typedef int (*NeuronModel_addOperationExtension_fn)(
NeuronModel* model,
const char* name,
const char* vendor,
const NeuronDevice* device,
uint32_t inputCount,
const uint32_t* inputs,
uint32_t outputCount,
const uint32_t* outputs);
typedef int (*NeuronModel_identifyInputsAndOutputs_fn)(
NeuronModel* model,
uint32_t inputCount,
const uint32_t* inputs,
uint32_t outputCount,
const uint32_t* outputs);
typedef int (*NeuronModel_getSupportedOperations_fn)(
NeuronModel* model,
bool* supported,
uint32_t operationCount);
typedef int (*NeuronModel_getSupportedOperationsForDevices_fn)(
const NeuronModel* model,
const NeuronDevice* const* devices,
uint32_t numDevices,
bool* supportedOps);
typedef int (*NeuronModel_relaxComputationFloat32toFloat16_fn)(
NeuronModel* model,
bool allow);
typedef int (
*NeuronModel_suppressInputConversion_fn)(NeuronModel* model, bool suppress);
typedef int (*NeuronModel_suppressOutputConversion_fn)(
NeuronModel* model,
bool suppress);
typedef int (*NeuronModel_restoreFromCompiledNetwork_fn)(
NeuronModel** model,
NeuronCompilation** compilation,
const void* buffer,
const size_t size);
typedef int (*NeuronCompilation_create_fn)(
NeuronModel* model,
NeuronCompilation** compilation);
typedef int (*NeuronCompilation_createV2_fn)(
NeuronModel* model,
CompilationType type,
const char* options,
NeuronCompilation** compilation);
typedef int (*NeuronCompilation_createForDevices_fn)(
NeuronModel* model,
const NeuronDevice* const* devices,
uint32_t numDevices,
NeuronCompilation** compilation);
typedef int (*NeuronCompilation_createForDebug_fn)(
NeuronModel* model,
NeuronCompilation** compilation);
typedef void (*NeuronCompilation_free_fn)(NeuronCompilation* compilation);
typedef int (*NeuronCompilation_finish_fn)(NeuronCompilation* compilation);
typedef int (*NeuronCompilation_getSupportedOperations_fn)(
NeuronCompilation* compilation,
uint32_t operationCount,
bool* supported);
typedef int (*NeuronCompilation_setCaching_fn)(
NeuronCompilation* compilation,
const char* cacheDir,
const uint8_t* token);
typedef int (*NeuronCompilation_setPreference_fn)(
NeuronCompilation* compilation,
int32_t preference);
typedef int (*NeuronCompilation_setPriority_fn)(
NeuronCompilation* compilation,
int32_t priority);
typedef int (*NeuronCompilation_getInputPaddedDimensions_fn)(
NeuronCompilation* compilation,
int32_t index,
uint32_t* dimensions);
typedef int (*NeuronCompilation_getOutputPaddedDimensions_fn)(
NeuronCompilation* compilation,
int32_t index,
uint32_t* dimensions);
typedef int (*NeuronCompilation_getInputPaddedSize_fn)(
NeuronCompilation* compilation,
int32_t index,
size_t* size);
typedef int (*NeuronCompilation_getOutputPaddedSize_fn)(
NeuronCompilation* compilation,
int32_t index,
size_t* size);
typedef int (*NeuronCompilation_getCompiledNetworkSize_fn)(
NeuronCompilation* compilation,
size_t* size);
typedef int (*NeuronCompilation_storeCompiledNetwork_fn)(
NeuronCompilation* compilation,
void* buffer,
const size_t size);
typedef int (*NeuronCompilation_setOptimizationHint_fn)(
NeuronCompilation* compilation,
uint32_t optimizationCode);
typedef int (*NeuronCompilation_setOptimizationString_fn)(
NeuronCompilation* compilation,
const char* optimizationString);
typedef int (*NeuronCompilation_setTrimIOAlignment_fn)(
NeuronCompilation* compilation,
bool enable);
typedef int (*NeuronCompilation_setSWDilatedConv_fn)(
NeuronCompilation* compilation,
bool enable);
typedef int (*NeuronExecution_create_fn)(
NeuronCompilation* compilation,
NeuronExecution** execution);
typedef void (*NeuronExecution_free_fn)(NeuronExecution* execution);
typedef int (*NeuronExecution_setInput_fn)(
NeuronExecution* execution,
int32_t index,
const NeuronOperandType* type,
const void* buffer,
size_t length);
typedef int (*NeuronExecution_setOutput_fn)(
NeuronExecution* execution,
int32_t index,
const NeuronOperandType* type,
void* buffer,
size_t length);
typedef int (*NeuronExecution_setInputFromMemory_fn)(
NeuronExecution* execution,
uint32_t index,
const NeuronOperandType* type,
const NeuronMemory* memory,
size_t offset,
size_t length);
typedef int (*NeuronExecution_setOutputFromMemory_fn)(
NeuronExecution* execution,
uint32_t index,
const NeuronOperandType* type,
const NeuronMemory* memory,
size_t offset,
size_t length);
typedef int (*NeuronMemory_createFromFd_fn)(
size_t size,
int protect,
int fd,
size_t offset,
NeuronMemory** memory);
typedef int (*NeuronMemory_createFromAHardwareBuffer_fn)(
const AHardwareBuffer* ahwb,
NeuronMemory** memory);
typedef void (*NeuronMemory_free_fn)(NeuronMemory* memory);
typedef int (*NeuronExecution_compute_fn)(NeuronExecution* execution);
typedef int (*NeuronExecution_startComputeWithDependencies_fn)(
NeuronExecution* execution,
const NeuronEvent* const* dependencies,
uint32_t num_dependencies,
uint64_t duration,
NeuronEvent** event);
typedef int (
*NeuronEvent_getSyncFenceFd_fn)(const NeuronEvent* event, int* syncFenceFd);
typedef int (*NeuronEvent_wait_fn)(NeuronEvent* event);
typedef void (*NeuronEvent_free_fn)(NeuronEvent* event);
typedef int (*NeuronExecution_setLoopTimeout_fn)(
NeuronExecution* execution,
uint64_t duration);
typedef int (*NeuronExecution_setBoostHint_fn)(
NeuronExecution* execution,
uint8_t boostValue);
typedef int (*NeuronCompilation_createForMultiExecutions_fn)(
NeuronModel* model,
NeuronCompilation** compilation);
typedef int (
*NeuronDebug_setReportPath_fn)(NeuronModel* model, const char* path);
typedef int (*Neuron_getDeviceCount_fn)(uint32_t* numDevices);
typedef int (*Neuron_getDevice_fn)(uint32_t devIndex, NeuronDevice** device);
typedef int (
*NeuronDevice_getName_fn)(const NeuronDevice* device, const char** name);
typedef int (*NeuronDevice_getDescription_fn)(
const NeuronDevice* device,
const char** description);
typedef int (*NeuronDevice_getExtensionSupport_fn)(
const char* extensionName,
bool* isExtensionSupported);
typedef int (*NeuronModel_getExtensionOperandType_fn)(
NeuronModel* model,
const char* extensionName,
uint16_t operandCodeWithinExtension,
int32_t* type);
typedef int (*NeuronModel_getExtensionOperationType_fn)(
NeuronModel* model,
const char* extensionName,
uint16_t operationCodeWithinExtension,
int32_t* type);
typedef int (*NeuronModel_setOperandExtensionData_fn)(
NeuronModel* model,
int32_t index,
const void* data,
size_t length);
typedef int (*NeuronCompilation_createForBatch_fn)(
NeuronModel* model,
NeuronCompilation** compilation);
typedef int (*NeuronModel_restoreFromCompiledNetworkV2_fn)(
NeuronModel** model,
NeuronCompilation** compilation,
const void* buffer,
const size_t size,
const CompilationType& type);
typedef int (*NeuronExecution_setRunnerPoolSize_fn)(
NeuronExecution* execution,
uint8_t numRunners);
typedef int (*NeuronExecution_setBatchDone_fn)(NeuronExecution* execution);
typedef int (
*NeuronExecution_setIODone_fn)(NeuronExecution* execution, int idx);
typedef int (*NeuronCompilation_createWithOptions_fn)(
NeuronModel* model,
NeuronCompilation** compilation,
const char* options);
/*************************************************************************************************/
inline int Neuron_getVersion(NeuronRuntimeVersion* version) {
LOAD_ADAPTER_FUNCTION(Neuron_getVersion);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(version);
}
inline int Neuron_getFeatureSupportedStatus(
NeuronFeatureType type,
bool* supported) {
LOAD_ADAPTER_FUNCTION(Neuron_getFeatureSupportedStatus);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(type, supported);
}
inline int Neuron_getNeuroPilotMagicNumber(int32_t* magic) {
LOAD_ADAPTER_FUNCTION(Neuron_getNeuroPilotMagicNumber);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(magic);
}
inline int Neuron_getL1MemorySizeKb(uint32_t* sizeKb) {
LOAD_ADAPTER_FUNCTION(Neuron_getL1MemorySizeKb);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(sizeKb);
}
inline int NeuronModel_create(NeuronModel** model) {
LOAD_ADAPTER_FUNCTION(NeuronModel_create);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model);
}
inline void NeuronModel_free(NeuronModel* model) {
LOAD_ADAPTER_FUNCTION(NeuronModel_free);
EXECUTE_ADAPTER_FUNCTION(model);
}
inline int NeuronModel_finish(NeuronModel* model) {
LOAD_ADAPTER_FUNCTION(NeuronModel_finish);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model);
}
inline int NeuronModel_addOperand(
NeuronModel* model,
const NeuronOperandType* type) {
LOAD_ADAPTER_FUNCTION(NeuronModel_addOperand);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, type);
}
inline int NeuronModel_setOperandValue(
NeuronModel* model,
int32_t index,
const void* buffer,
size_t length) {
LOAD_ADAPTER_FUNCTION(NeuronModel_setOperandValue);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, index, buffer, length);
}
inline int NeuronModel_setOperandValueFromModel(
NeuronModel* model,
int32_t index,
const NeuronModel* value) {
LOAD_ADAPTER_FUNCTION(NeuronModel_setOperandValueFromModel);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, index, value);
}
inline int NeuronModel_setOperandSymmPerChannelQuantParams(
NeuronModel* model,
int32_t index,
const NeuronSymmPerChannelQuantParams* channelQuant) {
LOAD_ADAPTER_FUNCTION(NeuronModel_setOperandSymmPerChannelQuantParams);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, index, channelQuant);
}
inline int NeuronModel_setOperandPerChannelQuantParams(
NeuronModel* model,
int32_t index,
const NeuronPerChannelQuantParams* channelQuant) {
LOAD_ADAPTER_FUNCTION(NeuronModel_setOperandPerChannelQuantParams);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, index, channelQuant);
}
inline int NeuronModel_addOperation(
NeuronModel* model,
NeuronOperationType type,
uint32_t inputCount,
const uint32_t* inputs,
uint32_t outputCount,
const uint32_t* outputs) {
LOAD_ADAPTER_FUNCTION(NeuronModel_addOperation);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(
model, type, inputCount, inputs, outputCount, outputs);
}
inline int NeuronModel_addOperationExtension(
NeuronModel* model,
const char* name,
const char* vendor,
const NeuronDevice* device,
uint32_t inputCount,
const uint32_t* inputs,
uint32_t outputCount,
const uint32_t* outputs) {
LOAD_ADAPTER_FUNCTION(NeuronModel_addOperationExtension);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(
model, name, vendor, device, inputCount, inputs, outputCount, outputs);
}
inline int NeuronModel_identifyInputsAndOutputs(
NeuronModel* model,
uint32_t inputCount,
const uint32_t* inputs,
uint32_t outputCount,
const uint32_t* outputs) {
LOAD_ADAPTER_FUNCTION(NeuronModel_identifyInputsAndOutputs);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(
model, inputCount, inputs, outputCount, outputs);
}
inline int NeuronModel_getSupportedOperations(
NeuronModel* model,
bool* supported,
uint32_t operationCount) {
LOAD_ADAPTER_FUNCTION(NeuronModel_getSupportedOperations);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, supported, operationCount);
}
inline int NeuronModel_getSupportedOperationsForDevices(
const NeuronModel* model,
const NeuronDevice* const* devices,
uint32_t numDevices,
bool* supportedOps) {
LOAD_ADAPTER_FUNCTION(NeuronModel_getSupportedOperationsForDevices);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, devices, numDevices, supportedOps);
}
inline int NeuronCompilation_getSupportedOperations(
NeuronCompilation* compilation,
uint32_t operationCount,
bool* supported) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_getSupportedOperations);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, operationCount, supported);
}
inline int NeuronModel_relaxComputationFloat32toFloat16(
NeuronModel* model,
bool allow) {
LOAD_ADAPTER_FUNCTION(NeuronModel_relaxComputationFloat32toFloat16);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, allow);
}
inline int NeuronModel_suppressInputConversion(
NeuronModel* model,
bool suppress) {
LOAD_ADAPTER_FUNCTION(NeuronModel_suppressInputConversion);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, suppress);
}
inline int NeuronModel_suppressOutputConversion(
NeuronModel* model,
bool suppress) {
LOAD_ADAPTER_FUNCTION(NeuronModel_suppressOutputConversion);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, suppress);
}
inline int NeuronModel_restoreFromCompiledNetwork(
NeuronModel** model,
NeuronCompilation** compilation,
const void* buffer,
const size_t size) {
LOAD_ADAPTER_FUNCTION(NeuronModel_restoreFromCompiledNetwork);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, compilation, buffer, size);
}
inline int NeuronCompilation_create(
NeuronModel* model,
NeuronCompilation** compilation) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_create);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, compilation);
}
inline int NeuronCompilation_createV2(
NeuronModel* model,
CompilationType type,
const char* options,
NeuronCompilation** compilation) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_createV2);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, type, options, compilation);
}
inline int NeuronCompilation_createForDevices(
NeuronModel* model,
const NeuronDevice* const* devices,
uint32_t numDevices,
NeuronCompilation** compilation) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_createForDevices);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, devices, numDevices, compilation);
}
inline int NeuronCompilation_createForDebug(
NeuronModel* model,
NeuronCompilation** compilation) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_createForDebug);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, compilation);
}
inline void NeuronCompilation_free(NeuronCompilation* compilation) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_free);
EXECUTE_ADAPTER_FUNCTION(compilation);
}
inline int NeuronCompilation_finish(NeuronCompilation* compilation) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_finish);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation);
}
inline int NeuronCompilation_setCaching(
NeuronCompilation* compilation,
const char* cacheDir,
const uint8_t* token) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_setCaching);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, cacheDir, token);
}
inline int NeuronCompilation_setPreference(
NeuronCompilation* compilation,
int32_t preference) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_setPreference);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, preference);
}
inline int NeuronCompilation_setPriority(
NeuronCompilation* compilation,
int32_t priority) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_setPriority);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, priority);
}
inline int NeuronCompilation_getInputPaddedDimensions(
NeuronCompilation* compilation,
int32_t index,
uint32_t* dimensions) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_getInputPaddedDimensions);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, index, dimensions);
}
inline int NeuronCompilation_getOutputPaddedDimensions(
NeuronCompilation* compilation,
int32_t index,
uint32_t* dimensions) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_getOutputPaddedDimensions);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, index, dimensions);
}
inline int NeuronCompilation_getInputPaddedSize(
NeuronCompilation* compilation,
int32_t index,
size_t* size) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_getInputPaddedSize);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, index, size);
}
inline int NeuronCompilation_getOutputPaddedSize(
NeuronCompilation* compilation,
int32_t index,
size_t* size) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_getOutputPaddedSize);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, index, size);
}
inline int NeuronCompilation_getCompiledNetworkSize(
NeuronCompilation* compilation,
size_t* size) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_getCompiledNetworkSize);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, size);
}
inline int NeuronCompilation_storeCompiledNetwork(
NeuronCompilation* compilation,
void* buffer,
const size_t size) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_storeCompiledNetwork);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, buffer, size);
}
inline int NeuronCompilation_setOptimizationHint(
NeuronCompilation* compilation,
uint32_t optimizationCode) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_setOptimizationHint);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, optimizationCode);
}
inline int NeuronCompilation_setOptimizationString(
NeuronCompilation* compilation,
const char* optimizationString) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_setOptimizationString);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, optimizationString);
}
inline int NeuronCompilation_setTrimIOAlignment(
NeuronCompilation* compilation,
bool enable) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_setTrimIOAlignment);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, enable);
}
inline int NeuronCompilation_setSWDilatedConv(
NeuronCompilation* compilation,
bool enable) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_setSWDilatedConv);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, enable);
}
inline int NeuronExecution_create(
NeuronCompilation* compilation,
NeuronExecution** execution) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_create);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(compilation, execution);
}
inline void NeuronExecution_free(NeuronExecution* execution) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_free);
EXECUTE_ADAPTER_FUNCTION(execution);
}
inline int NeuronExecution_setInput(
NeuronExecution* execution,
int32_t index,
const NeuronOperandType* type,
const void* buffer,
size_t length) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_setInput);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(execution, index, type, buffer, length);
}
inline int NeuronExecution_setInputFromMemory(
NeuronExecution* execution,
uint32_t index,
const NeuronOperandType* type,
const NeuronMemory* memory,
size_t offset,
size_t length) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_setInputFromMemory);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(
execution, index, type, memory, offset, length);
}
inline int NeuronExecution_setOutput(
NeuronExecution* execution,
int32_t index,
const NeuronOperandType* type,
void* buffer,
size_t length) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_setOutput);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(execution, index, type, buffer, length);
}
inline int NeuronExecution_setOutputFromMemory(
NeuronExecution* execution,
uint32_t index,
const NeuronOperandType* type,
const NeuronMemory* memory,
size_t offset,
size_t length) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_setOutputFromMemory);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(
execution, index, type, memory, offset, length);
}
inline int NeuronMemory_createFromFd(
size_t size,
int protect,
int fd,
size_t offset,
NeuronMemory** memory) {
LOAD_ADAPTER_FUNCTION(NeuronMemory_createFromFd);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(size, protect, fd, offset, memory);
}
inline int NeuronMemory_createFromAHardwareBuffer(
const AHardwareBuffer* ahwb,
NeuronMemory** memory) {
LOAD_ADAPTER_FUNCTION(NeuronMemory_createFromAHardwareBuffer);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(ahwb, memory);
}
inline void NeuronMemory_free(NeuronMemory* memory) {
LOAD_ADAPTER_FUNCTION(NeuronMemory_free);
EXECUTE_ADAPTER_FUNCTION(memory);
}
inline int NeuronExecution_compute(NeuronExecution* execution) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_compute);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(execution);
}
inline int NeuronExecution_startComputeWithDependencies(
NeuronExecution* execution,
const NeuronEvent* const* dependencies,
uint32_t num_dependencies,
uint64_t duration,
NeuronEvent** event) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_startComputeWithDependencies);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(
execution, dependencies, num_dependencies, duration, event);
}
inline int NeuronEvent_getSyncFenceFd(
const NeuronEvent* event,
int* syncFenceFd) {
LOAD_ADAPTER_FUNCTION(NeuronEvent_getSyncFenceFd);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(event, syncFenceFd);
}
inline int NeuronEvent_wait(NeuronEvent* event) {
LOAD_ADAPTER_FUNCTION(NeuronEvent_wait);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(event);
}
inline void NeuronEvent_free(NeuronEvent* event) {
LOAD_ADAPTER_FUNCTION(NeuronEvent_free);
EXECUTE_ADAPTER_FUNCTION(event);
}
inline int NeuronExecution_setLoopTimeout(
NeuronExecution* execution,
uint64_t duration) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_setLoopTimeout);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(execution, duration);
}
inline int NeuronExecution_setBoostHint(
NeuronExecution* execution,
uint8_t boostValue) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_setBoostHint);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(execution, boostValue);
}
inline int NeuronCompilation_createForMultiExecutions(
NeuronModel* model,
NeuronCompilation** compilation) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_createForMultiExecutions);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, compilation);
}
inline int NeuronDebug_setReportPath(NeuronModel* model, const char* path) {
LOAD_ADAPTER_FUNCTION(NeuronDebug_setReportPath);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, path);
}
inline int Neuron_getDeviceCount(uint32_t* numDevices) {
LOAD_ADAPTER_FUNCTION(Neuron_getDeviceCount);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(numDevices);
}
inline int Neuron_getDevice(uint32_t devIndex, NeuronDevice** device) {
LOAD_ADAPTER_FUNCTION(Neuron_getDevice);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(devIndex, device);
}
inline int NeuronDevice_getName(const NeuronDevice* device, const char** name) {
LOAD_ADAPTER_FUNCTION(NeuronDevice_getName);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(device, name);
}
inline int NeuronDevice_getDescription(
const NeuronDevice* device,
const char** description) {
LOAD_ADAPTER_FUNCTION(NeuronDevice_getDescription);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(device, description);
}
inline int NeuronDevice_getExtensionSupport(
const char* extensionName,
bool* isExtensionSupported) {
LOAD_ADAPTER_FUNCTION(NeuronDevice_getExtensionSupport);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(extensionName, isExtensionSupported);
}
inline int NeuronModel_getExtensionOperandType(
NeuronModel* model,
const char* extensionName,
uint16_t operandCodeWithinExtension,
int32_t* type) {
LOAD_ADAPTER_FUNCTION(NeuronModel_getExtensionOperandType);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(
model, extensionName, operandCodeWithinExtension, type);
}
inline int NeuronModel_getExtensionOperationType(
NeuronModel* model,
const char* extensionName,
uint16_t operationCodeWithinExtension,
int32_t* type) {
LOAD_ADAPTER_FUNCTION(NeuronModel_getExtensionOperationType);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(
model, extensionName, operationCodeWithinExtension, type);
}
inline int NeuronModel_setOperandExtensionData(
NeuronModel* model,
int32_t index,
const void* data,
size_t length) {
LOAD_ADAPTER_FUNCTION(NeuronModel_setOperandExtensionData);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, index, data, length);
}
inline int NeuronCompilation_createForBatch(
NeuronModel* model,
NeuronCompilation** compilation) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_createForBatch);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, compilation);
}
inline int NeuronModel_restoreFromCompiledNetworkV2(
NeuronModel** model,
NeuronCompilation** compilation,
const void* buffer,
const size_t size,
const CompilationType& type) {
LOAD_ADAPTER_FUNCTION(NeuronModel_restoreFromCompiledNetworkV2);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, compilation, buffer, size, type);
}
inline int NeuronExecution_setRunnerPoolSize(
NeuronExecution* execution,
uint8_t numRunners) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_setRunnerPoolSize);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(execution, numRunners);
}
inline int NeuronExecution_setBatchDone(NeuronExecution* execution) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_setBatchDone);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(execution);
}
inline int NeuronExecution_setIODone(NeuronExecution* execution, int idx) {
LOAD_ADAPTER_FUNCTION(NeuronExecution_setIODone);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(execution, idx);
}
inline int NeuronCompilation_createWithOptions(
NeuronModel* model,
NeuronCompilation** compilation,
const char* options) {
LOAD_ADAPTER_FUNCTION(NeuronCompilation_createWithOptions);
EXECUTE_ADAPTER_FUNCTION_RETURN_INT(model, compilation, options);
}