Files
2026-07-13 13:33:03 +08:00

219 lines
8.9 KiB
C++

#include "QNNConvertorInterface.hpp"
#include "QNNConvertor.hpp"
#define NOTNULL ((void *) 0x1)
namespace MNN {
namespace QNN {
#ifdef ENABLE_QNN_ONLINE_FINALIZE
extern QnnHtpDevice_PerfInfrastructure_t gQnnConvertorPerfInfra;
extern QnnHtpDevice_Infrastructure_t gQnnConvertorDeviceInfra;
Qnn_ErrorHandle_t QnnConvertorProperty_hasCapability(QnnProperty_Key_t key) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorLog_Create(QnnLog_Callback_t callback, QnnLog_Level_t maxLogLevel, Qnn_LogHandle_t* logger) {
*logger = NOTNULL;
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorLog_Free(Qnn_LogHandle_t logger) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorBackend_Create(Qnn_LogHandle_t logger, const QnnBackend_Config_t** config, Qnn_BackendHandle_t* backend) {
*backend = NOTNULL;
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorBackend_RegisterOpPackage(Qnn_BackendHandle_t backend, const char* packagePath, const char* interfaceProvider, const char* target) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorBackend_ValidateOpConfig(Qnn_BackendHandle_t backend, Qnn_OpConfig_t opConfig) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorBackend_Free(Qnn_BackendHandle_t backend) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorDevice_getInfrastructure(const QnnDevice_Infrastructure_t* deviceInfra) {
QnnDevice_Infrastructure_t* mutablePtr = const_cast<QnnDevice_Infrastructure_t*>(deviceInfra);
*mutablePtr = &gQnnConvertorDeviceInfra;
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorDevice_Create(Qnn_LogHandle_t logger, const QnnDevice_Config_t** config, Qnn_DeviceHandle_t* device) {
*device = NOTNULL;
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorDevice_Free(Qnn_DeviceHandle_t device) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorGraph_Create(Qnn_ContextHandle_t contextHandle, const char* graphName, const QnnGraph_Config_t** config, Qnn_GraphHandle_t* graphHandle) {
*graphHandle = NOTNULL;
QNNConvertor::RecordBegin(graphName);
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorGraph_Finalize(Qnn_GraphHandle_t graphHandle, Qnn_ProfileHandle_t profileHandle, Qnn_SignalHandle_t signalHandle) {
QNNConvertor::RecordEnd();
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorGraph_Execute(Qnn_GraphHandle_t graphHandle, const Qnn_Tensor_t* inputs, uint32_t numInputs, Qnn_Tensor_t* outputs, uint32_t numOutputs, Qnn_ProfileHandle_t profileHandle, Qnn_SignalHandle_t signalHandle) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorGraph_AddNode(Qnn_GraphHandle_t graphHandle, Qnn_OpConfig_t opConfig) {
QNNConvertor::RecordNode(opConfig);
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorContext_Create(Qnn_BackendHandle_t backend, Qnn_DeviceHandle_t device, const QnnContext_Config_t** config, Qnn_ContextHandle_t* context) {
*context = NOTNULL;
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorContext_Free(Qnn_ContextHandle_t context, Qnn_ProfileHandle_t profile) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorTensor_CreateGraphTensor(Qnn_GraphHandle_t graph, Qnn_Tensor_t* tensor) {
QNNConvertor::RecordTensor(tensor);
return QNN_SUCCESS;
}
QNN_INTERFACE_VER_TYPE gQnnConvertorInterface = {
/* propertyHasCapability */ QnnConvertorProperty_hasCapability,
/* backendCreate */ QnnConvertorBackend_Create,
/* backendSetConfig */ NULL,
/* backendGetApiVersion */ NULL,
/* backendGetBuildId */ NULL,
/* backendRegisterOpPackage */ QnnConvertorBackend_RegisterOpPackage,
/* backendGetSupportedOperations */ NULL,
/* backendValidateOpConfig */ QnnConvertorBackend_ValidateOpConfig,
/* backendFree */ QnnConvertorBackend_Free,
/* contextCreate */ QnnConvertorContext_Create,
/* contextSetConfig */ NULL,
/* contextGetBinarySize */ NULL,
/* contextGetBinary */ NULL,
/* contextCreateFromBinary */ NULL,
/* contextFree */ QnnConvertorContext_Free,
/* graphCreate */ QnnConvertorGraph_Create,
/* graphCreateSubgraph */ NULL,
/* graphSetConfig */ NULL,
/* graphAddNode */ QnnConvertorGraph_AddNode,
/* graphFinalize */ QnnConvertorGraph_Finalize,
/* graphRetrieve */ NULL,
/* graphExecute */ QnnConvertorGraph_Execute,
/* graphExecuteAsync */ NULL,
/* tensorCreateContextTensor */ NULL,
/* tensorCreateGraphTensor */ QnnConvertorTensor_CreateGraphTensor,
/* logCreate */ QnnConvertorLog_Create,
/* logSetLogLevel */ NULL,
/* logFree */ QnnConvertorLog_Free,
/* profileCreate */ NULL,
/* profileSetConfig */ NULL,
/* profileGetEvents */ NULL,
/* profileGetSubEvents */ NULL,
/* profileGetEventData */ NULL,
/* profileGetExtendedEventData */ NULL,
/* profileFree */ NULL,
/* memRegister */ NULL,
/* memDeRegister */ NULL,
/* deviceGetPlatformInfo */ NULL,
/* deviceFreePlatformInfo */ NULL,
/* deviceGetInfrastructure */ QnnConvertorDevice_getInfrastructure,
/* deviceCreate */ QnnConvertorDevice_Create,
/* deviceSetConfig */ NULL,
/* deviceGetInfo */ NULL,
/* deviceFree */ QnnConvertorDevice_Free,
/* signalCreate */ NULL,
/* signalSetConfig */ NULL,
/* signalTrigger */ NULL,
/* signalFree */ NULL,
/* errorGetMessage */ NULL,
/* errorGetVerboseMessage */ NULL,
/* errorFreeVerboseMessage */ NULL,
/* graphPrepareExecutionEnvironment */ NULL,
/* graphReleaseExecutionEnvironment */ NULL,
/* graphGetProperty */ NULL,
/* contextValidateBinary */ NULL,
/* contextCreateFromBinaryWithSignal */ NULL,
/* contextCreateFromBinaryListAsync */ NULL,
/* tensorUpdateGraphTensors */ NULL,
/* tensorUpdateContextTensors */ NULL,
/* contextGetBinarySectionSize */ NULL,
/* contextGetBinarySection */ NULL,
/* contextApplyBinarySection */ NULL,
/* backendGetProperty */ NULL,
/* contextGetProperty */ NULL
};
Qnn_ErrorHandle_t QnnConvertorHtpPerfInfrastructure_SetPowerConfig(uint32_t powerConfigId, const QnnHtpPerfInfrastructure_PowerConfig_t** config) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorHtpPerfInfrastructure_CreatePowerConfigId (uint32_t deviceId, uint32_t coreId, uint32_t* powerConfigId) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorHtpPerfInfrastructure_DestroyPowerConfigId (uint32_t powerConfigId) {
return QNN_SUCCESS;
}
QnnHtpDevice_PerfInfrastructure_t gQnnConvertorPerfInfra = {
QnnConvertorHtpPerfInfrastructure_CreatePowerConfigId,
QnnConvertorHtpPerfInfrastructure_DestroyPowerConfigId,
QnnConvertorHtpPerfInfrastructure_SetPowerConfig,
NULL
};
QnnHtpDevice_Infrastructure_t gQnnConvertorDeviceInfra = {
QNN_HTP_DEVICE_INFRASTRUCTURE_TYPE_PERF,
gQnnConvertorPerfInfra
};
Qnn_ErrorHandle_t QnnConvertorSystemContext_create(QnnSystemContext_Handle_t* sysCtxHandle) {
*sysCtxHandle = NOTNULL;
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorSystemContext_getBinaryInfo(QnnSystemContext_Handle_t sysCtxHandle, void* binaryBuffer, uint64_t binaryBufferSize, const QnnSystemContext_BinaryInfo_t** binaryInfo, Qnn_ContextBinarySize_t* binaryInfoSize) {
return QNN_SUCCESS;
}
Qnn_ErrorHandle_t QnnConvertorSystemContext_free(QnnSystemContext_Handle_t sysCtxHandle) {
return QNN_SUCCESS;
}
QNN_SYSTEM_INTERFACE_VER_TYPE gQnnConvertorSystemInterface = {
/*systemContextCreate*/ QnnConvertorSystemContext_create,
/*systemContextGetBinaryInfo*/ QnnConvertorSystemContext_getBinaryInfo,
/*systemContextGetMetaData*/ NULL,
/*systemContextFree*/ QnnConvertorSystemContext_free,
/*systemTensorGetMemoryFootprint*/ NULL,
};
#endif
} // end namespace MNN
} // end namespace QNN