diff --git a/mindspore/lite/java/build_aar.sh b/mindspore/lite/java/build_aar.sh index 1f29d0c09a..7e8f8dcfbd 100644 --- a/mindspore/lite/java/build_aar.sh +++ b/mindspore/lite/java/build_aar.sh @@ -6,9 +6,8 @@ TOP_PATH="${BASE_PATH}/../../.." # build mindspore-lite arm64 cd ${TOP_PATH} bash build.sh -I arm64 -COMPILE_RET=$? - -if [[ "${COMPILE_RET}" -ne 0 ]]; then +COMPILE_ARM64_RET=$? +if [[ "${COMPILE_ARM64_RET}" -ne 0 ]]; then echo "---------------- mindspore lite: build failed ----------------" exit fi @@ -19,6 +18,7 @@ rm -rf mindspore-lite-0.7.0 tar -zxvf mindspore-lite-0.7.0-runtime-arm64-cpu.tar.gz mkdir -p ${BASE_PATH}/lib/ cp ${TOP_PATH}/output/mindspore-lite-0.7.0-runtime-arm64-cpu/lib/libmindspore-lite.so ${BASE_PATH}/lib/ +cp ${TOP_PATH}/output/mindspore-lite-0.7.0-runtime-arm64-cpu/lib/liboptimize.so ${BASE_PATH}/lib/ cp ${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so ${BASE_PATH}/lib/ # build jni so @@ -31,14 +31,48 @@ cmake -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake -DANDROID_STL="c++_shared" -DCMAKE_BUILD_TYPE=Debug .. VERBOSE=2 make -j8 cp ${BASE_PATH}/native/build/libmindspore-lite-jni.so ${BASE_PATH}/lib/ +mkdir -p ${BASE_PATH}/java/app/libs/arm64-v8a/ +rm -rf ${BASE_PATH}/java/app/libs/arm64-v8a/* +cp ${BASE_PATH}/lib/*.so ${BASE_PATH}/java/app/libs/arm64-v8a/ +rm -rf "${BASE_PATH:?}/lib/*" + +# build mindspore-lite arm32 +cd ${TOP_PATH} +bash build.sh -I arm32 +COMPILE_ARM32_RET=$? + +if [[ "${COMPILE_ARM32_RET}" -ne 0 ]]; then + echo "---------------- mindspore lite: build failed ----------------" + exit +fi + +# copy arm32 so +cd ${TOP_PATH}/output/ +rm -rf mindspore-lite-0.7.0 +tar -zxvf mindspore-lite-0.7.0-runtime-arm32-cpu.tar.gz +mkdir -p ${BASE_PATH}/lib/ +cp ${TOP_PATH}/output/mindspore-lite-0.7.0-runtime-arm32-cpu/lib/libmindspore-lite.so ${BASE_PATH}/lib/ +cp ${ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_shared.so ${BASE_PATH}/lib/ + +# build jni so +cd ${BASE_PATH}/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 +cp ${BASE_PATH}/native/build/libmindspore-lite-jni.so ${BASE_PATH}/lib/ +mkdir -p ${BASE_PATH}/java/app/libs/armeabi-v7a/ +rm -rf ${BASE_PATH}/java/app/libs/armeabi-v7a/* +cp ${BASE_PATH}/lib/*.so ${BASE_PATH}/java/app/libs/armeabi-v7a/ # build aar ## check sdk gradle cd ${BASE_PATH}/java rm -rf .gradle build gradle gradlew gradlew.bat build app/build -mkdir -p ${BASE_PATH}/java/app/libs/arm64-v8a/ -rm -rf ${BASE_PATH}/java/app/libs/arm64-v8a/* -cp ${BASE_PATH}/lib/*.so ${BASE_PATH}/java/app/libs/arm64-v8a/ + gradle init gradle wrapper ./gradlew build @@ -47,4 +81,4 @@ gradle wrapper cd ${BASE_PATH}/ rm -rf output mkdir -pv output -cp ${BASE_PATH}/java/app/build/outputs/aar/mindspore-lite.aar ${BASE_PATH}/output/ +cp ${BASE_PATH}/java/app/build/outputs/aar/mindspore-lite.aar ${BASE_PATH}/output/ \ No newline at end of file diff --git a/mindspore/lite/java/java/app/build.gradle b/mindspore/lite/java/java/app/build.gradle index 3df433d41a..a3446ab0cb 100644 --- a/mindspore/lite/java/java/app/build.gradle +++ b/mindspore/lite/java/java/app/build.gradle @@ -18,6 +18,7 @@ android { } ndk { abiFilters 'arm64-v8a' + abiFilters 'armeabi-v7a' } } @@ -37,6 +38,9 @@ android { outputFileName = "mindspore-lite.aar" } } + aaptOptions { + noCompress = ['.so'] + } } dependencies { diff --git a/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/LiteSession.java b/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/LiteSession.java index fb8d965f42..6cc651b872 100644 --- a/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/LiteSession.java +++ b/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/LiteSession.java @@ -22,7 +22,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.mindspore.lite.context.Context; +import com.mindspore.lite.config.MSConfig; public class LiteSession { static { @@ -35,8 +35,8 @@ public class LiteSession { this.sessionPtr = 0; } - public boolean init(Context context) { - this.sessionPtr = createSession(context.getContextPtr()); + public boolean init(MSConfig config) { + this.sessionPtr = createSession(config.getMSConfigPtr()); return this.sessionPtr != 0; } @@ -129,7 +129,7 @@ public class LiteSession { this.sessionPtr = 0; } - private native long createSession(long contextPtr); + private native long createSession(long msConfigPtr); private native boolean compileGraph(long sessionPtr, long modelPtr); diff --git a/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/context/CpuBindMode.java b/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/CpuBindMode.java similarity index 95% rename from mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/context/CpuBindMode.java rename to mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/CpuBindMode.java index 9abf32b777..ebdeeadb1d 100644 --- a/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/context/CpuBindMode.java +++ b/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/CpuBindMode.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.mindspore.lite.context; +package com.mindspore.lite.config; public class CpuBindMode { public static final int MID_CPU = -1; diff --git a/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/context/DeviceType.java b/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/DeviceType.java similarity index 95% rename from mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/context/DeviceType.java rename to mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/DeviceType.java index fc7bf9987a..faeb81af73 100644 --- a/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/context/DeviceType.java +++ b/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/DeviceType.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.mindspore.lite.context; +package com.mindspore.lite.config; public class DeviceType { public static final int DT_CPU = 0; diff --git a/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/context/Context.java b/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/MSConfig.java similarity index 62% rename from mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/context/Context.java rename to mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/MSConfig.java index 29657dcbb9..cb79119864 100644 --- a/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/context/Context.java +++ b/mindspore/lite/java/java/app/src/main/java/com/mindspore/lite/config/MSConfig.java @@ -14,26 +14,26 @@ * limitations under the License. */ -package com.mindspore.lite.context; +package com.mindspore.lite.config; -public class Context { - private long contextPtr; +public class MSConfig { + private long msConfigPtr; - public Context() { - this.contextPtr = 0; + public MSConfig() { + this.msConfigPtr = 0; } - public long getContextPtr() { - return contextPtr; + public long getMSConfigPtr() { + return msConfigPtr; } - public void setContextPtr(long contextPtr) { - this.contextPtr = contextPtr; + public void setMSConfigPtr(long msConfigPtr) { + this.msConfigPtr = msConfigPtr; } public boolean init(int deviceType, int threadNum, int cpuBindMode) { - this.contextPtr = createContext(deviceType, threadNum, cpuBindMode); - return this.contextPtr != 0; + this.msConfigPtr = createMSConfig(deviceType, threadNum, cpuBindMode); + return this.msConfigPtr != 0; } public boolean init(int deviceType, int threadNum) { @@ -49,11 +49,11 @@ public class Context { } public void free() { - this.free(this.contextPtr); - this.contextPtr = 0; + this.free(this.msConfigPtr); + this.msConfigPtr = 0; } - private native long createContext(int deviceType, int threadNum, int cpuBindMode); + private native long createMSConfig(int deviceType, int threadNum, int cpuBindMode); - private native void free(long contextPtr); + private native void free(long msConfigPtr); } diff --git a/mindspore/lite/java/native/CMakeLists.txt b/mindspore/lite/java/native/CMakeLists.txt index 38a8b549a4..d27a728b85 100644 --- a/mindspore/lite/java/native/CMakeLists.txt +++ b/mindspore/lite/java/native/CMakeLists.txt @@ -17,7 +17,7 @@ add_library(mindspore-lite-jni SHARED ${CMAKE_CURRENT_SOURCE_DIR}/common/jni_utils.cpp ${CMAKE_CURRENT_SOURCE_DIR}/runtime/model.cpp ${CMAKE_CURRENT_SOURCE_DIR}/runtime/version.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/runtime/context.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/runtime/ms_config.cpp ${CMAKE_CURRENT_SOURCE_DIR}/runtime/ms_tensor.cpp ${CMAKE_CURRENT_SOURCE_DIR}/runtime/lite_session.cpp ) diff --git a/mindspore/lite/java/native/runtime/lite_session.cpp b/mindspore/lite/java/native/runtime/lite_session.cpp index ed17556bc9..a9961c744d 100644 --- a/mindspore/lite/java/native/runtime/lite_session.cpp +++ b/mindspore/lite/java/native/runtime/lite_session.cpp @@ -21,8 +21,8 @@ #include "include/errorcode.h" extern "C" JNIEXPORT jlong JNICALL Java_com_mindspore_lite_LiteSession_createSession(JNIEnv *env, jobject thiz, - jlong context_ptr) { - auto *pointer = reinterpret_cast(context_ptr); + jlong ms_config_ptr) { + auto *pointer = reinterpret_cast(ms_config_ptr); if (pointer == nullptr) { MS_LOGE("Context pointer from java is nullptr"); return jlong(nullptr); diff --git a/mindspore/lite/java/native/runtime/context.cpp b/mindspore/lite/java/native/runtime/ms_config.cpp similarity index 84% rename from mindspore/lite/java/native/runtime/context.cpp rename to mindspore/lite/java/native/runtime/ms_config.cpp index 7898eacd2f..33be872b5c 100644 --- a/mindspore/lite/java/native/runtime/context.cpp +++ b/mindspore/lite/java/native/runtime/ms_config.cpp @@ -18,9 +18,8 @@ #include #include "common/ms_log.h" #include "include/context.h" -#include "include/thread_pool_config.h" -extern "C" JNIEXPORT jlong JNICALL Java_com_mindspore_lite_context_Context_createContext(JNIEnv *env, jobject thiz, +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) { @@ -45,13 +44,13 @@ extern "C" JNIEXPORT jlong JNICALL Java_com_mindspore_lite_context_Context_creat } switch (cpu_bind_mode) { case -1: - context->cpu_bind_mode_ = MID_CPU; + context->cpu_bind_mode_ = mindspore::lite::MID_CPU; break; case 0: - context->cpu_bind_mode_ = NO_BIND; + context->cpu_bind_mode_ = mindspore::lite::NO_BIND; break; case 1: - context->cpu_bind_mode_ = HIGHER_CPU; + context->cpu_bind_mode_ = mindspore::lite::HIGHER_CPU; break; default: MS_LOGE("Invalid cpu_bind_mode : %d", cpu_bind_mode); @@ -61,7 +60,7 @@ extern "C" JNIEXPORT jlong JNICALL Java_com_mindspore_lite_context_Context_creat return (jlong)context; } -extern "C" JNIEXPORT void JNICALL Java_com_mindspore_lite_context_Context_free(JNIEnv *env, jobject thiz, +extern "C" JNIEXPORT void JNICALL Java_com_mindspore_lite_config_MSConfig_free(JNIEnv *env, jobject thiz, jlong context_ptr) { auto *pointer = reinterpret_cast(context_ptr); if (pointer == nullptr) {