Skip to content
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
aa62122
init
daquexian May 23, 2019
35a2a7a
Update DNNLibrary
daquexian May 24, 2019
ec05518
Update DNNLibrary, set compiler flags, it compiles now
daquexian May 24, 2019
6e95431
Add more missing flags, add test
daquexian May 30, 2019
1c25fab
Update DNNLibrary
daquexian May 31, 2019
949ed2d
Update Compile method, fix allocator and some other bugs
daquexian May 31, 2019
3e26532
Update DNNLibrary
daquexian Jun 1, 2019
983bcb0
Implement CopyTensor
daquexian Jun 1, 2019
bc40ca0
Not delete state explicitly since it is managed by unique_ptr
daquexian Jun 1, 2019
a9e50d7
Add the missing files when SingleUnitTestProjct is ON
daquexian Jun 1, 2019
4d936de
misc changes
daquexian Jun 1, 2019
960b831
Fix wrong name in provider factory
daquexian Jun 1, 2019
13e7d2a
Add my own test
daquexian Jun 1, 2019
bd3ea17
Update the code of add node into graph, and add the missing initializ…
daquexian Jun 2, 2019
c36ecd1
Fix the bug that re-build the graph produces extra output
daquexian Jun 2, 2019
6b3896d
Update DNNLibrary
daquexian Jun 2, 2019
31cfe86
Transpose nchw (ONNX) -> nhwc (NNAPI)
daquexian Jun 12, 2019
cd1f9d6
Add license
daquexian Jun 12, 2019
c89a7aa
Add GetSupportedNodes method (implement it later)
daquexian Jun 12, 2019
85e19c4
Rename onnxruntime_nnapi_test->onnxruntime_nnapi_squeezenet_test
daquexian Jun 12, 2019
5f97b64
Update squeezenet_test.cpp after rebase master
daquexian Jun 12, 2019
a97575f
Remove squeezenet_test.cpp since it is almost same with the c++ sample
daquexian Jun 13, 2019
159c788
Update DNNLibrary for GetSupportedNodes
daquexian Jun 18, 2019
7d753f5
Update GetSupportedNodes
daquexian Jun 18, 2019
2a0670e
Revert "Remove squeezenet_test.cpp since it is almost same with the c…
daquexian Jun 18, 2019
2c05325
Update DNNLibrary
daquexian Jun 19, 2019
f83a039
Fix multiple outputs bug
daquexian Jun 19, 2019
22dfc4b
Merge branch 'master' into exe_provider
daquexian Jun 19, 2019
7315ea5
Remove GetKernelRegistry
daquexian Jun 19, 2019
a07ea1f
Revert "Revert "Remove squeezenet_test.cpp since it is almost same wi…
daquexian Jun 19, 2019
ad53fca
Set default memory type of NNAPI EP
daquexian Jun 20, 2019
8a54abe
Add CPUOutput allocator
daquexian Jun 20, 2019
d034049
Update DNNLibrary for multiple outputs
daquexian Jun 24, 2019
00af146
Fix bug of nhwc->nchw
daquexian Jun 24, 2019
d2bc057
Merge branch 'master' into exe_provider
daquexian Jul 1, 2019
bccb3d6
Remove GetExecutionHandle()
daquexian Jul 1, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,6 @@
[submodule "cmake/external/eigen"]
path = cmake/external/eigen
url = https://github.com/eigenteam/eigen-git-mirror.git
[submodule "cmake/external/DNNLibrary"]
path = cmake/external/DNNLibrary
url = https://github.com/JDAI-CV/DNNLibrary
1 change: 1 addition & 0 deletions cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ option(onnxruntime_ENABLE_PYTHON "Enable python buildings" OFF)
option(onnxruntime_USE_CUDA "Build with CUDA support" OFF)
option(onnxruntime_USE_NSYNC "Build with NSYNC support. This option only takes effect on Linux" OFF)
option(onnxruntime_USE_EIGEN_FOR_BLAS "Use eign for blas" ON)
option(onnxruntime_USE_NNAPI "Build with DNNLibrary for Android NNAPI support" OFF)
option(onnxruntime_USE_MLAS "Use optimized blas library for GEMM and 2D Convolution" ON)
option(onnxruntime_USE_MKLDNN "Build with MKL-DNN support" OFF)
option(onnxruntime_USE_MKLML "Build MKL-DNN with MKL-ML binary dependency" OFF)
Expand Down
1 change: 1 addition & 0 deletions cmake/external/DNNLibrary
Submodule DNNLibrary added at 1f1029
1 change: 1 addition & 0 deletions cmake/onnxruntime.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ target_link_libraries(onnxruntime PRIVATE
${PROVIDERS_CUDA}
${PROVIDERS_MKLDNN}
${PROVIDERS_NGRAPH}
${PROVIDERS_NNAPI}
${PROVIDERS_TENSORRT}
onnxruntime_optimizer
onnxruntime_providers
Expand Down
31 changes: 31 additions & 0 deletions cmake/onnxruntime_providers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ if(onnxruntime_USE_TENSORRT)
set(PROVIDERS_TENSORRT onnxruntime_providers_tensorrt)
list(APPEND ONNXRUNTIME_PROVIDER_NAMES tensorrt)
endif()
if(onnxruntime_USE_NNAPI)
set(PROVIDERS_NNAPI onnxruntime_providers_nnapi)
list(APPEND ONNXRUNTIME_PROVIDER_NAMES nnapi)
endif()
source_group(TREE ${ONNXRUNTIME_ROOT}/core FILES ${onnxruntime_providers_common_srcs} ${onnxruntime_providers_srcs})
# add using ONNXRUNTIME_ROOT so they show up under the 'contrib_ops' folder in Visual Studio
source_group(TREE ${ONNXRUNTIME_ROOT} FILES ${onnxruntime_contrib_ops_srcs})
Expand Down Expand Up @@ -207,6 +211,33 @@ if (onnxruntime_USE_NGRAPH)
endif()
endif()

if (onnxruntime_USE_NNAPI)
add_definitions(-DUSE_NNAPI=1)
option(DNN_READ_ONNX "" ON)
set(DNN_CUSTOM_PROTOC_EXECUTABLE ${ONNX_CUSTOM_PROTOC_EXECUTABLE})
option(DNN_CMAKE_INSTALL "" OFF)
option(DNN_BUILD_BIN "" OFF)
add_subdirectory(${REPO_ROOT}/cmake/external/DNNLibrary)
file(GLOB_RECURSE
onnxruntime_providers_nnapi_cc_srcs CONFIGURE_DEPENDS
"${ONNXRUNTIME_ROOT}/core/providers/nnapi/*.h"
"${ONNXRUNTIME_ROOT}/core/providers/nnapi/*.cc"
)
source_group(TREE ${ONNXRUNTIME_ROOT}/core FILES ${onnxruntime_providers_nnapi_cc_srcs})
add_library(onnxruntime_providers_nnapi ${onnxruntime_providers_nnapi_cc_srcs})
onnxruntime_add_include_to_target(onnxruntime_providers_nnapi onnxruntime_common onnxruntime_framework gsl onnx onnx_proto protobuf::libprotobuf-lite dnnlibrary::dnnlibrary)
target_link_libraries(onnxruntime_providers_nnapi dnnlibrary::dnnlibrary)
add_dependencies(onnxruntime_providers_nnapi
dnnlibrary::dnnlibrary
onnx ${onnxruntime_EXTERNAL_DEPENDENCIES})
# Header files of DNNLibrary requires C++17, fortunately, all modern Android NDKs support C++17
set_target_properties(onnxruntime_providers_nnapi PROPERTIES CXX_STANDARD 17)
set_target_properties(onnxruntime_providers_nnapi PROPERTIES CXX_STANDARD_REQUIRED ON)
set_target_properties(onnxruntime_providers_nnapi PROPERTIES FOLDER "ONNXRuntime")
target_include_directories(onnxruntime_providers_nnapi PRIVATE ${ONNXRUNTIME_ROOT} ${nnapi_INCLUDE_DIRS})
set_target_properties(onnxruntime_providers_nnapi PROPERTIES LINKER_LANGUAGE CXX)
endif()

if (onnxruntime_ENABLE_MICROSOFT_INTERNAL)
include(onnxruntime_providers_internal.cmake)
endif()
Expand Down
1 change: 1 addition & 0 deletions cmake/onnxruntime_python.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ set(onnxruntime_pybind11_state_libs
${PROVIDERS_MKLDNN}
${PROVIDERS_TENSORRT}
${PROVIDERS_NGRAPH}
${PROVIDERS_NNAPI}
onnxruntime_optimizer
onnxruntime_providers
onnxruntime_util
Expand Down
21 changes: 21 additions & 0 deletions cmake/onnxruntime_unittests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,8 @@ set(onnxruntime_test_providers_src_patterns
"${TEST_SRC_DIR}/providers/*.cc"
"${TEST_SRC_DIR}/framework/TestAllocatorManager.cc"
"${TEST_SRC_DIR}/framework/TestAllocatorManager.h"
"${TEST_SRC_DIR}/framework/test_utils.cc"
"${TEST_SRC_DIR}/framework/test_utils.h"
)
if(NOT onnxruntime_DISABLE_CONTRIB_OPS)
list(APPEND onnxruntime_test_providers_src_patterns
Expand All @@ -134,6 +136,13 @@ if (onnxruntime_USE_NGRAPH)
list(APPEND onnxruntime_test_providers_src ${onnxruntime_test_providers_ngraph_src})
endif()

if (onnxruntime_USE_NNAPI)
file(GLOB_RECURSE onnxruntime_test_providers_nnapi_src CONFIGURE_DEPENDS
"${TEST_SRC_DIR}/providers/nnapi/*"
)
list(APPEND onnxruntime_test_providers_src ${onnxruntime_test_providers_nnapi_src})
endif()

# tests from lowest level library up.
# the order of libraries should be maintained, with higher libraries being added first in the list

Expand Down Expand Up @@ -188,6 +197,10 @@ if(onnxruntime_USE_NGRAPH)
list(APPEND onnxruntime_test_providers_dependencies onnxruntime_providers_ngraph)
endif()

if(onnxruntime_USE_NNAPI)
list(APPEND onnxruntime_test_providers_dependencies onnxruntime_providers_nnapi)
endif()

file(GLOB_RECURSE onnxruntime_test_tvm_src CONFIGURE_DEPENDS
"${ONNXRUNTIME_ROOT}/test/tvm/*.h"
"${ONNXRUNTIME_ROOT}/test/tvm/*.cc"
Expand All @@ -204,6 +217,7 @@ set(ONNXRUNTIME_TEST_LIBS
${PROVIDERS_MKLDNN}
${PROVIDERS_TENSORRT}
${PROVIDERS_NGRAPH}
${PROVIDERS_NNAPI}
onnxruntime_optimizer
onnxruntime_providers
onnxruntime_util
Expand All @@ -227,6 +241,13 @@ if(onnxruntime_USE_TENSORRT)
list(APPEND onnxruntime_test_providers_libs onnxruntime_providers_tensorrt)
endif()

if(onnxruntime_USE_NNAPI)
list(APPEND onnxruntime_test_framework_src_patterns ${TEST_SRC_DIR}/providers/nnapi/*)
list(APPEND onnxruntime_test_framework_libs onnxruntime_providers_nnapi)
list(APPEND onnxruntime_test_providers_dependencies onnxruntime_providers_nnapi)
list(APPEND onnxruntime_test_providers_libs onnxruntime_providers_nnapi)
endif()

if(WIN32)
if (onnxruntime_USE_TVM)
list(APPEND disabled_warnings ${DISABLED_WARNINGS_FOR_TVM})
Expand Down
1 change: 1 addition & 0 deletions include/onnxruntime/core/graph/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ constexpr const char* kNGraphExecutionProvider = "NGRAPHExecutionProvider";
constexpr const char* kNupharExecutionProvider = "NupharExecutionProvider";
constexpr const char* kBrainSliceExecutionProvider = "BrainSliceExecutionProvider";
constexpr const char* kTensorrtExecutionProvider = "TensorrtExecutionProvider";
constexpr const char* kNnapiExecutionProvider = "NnapiExecutionProvider";
} // namespace onnxruntime

15 changes: 15 additions & 0 deletions include/onnxruntime/core/providers/nnapi/nnapi_provider_factory.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright 2019 JD.com Inc. JD AI

#include "core/session/onnxruntime_c_api.h"

#ifdef __cplusplus
extern "C" {
#endif

ORT_API_STATUS(OrtSessionOptionsAppendExecutionProvider_Nnapi, _In_ OrtSessionOptions* options);

#ifdef __cplusplus
}
#endif


Loading