forked from mindspore-Ecosystem/mindspore
[MSLITE] support compiling micro runtime for openharmony lite
This commit is contained in:
parent
ec7ce3494a
commit
5720ae8392
|
@ -8,7 +8,11 @@ if(NOT TARGET securec)
|
||||||
set(_ms_tmp_CMAKE_POSITION_INDEPENDENT_CODE ${CMAKE_POSITION_INDEPENDENT_CODE})
|
set(_ms_tmp_CMAKE_POSITION_INDEPENDENT_CODE ${CMAKE_POSITION_INDEPENDENT_CODE})
|
||||||
set(_ms_tmp_CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
|
set(_ms_tmp_CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${SECURE_CXX_FLAGS}")
|
if(TARGET_OHOS_LITE)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SECURE_CXX_FLAGS}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_C_FLAGS "${SECURE_CXX_FLAGS}")
|
||||||
|
endif()
|
||||||
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||||
add_compile_definitions(SECUREC_ONLY_DECLARE_MEMSET)
|
add_compile_definitions(SECUREC_ONLY_DECLARE_MEMSET)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -290,7 +290,7 @@ elseif(PLATFORM_ARM32)
|
||||||
install(DIRECTORY ${TOP_DIR}/include/api/ DESTINATION ${RUNTIME_INC_DIR}/api
|
install(DIRECTORY ${TOP_DIR}/include/api/ DESTINATION ${RUNTIME_INC_DIR}/api
|
||||||
COMPONENT ${RUNTIME_COMPONENT_NAME} FILES_MATCHING PATTERN "*.h" PATTERN "ops*" EXCLUDE)
|
COMPONENT ${RUNTIME_COMPONENT_NAME} FILES_MATCHING PATTERN "*.h" PATTERN "ops*" EXCLUDE)
|
||||||
__install_micro_wrapper()
|
__install_micro_wrapper()
|
||||||
if(MSLITE_ENABLE_TOOLS)
|
if(MSLITE_ENABLE_TOOLS AND NOT TARGET_OHOS_LITE)
|
||||||
install(TARGETS ${BENCHMARK_NAME} RUNTIME DESTINATION ${BENCHMARK_ROOT_DIR} COMPONENT ${RUNTIME_COMPONENT_NAME})
|
install(TARGETS ${BENCHMARK_NAME} RUNTIME DESTINATION ${BENCHMARK_ROOT_DIR} COMPONENT ${RUNTIME_COMPONENT_NAME})
|
||||||
if(SUPPORT_TRAIN)
|
if(SUPPORT_TRAIN)
|
||||||
install(TARGETS ${BENCHMARK_TRAIN_NAME} RUNTIME DESTINATION ${BENCHMARK_TRAIN_ROOT_DIR} COMPONENT
|
install(TARGETS ${BENCHMARK_TRAIN_NAME} RUNTIME DESTINATION ${BENCHMARK_TRAIN_ROOT_DIR} COMPONENT
|
||||||
|
|
|
@ -6,6 +6,9 @@ if(TOOLCHAIN_NAME STREQUAL "himix200")
|
||||||
set(TARGET_HIMIX200 on)
|
set(TARGET_HIMIX200 on)
|
||||||
set(ENABLE_MINDRT off)
|
set(ENABLE_MINDRT off)
|
||||||
add_compile_definitions(SUPPORT_NNIE)
|
add_compile_definitions(SUPPORT_NNIE)
|
||||||
|
elseif(TOOLCHAIN_NAME STREQUAL "ohos-lite")
|
||||||
|
set(TARGET_OHOS_LITE on)
|
||||||
|
SET_PROPERTY(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.0 AND NOT TARGET_HIMIX200)
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.0 AND NOT TARGET_HIMIX200)
|
||||||
|
@ -177,6 +180,8 @@ elseif(PLATFORM_ARM32)
|
||||||
set(RUNTIME_COMPONENT_NAME "android-aarch32")
|
set(RUNTIME_COMPONENT_NAME "android-aarch32")
|
||||||
if(TARGET_HIMIX200)
|
if(TARGET_HIMIX200)
|
||||||
set(RUNTIME_COMPONENT_NAME "linux-aarch32")
|
set(RUNTIME_COMPONENT_NAME "linux-aarch32")
|
||||||
|
elseif(TARGET_OHOS_LITE)
|
||||||
|
set(RUNTIME_COMPONENT_NAME "ohos-aarch32")
|
||||||
endif()
|
endif()
|
||||||
elseif(WIN32)
|
elseif(WIN32)
|
||||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
|
@ -211,7 +216,7 @@ include(${TOP_DIR}/cmake/utils.cmake)
|
||||||
include(${TOP_DIR}/cmake/dependency_utils.cmake)
|
include(${TOP_DIR}/cmake/dependency_utils.cmake)
|
||||||
include(${TOP_DIR}/cmake/dependency_securec.cmake)
|
include(${TOP_DIR}/cmake/dependency_securec.cmake)
|
||||||
include(${TOP_DIR}/cmake/external_libs/flatbuffers.cmake)
|
include(${TOP_DIR}/cmake/external_libs/flatbuffers.cmake)
|
||||||
if(NOT TARGET_HIMIX200)
|
if(NOT TARGET_HIMIX200 AND NOT TARGET_OHOS_LITE)
|
||||||
include(${TOP_DIR}/cmake/external_libs/openssl.cmake)
|
include(${TOP_DIR}/cmake/external_libs/openssl.cmake)
|
||||||
endif()
|
endif()
|
||||||
if(MSLITE_GPU_BACKEND STREQUAL opencl)
|
if(MSLITE_GPU_BACKEND STREQUAL opencl)
|
||||||
|
@ -309,7 +314,7 @@ if(WIN32)
|
||||||
add_compile_definitions(BUILDING_DLL)
|
add_compile_definitions(BUILDING_DLL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_MINDRT OR TARGET_HIMIX200)
|
if(ENABLE_MINDRT OR TARGET_HIMIX200 OR TARGET_OHOS_LITE)
|
||||||
include_directories(${CORE_DIR}/mindrt/include)
|
include_directories(${CORE_DIR}/mindrt/include)
|
||||||
include_directories(${CORE_DIR}/mindrt/src)
|
include_directories(${CORE_DIR}/mindrt/src)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
if(NOT DEFINED ENV{OHOS_SYSROOT_PATH})
|
||||||
|
message(FATAL_ERROR "No defined environment variable: OHOS_SYSROOT_PATH")
|
||||||
|
endif()
|
||||||
|
set(OHOS_SYSROOT_PATH "$ENV{OHOS_SYSROOT_PATH}")
|
||||||
|
|
||||||
|
set(CMAKE_SYSTEM_NAME Generic)
|
||||||
|
set(CMAKE_CXX_COMPILER_ID Clang)
|
||||||
|
set(CMAKE_TOOLCHAIN_PREFIX llvm-)
|
||||||
|
set(CMAKE_C_COMPILER clang)
|
||||||
|
set(CMAKE_C_FLAGS "--target=arm-liteos -D__clang__ -march=armv7-a -w")
|
||||||
|
set(CMAKE_CXX_COMPILER clang++)
|
||||||
|
set(CMAKE_CXX_FLAGS "--target=arm-liteos -D__clang__ -march=armv7-a -w")
|
||||||
|
set(MY_LINK_FLAGS "--target=arm-liteos --sysroot=${OHOS_SYSROOT_PATH}")
|
||||||
|
set(CMAKE_LINKER clang)
|
||||||
|
set(CMAKE_CXX_LINKER clang++)
|
||||||
|
set(CMAKE_C_LINKER clang)
|
||||||
|
set(CMAKE_C_LINK_EXECUTABLE
|
||||||
|
"${CMAKE_C_LINKER} ${MY_LINK_FLAGS} <FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||||
|
set(CMAKE_CXX_LINK_EXECUTABLE
|
||||||
|
"${CMAKE_CXX_LINKER} ${MY_LINK_FLAGS} <FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||||
|
set(CMAKE_SYSROOT ${OHOS_SYSROOT_PATH})
|
||||||
|
|
||||||
|
set(ENABLE_MINDRT "off")
|
||||||
|
find_path(GCC_PATH gcc)
|
||||||
|
find_path(GXX_PATH g++)
|
||||||
|
if(NOT ${GCC_PATH} STREQUAL "GCC_PATH-NOTFOUND" AND NOT ${GXX_PATH} STREQUAL "GXX_PATH-NOTFOUND")
|
||||||
|
set(FLATC_GCC_COMPILER ${GCC_PATH}/gcc)
|
||||||
|
set(FLATC_GXX_COMPILER ${GXX_PATH}/g++)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(APPEND CMAKE_EXE_LINKER_FLAGS " -Wl,--gc-sections")
|
|
@ -139,8 +139,19 @@ int main(int argc, const char **argv) {
|
||||||
return lite::RET_ERROR;
|
return lite::RET_ERROR;
|
||||||
}
|
}
|
||||||
context->thread_num_ = atoi(argv[5]);
|
context->thread_num_ = atoi(argv[5]);
|
||||||
|
if (context->thread_num_ < 1) {
|
||||||
|
printf("Thread number error! It should be greater than 0\n");
|
||||||
|
return lite::RET_ERROR;
|
||||||
|
}
|
||||||
context->device_list_.resize(1);
|
context->device_list_.resize(1);
|
||||||
context->device_list_[0] = {lite::DT_CPU, {{false, static_cast<lite::CpuBindMode>(atoi(argv[6]))}}};
|
context->device_list_[0].device_type_ = lite::DT_CPU;
|
||||||
|
context->device_list_[0].device_info_.cpu_device_info_.enable_float16_ = false;
|
||||||
|
lite::CpuBindMode bind_mode = static_cast<lite::CpuBindMode>(atoi(argv[6]));
|
||||||
|
if (bind_mode < lite::NO_BIND || bind_mode > lite::MID_CPU) {
|
||||||
|
printf("Thread bind mode error! 0: No bind, 1: Bind hign cpu, 2: Bind mid cpu.\n");
|
||||||
|
return lite::RET_ERROR;
|
||||||
|
}
|
||||||
|
context->device_list_[0].device_info_.cpu_device_info_.cpu_bind_mode_ = bind_mode;
|
||||||
printf("context: ThreadNum: %d, BindMode: %d\n", context->thread_num_,
|
printf("context: ThreadNum: %d, BindMode: %d\n", context->thread_num_,
|
||||||
context->device_list_[0].device_info_.cpu_device_info_.cpu_bind_mode_);
|
context->device_list_[0].device_info_.cpu_device_info_.cpu_bind_mode_);
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,7 +149,7 @@ if(ENABLE_MINDRT)
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/lite_mindrt.cc
|
${CMAKE_CURRENT_SOURCE_DIR}/lite_mindrt.cc
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mindrt_executor.cc
|
${CMAKE_CURRENT_SOURCE_DIR}/mindrt_executor.cc
|
||||||
)
|
)
|
||||||
elseif(TARGET_HIMIX200)
|
elseif(TARGET_HIMIX200 OR TARGET_OHOS_LITE)
|
||||||
file(GLOB MINDRT_ACTOR ${CORE_DIR}/mindrt/src/actor/*.cc)
|
file(GLOB MINDRT_ACTOR ${CORE_DIR}/mindrt/src/actor/*.cc)
|
||||||
set(LITE_SRC
|
set(LITE_SRC
|
||||||
${LITE_SRC}
|
${LITE_SRC}
|
||||||
|
@ -232,7 +232,7 @@ if(SUPPORT_NPU)
|
||||||
target_link_libraries(mindspore-lite npu_kernel_mid)
|
target_link_libraries(mindspore-lite npu_kernel_mid)
|
||||||
target_link_libraries(mindspore-lite_static npu_kernel_mid)
|
target_link_libraries(mindspore-lite_static npu_kernel_mid)
|
||||||
endif()
|
endif()
|
||||||
if(PLATFORM_ARM32 OR PLATFORM_ARM64 AND NOT TARGET_HIMIX200)
|
if(PLATFORM_ARM32 OR PLATFORM_ARM64 AND NOT TARGET_HIMIX200 AND NOT TARGET_OHOS_LITE)
|
||||||
target_link_libraries(mindspore-lite log)
|
target_link_libraries(mindspore-lite log)
|
||||||
target_link_libraries(mindspore-lite_static log)
|
target_link_libraries(mindspore-lite_static log)
|
||||||
endif()
|
endif()
|
||||||
|
@ -260,6 +260,8 @@ if(NOT APPLE AND PLATFORM_ARM)
|
||||||
"${ANDROID_NDK}/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/aarch64-linux-android/bin/strip")
|
"${ANDROID_NDK}/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/aarch64-linux-android/bin/strip")
|
||||||
if(TARGET_HIMIX200)
|
if(TARGET_HIMIX200)
|
||||||
set(NDK_STRIP ${HIMIX_STRIP})
|
set(NDK_STRIP ${HIMIX_STRIP})
|
||||||
|
elseif(TARGET_OHOS_LITE)
|
||||||
|
set(NDK_STRIP "llvm-strip")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,11 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include "src/common/log_adapter.h"
|
#include "src/common/log_adapter.h"
|
||||||
#include "nnacl/nnacl_utils.h"
|
#include "nnacl/nnacl_utils.h"
|
||||||
#ifndef MS_COMPILE_IOS
|
#ifdef __ANDROID__
|
||||||
#include <sys/auxv.h>
|
#include <sys/auxv.h>
|
||||||
#include <asm/hwcap.h>
|
#include <asm/hwcap.h>
|
||||||
#else
|
#endif
|
||||||
|
#ifdef MS_COMPILE_IOS
|
||||||
#include <mach/mach.h>
|
#include <mach/mach.h>
|
||||||
#include <mach/machine.h>
|
#include <mach/machine.h>
|
||||||
#include <mach/thread_act.h>
|
#include <mach/thread_act.h>
|
||||||
|
@ -46,7 +47,7 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
namespace mindspore::lite {
|
namespace mindspore::lite {
|
||||||
#ifndef MS_COMPILE_IOS
|
#ifdef __ANDROID__
|
||||||
uint32_t CpuInfo::MidrSetPart(uint32_t part) {
|
uint32_t CpuInfo::MidrSetPart(uint32_t part) {
|
||||||
return ((part << ARM_CPU_PART_OFFSET) & ARM_CPU_PART_MASK) | (midr_ & ~ARM_CPU_PART_MASK);
|
return ((part << ARM_CPU_PART_OFFSET) & ARM_CPU_PART_MASK) | (midr_ & ~ARM_CPU_PART_MASK);
|
||||||
}
|
}
|
||||||
|
@ -137,6 +138,7 @@ bool CpuInfo::ArmIsSupportFp16() {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
#else
|
#else
|
||||||
|
#ifdef __ANDROID__
|
||||||
#ifdef ENABLE_ARM32
|
#ifdef ENABLE_ARM32
|
||||||
GetArmProcCpuInfo(&android_cpu_info_);
|
GetArmProcCpuInfo(&android_cpu_info_);
|
||||||
midr_ = MidrSetPart(android_cpu_info_.cpu_part);
|
midr_ = MidrSetPart(android_cpu_info_.cpu_part);
|
||||||
|
@ -174,6 +176,7 @@ bool CpuInfo::ArmIsSupportFp16() {
|
||||||
} else {
|
} else {
|
||||||
MS_LOG(DEBUG) << "Hw cap NOT support FP16, hwcap: 0x" << hwcap;
|
MS_LOG(DEBUG) << "Hw cap NOT support FP16, hwcap: 0x" << hwcap;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
return fp16_flag_;
|
return fp16_flag_;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -15,7 +15,7 @@ add_executable(benchmark
|
||||||
|
|
||||||
add_dependencies(benchmark fbs_src)
|
add_dependencies(benchmark fbs_src)
|
||||||
|
|
||||||
if((PLATFORM_ARM32 OR PLATFORM_ARM64) AND NOT TARGET_HIMIX200)
|
if((PLATFORM_ARM32 OR PLATFORM_ARM64) AND NOT TARGET_HIMIX200 AND NOT TARGET_OHOS_LITE)
|
||||||
if(SUPPORT_NPU AND ANDROID_STL STREQUAL "c++_static")
|
if(SUPPORT_NPU AND ANDROID_STL STREQUAL "c++_static")
|
||||||
target_link_libraries(benchmark mindspore-lite mindspore::json c++_shared)
|
target_link_libraries(benchmark mindspore-lite mindspore::json c++_shared)
|
||||||
else()
|
else()
|
||||||
|
|
Loading…
Reference in New Issue