• Home
  • Raw
  • Download

Lines Matching +full:- +full:- +full:build +full:- +full:and +full:- +full:test

1 # How to use the Android NDK to build Arm NN
3 - [Introduction](#introduction)
4 - [Initial Setup](#initial-setup)
5 - [Download the Android NDK and make a standalone toolchain](#download-the-android-ndk-and-make-a-s…
6 - [Install Cmake](#install-cmake)
7 - [Build Flatbuffers](#build-flatbuffers)
8 - [Download Arm NN](#download-arm-nn)
9 - [Get And Build TFLite](#get-and-build-tflite)
10 - [Build Arm Compute Library](#build-arm-compute-library)
11 - [Build Arm NN](#build-arm-nn)
12 - [Build Standalone Sample Dynamic Backend](#build-standalone-sample-dynamic-backend)
13 - [Run the Arm NN unit tests on an Android device](#run-the-arm-nn-unit-tests-on-an-android-device)
17 These are step-by-step instructions for using the Android NDK to build Arm NN.
18 They have been tested on a clean installation of Ubuntu 18.04 and 20.04, and should also work with …
19 The instructions show how to build the Arm NN core library and its dependencies.
22 Run the script with a -h flag to see the command line parameters.
26 …y the Android version and the directories you want to build armnn in and to install some applicati…
30 export WORKING_DIR=$HOME/armnn-devenv
31 export NDK_DIR=$WORKING_DIR/android-ndk-r25
32 export NDK_TOOLCHAIN_ROOT=$NDK_DIR/toolchains/llvm/prebuilt/linux-x86_64
50 CMake is required to build Arm NN and its dependencies. If this has not been already installed then…
55 ## Download the Android NDK and make a standalone toolchain
59 mkdir -p $WORKING_DIR
62 wget https://dl.google.com/android/repository/android-ndk-r25-linux.zip
63 unzip android-ndk-r25-linux.zip
65-25, you no longer need to use the make_standalone_toolchain script to create a toolchain for a sp…
68 ….19rc3 or later is required to build Arm NN. If you are using Ubuntu 20.04 the command given in [I…
72 sudo apt-get install libssl-dev
73 wget https://github.com/Kitware/CMake/releases/download/v3.19.0-rc3/cmake-3.19.0-rc3.tar.gz
74 tar -zxvf cmake-3.19.0-rc3.tar.gz
75 cd cmake-3.19.0-rc3
76 ./bootstrap --prefix=$WORKING_DIR/cmake/install
81 ## Build Flatbuffers
90 Build Flatbuffers for x86:
92 cd $WORKING_DIR/flatbuffers-2.0.6
94 rm -f CMakeCache.txt
96 rm -rf build-x86
97 mkdir build-x86
98 cd build-x86
100 rm -rf $WORKING_DIR/flatbuffers-x86
101 mkdir $WORKING_DIR/flatbuffers-x86
103 CXXFLAGS="-fPIC" $CMAKE .. \
104 -DFLATBUFFERS_BUILD_FLATC=1 \
105 -DCMAKE_INSTALL_PREFIX:PATH=$WORKING_DIR/flatbuffers-x86
107 make all install -j16
109 Note: -fPIC is added to allow users to use the libraries in shared objects.
111 Build Flatbuffers for Android:
113 cd $WORKING_DIR/flatbuffers-2.0.6
115 rm -f CMakeCache.txt
117 rm -rf build-android
118 mkdir build-android
119 cd build-android
121 rm -rf $WORKING_DIR/flatbuffers-android
122 mkdir $WORKING_DIR/flatbuffers-android
124 CC=/usr/bin/aarch64-linux-gnu-gcc CXX=/usr/bin/aarch64-linux-gnu-g++ \
125 CXXFLAGS="-fPIC" \
127 -DCMAKE_ANDROID_NDK=$NDK_DIR \
128 -DCMAKE_SYSTEM_NAME=Android \
129 -DCMAKE_SYSTEM_VERSION=27 \
130 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
131 -DCMAKE_CXX_FLAGS=--std=c++14 \
132 -DFLATBUFFERS_BUILD_FLATC=OFF \
133 -DCMAKE_BUILD_TYPE=Release \
134 -DFLATBUFFERS_BUILD_TESTS=OFF \
135 -DCMAKE_INSTALL_PREFIX=$WORKING_DIR/flatbuffers-android
137 make all install -j16
145 git clone https://github.com/ARM-software/armnn.git
162 ## Get And Build TFLite
163 This optional step is only required if you intend to build the TFLite delegate or parser for Arm NN…
174 git fetch && git checkout $(../armnn/scripts/get_tensorflow.sh -p)
176 Next build Tensorflow Lite:
179 mkdir -p tflite-out/android
180 cd tflite-out/android
182 CMARGS="-DCMAKE_TOOLCHAIN_FILE=$NDK_DIR/build/cmake/android.toolchain.cmake \
183 -DANDROID_ABI=arm64-v8a \
184 -DANDROID_PLATFORM=$ANDROID_API"
189 cmake --build tflite-out/android -j 16
194 mkdir -p $WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema
197 cp $SCHEMA_LOCATION $WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema
199 cd $WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema
200 $WORKING_DIR/flatbuffers-x86/bin/flatc -c --gen-object-api --reflect-types --reflect-names schema.f…
203 ## Build Arm Compute Library
208 git clone https://github.com/ARM-software/ComputeLibrary.git
221 Arm NN and Arm Compute Library are developed closely together. To use a particular version of Arm N…
224 git checkout $(../armnn/scripts/get_compute_library.sh -p)
226 Build the Arm Compute Library:
228 scons arch=arm64-v8a os=android toolchain_prefix=llvm- compiler_prefix=aarch64-linux-android$ANDROI…
229 neon=1 opencl=1 embed_kernels=1 extra_cxx_flags="-fPIC" \
230 benchmark_tests=0 validation_tests=0 -j16
233 ## Build Arm NN
235 Build Arm NN:
238 mkdir $WORKING_DIR/armnn/build
239 cd $WORKING_DIR/armnn/build
240 CXX=aarch64-linux-android$ANDROID_API-clang++ \
241 CC=aarch64-linux-android$ANDROID_API-clang \
242 CXX_FLAGS="-fPIE -fPIC" \
244 -DCMAKE_BUILD_TYPE=Release \
245 -DCMAKE_ANDROID_NDK=$NDK_DIR \
246 -DNDK_VERSION=r25 \
247 -DCMAKE_SYSTEM_NAME=Android \
248 -DCMAKE_SYSTEM_VERSION=$ANDROID_API \
249 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
250 -DCMAKE_SYSROOT=$WORKING_DIR/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
251 -DARMCOMPUTE_ROOT=$WORKING_DIR/ComputeLibrary \
252 -DARMCOMPUTE_BUILD_DIR=$WORKING_DIR/ComputeLibrary/build \
253 -DARMCOMPUTENEON=1 -DARMCOMPUTECL=1 -DARMNNREF=1 \
254 -DFLATBUFFERS_INCLUDE_PATH=$WORKING_DIR/flatbuffers-x86/include \
255 -DFLATBUFFERS_ROOT=$WORKING_DIR/flatbuffers-android \
256 -DFLATC_DIR=$WORKING_DIR/flatbuffers-x86 \
257 -DBUILD_UNIT_TESTS=1 \
258 -DBUILD_TESTS=1 \
259 -fexception \
265 -DBUILD_ARMNN_TFLITE_DELEGATE=1 \
266 -DTENSORFLOW_ROOT=$WORKING_DIR/tensorflow \
267 -DTFLITE_LIB_ROOT=$WORKING_DIR/tflite-out/android \
268 -DTFLITE_ROOT_DIR=$WORKING_DIR/tensorflow/tensorflow/lite \
274 -DBUILD_TF_LITE_PARSER=1 \
275 -DTF_LITE_GENERATED_PATH=$WORKING_DIR/tflite-out/tensorflow/tensorflow/lite/schema \
276 -DTENSORFLOW_ROOT=$WORKING_DIR/tensorflow \
277 -DTFLITE_LIB_ROOT=$WORKING_DIR/tflite-out/android \
280 To include standalone sample dynamic backend tests, add these arguments to enable the tests and the…
283 -DSAMPLE_DYNAMIC_BACKEND=1 \
284 -DDYNAMIC_BACKEND_PATHS=$SAMPLE_DYNAMIC_BACKEND_PATH
288 * Run the build
290 make -j16
293 ## Build Standalone Sample Dynamic Backend
296 mkdir build
297 cd build
300 …gure the build environment, update the following script and run it from the armnn/src/dynamic/samp…
303 CXX=aarch64-linux-android$ANDROID_API-clang++ \
304 CC=aarch64-linux-android$ANDROID_API-clang \
305 CXX_FLAGS="-fPIE -fPIC" \
307 -DCMAKE_C_COMPILER_WORKS=TRUE \
308 -DCMAKE_CXX_COMPILER_WORKS=TRUE \
309 -DCMAKE_ANDROID_NDK=$NDK_DIR \
310 -DCMAKE_SYSTEM_NAME=Android \
311 -DCMAKE_SYSTEM_VERSION=$ANDROID_API \
312 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
313 -DCMAKE_SYSROOT=$WORKING_DIR/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
314 -DCMAKE_CXX_FLAGS=--std=c++14 \
315 -DCMAKE_EXE_LINKER_FLAGS="-pie -llog" \
316 -DCMAKE_MODULE_LINKER_FLAGS="-llog" \
317 -DARMNN_PATH=$WORKING_DIR/armnn/build/libarmnn.so ..
320 * Run the build
328 * Push the build results to an Android device and make symbolic links for shared libraries:
334 adb push $NDK_DIR/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_shared.so /data/local/tmp/
337 * Push the files needed for the unit tests (they are a mix of files, directories and symbolic links…
339 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/testSharedObject
340 adb push -p $WORKING_DIR/armnn/build/src/backends/backendsCommon/test/testSharedObject/* /data/loca…
342 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/testDynamicBackend
343 adb push -p $WORKING_DIR/armnn/build/src/backends/backendsCommon/test/testDynamicBackend/* /data/lo…
345 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath1
346 adb push -p $WORKING_DIR/armnn/build/src/backends/backendsCommon/test/backendsTestPath1/* /data/loc…
348 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2
349 …h -p $WORKING_DIR/armnn/build/src/backends/backendsCommon/test/backendsTestPath2/Arm_CpuAcc_backen…
350 adb shell ln -s Arm_CpuAcc_backend.so /data/local/tmp/src/backends/backendsCommon/test/backendsTest…
351 adb shell ln -s Arm_CpuAcc_backend.so.1 /data/local/tmp/src/backends/backendsCommon/test/backendsTe…
352 adb shell ln -s Arm_CpuAcc_backend.so.1.2 /data/local/tmp/src/backends/backendsCommon/test/backends…
353 …h -p $WORKING_DIR/armnn/build/src/backends/backendsCommon/test/backendsTestPath2/Arm_GpuAcc_backen…
354 adb shell ln -s nothing /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath2/Arm_no_b…
356 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath3
358 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath5
359 adb push -p $WORKING_DIR/armnn/build/src/backends/backendsCommon/test/backendsTestPath5/* /data/loc…
361 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath6
362 adb push -p $WORKING_DIR/armnn/build/src/backends/backendsCommon/test/backendsTestPath6/* /data/loc…
364 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath7
366 adb shell mkdir -p /data/local/tmp/src/backends/backendsCommon/test/backendsTestPath9
367 adb push -p $WORKING_DIR/armnn/build/src/backends/backendsCommon/test/backendsTestPath9/* /data/loc…
369 adb shell mkdir -p /data/local/tmp/src/backends/dynamic/reference
370 adb push -p $WORKING_DIR/armnn/build/src/backends/dynamic/reference/Arm_CpuRef_backend.so /data/loc…
377 adb shell mkdir -p /data/local/tmp/dynamic/sample/
378 adb push -p $WORKING_DIR/armnn/src/dynamic/sample/build/libArm_SampleDynamic_backend.so /data/local…
382 adb push $WORKING_DIR/armnn/build/delegate/DelegateUnitTests /data/local/tmp/
383 adb push $WORKING_DIR/armnn/build/delegate/libarmnnDelegate.so /data/local/tmp/
393 …rmnnUtils.a is present in `$WORKING_DIR/armnn/build/` and the unit tests run without failure then …