From d4ea59654c83cb6f7e578c6d6c7270a57ec990b2 Mon Sep 17 00:00:00 2001 From: Guenther Schmuelling Date: Fri, 10 Jun 2022 08:47:57 -0700 Subject: [PATCH] make xnnpack build for ort-web (#11745) * make xnnpack build for ort-web * make ci happy --- cmake/CMakeLists.txt | 3 ++- cmake/onnxruntime_webassembly.cmake | 3 +++ onnxruntime/wasm/api.cc | 9 +++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 9377980eca..e5f4478d0e 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -1590,7 +1590,8 @@ if (onnxruntime_USE_XNNPACK) set(wasmsimd_src_patterns "${XNNPACK_DIR}/src/wasmsimd-*.c" "${XNNPACK_DIR}/src/*-wasmsimd-*.c" - "${XNNPACK_DIR}/src/*-wasmsimd.c") + "${XNNPACK_DIR}/src/*-wasmsimd.c" + "${XNNPACK_DIR}/src/*/wasmsimd.c") file(GLOB_RECURSE XNNPACK_WASMSIMD_MICROKERNEL_SRCS CONFIGURE_DEPENDS ${wasmsimd_src_patterns}) message(DEBUG "XNNPACK_WASMSIMD_MICROKERNEL_SRCS:${XNNPACK_WASMSIMD_MICROKERNEL_SRCS}") diff --git a/cmake/onnxruntime_webassembly.cmake b/cmake/onnxruntime_webassembly.cmake index 6cf020e645..df493f3d8d 100644 --- a/cmake/onnxruntime_webassembly.cmake +++ b/cmake/onnxruntime_webassembly.cmake @@ -174,6 +174,9 @@ else() onnxruntime_util re2::re2 ) + if (onnxruntime_USE_XNNPACK) + target_link_libraries(onnxruntime_webassembly PRIVATE XNNPACK) + endif() if (onnxruntime_ENABLE_TRAINING OR onnxruntime_ENABLE_TRAINING_OPS) target_link_libraries(onnxruntime_webassembly PRIVATE tensorboard) diff --git a/onnxruntime/wasm/api.cc b/onnxruntime/wasm/api.cc index 01feb71a0c..c5ecfeba72 100644 --- a/onnxruntime/wasm/api.cc +++ b/onnxruntime/wasm/api.cc @@ -4,6 +4,9 @@ #include "api.h" #include "core/session/onnxruntime_cxx_api.h" +#ifdef USE_XNNPACK +#include "core/providers/xnnpack/xnnpack_provider_factory.h" +#endif #include #include @@ -112,7 +115,9 @@ OrtSessionOptions* OrtCreateSessionOptions(size_t graph_optimization_level, // Enable ORT CustomOps in onnxruntime-extensions RETURN_NULLPTR_IF_ERROR(EnableOrtCustomOps, session_options); #endif - +#if defined(USE_XNNPACK) + (void)OrtSessionOptionsAppendExecutionProvider_Xnnpack(session_options); +#endif return session_options; } @@ -359,4 +364,4 @@ char* OrtEndProfiling(ort_session_handle_t session) { return (CHECK_STATUS(SessionEndProfiling, session, allocator, &file_name) == ORT_OK) ? file_name : nullptr; -} \ No newline at end of file +}