Browse Source

fix java build bugs

tags/v1.1.0
yeyunpeng 5 years ago
parent
commit
f1d095a730
5 changed files with 28 additions and 120 deletions
  1. +0
    -109
      mindspore/lite/java/build_aar.sh
  2. +1
    -1
      mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/CpuBindMode.java
  3. +7
    -2
      mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/MSConfig.java
  4. +14
    -4
      mindspore/lite/java/java/app/src/main/native/CMakeLists.txt
  5. +6
    -4
      mindspore/lite/java/java/app/src/main/native/runtime/ms_config.cpp

+ 0
- 109
mindspore/lite/java/build_aar.sh View File

@@ -1,109 +0,0 @@
#!/usr/bin/env bash

set -e
BASE_PATH=$(cd "$(dirname $0)"; pwd)
TOP_PATH="${BASE_PATH}/../../.."

get_version() {
VERSION_MAJOR=`grep "const int ms_version_major =" ../include/version.h | tr -dc "[0-9]"`
VERSION_MINOR=`grep "const int ms_version_minor =" ../include/version.h | tr -dc "[0-9]"`
VERSION_REVISION=`grep "const int ms_version_revision =" ../include/version.h | tr -dc "[0-9]"`
VERSION_STR=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}
}

build_mslite_arm64() {
# build mindspore-lite arm64
cd ${TOP_PATH}
bash build.sh -I arm64
COMPILE_RET=$?

if [[ "${COMPILE_RET}" -ne 0 ]]; then
echo "---------------- mindspore lite arm64: build failed ----------------"
exit
fi
# copy arm64 so
cd ${TOP_PATH}/output/
rm -rf mindspore-lite-${VERSION_STR}-runtime-arm64-cpu
tar -zxvf mindspore-lite-${VERSION_STR}-runtime-arm64-cpu.tar.gz
mkdir -p ${BASE_PATH}/java/app/libs/arm64-v8a/
rm -rf ${BASE_PATH}/java/app/libs/arm64-v8a/*
cp ${TOP_PATH}/output/mindspore-lite-${VERSION_STR}-runtime-arm64-cpu/lib/libmindspore-lite.so ${BASE_PATH}/java/app/libs/arm64-v8a/
cp ${TOP_PATH}/output/mindspore-lite-${VERSION_STR}-runtime-arm64-cpu/lib/libmindspore-lite-fp16.so ${BASE_PATH}/java/app/libs/arm64-v8a/
cp ${TOP_PATH}/output/mindspore-lite-${VERSION_STR}-runtime-arm64-cpu/lib/libmindspore-lite-optimize.so ${BASE_PATH}/java/app/libs/arm64-v8a/
cp ${ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_shared.so ${BASE_PATH}/java/app/libs/arm64-v8a/
}

build_mslite_arm32() {
# build mindspore-lite arm32
cd ${TOP_PATH}
bash build.sh -I arm32
COMPILE_RET=$?

if [[ "${COMPILE_RET}" -ne 0 ]]; then
echo "---------------- mindspore lite arm32: build failed ----------------"
exit
fi
# copy arm32 so
cd ${TOP_PATH}/output/
rm -rf mindspore-lite-${VERSION_STR}runtime-arm32-cpu
tar -zxvf mindspore-lite-${VERSION_STR}-runtime-arm32-cpu.tar.gz
mkdir -p ${BASE_PATH}/java/app/libs/armeabi-v7a/
rm -rf ${BASE_PATH}/java/app/libs/armeabi-v7a/*
cp ${TOP_PATH}/output/mindspore-lite-${VERSION_STR}-runtime-arm32-cpu/lib/libmindspore-lite.so ${BASE_PATH}/java/app/libs/armeabi-v7a/
cp ${ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_shared.so ${BASE_PATH}/java/app/libs/armeabi-v7a/
}

build_jni_arm64() {
# build jni so
cd ${BASE_PATH}/java/app/src/main/native
rm -rf build
mkdir build
cd build
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="c++_shared" -DCMAKE_BUILD_TYPE=Debug ..
VERBOSE=2 make -j8
mkdir -p ${BASE_PATH}/java/app/libs/arm64-v8a/
cp ${BASE_PATH}/java/app/src/main/native/build/libmindspore-lite-jni.so ${BASE_PATH}/java/app/libs/arm64-v8a/
}

build_jni_arm32() {
# build jni so
cd ${BASE_PATH}/java/app/src/main/native
rm -rf build
mkdir build
cd build
cmake -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" \
-DANDROID_STL="c++_shared" -DCMAKE_BUILD_TYPE=Debug ..
VERBOSE=2 make -j8
mkdir -p ${BASE_PATH}/java/app/libs/armeabi-v7a/
cp ${BASE_PATH}/java/app/src/main/native/build/libmindspore-lite-jni.so ${BASE_PATH}/java/app/libs/armeabi-v7a/
}

build_aar() {
# build aar
## check sdk gradle
cd ${BASE_PATH}/java
rm -rf .gradle build gradle gradlew gradlew.bat build app/build

gradle init
gradle wrapper
./gradlew build
}

copy_output() {
# copy output
cd ${BASE_PATH}/
rm -rf output
mkdir -pv output
cp ${BASE_PATH}/java/app/build/outputs/aar/mindspore-lite.aar ${BASE_PATH}/output/
}

get_version
build_mslite_arm64
build_mslite_arm32
build_jni_arm64
build_jni_arm32
build_aar
copy_output

+ 1
- 1
mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/CpuBindMode.java View File

@@ -17,7 +17,7 @@
package com.mindspore.lite.config;

public class CpuBindMode {
public static final int MID_CPU = -1;
public static final int MID_CPU = 2;
public static final int HIGHER_CPU = 1;
public static final int NO_BIND = 0;
}

+ 7
- 2
mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/MSConfig.java View File

@@ -23,8 +23,13 @@ public class MSConfig {
this.msConfigPtr = 0;
}

public boolean init(int deviceType, int threadNum, int cpuBindMode, boolean enable_float16) {
this.msConfigPtr = createMSConfig(deviceType, threadNum, cpuBindMode, enable_float16);
return this.msConfigPtr != 0;
}

public boolean init(int deviceType, int threadNum, int cpuBindMode) {
this.msConfigPtr = createMSConfig(deviceType, threadNum, cpuBindMode);
this.msConfigPtr = createMSConfig(deviceType, threadNum, cpuBindMode ,false);
return this.msConfigPtr != 0;
}

@@ -49,7 +54,7 @@ public class MSConfig {
return msConfigPtr;
}

private native long createMSConfig(int deviceType, int threadNum, int cpuBindMode);
private native long createMSConfig(int deviceType, int threadNum, int cpuBindMode, boolean enable_float16);

private native void free(long msConfigPtr);
}

+ 14
- 4
mindspore/lite/java/java/app/src/main/native/CMakeLists.txt View File

@@ -1,6 +1,9 @@
cmake_minimum_required(VERSION 3.14)
project (Lite-java)

set(BUILD_LITE "on")
set(PLATFORM_ARM "on")

set(MS_VERSION_MAJOR ${MS_VERSION_MAJOR})
set(MS_VERSION_MINOR ${MS_VERSION_MINOR})
set(MS_VERSION_REVISION ${MS_VERSION_REVISION})
@@ -19,10 +22,17 @@ if (PLATFORM_ARM64)
add_compile_definitions(ENABLE_ARM64)
endif ()

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../) ## lite include
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../core/) ## core include
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../../third_party/flatbuffers/include) ## third_party
set(TOP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../..)
set(LITE_DIR ${TOP_DIR}/mindspore/lite)

include(${TOP_DIR}/cmake/utils.cmake)
include(${TOP_DIR}/cmake/external_libs/flatbuffers.cmake)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${LITE_DIR}) ## lite include
include_directories(${TOP_DIR}/mindspore/core/) ## core include
include_directories(${LITE_DIR}/build)

link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${ANDROID_ABI}/)

add_library(mindspore-lite-jni SHARED


+ 6
- 4
mindspore/lite/java/java/app/src/main/native/runtime/ms_config.cpp View File

@@ -22,7 +22,8 @@
extern "C" JNIEXPORT jlong JNICALL Java_com_mindspore_lite_config_MSConfig_createMSConfig(JNIEnv *env, jobject thiz,
jint device_type,
jint thread_num,
jint cpu_bind_mode) {
jint cpu_bind_mode,
jboolean enable_float16) {
auto *context = new (std::nothrow) mindspore::lite::Context();
if (context == nullptr) {
MS_LOGE("new Context fail!");
@@ -43,20 +44,21 @@ extern "C" JNIEXPORT jlong JNICALL Java_com_mindspore_lite_config_MSConfig_creat
return (jlong)context;
}
switch (cpu_bind_mode) {
case -1:
context->cpu_bind_mode_ = mindspore::lite::MID_CPU;
break;
case 0:
context->cpu_bind_mode_ = mindspore::lite::NO_BIND;
break;
case 1:
context->cpu_bind_mode_ = mindspore::lite::HIGHER_CPU;
break;
case 2:
context->cpu_bind_mode_ = mindspore::lite::MID_CPU;
break;
default:
MS_LOGE("Invalid cpu_bind_mode : %d", cpu_bind_mode);
return (jlong)context;
}
context->thread_num_ = thread_num;
context->enable_float16_ = enable_float16;
return (jlong)context;
}



Loading…
Cancel
Save