mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-30 20:18:08 +00:00
Add some VitisAI EP C APIs
fix compile error move configuration to vaip update vaip repo remote url add vaip_get_default_config API move pattern zoo to internal (#1) * move pattern zoo to internal * change external vaip --------- Co-authored-by: mingyue <mingyue@amd.com> Co-authored-by: mingyue <mingyue@xilinx.com> add get_patterrn_list API and change get_pattern API (#2) * add get_patterrn_list API and change get_pattern API * lintrunner -a --------- Co-authored-by: mingyue <mingyue@amd.com> Co-authored-by: mingyue <mingyue@xilinx.com> change xcompiler_compile API by CPS (#3) Co-authored-by: mingyue <mingyue@amd.com> [deps] change vaip remote and branch Add vaip_get/has_mem_xclbin APIs (#4) * Add vaip_get/has_mem_xclbin APIs --------- Co-authored-by: mingyue <mingyue@xilinx.com> vaip point to github/amd use main branch
This commit is contained in:
parent
7cbcf5cd4b
commit
6eeafca6e0
5 changed files with 45 additions and 32 deletions
|
|
@ -60,4 +60,4 @@ directx_headers;https://github.com/microsoft/DirectX-Headers/archive/refs/tags/v
|
|||
cudnn_frontend;https://github.com/NVIDIA/cudnn-frontend/archive/refs/tags/v1.7.0.zip;d0753d8d5b39947ca0729d7773cb84653a129eb1
|
||||
dawn;https://github.com/google/dawn/archive/12a3b24c456cebd9fd11f23ac0164f78129b00c6.zip;ad428f6dc16f1336d584f7bad5714e1097dafc43
|
||||
kleidiai;https://gitlab.arm.com/kleidi/kleidiai/-/archive/d15722976120710080ca098fe8ddabf4556cb40f/kleidiai-d15722976120710080ca098fe8ddabf4556cb40f.zip;d6c840d00c3b05aedf06e957ddaece1013d1f40b
|
||||
vaip;https://gitenterprise.xilinx.com/chunywan/vaip.git;refactor-vaip
|
||||
vaip;https://github.com/amd/vaip.git;main
|
||||
|
|
|
|||
|
|
@ -198,6 +198,7 @@ FetchContent_Declare(
|
|||
PATCH_COMMAND ${ONNXRUNTIME_PROTOBUF_PATCH_COMMAND}
|
||||
FIND_PACKAGE_ARGS NAMES Protobuf protobuf
|
||||
)
|
||||
|
||||
set(protobuf_BUILD_TESTS OFF CACHE BOOL "Build protobuf tests" FORCE)
|
||||
#TODO: we'd better to turn the following option off. However, it will cause
|
||||
# ".\build.bat --config Debug --parallel --skip_submodule_sync --update" fail with an error message:
|
||||
|
|
|
|||
|
|
@ -8,18 +8,6 @@
|
|||
GIT_SHALLOW TRUE
|
||||
OVERRIDE_FIND_PACKAGE
|
||||
)
|
||||
set(WITH_XCOMPILER ON CACHE BOOL "enable XCOMPILER")
|
||||
set(WITH_OPENSSL OFF CACHE BOOL "enable open ssl")
|
||||
set(WITH_CPURUNNER ON CACHE BOOL "enable cpu runner")
|
||||
set(BUILD_PYTHON_EXT OFF CACHE BOOL "enable python ext")
|
||||
set(EN_LLM_DOD_OPS OFF CACHE BOOL "enable dd flow")
|
||||
set(EN_VAIML OFF CACHE BOOL "enable vaiml flow")
|
||||
set(TRIM_CONFIG OFF CACHE BOOL "enable config trimming")
|
||||
set(ENABLE_VITIS_AI_CUSTOM_OP OFF "enable vitis ai custom op")
|
||||
set(PACK_XCLBIN_PATH "" CACHE STRING "list of xclbin files")
|
||||
set(ENABLE_BUILD_VOE_WHEEL OFF CACHE BOOL "internal used only" FORCE)
|
||||
set(INSTALL_USER ON CACHE BOOL "internal used only" FORCE)
|
||||
set(ENABLE_XRT_SHARED_CONTEXT ON CACHE BOOL "internal used only" FORCE)
|
||||
find_package(vaip)
|
||||
|
||||
if ("${GIT_COMMIT_ID}" STREQUAL "")
|
||||
|
|
|
|||
|
|
@ -41,17 +41,15 @@ using namespace onnxruntime;
|
|||
#define LIBRARY_PREFIX "lib"
|
||||
#define LIBRARY_EXTENSION ".so"
|
||||
#endif
|
||||
|
||||
namespace vaip_core {
|
||||
|
||||
void initialize_onnxruntime_vitisai_ep(vaip_core::OrtApiForVaip* api, std::vector<OrtCustomOpDomain*>& ret_domain);
|
||||
uint32_t vaip_get_version();
|
||||
extern "C" int create_ep_context_nodes(
|
||||
extern "C" {
|
||||
void initialize_onnxruntime_vitisai_ep_c(vaip_core::OrtApiForVaip* api, std::vector<OrtCustomOpDomain*>& ret_domain);
|
||||
uint32_t vaip_get_version_c();
|
||||
int create_ep_context_nodes_c(
|
||||
const std::vector<std::unique_ptr<vaip_core::ExecutionProvider>>& eps,
|
||||
vaip_core::DllSafe<std::vector<Node*>>* ret_value);
|
||||
std::vector<std::unique_ptr<vaip_core::ExecutionProvider>>* compile_onnx_model_with_options(
|
||||
std::vector<std::unique_ptr<vaip_core::ExecutionProvider>>* compile_onnx_model_with_options_c(
|
||||
const std::string& model_path, const onnxruntime::Graph& graph, const onnxruntime::ProviderOptions& options);
|
||||
} // namespace vaip_core
|
||||
};
|
||||
vaip_core::OrtApiForVaip* create_org_api_hook();
|
||||
struct OrtVitisAIEpAPI {
|
||||
void (*initialize_onnxruntime_vitisai_ep)(vaip_core::OrtApiForVaip* api, std::vector<OrtCustomOpDomain*>& ret_domain);
|
||||
|
|
@ -77,13 +75,21 @@ struct OrtVitisAIEpAPI {
|
|||
size_t input_xmodel_size,
|
||||
const char* config_xmodel,
|
||||
size_t config_xmodel_size, void* state,
|
||||
char* (*allocator)(void*, size_t)) = nullptr;
|
||||
void (*k)(void*, void*, size_t)) = nullptr;
|
||||
const char* (*vaip_get_default_config)() = nullptr;
|
||||
int (*vaip_get_pattern_as_binary)(const char* name, void* state, void (*k)(void*, void*, size_t)) = nullptr;
|
||||
void (*vaip_get_pattern_list)(void* state, void (*k)(void*, void*, size_t)) = nullptr;
|
||||
int (*vaip_get_mem_xclbin)(const char* name, void* state, void (*k)(void*, void*, size_t)) = nullptr;
|
||||
bool (*vaip_has_mem_xclbin)(const char* name) = nullptr;
|
||||
void Ensure() {
|
||||
this->initialize_onnxruntime_vitisai_ep = vaip_core::initialize_onnxruntime_vitisai_ep;
|
||||
this->compile_onnx_model_with_options = vaip_core::compile_onnx_model_with_options;
|
||||
this->create_ep_context_nodes = vaip_core::create_ep_context_nodes;
|
||||
this->vaip_get_version = vaip_core::vaip_get_version;
|
||||
//
|
||||
if (handle_)
|
||||
return;
|
||||
|
||||
this->initialize_onnxruntime_vitisai_ep = initialize_onnxruntime_vitisai_ep_c;
|
||||
this->compile_onnx_model_with_options = compile_onnx_model_with_options_c;
|
||||
this->create_ep_context_nodes = create_ep_context_nodes_c;
|
||||
this->vaip_get_version = vaip_get_version_c;
|
||||
|
||||
auto& env = Provider_GetHost()->Env__Default();
|
||||
auto& logger = *Provider_GetHost()->LoggingManager_GetDefaultLogger();
|
||||
|
||||
|
|
@ -104,6 +110,11 @@ struct OrtVitisAIEpAPI {
|
|||
ORT_THROW_IF_ERROR(env.LoadDynamicLibrary(full_path, true, &handle_));
|
||||
#endif
|
||||
ORT_THROW_IF_ERROR(env.GetSymbolFromLibrary(handle_, "vaip_xcompiler_compile", (void**)&vaip_xcompiler_compile));
|
||||
ORT_THROW_IF_ERROR(env.GetSymbolFromLibrary(handle_, "vaip_get_default_config", (void**)&vaip_get_default_config));
|
||||
ORT_THROW_IF_ERROR(env.GetSymbolFromLibrary(handle_, "vaip_get_pattern_as_binary", (void**)&vaip_get_pattern_as_binary));
|
||||
ORT_THROW_IF_ERROR(env.GetSymbolFromLibrary(handle_, "vaip_get_pattern_list", (void**)&vaip_get_pattern_list));
|
||||
ORT_THROW_IF_ERROR(env.GetSymbolFromLibrary(handle_, "vaip_get_mem_xclbin", (void**)&vaip_get_mem_xclbin));
|
||||
ORT_THROW_IF_ERROR(env.GetSymbolFromLibrary(handle_, "vaip_has_mem_xclbin", (void**)&vaip_has_mem_xclbin));
|
||||
}
|
||||
void Clear() {
|
||||
if (handle_) {
|
||||
|
|
@ -120,10 +131,9 @@ struct OrtVitisAIEpAPI {
|
|||
|
||||
static OrtVitisAIEpAPI s_library_vitisaiep;
|
||||
static std::shared_ptr<KernelRegistry> s_kernel_registry_vitisaiep;
|
||||
static std::vector<OrtCustomOpDomain*> s_domains_vitisaiep;
|
||||
static vaip_core::OrtApiForVaip the_global_api;
|
||||
g
|
||||
std::shared_ptr<KernelRegistry>
|
||||
get_kernel_registry_vitisaiep() { return s_kernel_registry_vitisaiep; }
|
||||
std::shared_ptr<KernelRegistry> get_kernel_registry_vitisaiep() { return s_kernel_registry_vitisaiep; }
|
||||
const std::vector<OrtCustomOpDomain*>& get_domains_vitisaiep() { return s_domains_vitisaiep; }
|
||||
|
||||
void profiler_collect(
|
||||
|
|
@ -524,7 +534,16 @@ vaip_core::OrtApiForVaip* create_org_api_hook() {
|
|||
return &the_global_api;
|
||||
}
|
||||
the_global_api.vaip_xcompiler_compile = s_library_vitisaiep.vaip_xcompiler_compile;
|
||||
return &the_global_api;
|
||||
the_global_api.vaip_get_default_config = s_library_vitisaiep.vaip_get_default_config;
|
||||
the_global_api.vaip_get_pattern_as_binary = s_library_vitisaiep.vaip_get_pattern_as_binary;
|
||||
the_global_api.vaip_get_pattern_list = s_library_vitisaiep.vaip_get_pattern_list;
|
||||
the_global_api.vaip_get_mem_xclbin = s_library_vitisaiep.vaip_get_mem_xclbin;
|
||||
the_global_api.vaip_has_mem_xclbin = s_library_vitisaiep.vaip_has_mem_xclbin;
|
||||
if (!s_library_vitisaiep.vaip_get_version) {
|
||||
return reinterpret_cast<vaip_core::OrtApiForVaip*>(&(the_global_api.host_));
|
||||
} else {
|
||||
return &the_global_api;
|
||||
}
|
||||
}
|
||||
|
||||
void deinitialize_vitisai_ep() {
|
||||
|
|
|
|||
|
|
@ -247,7 +247,12 @@ struct OrtApiForVaip {
|
|||
size_t input_xmodel_size,
|
||||
const char* config_xmodel,
|
||||
size_t config_xmodel_size, void* state,
|
||||
char* (*allocator)(void*, size_t)); // [103]
|
||||
void (*k)(void*, void*, size_t)); // [103]
|
||||
const char* (*vaip_get_default_config)(); // [104]
|
||||
int (*vaip_get_pattern_as_binary)(const char* name, void* state, void (*k)(void*, void*, size_t)); // [105]
|
||||
void (*vaip_get_pattern_list)(void* state, void (*k)(void*, void*, size_t)); // [106]
|
||||
int (*vaip_get_mem_xclbin)(const char* name, void* state, void (*k)(void*, void*, size_t)); // [107]
|
||||
bool (*vaip_has_mem_xclbin)(const char* name); // [108]
|
||||
};
|
||||
|
||||
#ifndef USE_VITISAI
|
||||
|
|
|
|||
Loading…
Reference in a new issue