mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-16 21:00:14 +00:00
### Description <!-- Describe your changes. --> - Create `OnnxruntimeJSIHelper` native module to provide two JSI functions - `jsiOnnxruntimeStoreArrayBuffer`: Store buffer in Blob Manager & return blob object (iOS: RCTBlobManager, Android: BlobModule) - `jsiOnnxruntimeResolveArrayBuffer`: Use blob object to get buffer - The part of implementation is reference to [react-native-blob-jsi-helper](https://github.com/mrousavy/react-native-blob-jsi-helper) - Replace base64 encode/decode - `loadModelFromBlob`: Rename from `loadModelFromBase64EncodedBuffer` - `run`: Use blob object to replace input.data & results[].data For [this context](https://github.com/microsoft/onnxruntime/issues/16031#issuecomment-1556527812), it saved a lot of time and avoid JS thread blocking in decode return type, it is 3700ms -> 5~20ms for the case. (resolve function only takes 0.x ms) ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> It’s related to #16031, but not a full implementation for migrate to JSI. It just uses JSI through BlobManager to replace the slow part (base64 encode / decode). Rewriting it entirely in JSI could be complicated, like type convertion and threading. This PR might be considered a minor change. /cc @skottmckay
37 lines
954 B
CMake
37 lines
954 B
CMake
project(OnnxruntimeJSIHelper)
|
|
cmake_minimum_required(VERSION 3.9.0)
|
|
|
|
set (PACKAGE_NAME "onnxruntime-react-native")
|
|
set (BUILD_DIR ${CMAKE_SOURCE_DIR}/build)
|
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
file(TO_CMAKE_PATH "${NODE_MODULES_DIR}/react-native/ReactCommon/jsi/jsi/jsi.cpp" libPath)
|
|
|
|
include_directories(
|
|
"${NODE_MODULES_DIR}/react-native/React"
|
|
"${NODE_MODULES_DIR}/react-native/React/Base"
|
|
"${NODE_MODULES_DIR}/react-native/ReactCommon/jsi"
|
|
)
|
|
|
|
add_library(onnxruntimejsihelper
|
|
SHARED
|
|
${libPath}
|
|
src/main/cpp/cpp-adapter.cpp
|
|
)
|
|
|
|
# Configure C++ 17
|
|
set_target_properties(
|
|
onnxruntimejsihelper PROPERTIES
|
|
CXX_STANDARD 17
|
|
CXX_EXTENSIONS OFF
|
|
POSITION_INDEPENDENT_CODE ON
|
|
)
|
|
|
|
find_library(log-lib log)
|
|
|
|
target_link_libraries(
|
|
onnxruntimejsihelper
|
|
${log-lib} # <-- Logcat logger
|
|
android # <-- Android JNI core
|
|
)
|