!24631 [MS][LITE]Add himix100 build and fix build.sh

Merge pull request !24631 from gongdaguo/hi3559
This commit is contained in:
i-robot 2021-10-11 02:00:34 +00:00 committed by Gitee
commit 8b42909722
13 changed files with 176 additions and 128 deletions

View File

@ -31,7 +31,7 @@ endif()
string(REPLACE "-fvisibility=hidden" "-fvisibility=default" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
if(NOT PLATFORM_ARM32)
if(NOT PLATFORM_ARM32 AND NOT TARGET_HIMIX)
list(APPEND SDOT_FILES ${SDOT_SRC})
add_library(nnacl_optimize_mid OBJECT ${SDOT_FILES})
add_dependencies(nnacl_optimize_mid fbs_src)

View File

@ -6,18 +6,6 @@ set(BUILD_LITE "on")
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/secure_option.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/compile_link_option.cmake)
if(TOOLCHAIN_NAME STREQUAL "himix200")
set(TARGET_HIMIX200 on)
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()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.0 AND NOT TARGET_HIMIX200)
message(FATAL_ERROR "GCC version ${CMAKE_CXX_COMPILER_VERSION} must not be less than 7.3.0")
endif()
#Options that can be configured through environment variables or manually
set(MSLITE_GPU_BACKEND "" CACHE STRING "enable gpu backend, \
opencl only support arm64 and x86_64 , tensorrt only support x86_64, opencl/cuda/tensorrt/off")
@ -28,9 +16,7 @@ option(MSLITE_ENABLE_AVX "enable AVX instruction set, only x86_64 support" off)
option(MSLITE_ENABLE_CONVERTER "enable converter, only x86_64 support" on)
option(MSLITE_ENABLE_TOOLS "enable tools" on)
option(MSLITE_ENABLE_TESTCASES "enable testcase" off)
option(MSLITE_ENABLE_NNIE "enable NNIE" off)
option(MSLITE_ENABLE_RUNTIME_PASS "enable runtime pass" on)
option(MSLITE_COMPILE_NNIE "compile NNIE" off)
option(MSLITE_ENABLE_HIGH_PERFORMANCE "enable high performance" off)
option(MSLITE_ENABLE_STRING_KERNEL "enable string kernel" on)
option(MSLITE_ENABLE_CONTROLFLOW "enable control and tensorlist" on)
@ -82,12 +68,6 @@ endif()
if(DEFINED ENV{MSLITE_ENABLE_TESTCASES})
set(MSLITE_ENABLE_TESTCASES $ENV{MSLITE_ENABLE_TESTCASES})
endif()
if(DEFINED ENV{MSLITE_ENABLE_NNIE})
set(MSLITE_ENABLE_NNIE $ENV{MSLITE_ENABLE_NNIE})
endif()
if(DEFINED ENV{MSLITE_COMPILE_NNIE})
set(MSLITE_COMPILE_NNIE $ENV{MSLITE_COMPILE_NNIE})
endif()
if(DEFINED ENV{MSLITE_ENABLE_RUNTIME_PASS})
set(MSLITE_ENABLE_RUNTIME_PASS $ENV{MSLITE_ENABLE_RUNTIME_PASS})
endif()
@ -131,6 +111,23 @@ if(DEFINED ENV{MSLITE_ENABLE_MODEL_ENCRYPTION})
set(MSLITE_ENABLE_MODEL_ENCRYPTION $ENV{MSLITE_ENABLE_MODEL_ENCRYPTION})
endif()
if(TOOLCHAIN_NAME STREQUAL "himix200")
set(TARGET_HIMIX on)
set(TARGET_HIMIX200 on)
add_compile_definitions(SUPPORT_NNIE)
elseif(TOOLCHAIN_NAME STREQUAL "himix100")
set(TARGET_HIMIX on)
set(TARGET_HIMIX100 on)
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()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.0 AND NOT TARGET_HIMIX)
message(FATAL_ERROR "GCC version ${CMAKE_CXX_COMPILER_VERSION} must not be less than 7.3.0")
endif()
if(NOT MSLITE_ENABLE_ACL)
set(ENABLE_GLIBCXX ON)
endif()
@ -192,7 +189,7 @@ if(MSLITE_ENABLE_NPU)
endif()
endif()
if(TARGET_HIMIX200 OR TARGET_OHOS_LITE)
if(TARGET_HIMIX OR TARGET_OHOS_LITE)
set(MSLITE_ENABLE_MINDRT off)
endif()
@ -211,15 +208,15 @@ message(STATUS "\tMSLITE_ENABLE_TOOLS = \t${MSLITE_ENABLE_TOOLS}")
message(STATUS "\tMSLITE_ENABLE_TESTCASES = \t${MSLITE_ENABLE_TESTCASES}")
message(STATUS "\tMSLITE_ENABLE_HIGH_PERFORMANCE = \t${MSLITE_ENABLE_HIGH_PERFORMANCE}")
message(STATUS "\tMSLITE_ENABLE_RUNTIME_PASS = \t${MSLITE_ENABLE_RUNTIME_PASS}")
message(STATUS "\tMSLITE_ENABLE_STRING_KERNEL = \t${MSLITE_ENABLE_STRING_KERNEL}")
message(STATUS "\tMSLITE_ENABLE_CONTROLFLOW = \t${MSLITE_ENABLE_CONTROLFLOW}")
message(STATUS "\tMSLITE_ENABLE_AUTO_PARALLEL = \t${MSLITE_ENABLE_AUTO_PARALLEL}")
message(STATUS "\tMSLITE_ENABLE_WEIGHT_DECODE = \t${MSLITE_ENABLE_WEIGHT_DECODE}")
message(STATUS "\tMSLITE_ENABLE_CUSTOM_KERNEL = \t${MSLITE_ENABLE_CUSTOM_KERNEL}")
message(STATUS "\tMSLITE_ENABLE_STRING_KERNEL = \t${MSLITE_ENABLE_STRING_KERNEL}")
message(STATUS "\tMSLITE_ENABLE_CONTROLFLOW = \t${MSLITE_ENABLE_CONTROLFLOW}")
message(STATUS "\tMSLITE_ENABLE_AUTO_PARALLEL = \t${MSLITE_ENABLE_AUTO_PARALLEL}")
message(STATUS "\tMSLITE_ENABLE_WEIGHT_DECODE = \t${MSLITE_ENABLE_WEIGHT_DECODE}")
message(STATUS "\tMSLITE_ENABLE_CUSTOM_KERNEL = \t${MSLITE_ENABLE_CUSTOM_KERNEL}")
message(STATUS "\tMSLITE_ENABLE_MINDRT = \t${MSLITE_ENABLE_MINDRT}")
message(STATUS "\tMSLITE_ENABLE_V0 = \t${MSLITE_ENABLE_V0}")
message(STATUS "\tBUILD_MINDDATA = \t${BUILD_MINDDATA}")
message(STATUS "\tMSLITE_ENABLE_DELEGATE = \t${MSLITE_ENABLE_DELEGATE}")
message(STATUS "\tMSLITE_ENABLE_DELEGATE = \t${MSLITE_ENABLE_DELEGATE}")
message(STATUS "\tMSLITE_ENABLE_ACL = \t${MSLITE_ENABLE_ACL}")
message(STATUS "\tMSLITE_ENABLE_FP16 = \t${MSLITE_ENABLE_FP16}")
message(STATUS "\tMSLITE_ENABLE_MODEL_ENCRYPTION = \t${MSLITE_ENABLE_MODEL_ENCRYPTION}")
@ -294,7 +291,11 @@ if(NOT MSVC)
endif()
if(PLATFORM_ARM64)
set(RUNTIME_COMPONENT_NAME "android-aarch64")
if(TARGET_HIMIX100)
set(RUNTIME_COMPONENT_NAME "linux-aarch64")
else()
set(RUNTIME_COMPONENT_NAME "android-aarch64")
endif()
elseif(PLATFORM_ARM32)
set(RUNTIME_COMPONENT_NAME "android-aarch32")
if(TARGET_HIMIX200)
@ -312,10 +313,6 @@ else()
set(RUNTIME_COMPONENT_NAME "linux-x64")
endif()
if(MSLITE_COMPILE_NNIE AND (NOT PLATFORM_ARM))
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tools/converter/nnie)
endif()
string(REPLACE "/mindspore/lite" "" TOP_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(CORE_DIR ${TOP_DIR}/mindspore/core)
set(CCSRC_DIR ${TOP_DIR}/mindspore/ccsrc)

View File

@ -38,6 +38,7 @@ write_commit_file() {
}
build_lite_x86_64_jni_and_jar() {
X86_JNI_CMAKE_ARGS=$1
# copy x86 so
local is_train=on
cd ${BASEPATH}/output/tmp
@ -63,8 +64,7 @@ build_lite_x86_64_jni_and_jar() {
cd ${BASEPATH}/mindspore/lite/build
rm -rf java/jni && mkdir -pv java/jni
cd java/jni
cmake -DMS_VERSION_MAJOR=${VERSION_MAJOR} -DMS_VERSION_MINOR=${VERSION_MINOR} -DMS_VERSION_REVISION=${VERSION_REVISION} \
$CMAKE_ARGS -DENABLE_VERBOSE=${ENABLE_VERBOSE} -DSUPPORT_TRAIN=${is_train} "${LITE_JAVA_PATH}/native/"
cmake ${X86_JNI_CMAKE_ARGS} -DSUPPORT_TRAIN=${is_train} "${LITE_JAVA_PATH}/native/"
make -j$THREAD_NUM
if [[ $? -ne 0 ]]; then
echo "---------------- mindspore lite: build jni x86_64 failed----------------"
@ -113,8 +113,8 @@ build_lite_x86_64_jni_and_jar() {
}
build_lite() {
LITE_CMAKE_ARGS=${CMAKE_ARGS}
[ -n "${BASEPATH}" ] && rm -rf ${BASEPATH}/output
get_version
echo "============ Start building MindSpore Lite ${VERSION_STR} ============"
local local_lite_platform=${LITE_PLATFORM}
if [[ "${LITE_ENABLE_AAR}" == "on" ]]; then
@ -131,65 +131,72 @@ build_lite() {
cd ${BASEPATH}/mindspore/lite/build
write_commit_file
if [[ "${local_lite_platform}" == "arm32" ]]; then
if [[ "${TOOLCHAIN_NAME}" == "ohos-lite" ]]; then
COMPILE_MINDDATA_LITE="off"
CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/ohos-lite.toolchain.cmake
CMAKE_TOOLCHAIN_NAME="ohos-lite"
elif [[ "${TOOLCHAIN_NAME}" == "himix200" ]]; then
COMPILE_MINDDATA_LITE="off"
CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/himix200.toolchain.cmake
CMAKE_TOOLCHAIN_NAME="himix200"
else
CMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake
ANDROID_NATIVE_API_LEVEL="19"
CMAKE_ANDROID_NDK=${ANDROID_NDK}
CMAKE_ANDROID_ABI="armeabi-v7a"
CMAKE_ANDROID_TOOLCHAIN_NAME="clang"
CMAKE_ANDROID_STL=${MSLITE_ANDROID_STL}
MSLITE_ENABLE_FP16="on"
fi
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DENABLE_ASAN=${ENABLE_ASAN} -DCMAKE_INSTALL_PREFIX=${BUILD_PATH}/output/tmp"
if [ "$(uname)" == "Darwin" ]; then
LITE_CMAKE_ARGS=`echo $LITE_CMAKE_ARGS | sed 's/-DCMAKE_BUILD_TYPE=Debug/-DCMAKE_BUILD_TYPE=Release/g'`
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off -DMSLITE_ENABLE_NPU=off"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DBUILD_MINDDATA=off"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DENABLE_BITCODE=0 -G Xcode"
CMAKE_TOOLCHAIN_FILE=${BASEPATH}/cmake/lite_ios.cmake
fi
if [[ "${local_lite_platform}" == "arm64" ]]; then
if [ "$(uname)" == "Darwin" ]; then
pkg_name=mindspore-lite-${VERSION_STR}-ios-aarch64
cmake -DCMAKE_TOOLCHAIN_FILE=${BASEPATH}/cmake/lite_ios.cmake -DARCHS="arm64" -DENABLE_BITCODE=0 \
-DCMAKE_BUILD_TYPE="Release" -DBUILD_MINDDATA="" -DPLATFORM_ARM64="on" -DENABLE_NEON="on" -DMSLITE_ENABLE_FP16="on" \
-DMSLITE_ENABLE_TRAIN="off" -DMSLITE_GPU_BACKEND="off" -DMSLITE_ENABLE_NPU="off" \
-DENABLE_ASAN=${ENABLE_ASAN} -DCMAKE_INSTALL_PREFIX=${BUILD_PATH}/output/tmp -G Xcode ..
else
checkndk
echo "default link libc++_static.a, export MSLITE_ANDROID_STL=c++_shared to link libc++_shared.so"
cmake -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" -DANDROID_NATIVE_API_LEVEL="19" \
-DANDROID_NDK="${ANDROID_NDK}" -DANDROID_ABI="arm64-v8a" -DANDROID_TOOLCHAIN_NAME="aarch64-linux-android-clang" \
-DANDROID_STL=${MSLITE_ANDROID_STL} $CMAKE_ARGS -DBUILD_MINDDATA=${COMPILE_MINDDATA_LITE} \
-DPLATFORM_ARM64="on" -DENABLE_NEON="on" -DMSLITE_ENABLE_FP16="on" -DCMAKE_INSTALL_PREFIX=${BASEPATH}/output/tmp \
-DMS_VERSION_MAJOR=${VERSION_MAJOR} -DMS_VERSION_MINOR=${VERSION_MINOR} -DMS_VERSION_REVISION=${VERSION_REVISION} \
-DENABLE_ASAN=${ENABLE_ASAN} -DENABLE_VERBOSE=${ENABLE_VERBOSE} "${BASEPATH}/mindspore/lite"
fi
elif [[ "${local_lite_platform}" == "arm32" ]]; then
if [[ "${local_lite_platform}" == "arm32" ]]; then
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DPLATFORM_ARM32=on -DENABLE_NEON=on"
if [ "$(uname)" == "Darwin" ]; then
pkg_name=mindspore-lite-${VERSION_STR}-ios-aarch32
cmake -DCMAKE_TOOLCHAIN_FILE=${BASEPATH}/cmake/lite_ios.cmake -DARCHS="armv7;armv7s" -DENABLE_BITCODE=0 \
-DCMAKE_BUILD_TYPE="Release" -DBUILD_MINDDATA="" -DPLATFORM_ARM32="on" -DENABLE_NEON="on" \
-DMSLITE_ENABLE_TRAIN="off" -DMSLITE_GPU_BACKEND="off" -DMSLITE_ENABLE_NPU="off" \
-DENABLE_ASAN=${ENABLE_ASAN} -DCMAKE_INSTALL_PREFIX=${BUILD_PATH}/output/tmp -G Xcode ..
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DARCHS=armv7;armv7s"
elif [[ "${TOOLCHAIN_NAME}" == "ohos-lite" ]]; then
CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/ohos-lite.toolchain.cmake
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTOOLCHAIN_NAME=ohos-lite"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DBUILD_MINDDATA=off"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=off"
elif [[ "${TOOLCHAIN_NAME}" == "himix200" ]]; then
CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/himix200.toolchain.cmake
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTOOLCHAIN_NAME=himix200"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DBUILD_MINDDATA=off"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=off -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off"
else
checkndk
echo "default link libc++_static.a, export MSLITE_ANDROID_STL=c++_shared to link libc++_shared.so"
cmake -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DTOOLCHAIN_NAME=${CMAKE_TOOLCHAIN_NAME} -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \
-DANDROID_NDK=${CMAKE_ANDROID_NDK} -DANDROID_ABI=${CMAKE_ANDROID_ABI} -DANDROID_TOOLCHAIN_NAME=${CMAKE_ANDROID_TOOLCHAIN_NAME} \
-DANDROID_STL=${CMAKE_ANDROID_STL} $CMAKE_ARGS -DBUILD_MINDDATA=${COMPILE_MINDDATA_LITE} \
-DPLATFORM_ARM32="on" -DENABLE_NEON="on" -DMSLITE_ENABLE_FP16=${MSLITE_ENABLE_FP16} -DCMAKE_INSTALL_PREFIX=${BASEPATH}/output/tmp \
-DMS_VERSION_MAJOR=${VERSION_MAJOR} -DMS_VERSION_MINOR=${VERSION_MINOR} -DMS_VERSION_REVISION=${VERSION_REVISION} \
-DENABLE_ASAN=${ENABLE_ASAN} -DENABLE_VERBOSE=${ENABLE_VERBOSE} "${BASEPATH}/mindspore/lite"
CMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DBUILD_MINDDATA=lite_cv"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=on"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DANDROID_NATIVE_API_LEVEL=19 -DANDROID_NDK=${ANDROID_NDK} -DANDROID_ABI=armeabi-v7a -DANDROID_TOOLCHAIN_NAME=clang -DANDROID_STL=${MSLITE_ANDROID_STL}"
fi
elif [[ "${local_lite_platform}" == "arm64" ]]; then
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DPLATFORM_ARM64=on -DENABLE_NEON=on"
if [ "$(uname)" == "Darwin" ]; then
pkg_name=mindspore-lite-${VERSION_STR}-ios-aarch64
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DARCHS=arm64"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=on"
elif [[ "${TOOLCHAIN_NAME}" == "himix100" ]]; then
CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/himix100.toolchain.cmake
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTOOLCHAIN_NAME=himix100"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DBUILD_MINDDATA=off"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=off -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_TOOLS=off"
else
checkndk
CMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DBUILD_MINDDATA=lite_cv"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=on"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DANDROID_NATIVE_API_LEVEL=19 -DANDROID_NDK=${ANDROID_NDK} -DANDROID_ABI=arm64-v8a -DANDROID_TOOLCHAIN_NAME=aarch64-linux-android-clang -DANDROID_STL=${MSLITE_ANDROID_STL}"
fi
else
cmake -DPLATFORM_X86_64=on $CMAKE_ARGS -DBUILD_MINDDATA=${COMPILE_MINDDATA_LITE} \
-DMS_VERSION_MAJOR=${VERSION_MAJOR} -DMS_VERSION_MINOR=${VERSION_MINOR} -DMS_VERSION_REVISION=${VERSION_REVISION} \
-DENABLE_ASAN=${ENABLE_ASAN} -DCMAKE_INSTALL_PREFIX=${BASEPATH}/output/tmp -DENABLE_VERBOSE=${ENABLE_VERBOSE} "${BASEPATH}/mindspore/lite"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DBUILD_MINDDATA=lite_cv"
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DPLATFORM_X86_64=on"
fi
if [[ "X$CMAKE_TOOLCHAIN_FILE" != "X" ]]; then
LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}"
fi
if [[ "${local_lite_platform}" == "arm64" || "${local_lite_platform}" == "arm32" ]]; then
echo "default link libc++_static.a, export MSLITE_ANDROID_STL=c++_shared to link libc++_shared.so"
fi
echo "cmake ${LITE_CMAKE_ARGS} ${BASEPATH}/mindspore/lite"
cmake ${LITE_CMAKE_ARGS} "${BASEPATH}/mindspore/lite"
if [ "$(uname)" == "Darwin" ]; then
xcodebuild ONLY_ACTIVE_ARCH=NO -configuration Release -scheme mindspore-lite_static -target mindspore-lite_static -sdk iphoneos -quiet
else
@ -197,7 +204,7 @@ build_lite() {
if [[ "${local_lite_platform}" == "x86_64" ]]; then
if [ "${JAVA_HOME}" ]; then
echo -e "\e[31mJAVA_HOME=$JAVA_HOME \e[0m"
build_lite_x86_64_jni_and_jar
build_lite_x86_64_jni_and_jar $1
else
echo -e "\e[31mJAVA_HOME is not set, so jni and jar packages will not be compiled \e[0m"
echo -e "\e[31mIf you want to compile the JAR package, please set $JAVA_HOME. For example: export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 \e[0m"
@ -233,21 +240,21 @@ build_lite() {
fi
[ -n "${BASEPATH}" ] && rm -rf ${BASEPATH}/output/tmp/
if [[ "${MSLITE_ENABLE_NNIE}" == "on" ]]; then
compile_nnie_script=${BASEPATH}/mindspore/lite/tools/providers/NNIE/Hi3516D/compile_nnie.sh
local compile_nnie_script=${BASEPATH}/mindspore/lite/tools/providers/NNIE/Hi3516D/compile_nnie.sh
if [[ "${MSLITE_ENABLE_NNIE}" == "on" && "${local_lite_platform}" == "x86_64" ]]; then
cd ${BASEPATH}/../
if [[ "${local_lite_platform}" == "x86_64" ]]; then
sh ${compile_nnie_script} -I x86_64 -b nnie_3516_master_dev -j $THREAD_NUM
if [[ $? -ne 0 ]]; then
echo "compile x86_64 for nnie failed."
exit 1
fi
elif [[ "${local_lite_platform}" == "arm32" ]]; then
sh ${compile_nnie_script} -I arm32 -b nnie_3516_master_dev -j $THREAD_NUM
if [[ $? -ne 0 ]]; then
echo "compile arm32 for nnie failed."
exit 1
fi
sh ${compile_nnie_script} -I x86_64 -b nnie_3516_master -j $THREAD_NUM
if [[ $? -ne 0 ]]; then
echo "compile x86_64 for nnie failed."
exit 1
fi
fi
if [[ "${TOOLCHAIN_NAME}" == "himix200" && "${local_lite_platform}" == "arm32" ]]; then
cd ${BASEPATH}/../
sh ${compile_nnie_script} -I arm32 -b nnie_3516_master -j $THREAD_NUM
if [[ $? -ne 0 ]]; then
echo "compile arm32 for nnie failed."
exit 1
fi
fi
echo "---------------- mindspore lite: build success ----------------"
@ -255,6 +262,7 @@ build_lite() {
}
build_lite_arm64_and_jni() {
local ARM64_CMAKE_ARGS=${CMAKE_ARGS}
build_lite "arm64"
# copy arm64 so
local is_train=on
@ -279,11 +287,10 @@ build_lite_arm64_and_jni() {
# build jni so
[ -n "${BASEPATH}" ] && rm -rf java/jni && mkdir -pv java/jni
cd java/jni
cmake -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" -DANDROID_NATIVE_API_LEVEL="19" \
cmake ${ARM64_CMAKE_ARGS} -DSUPPORT_TRAIN=${is_train} -DPLATFORM_ARM64=on \
-DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" -DANDROID_NATIVE_API_LEVEL="19" \
-DANDROID_NDK="${ANDROID_NDK}" -DANDROID_ABI="arm64-v8a" -DANDROID_TOOLCHAIN_NAME="aarch64-linux-android-clang" \
-DMS_VERSION_MAJOR=${VERSION_MAJOR} -DMS_VERSION_MINOR=${VERSION_MINOR} -DMS_VERSION_REVISION=${VERSION_REVISION} \
-DANDROID_STL=${MSLITE_ANDROID_STL} $CMAKE_ARGS -DENABLE_VERBOSE=${ENABLE_VERBOSE} \
-DSUPPORT_TRAIN=${is_train} -DPLATFORM_ARM64=on "${LITE_JAVA_PATH}/native/"
-DANDROID_STL=${MSLITE_ANDROID_STL} "${LITE_JAVA_PATH}/native/"
make -j$THREAD_NUM
if [[ $? -ne 0 ]]; then
echo "---------------- mindspore lite: build jni arm64 failed----------------"
@ -298,6 +305,7 @@ build_lite_arm64_and_jni() {
}
build_lite_arm32_and_jni() {
local ARM32_CMAKE_ARGS=${CMAKE_ARGS}
build_lite "arm32"
# copy arm32 so
local is_train=on
@ -323,11 +331,10 @@ build_lite_arm32_and_jni() {
# build jni so
[ -n "${BASEPATH}" ] && rm -rf java/jni && mkdir -pv java/jni
cd java/jni
cmake -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" -DANDROID_NATIVE_API_LEVEL="19" \
cmake ${ARM32_CMAKE_ARGS} -DSUPPORT_TRAIN=${is_train} -DPLATFORM_ARM32=on \
-DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" -DANDROID_NATIVE_API_LEVEL="19" \
-DANDROID_NDK="${ANDROID_NDK}" -DANDROID_ABI="armeabi-v7a" -DANDROID_TOOLCHAIN_NAME="aarch64-linux-android-clang" \
-DMS_VERSION_MAJOR=${VERSION_MAJOR} -DMS_VERSION_MINOR=${VERSION_MINOR} -DMS_VERSION_REVISION=${VERSION_REVISION} \
-DANDROID_STL=${MSLITE_ANDROID_STL} $CMAKE_ARGS -DENABLE_VERBOSE=${ENABLE_VERBOSE} \
-DSUPPORT_TRAIN=${is_train} -DPLATFORM_ARM32=on "${LITE_JAVA_PATH}/native"
-DANDROID_STL=${MSLITE_ANDROID_STL} "${LITE_JAVA_PATH}/native"
make -j$THREAD_NUM
if [[ $? -ne 0 ]]; then
echo "---------------- mindspore lite: build jni arm32 failed----------------"
@ -342,7 +349,6 @@ build_lite_arm32_and_jni() {
}
build_aar() {
get_version
if [[ "X${INC_BUILD}" == "Xoff" ]]; then
[ -n "${BASEPATH}" ] && rm -rf ${BASEPATH}/mindspore/lite/build
fi
@ -401,6 +407,7 @@ if [[ "${MSLITE_ENABLE_ACL}" == "on" ]]; then
update_submodule
fi
CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_VERBOSE=${ENABLE_VERBOSE}"
if [[ "${DEBUG_MODE}" == "on" ]]; then
CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Debug "
else
@ -410,6 +417,9 @@ if [[ "X$ENABLE_GITEE" = "Xon" ]]; then
CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_GITEE=ON"
fi
get_version
CMAKE_ARGS="${CMAKE_ARGS} -DMS_VERSION_MAJOR=${VERSION_MAJOR} -DMS_VERSION_MINOR=${VERSION_MINOR} -DMS_VERSION_REVISION=${VERSION_REVISION}"
if [[ "X$LITE_ENABLE_AAR" = "Xon" ]]; then
build_aar
elif [[ "X$LITE_PLATFORM" != "X" ]]; then

View File

@ -0,0 +1,31 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(HISI_TOOLCHAIN_PATH "/opt")
if(DEFINED ENV{HISI_TOOLCHAIN_PATH})
set(HISI_TOOLCHAIN_PATH $ENV{HISI_TOOLCHAIN_PATH})
endif()
set(CMAKE_C_COMPILER ${HISI_TOOLCHAIN_PATH}/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc)
set(CMAKE_CXX_COMPILER ${HISI_TOOLCHAIN_PATH}/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++)
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()
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CROSS_COMPILATION_ARM himix100)
set(CROSS_COMPILATION_ARCHITECTURE armv8-a)
set(CMAKE_CXX_FLAGS "-march=armv8-a ${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")
set(HIMIX_STRIP ${HISI_TOOLCHAIN_PATH}/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-strip)

View File

@ -2,12 +2,12 @@ set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
if(DEFINED ENV{HISI_TOOLCHAIN_PATH})
set(HISI_TOOLCHAIN_PATH $ENV{HISI_TOOLCHAIN_PATH})
set(TOOLCHAIN_PATH $ENV{HISI_TOOLCHAIN_PATH}/hisi-linux/x86_arm)
else()
message(FATAL_ERROR "ENV HISI_TOOLCHAIN_PATH not found")
set(TOOLCHAIN_PATH "/opt/hisi-linux/x86-arm")
endif()
set(CMAKE_C_COMPILER ${HISI_TOOLCHAIN_PATH}/hisi-linux/x86_arm/arm-himix200-linux/bin/arm-himix200-linux-gcc)
set(CMAKE_CXX_COMPILER ${HISI_TOOLCHAIN_PATH}/hisi-linux/x86_arm/arm-himix200-linux/bin/arm-himix200-linux-g++)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/arm-himix200-linux/bin/arm-himix200-linux-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/arm-himix200-linux/bin/arm-himix200-linux-g++)
find_path(GCC_PATH gcc)
find_path(GXX_PATH g++)
@ -28,4 +28,4 @@ set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=softfp -mfpu=neon-vfpv4 ${CMAKE
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")
set(HIMIX_STRIP ${HISI_TOOLCHAIN_PATH}/hisi-linux/x86_arm/arm-himix200-linux/bin/arm-himix200-linux-strip)
set(HIMIX_STRIP ${TOOLCHAIN_PATH}/arm-himix200-linux/bin/arm-himix200-linux-strip)

View File

@ -6,10 +6,6 @@ set(BUILD_LITE "on")
include(${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/secure_option.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/compile_link_option.cmake)
if(TARGET_HIMIX200)
set(CMAKE_CXX_FLAGS "-Wno-error=maybe-uninitialized ${CMAKE_CXX_FLAGS}")
endif()
if(PLATFORM_ARM64 OR PLATFORM_ARM32)
set(PLATFORM_ARM "on")
add_compile_definitions(PLATFORM_ARM)
@ -22,9 +18,6 @@ if(PLATFORM_ARM32 OR PLATFORM_ARM64)
-fdata-sections -ffast-math -fno-rtti -fno-exceptions")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer -fstrict-aliasing -ffunction-sections \
-fdata-sections -ffast-math -fno-rtti -fno-exceptions")
if(TARGET_HIMIX200)
string(REPLACE "-fno-rtti " "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
endif()
endif()
endif()

View File

@ -68,9 +68,14 @@ void Conv2DINT8Coder::CheckSupportOptimize() {
matmul_func_ = "NULL";
break;
case kARM64:
#ifdef SUPPORT_NNIE
support_optimize_ = false;
tile_num_ = 8;
#else
// check support_optimize at runtime
matmul_func_ = "MatMulRInt8_optimize_handler";
tile_num_ = 8;
#endif
break;
case kX86:
support_optimize_ = true;

View File

@ -22,7 +22,7 @@
bool GetSupportOptFlag() {
bool status = false;
#ifdef ENABLE_ARM64
#if (defined ENABLE_ARM64) && (!defined SUPPORT_NNIE)
int hwcap_type = 16;
// getHwCap
const uint32_t hwcap = getauxval(hwcap_type);

View File

@ -309,7 +309,7 @@ if(SUPPORT_NPU)
target_link_libraries(mindspore-lite npu_kernel_mid)
target_link_libraries(mindspore-lite_static npu_kernel_mid)
endif()
if(PLATFORM_ARM32 OR PLATFORM_ARM64 AND NOT TARGET_HIMIX200 AND NOT TARGET_OHOS_LITE)
if(PLATFORM_ARM32 OR PLATFORM_ARM64 AND NOT TARGET_HIMIX AND NOT TARGET_OHOS_LITE)
target_link_libraries(mindspore-lite log)
target_link_libraries(mindspore-lite_static log)
endif()
@ -335,7 +335,7 @@ endif()
########################## build optimize and float16 library #################################
if(PLATFORM_ARM)
if(PLATFORM_ARM64)
if(PLATFORM_ARM64 AND NOT TARGET_HIMIX)
target_link_libraries(mindspore-lite cpu_opt_kernel_mid nnacl_optimize_mid)
target_link_libraries(mindspore-lite_static cpu_opt_kernel_mid nnacl_optimize_mid)
endif()

View File

@ -139,14 +139,18 @@ void Convolution1x1Int8CPUKernel::FreeRunBuf() {
void Convolution1x1Int8CPUKernel::CheckSupportOptimize() {
support_optimize_ = false;
matmul_func_ = MatMulInt8_4x16_r;
#ifdef ENABLE_ARM64
#if defined(ENABLE_ARM64)
#if !defined(SUPPORT_NNIE)
if (mindspore::lite::IsSupportSDot()) {
support_optimize_ = true;
matmul_func_ = MatMulDpInt8_optimize_handler;
} else {
#endif
support_optimize_ = false;
matmul_func_ = nullptr;
#if !defined(SUPPORT_NNIE)
}
#endif
#endif
return;
}

View File

@ -34,14 +34,18 @@ void ConvolutionInt8CPUKernel::CheckSupportOptimize() {
support_optimize_ = false;
#endif
#ifdef ENABLE_ARM64
#if defined(ENABLE_ARM64)
#if !defined(SUPPORT_NNIE)
if (mindspore::lite::IsSupportSDot()) {
matmul_func_ = MatMulRInt8_optimize_handler;
support_optimize_ = true;
} else {
#endif
tile_num_ = 4;
support_optimize_ = false;
#if !defined(SUPPORT_NNIE)
}
#endif
#endif
conv_param_->tile_num_ = tile_num_;
}

View File

@ -117,13 +117,17 @@ void DeConvInt8CPUKernel::CheckSupportOptimize() {
support_optimize_ = true;
matmul_func_ = MatMulInt8_16x4;
#ifdef ENABLE_ARM64
#if !defined(SUPPORT_NNIE)
if (mindspore::lite::IsSupportSDot()) {
support_optimize_ = true;
matmul_func_ = MatMulR4Int8_optimize_handler;
} else {
#endif
support_optimize_ = false;
matmul_func_ = MatMulR4Int8Neon64;
#if !defined(SUPPORT_NNIE)
}
#endif
#endif
return;
}

View File

@ -18,7 +18,7 @@ add_executable(benchmark
add_dependencies(benchmark fbs_src)
if((PLATFORM_ARM32 OR PLATFORM_ARM64) AND NOT TARGET_HIMIX200 AND NOT TARGET_OHOS_LITE)
if((PLATFORM_ARM32 OR PLATFORM_ARM64) AND NOT TARGET_HIMIX AND NOT TARGET_OHOS_LITE)
if(SUPPORT_NPU AND ANDROID_STL STREQUAL "c++_static")
target_link_libraries(benchmark mindspore-lite mindspore::json c++_shared)
else()