diff --git a/docs/user_guide/basic_usage.rst b/docs/user_guide/basic_usage.rst index 84df881f66c5ca75d32df79e3c534c212ed7abe2..3da9126ba0ca840ce2af171b56f18cb81f81b5d7 100644 --- a/docs/user_guide/basic_usage.rst +++ b/docs/user_guide/basic_usage.rst @@ -47,6 +47,13 @@ Here we use the mobilenet-v2 model as an example. bash tools/build-standalone-lib.sh + .. note:: + + - Libraries in ``builds/lib/armeabi-v7a/cpu_gpu/`` means it can run on ``cpu`` or ``gpu`` devices. + + - The results in ``builds/lib/armeabi-v7a/cpu_gpu_dsp/`` need HVX supported. + + 4. Convert the pre-trained mobilenet-v2 model to MACE format model. .. code:: sh diff --git a/mace/examples/android/build.sh b/mace/examples/android/build.sh index 46a6e4c2efb446a7c5ec25bbaef9ac1c7807e5c6..1cfb6129e104c61561a20532a586278232b1c467 100755 --- a/mace/examples/android/build.sh +++ b/mace/examples/android/build.sh @@ -4,13 +4,26 @@ set -e -u -o pipefail pushd ../../../ -python tools/converter.py convert --config=mace/examples/android/mobilenet.yml -cp -rf builds/mobilenet/include mace/examples/android/macelibrary/src/main/cpp/ -cp -rf builds/mobilenet/model mace/examples/android/macelibrary/src/main/cpp/ +TARGET_ABI=arm64-v8a +LIBRARY_DIR=mace/examples/android/macelibrary/src/main/cpp/ +INCLUDE_DIR=$LIBRARY_DIR/include/mace/public/ +LIBMACE_DIR=$LIBRARY_DIR/lib/$TARGET_ABI/ -bash tools/build-standalone-lib.sh -cp -rf builds/include mace/examples/android/macelibrary/src/main/cpp/ -cp -rf builds/lib mace/examples/android/macelibrary/src/main/cpp/ +rm -rf $LIBRARY_DIR/include/ +mkdir -p $INCLUDE_DIR + +rm -rf $LIBRARY_DIR/lib/ +mkdir -p $LIBMACE_DIR + +rm -rf $LIBRARY_DIR/model/ + +python tools/converter.py convert --config=mace/examples/android/mobilenet.yml --target_abis=$TARGET_ABI +cp -rf builds/mobilenet/include/mace/public/*.h $INCLUDE_DIR +cp -rf builds/mobilenet/model $LIBRARY_DIR + +bazel build --config android --config optimization mace/libmace:libmace_static --define neon=true --define openmp=true --define opencl=true --cpu=$TARGET_ABI +cp -rf mace/public/*.h $INCLUDE_DIR +cp -rf bazel-genfiles/mace/libmace/libmace.a $LIBMACE_DIR popd diff --git a/tools/build-standalone-lib.sh b/tools/build-standalone-lib.sh index 2c2b739ce87ea286bfdb1abbba2782f848aa81b3..59f0b8d8f1a317dff5d181817520cadd177a8245 100755 --- a/tools/build-standalone-lib.sh +++ b/tools/build-standalone-lib.sh @@ -13,23 +13,28 @@ cp mace/public/*.h $INCLUDE_DIR/ # make directories rm -rf $LIB_DIR/armeabi-v7a -mkdir -p $LIB_DIR/armeabi-v7a +mkdir -p $LIB_DIR/armeabi-v7a/cpu_gpu_dsp +mkdir -p $LIB_DIR/armeabi-v7a/cpu_gpu rm -rf $LIB_DIR/arm64-v8a -mkdir -p $LIB_DIR/arm64-v8a +mkdir -p $LIB_DIR/arm64-v8a/cpu_gpu rm -rf $LIB_DIR/linux-x86-64 mkdir -p $LIB_DIR/linux-x86-64 # build shared libraries -echo "build shared lib for armeabi-v7a" +echo "build shared lib for armeabi-v7a + cpu_gpu_dsp" bazel build --config android --config optimization mace/libmace:libmace_dynamic --define neon=true --define openmp=true --define opencl=true --define hexagon=true --cpu=armeabi-v7a -cp bazel-bin/mace/libmace/libmace.so $LIB_DIR/armeabi-v7a/ -cp third_party/nnlib/*so $LIB_DIR/armeabi-v7a/ +cp bazel-bin/mace/libmace/libmace.so $LIB_DIR/armeabi-v7a/cpu_gpu_dsp/ +cp third_party/nnlib/*so $LIB_DIR/armeabi-v7a/cpu_gpu_dsp/ -echo "build shared lib for arm64-v8a" +echo "build shared lib for armeabi-v7a + cpu_gpu" +bazel build --config android --config optimization mace/libmace:libmace_dynamic --define neon=true --define openmp=true --define opencl=true --cpu=armeabi-v7a +cp bazel-bin/mace/libmace/libmace.so $LIB_DIR/armeabi-v7a/cpu_gpu/ + +echo "build shared lib for arm64-v8a + cpu_gpu" bazel build --config android --config optimization mace/libmace:libmace_dynamic --define neon=true --define openmp=true --define opencl=true --cpu=arm64-v8a -cp bazel-bin/mace/libmace/libmace.so $LIB_DIR/arm64-v8a/ +cp bazel-bin/mace/libmace/libmace.so $LIB_DIR/arm64-v8a/cpu_gpu/ if [[ "$OSTYPE" != "darwin"* ]];then echo "build shared lib for linux-x86-64" @@ -38,14 +43,18 @@ if [[ "$OSTYPE" != "darwin"* ]];then fi # build static libraries -echo "build static lib for armeabi-v7a" +echo "build static lib for armeabi-v7a + cpu_gpu_dsp" bazel build --config android --config optimization mace/libmace:libmace_static --define neon=true --define openmp=true --define opencl=true --define hexagon=true --cpu=armeabi-v7a -cp bazel-genfiles/mace/libmace/libmace.a $LIB_DIR/armeabi-v7a/ -cp third_party/nnlib/*so $LIB_DIR/armeabi-v7a/ +cp bazel-genfiles/mace/libmace/libmace.a $LIB_DIR/armeabi-v7a/cpu_gpu_dsp/ +cp third_party/nnlib/*so $LIB_DIR/armeabi-v7a/cpu_gpu_dsp/ + +echo "build static lib for armeabi-v7a + cpu_gpu" +bazel build --config android --config optimization mace/libmace:libmace_static --define neon=true --define openmp=true --define opencl=true --cpu=armeabi-v7a +cp bazel-genfiles/mace/libmace/libmace.a $LIB_DIR/armeabi-v7a/cpu_gpu/ -echo "build static lib for arm64-v8a" +echo "build static lib for arm64-v8a + cpu_gpu" bazel build --config android --config optimization mace/libmace:libmace_static --define neon=true --define openmp=true --define opencl=true --cpu=arm64-v8a -cp bazel-genfiles/mace/libmace/libmace.a $LIB_DIR/arm64-v8a/ +cp bazel-genfiles/mace/libmace/libmace.a $LIB_DIR/arm64-v8a/cpu_gpu/ if [[ "$OSTYPE" != "darwin"* ]];then echo "build static lib for linux-x86-64"