From: @zhujingxuan Reviewed-by: @wangchengyuan,@wangchengyuan Signed-off-by: @wangchengyuanpull/14213/MERGE
| @@ -13,6 +13,7 @@ include(${TOP_DIR}/cmake/dependency_utils.cmake) | |||||
| include(${TOP_DIR}/cmake/dependency_securec.cmake) | include(${TOP_DIR}/cmake/dependency_securec.cmake) | ||||
| if(NOT PLATFORM_ARM64 AND NOT PLATFORM_ARM32) | if(NOT PLATFORM_ARM64 AND NOT PLATFORM_ARM32) | ||||
| set(ENABLE_CONVERTER ON) | set(ENABLE_CONVERTER ON) | ||||
| set(BUILD_LITE ON) | |||||
| include(${TOP_DIR}/cmake/external_libs/glog.cmake) | include(${TOP_DIR}/cmake/external_libs/glog.cmake) | ||||
| ### flatbuffer | ### flatbuffer | ||||
| include(${TOP_DIR}/cmake/external_libs/flatbuffers.cmake) | include(${TOP_DIR}/cmake/external_libs/flatbuffers.cmake) | ||||
| @@ -125,23 +125,14 @@ set(CODER_OPCODERS_SRC | |||||
| set(LITE_SRC | set(LITE_SRC | ||||
| ${LITE_DIR}/src/common/file_utils.cc | ${LITE_DIR}/src/common/file_utils.cc | ||||
| ${LITE_DIR}/src/common/graph_util.cc | ${LITE_DIR}/src/common/graph_util.cc | ||||
| ${LITE_DIR}/src/common/string_util.cc | |||||
| ${LITE_DIR}/src/common/prim_util.cc | ${LITE_DIR}/src/common/prim_util.cc | ||||
| ${LITE_DIR}/src/common/tensor_util.cc | ${LITE_DIR}/src/common/tensor_util.cc | ||||
| ${LITE_DIR}/src/runtime/allocator.cc | |||||
| ${LITE_DIR}/src/runtime/infer_manager.cc | ${LITE_DIR}/src/runtime/infer_manager.cc | ||||
| ${LITE_DIR}/src/runtime/runtime_api.cc | |||||
| ${LITE_DIR}/src/lite_model.cc | ${LITE_DIR}/src/lite_model.cc | ||||
| ${LITE_DIR}/src/tensorlist.cc | ${LITE_DIR}/src/tensorlist.cc | ||||
| ${LITE_DIR}/src/tensor.cc | ${LITE_DIR}/src/tensor.cc | ||||
| ${LITE_DIR}/src/scheduler.cc | |||||
| ${LITE_DIR}/src/inner_context.cc | |||||
| ${LITE_DIR}/src/dequant.cc | ${LITE_DIR}/src/dequant.cc | ||||
| ${LITE_DIR}/src/kernel_registry.cc | |||||
| ${LITE_DIR}/src/lite_kernel.cc | |||||
| ${LITE_DIR}/src/sub_graph_kernel.cc | |||||
| ${LITE_DIR}/src/huffman_decode.cc | ${LITE_DIR}/src/huffman_decode.cc | ||||
| ${LITE_DIR}/src/executor.cc | |||||
| ${LITE_DIR}/src/common/log_adapter.cc | ${LITE_DIR}/src/common/log_adapter.cc | ||||
| ${LITE_DIR}/src/common/utils.cc | ${LITE_DIR}/src/common/utils.cc | ||||
| ### populate operator parameter | ### populate operator parameter | ||||
| @@ -1,17 +0,0 @@ | |||||
| option(MICRO_BUILD_ARM64 "build android arm64" OFF) | |||||
| option(MICRO_BUILD_ARM32A "build android arm32" OFF) | |||||
| if(MICRO_BUILD_ARM64 OR MICRO_BUILD_ARM32A) | |||||
| add_compile_definitions(ENABLE_NEON) | |||||
| add_compile_definitions(ENABLE_ARM) | |||||
| endif() | |||||
| if(MICRO_BUILD_ARM64) | |||||
| add_compile_definitions(ENABLE_ARM64) | |||||
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8.2-a+dotprod") | |||||
| endif() | |||||
| if(MICRO_BUILD_ARM32A) | |||||
| add_compile_definitions(ENABLE_ARM32) | |||||
| add_definitions(-mfloat-abi=softfp -mfpu=neon) | |||||
| endif() | |||||
| @@ -1,22 +0,0 @@ | |||||
| include_directories(${LITE_DIR}) | |||||
| set(NNACL_DIR ${LITE_DIR}/nnacl) | |||||
| file(GLOB KERNEL_SRC | |||||
| ${NNACL_DIR}/*.c | |||||
| ${NNACL_DIR}/base/*.c | |||||
| ${NNACL_DIR}/fp32/*.c | |||||
| ${NNACL_DIR}/int8/*.c | |||||
| ) | |||||
| if(MICRO_BUILD_ARM64) | |||||
| file(GLOB ASSEMBLY_SRC ${NNACL_DIR}/assembly/arm64/*.S) | |||||
| file(GLOB OPT_SRC ${NNACL_DIR}/assembly/opt/*.S) | |||||
| list(APPEND ASSEMBLY_SRC ${OPT_SRC}) | |||||
| set_property(SOURCE ${ASSEMBLY_SRC} PROPERTY LANGUAGE C) | |||||
| endif() | |||||
| if(MICRO_BUILD_ARM32A) | |||||
| file(GLOB ASSEMBLY_SRC ${NNACL_DIR}/assembly/arm32/*.S) | |||||
| set_property(SOURCE ${ASSEMBLY_SRC} PROPERTY LANGUAGE C) | |||||
| endif() | |||||
| set(NNACL_OPS ${KERNEL_SRC} ${ASSEMBLY_SRC}) | |||||
| @@ -1,10 +1,7 @@ | |||||
| include_directories(${LITE_DIR}/micro/coder/operator_library) | include_directories(${LITE_DIR}/micro/coder/operator_library) | ||||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") | |||||
| set(WRAPPER_DIR ${LITE_DIR}/micro/coder/operator_library/wrapper/) | set(WRAPPER_DIR ${LITE_DIR}/micro/coder/operator_library/wrapper/) | ||||
| set(RUNTIME_SRC | |||||
| ${LITE_DIR}/src/runtime/thread_pool.c | |||||
| ) | |||||
| set(WRAPPER_SRC | set(WRAPPER_SRC | ||||
| ${WRAPPER_DIR}/base/common_wrapper.c | ${WRAPPER_DIR}/base/common_wrapper.c | ||||
| @@ -24,4 +21,4 @@ set(WRAPPER_SRC | |||||
| ${WRAPPER_DIR}/int8/batchnorm_int8_wrapper.c | ${WRAPPER_DIR}/int8/batchnorm_int8_wrapper.c | ||||
| ) | ) | ||||
| list(APPEND FILE_SET ${WRAPPER_SRC} ${RUNTIME_SRC}) | |||||
| list(APPEND FILE_SET ${WRAPPER_SRC}) | |||||
| @@ -131,7 +131,7 @@ int main(int argc, const char **argv) { | |||||
| } | } | ||||
| lite::Context *context = nullptr; | lite::Context *context = nullptr; | ||||
| if (argc >= 5) { | |||||
| if (argc >= 6) { | |||||
| // config benchmark context | // config benchmark context | ||||
| context = new (std::nothrow) lite::Context(); | context = new (std::nothrow) lite::Context(); | ||||
| if (context == nullptr) { | if (context == nullptr) { | ||||
| @@ -42,7 +42,6 @@ endif() | |||||
| if(MICRO_BUILD_ARM64) | if(MICRO_BUILD_ARM64) | ||||
| add_compile_definitions(ENABLE_ARM64) | add_compile_definitions(ENABLE_ARM64) | ||||
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8.2-a+dotprod") | |||||
| endif() | endif() | ||||
| if(MICRO_BUILD_ARM32A) | if(MICRO_BUILD_ARM32A) | ||||
| @@ -113,7 +112,6 @@ endif() | |||||
| if(MICRO_BUILD_ARM64) | if(MICRO_BUILD_ARM64) | ||||
| add_compile_definitions(ENABLE_ARM64) | add_compile_definitions(ENABLE_ARM64) | ||||
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8.2-a+dotprod") | |||||
| endif() | endif() | ||||
| if(MICRO_BUILD_ARM32A) | if(MICRO_BUILD_ARM32A) | ||||
| @@ -19,9 +19,12 @@ if(ENABLE_ASAN) | |||||
| set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${OPTION_CXX_FLAGS} -lasan") | set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${OPTION_CXX_FLAGS} -lasan") | ||||
| endif() | endif() | ||||
| include_directories(${LITE_DIR}) | |||||
| set(MICRO_CMAKE_PATH ${MICRO_DIR}/cmake) | set(MICRO_CMAKE_PATH ${MICRO_DIR}/cmake) | ||||
| set(OPERATOR_LIBRARY_PATH ${CMAKE_BINARY_DIR}/operator_library) | set(OPERATOR_LIBRARY_PATH ${CMAKE_BINARY_DIR}/operator_library) | ||||
| set(HEADER_PATH "${OPERATOR_LIBRARY_PATH}/include") | set(HEADER_PATH "${OPERATOR_LIBRARY_PATH}/include") | ||||
| set(LIB_PATH "${OPERATOR_LIBRARY_PATH}/lib") | |||||
| set(NNACL_DIR ${LITE_DIR}/nnacl) | |||||
| message("===========>start to pack operators' head file") | message("===========>start to pack operators' head file") | ||||
| file(REMOVE_RECURSE ${OPERATOR_LIBRARY_PATH}) | file(REMOVE_RECURSE ${OPERATOR_LIBRARY_PATH}) | ||||
| @@ -40,24 +43,78 @@ file(COPY ${CMAKE_BINARY_DIR}/cmsis/CMSIS/Core/Include | |||||
| DESTINATION ${HEADER_PATH}/CMSIS/Core) | DESTINATION ${HEADER_PATH}/CMSIS/Core) | ||||
| if(PLATFORM_ARM64) | if(PLATFORM_ARM64) | ||||
| set(MICRO_BUILD_ARM64 ON) | |||||
| add_compile_definitions(ENABLE_ARM64) | |||||
| endif() | |||||
| if(PLATFORM_ARM32) | |||||
| add_compile_definitions(ENABLE_ARM32) | |||||
| add_definitions(-mfloat-abi=softfp -mfpu=neon) | |||||
| endif() | |||||
| if(PLATFORM_ARM64 OR PLATFORM_ARM32) | |||||
| add_compile_definitions(ENABLE_NEON) | |||||
| add_compile_definitions(ENABLE_ARM) | |||||
| endif() | |||||
| file(GLOB KERNEL_SRC | |||||
| ${NNACL_DIR}/*.c | |||||
| ${NNACL_DIR}/base/*.c | |||||
| ${NNACL_DIR}/fp32/*.c | |||||
| ${NNACL_DIR}/int8/*.c | |||||
| ) | |||||
| if(PLATFORM_ARM64) | |||||
| file(GLOB ASSEMBLY_SRC ${NNACL_DIR}/assembly/arm64/*.S) | |||||
| set_property(SOURCE ${ASSEMBLY_SRC} PROPERTY LANGUAGE C) | |||||
| endif() | endif() | ||||
| if(PLATFORM_ARM32) | if(PLATFORM_ARM32) | ||||
| set(MICRO_BUILD_ARM32A ON) | |||||
| file(GLOB ASSEMBLY_SRC ${NNACL_DIR}/assembly/arm32/*.S) | |||||
| set_property(SOURCE ${ASSEMBLY_SRC} PROPERTY LANGUAGE C) | |||||
| endif() | endif() | ||||
| include(${MICRO_CMAKE_PATH}/package_android.cmake) | |||||
| include(${MICRO_CMAKE_PATH}/package_nnacl.cmake) | |||||
| set(NNACL_OPS ${KERNEL_SRC} ${ASSEMBLY_SRC}) | |||||
| set(RUNTIME_SRC ${LITE_DIR}/src/runtime/thread_pool.c) | |||||
| include(${MICRO_CMAKE_PATH}/package_cmsis.cmake) | include(${MICRO_CMAKE_PATH}/package_cmsis.cmake) | ||||
| include(${MICRO_CMAKE_PATH}/package_wrapper.cmake) | include(${MICRO_CMAKE_PATH}/package_wrapper.cmake) | ||||
| list(APPEND OP_FILES ${NNACL_OPS} ${WRAPPER_SRC} ${RUNTIME_SRC}) | list(APPEND OP_FILES ${NNACL_OPS} ${WRAPPER_SRC} ${RUNTIME_SRC}) | ||||
| set(LIB_PATH "${OPERATOR_LIBRARY_PATH}/lib") | |||||
| if(NOT PLATFORM_ARM64 AND NOT PLATFORM_ARM32) | if(NOT PLATFORM_ARM64 AND NOT PLATFORM_ARM32) | ||||
| list(APPEND OP_FILES ${CMSIS_OPS}) | list(APPEND OP_FILES ${CMSIS_OPS}) | ||||
| endif() | endif() | ||||
| # generate static library | # generate static library | ||||
| add_library(ops STATIC ${OP_FILES}) | add_library(ops STATIC ${OP_FILES}) | ||||
| function(create_library) | |||||
| string(CONCAT library_name "lib" ops ".a") | |||||
| string(CONCAT opt_name "lib" opt_ops ".a") | |||||
| set(ANDROID_AR | |||||
| ${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar) | |||||
| add_custom_command(TARGET ops | |||||
| POST_BUILD | |||||
| COMMAND rm -rf tmp | |||||
| COMMAND mkdir tmp | |||||
| COMMAND mv ${opt_name} ./tmp && cd ./tmp && ${ANDROID_AR} -x ${opt_name} | |||||
| COMMAND mv ${library_name} ./tmp && cd ./tmp && ${ANDROID_AR} -x ${library_name} | |||||
| COMMENT "unzip raw static library ${library_name}" | |||||
| COMMAND ${ANDROID_AR} cr ${library_name} ./tmp/*.o | |||||
| COMMAND rm -rf tmp | |||||
| COMMENT "generate specified static library ${library_name}" | |||||
| ) | |||||
| endfunction() | |||||
| if(PLATFORM_ARM64) | |||||
| file(GLOB OPT_SRC ${NNACL_DIR}/assembly/opt/*.S) | |||||
| set_property(SOURCE ${OPT_SRC} PROPERTY LANGUAGE C) | |||||
| add_library(opt_ops STATIC ${OPT_SRC}) | |||||
| add_dependencies(ops opt_ops) | |||||
| set_target_properties(opt_ops PROPERTIES COMPILE_FLAGS -march=armv8.2-a+dotprod) | |||||
| create_library() | |||||
| endif() | |||||
| install(TARGETS ops ARCHIVE DESTINATION ${LIB_PATH}) | install(TARGETS ops ARCHIVE DESTINATION ${LIB_PATH}) | ||||