From 2682a422522884f4d69f2f819941b602da119b8e Mon Sep 17 00:00:00 2001 From: zhujingxuan Date: Thu, 25 Mar 2021 17:24:40 +0800 Subject: [PATCH] fix parallel issue --- mindspore/lite/micro/CMakeLists.txt | 1 + mindspore/lite/micro/cmake/file_list.cmake | 9 --- .../lite/micro/cmake/package_android.cmake | 17 ----- .../lite/micro/cmake/package_nnacl.cmake | 22 ------ .../lite/micro/cmake/package_wrapper.cmake | 7 +- .../component/const_blocks/benchmark.cc | 2 +- .../component/const_blocks/cmake_lists.cc | 2 - .../coder/operator_library/CMakeLists.txt | 67 +++++++++++++++++-- 8 files changed, 66 insertions(+), 61 deletions(-) delete mode 100644 mindspore/lite/micro/cmake/package_android.cmake delete mode 100644 mindspore/lite/micro/cmake/package_nnacl.cmake diff --git a/mindspore/lite/micro/CMakeLists.txt b/mindspore/lite/micro/CMakeLists.txt index 7cb831403c..74b573ccbc 100644 --- a/mindspore/lite/micro/CMakeLists.txt +++ b/mindspore/lite/micro/CMakeLists.txt @@ -13,6 +13,7 @@ include(${TOP_DIR}/cmake/dependency_utils.cmake) include(${TOP_DIR}/cmake/dependency_securec.cmake) if(NOT PLATFORM_ARM64 AND NOT PLATFORM_ARM32) set(ENABLE_CONVERTER ON) + set(BUILD_LITE ON) include(${TOP_DIR}/cmake/external_libs/glog.cmake) ### flatbuffer include(${TOP_DIR}/cmake/external_libs/flatbuffers.cmake) diff --git a/mindspore/lite/micro/cmake/file_list.cmake b/mindspore/lite/micro/cmake/file_list.cmake index f3bc5c27c5..2e49addd5b 100644 --- a/mindspore/lite/micro/cmake/file_list.cmake +++ b/mindspore/lite/micro/cmake/file_list.cmake @@ -125,23 +125,14 @@ set(CODER_OPCODERS_SRC set(LITE_SRC ${LITE_DIR}/src/common/file_utils.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/tensor_util.cc - ${LITE_DIR}/src/runtime/allocator.cc ${LITE_DIR}/src/runtime/infer_manager.cc - ${LITE_DIR}/src/runtime/runtime_api.cc ${LITE_DIR}/src/lite_model.cc ${LITE_DIR}/src/tensorlist.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/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/executor.cc ${LITE_DIR}/src/common/log_adapter.cc ${LITE_DIR}/src/common/utils.cc ### populate operator parameter diff --git a/mindspore/lite/micro/cmake/package_android.cmake b/mindspore/lite/micro/cmake/package_android.cmake deleted file mode 100644 index cecc4ec60f..0000000000 --- a/mindspore/lite/micro/cmake/package_android.cmake +++ /dev/null @@ -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() diff --git a/mindspore/lite/micro/cmake/package_nnacl.cmake b/mindspore/lite/micro/cmake/package_nnacl.cmake deleted file mode 100644 index ee24e52449..0000000000 --- a/mindspore/lite/micro/cmake/package_nnacl.cmake +++ /dev/null @@ -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}) diff --git a/mindspore/lite/micro/cmake/package_wrapper.cmake b/mindspore/lite/micro/cmake/package_wrapper.cmake index 54bc68e226..ce455fe83f 100644 --- a/mindspore/lite/micro/cmake/package_wrapper.cmake +++ b/mindspore/lite/micro/cmake/package_wrapper.cmake @@ -1,10 +1,7 @@ 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(RUNTIME_SRC - ${LITE_DIR}/src/runtime/thread_pool.c - ) + set(WRAPPER_SRC ${WRAPPER_DIR}/base/common_wrapper.c @@ -24,4 +21,4 @@ set(WRAPPER_SRC ${WRAPPER_DIR}/int8/batchnorm_int8_wrapper.c ) -list(APPEND FILE_SET ${WRAPPER_SRC} ${RUNTIME_SRC}) +list(APPEND FILE_SET ${WRAPPER_SRC}) diff --git a/mindspore/lite/micro/coder/generator/component/const_blocks/benchmark.cc b/mindspore/lite/micro/coder/generator/component/const_blocks/benchmark.cc index aece1669d7..c036449f54 100644 --- a/mindspore/lite/micro/coder/generator/component/const_blocks/benchmark.cc +++ b/mindspore/lite/micro/coder/generator/component/const_blocks/benchmark.cc @@ -131,7 +131,7 @@ int main(int argc, const char **argv) { } lite::Context *context = nullptr; - if (argc >= 5) { + if (argc >= 6) { // config benchmark context context = new (std::nothrow) lite::Context(); if (context == nullptr) { diff --git a/mindspore/lite/micro/coder/generator/component/const_blocks/cmake_lists.cc b/mindspore/lite/micro/coder/generator/component/const_blocks/cmake_lists.cc index c06313021b..e4af9740f0 100644 --- a/mindspore/lite/micro/coder/generator/component/const_blocks/cmake_lists.cc +++ b/mindspore/lite/micro/coder/generator/component/const_blocks/cmake_lists.cc @@ -42,7 +42,6 @@ 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) @@ -113,7 +112,6 @@ 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) diff --git a/mindspore/lite/micro/coder/operator_library/CMakeLists.txt b/mindspore/lite/micro/coder/operator_library/CMakeLists.txt index ff0b529c16..16a44f0edb 100644 --- a/mindspore/lite/micro/coder/operator_library/CMakeLists.txt +++ b/mindspore/lite/micro/coder/operator_library/CMakeLists.txt @@ -19,9 +19,12 @@ if(ENABLE_ASAN) set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${OPTION_CXX_FLAGS} -lasan") endif() +include_directories(${LITE_DIR}) set(MICRO_CMAKE_PATH ${MICRO_DIR}/cmake) set(OPERATOR_LIBRARY_PATH ${CMAKE_BINARY_DIR}/operator_library) 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") file(REMOVE_RECURSE ${OPERATOR_LIBRARY_PATH}) @@ -40,24 +43,78 @@ file(COPY ${CMAKE_BINARY_DIR}/cmsis/CMSIS/Core/Include DESTINATION ${HEADER_PATH}/CMSIS/Core) 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() + 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() -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_wrapper.cmake) 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) list(APPEND OP_FILES ${CMSIS_OPS}) endif() + # generate static library 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})