提交 8e4c3c53 编写于 作者: M Megvii Engine Team

feat(imperative/opr): fix extern c opr mace example md

GitOrigin-RevId: b83fa4568b4659e539c827378f9a02e5161ea1af
上级 27f2ecc4
......@@ -15,9 +15,10 @@ endif
TARGET := libmace_loader.so
all: $(TARGET)
CXX = aarch64-linux-android-g++
# can be find at NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/
CXX = aarch64-linux-android21-clang++
CXXFLAGS = -std=c++14 -I$(SDKPATH)/include \
CXXFLAGS = -std=c++14 -I$(SDKPATH)/include \
-Dmgb_mace_loader_init=mgb_c_opr_init
DEBUG ?= 0
......@@ -27,12 +28,7 @@ else
CXXFLAGS += -O2
endif
LDFLAGS = -L$(SDKPATH)/lib \
-lmace_static -lcore -lgenerated_version \
-lport_android -lport_linux_base -lport_posix -lport_base \
-lproto -lutils -lgenerated_opencl_kernel \
-lops -lcore -lprotobuf-lite -llog \
-lpthread -l:rpcmem.a
LDFLAGS = -L$(SDKPATH)/lib -lmace -llog
LDLIBS = -shared -fPIC
......
# Extern-C-Opr with MACE
### Build MegEngine `load_and_run` for arm64-v8a
NOTICE: build depends on [NDK](https://developer.android.com/ndk/downloads)
after download, please config env by:
```bash
export NDK_ROOT=path/to/ndk
export ANDROID_NDK_HOME=${NDK_ROOT}
export PATH=${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/:$PATH
```
```bash
cd $MEGENGINE_HOME
git checkout v1.0.0 (we only test v1.0.0 version)
./scripts/cmake-build/cross_build_android_arm_inference.sh -a arm64-v8a -r
```
After successfully built, load_and_run should be in `$MEGENGINE_HOME/build_dir/android/arm64-v8a/Release/install/bin`
After successfully built:
* load_and_run should be in `$MEGENGINE_HOME/build_dir/android/arm64-v8a/Release/install/bin`
* libmegengine.so should be in `$MEGENGINE_HOME/build_dir/android/arm64-v8a/Release/install/lib`
### Build MACE libraries for arm64-v8a with GPU runtime
```bash
cd $MACE_HOME
RUNTIME=GPU bash tools/cmake/cmake-build-arm64-v8a.sh
cp -r $MACE_HOME/build/cmake-build/arm64-v8a/install $MEGENGINE_HOME/sdk/c-opr-loaders/mace/arm64-v8a
export SDKPATH=${MACE_HOME}/build/cmake-build/arm64-v8a/install
```
After successfully libmace.so should be in `$MACE_HOME/build/cmake-build/arm64-v8a/install/lib/libmace.so`
### Build MACE loader for MegEngine
```
SDK_PATH=/path/to/mace-sdk make
```
If `SDK_PATH` is not set, by default it's `./arm64-v8a`
If `SDKPATH` is not set, by default it's `./arm64-v8a`
You can run with debug mode(by adding `DEBUG=1` to make command), which will show more running information
### Prepare a MACE model(for example: resnet_50), wrap it with MegEngine extern c opr
```
python3 dump_model.py path/to/resnet_50.pb path/to/resnet_50.data path/to/resnet_50.mdl path/to/resnet_50.yml
python3 dump_model.py --input path/to/resnet_50.pb --param path/to/resnet_50.data --output resnet_50.mdl --config path/to/resnet_50.yml
```
`*.pb` file denotes the model structure, `*.data` denotes the model parameters
......@@ -40,14 +46,22 @@ Check [here](https://github.com/XiaoMi/mace-models) to learn how to write yml fi
### Run with load-and-run
First of all, send all files to the executed device:
First of all, send all files to the executed device(for example: /data/local/tmp/test/):
- load_and_run
- resnet_50.mdl
- libmace_loader.so
- libmegengine.so
- libmace.so
As mace build with `c++_shared` by default, but old AOSP device do not have `libc++_shared.so` by default, if you use this class devices
also need send it to devices, which always can be found at `${NDK_ROOT}/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_shared.so`
```
MGB_MACE_RUNTIME=GPU MGB_MACE_OPENCL_CACHE_PATH=/path/to/opencl MGB_MACE_LOADER_FORMAT=NCHW /path/to/load_and_run /path/to/resnet_50.mdl --c-opr-lib /path/to/libmace_loader.so
login to device
cd /path/to/ (for example: /data/local/tmp/test/)
MGB_MACE_RUNTIME=GPU MGB_MACE_OPENCL_CACHE_PATH=./ MGB_MACE_LOADER_FORMAT=NCHW LD_LIBRARY_PATH=. ./load_and_run resnet_50.mdl --c-opr-lib libmace_loader.so --input input-bs1.npy
```
RUNTIME candidates:
......@@ -77,4 +91,4 @@ To generate the tunig param file, give `MACE_TUNING=1` env and set the `MACE_RUN
# then run test using the param
MGB_MACE_TUNING_PARAM_PATH=opencl/vgg16.tune_param MGB_MACE_RUNTIME=GPU MGB_MACE_OPENCL_PATH=opencl MGB_MACE_LOADER_FORMAT=NCHW ./load_and_run mace/vgg16.mdl --c-opr-lib libmace_loader.so --input 4d.npy
```
\ No newline at end of file
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册