diff --git a/docs/user_guide/basic_usage.rst b/docs/user_guide/basic_usage.rst index 051dc7094496a11174559aa4f57916d8d6039cd1..da7e1598c6814da70c60bbd2cac657c21d86cca8 100644 --- a/docs/user_guide/basic_usage.rst +++ b/docs/user_guide/basic_usage.rst @@ -50,6 +50,8 @@ Here we use the mobilenet-v2 model as an example. .. note:: + - This step can be skipped if you just want to run a model using ``tools/converter.py``, such as commands in step 5. + - 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. diff --git a/mace/BUILD.bazel b/mace/BUILD.bazel index ef1c338d0838c12ef2c44035e6b8104baf1d6361..f9af9abe7cb3267da42fb24c322077b8523717f0 100644 --- a/mace/BUILD.bazel +++ b/mace/BUILD.bazel @@ -73,7 +73,6 @@ config_setting( }, values = { "crosstool_top": "//external:android/crosstool", - "cpu": "armeabi-v7a", }, visibility = ["//visibility:public"], ) diff --git a/third_party/hta/BUILD b/third_party/hta/BUILD.bazel similarity index 100% rename from third_party/hta/BUILD rename to third_party/hta/BUILD.bazel diff --git a/third_party/nnlib/BUILD.bazel b/third_party/nnlib/BUILD.bazel index 4ac0be0e57284a4abac60d9354acc0f0865ad4a9..7fc7b13b38a595ee56e20b48e81a532541354ba2 100644 --- a/third_party/nnlib/BUILD.bazel +++ b/third_party/nnlib/BUILD.bazel @@ -4,9 +4,20 @@ licenses(["notice"]) exports_files(["license.txt"]) +load( + "//mace:mace.bzl", + "if_android_armv7", + "if_android_arm64", +) + cc_library( name = "libhexagon", - srcs = ["libhexagon_controller.so"], + srcs = if_android_armv7([ + "armeabi-v7a/libhexagon_controller.so", + ]) + if_android_arm64([ + "arm64-v8a/libcdsprpc.so", + "arm64-v8a/libhexagon_controller.so", + ]), hdrs = [ "hexagon_nn.h", "ops.h", diff --git a/third_party/nnlib/arm64-v8a/libcdsprpc.so b/third_party/nnlib/arm64-v8a/libcdsprpc.so new file mode 100755 index 0000000000000000000000000000000000000000..57de01f4887197b0b510f395f828289d74597069 Binary files /dev/null and b/third_party/nnlib/arm64-v8a/libcdsprpc.so differ diff --git a/third_party/nnlib/arm64-v8a/libhexagon_controller.so b/third_party/nnlib/arm64-v8a/libhexagon_controller.so new file mode 100755 index 0000000000000000000000000000000000000000..6eb01f1d799e0f181b3c036f23f1eeda00f12d67 Binary files /dev/null and b/third_party/nnlib/arm64-v8a/libhexagon_controller.so differ diff --git a/third_party/nnlib/armeabi-v7a/libhexagon_controller.so b/third_party/nnlib/armeabi-v7a/libhexagon_controller.so new file mode 100755 index 0000000000000000000000000000000000000000..0df48bcc7cf83c99ec90afeb42a78448a2c2db7c Binary files /dev/null and b/third_party/nnlib/armeabi-v7a/libhexagon_controller.so differ diff --git a/third_party/nnlib/libhexagon_controller.so b/third_party/nnlib/libhexagon_controller.so deleted file mode 100755 index 553f202633c399937fdf6c4e82e08e30ee98f141..0000000000000000000000000000000000000000 Binary files a/third_party/nnlib/libhexagon_controller.so and /dev/null differ diff --git a/tools/build-standalone-lib.sh b/tools/build-standalone-lib.sh index fcb5c288239d64781b7d803272c07a0245eeac4b..5d35e541a5be5252ff257865bbfaddac464925e7 100755 --- a/tools/build-standalone-lib.sh +++ b/tools/build-standalone-lib.sh @@ -17,6 +17,7 @@ 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/cpu_gpu_dsp mkdir -p $LIB_DIR/arm64-v8a/cpu_gpu rm -rf $LIB_DIR/linux-x86-64 @@ -34,7 +35,12 @@ mkdir -p $LIB_DIR/aarch64_linux_gnu/cpu_gpu 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 --define quantize=true --cpu=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/ +cp third_party/nnlib/armeabi-v7a/*so $LIB_DIR/armeabi-v7a/cpu_gpu_dsp/ + +echo "build shared lib for arm64-v8a + 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 --define quantize=true --cpu=arm64-v8a +cp bazel-bin/mace/libmace/libmace.so $LIB_DIR/arm64-v8a/cpu_gpu_dsp/ +cp third_party/nnlib/arm64-v8a/*so $LIB_DIR/arm64-v8a/cpu_gpu_dsp/ 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 --define quantize=true --cpu=armeabi-v7a @@ -62,7 +68,12 @@ fi echo "build static lib for armeabi-v7a + cpu_gpu_dsp" bazel build --config android --config optimization mace/libmace:libmace_static --config symbol_hidden --define neon=true --define openmp=true --define opencl=true --define hexagon=true --define quantize=true --cpu=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/ +cp third_party/nnlib/armeabi-v7a/*so $LIB_DIR/armeabi-v7a/cpu_gpu_dsp/ + +echo "build static lib for arm64-v8a + cpu_gpu_dsp" +bazel build --config android --config optimization mace/libmace:libmace_static --config symbol_hidden --define neon=true --define openmp=true --define opencl=true --define hexagon=true --define quantize=true --cpu=arm64-v8a +cp bazel-genfiles/mace/libmace/libmace.a $LIB_DIR/arm64-v8a/cpu_gpu_dsp/ +cp third_party/nnlib/arm64-v8a/*so $LIB_DIR/arm64-v8a/cpu_gpu_dsp/ echo "build static lib for armeabi-v7a + cpu_gpu" bazel build --config android --config optimization mace/libmace:libmace_static --config symbol_hidden --define neon=true --define openmp=true --define opencl=true --define quantize=true --cpu=armeabi-v7a diff --git a/tools/device.py b/tools/device.py index 0ff868f482cf0a9d6d7e69cd854a10ee863d51ae..76beb0557ae72f0a6e99e906113d99b7c3812b96 100644 --- a/tools/device.py +++ b/tools/device.py @@ -270,8 +270,11 @@ class DeviceWrapper: if os.path.exists(opencl_parameter_file): self.push(opencl_parameter_file, self.data_dir) - self.push("third_party/nnlib/libhexagon_controller.so", - self.data_dir) + if self.system == SystemType.android \ + and device_type == common.DeviceType.HEXAGON: + self.push( + "third_party/nnlib/%s/libhexagon_controller.so" % abi, + self.data_dir) mace_model_phone_path = "" if model_graph_format == ModelFormat.file: diff --git a/tools/sh_commands.py b/tools/sh_commands.py index be3066b84c58e1775246e8d4aab5f1d776bbf8fc..02b8ffbaee2dcf2d979432fab3195a07b5a40591 100644 --- a/tools/sh_commands.py +++ b/tools/sh_commands.py @@ -902,7 +902,8 @@ def build_run_throughput_test(abi, adb_push("codegen/models/%s/%s.data" % dsp_model_tag, phone_data_dir, serialno) - adb_push("third_party/nnlib/libhexagon_controller.so", + + adb_push("third_party/nnlib/%s/libhexagon_controller.so" % abi, phone_data_dir, serialno)