• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Frequently asked questions
2==========================
3
4These are issues that have been commonly seen when using ArmNN.
5
6Problems seen when trying to build armnn and ComputeLibrary obtained from GitHub
7-----------------------------------------------------------------------------
8
9Some users have encountered difficulties when attempting to build armnn and ComputeLibrary obtained from GitHub. The build generally fails reporting missing dependencies or fields in aclCommon, backendsCommon, cl or neon. These errors can look like this:
10
11error: ‘HARD_SWISH’ is not a member of ‘AclActivationFunction {aka arm_compute::ActivationLayerInfo::ActivationFunction}’
12
13The most common reason for these errors are a mismatch between armnn and clframework revisions. For any version of ArmNN the coresponding version of ComputeLibrary is detailed in scripts/get_compute_library.sh as DEFAULT_CLFRAMEWORKREVISION
14
15On *nix like systems running this script will checkout ComputeLibrary, with the current default SHA, into ../../clframework/ relative to the location of the script.
16
17Segmentation fault following a failed call to armnn::Optimize using CpuRef backend.
18---------------------------------------------------------
19
20In some error scenarios of calls to armnn::Optimize a null pointer may be returned. This contravenes the function documentation however, it can happen. Users are advised to check the value returned from the function as a precaution.
21
22If you encounter this problem and are able to isolate it consider contributing a solution.
23
24Adding or removing -Dxxx options when building ArmNN does not always work.
25---------------------------------------------------------
26
27ArmNN uses CMake for build configuration. CMake uses a cumulative cache of user options. That is, setting a value once on a cmake command line will be persisted until either you explicitly change the value or delete the cache. To delete the cache in ArmNN you must delete the build directory.
28
29Many DynamicBackendTests fail with "Base path for shared objects does not exist".
30---------------------------------------------------------
31This problem most commonly occurs when the compile and runtime environments for the unit tests differ. These dynamic backend tests rely on a set of test files and directories at runtime. These files are created by default during the cmake build. At runtime the tests will look for these files in src/backends/backendsCommon/test/ relative to where the Unittests executable was built. The usual solution to to copy these files and directories into the new unit test execution environment. You can also specify a new root path for these files by adding a command line parameter to the Unittests executable: Unittests -- --dynamic-backend-build-dir "new path"
32
33UnitTests executable exits with "corrupted size vs. prev_size" in armv7 environments.
34---------------------------------------------------------
35Some combinations of GCC cross compiler and pthread runtime in an armv7 environment result a UnitTests executable that will raise SIGABRT signals. The exact combination has not been identified but it is known that cross compiling on Ubuntu 16.04 for an armv7 environment does exhibit this behavior. It is possible to exclude unit tests that use the pthread library using the Boost exclude mechanism, '--run_test=![filter expression]'. The list of tests that might cause this problem is constantly increasing. Consideration should be given to using a newer build environment.
36
37UnitTests fail on Max OS-X with errors in boost::program_options
38---------------------------------------------------------
39When executing ArmNN UnitTests built in an OS-X environment, runtime errors occur around boost::program_options. When compiling boost the "b2" tool appears to have a bug where it defaults to using the native ranlib even when the correct tool is specified in the user_config.jam.
40
41To validate that this issue is occurring inspect the boost build log looking for warnings like:
42warning: ranlib: warning for library: libboost_atomic.a the table of contents is empty (no object file members in the library define global symbols)
43
44This problem has previously been reported to the boostorg GitHub project. The solution is to manually execute the correct ranlib on each static library. https://github.com/boostorg/build/issues/160
45
46ArmNN fails to build on Ubuntu 20.04
47---------------------------------------------------------
48The compiler version update on Ubuntu 20.04 resulted in build errors in Flat buffers 1.10.0. Update to Flatbuffers 1.12.0 to resolve this problem. In addition when building flatbuffers specify -fPIC CXX flag to allow the libraries to be used in our shared objects. Without this the the ArmNN build can fail with libflatbuffers.a(util.cpp.o): relocation R_X86_64_PC32 against symbol `_ZN11flatbuffers9DirExistsEPKc' can not be used when making a shared object; recompile with -fPIC
49
50Caffe fails to build on Ubuntu 20.04
51---------------------------------------------------------
52The default version of OpenCV on Ubuntu 20.04 is 4.2. This appears to be incomatible with Caffe. Building results in missing definitions of "CV_LOAD_IMAGE_COLOR". When building Caffe to use with ArmNN you can disable OpenCV. In the Makefile.config uncomment "# USE_OPENCV := 0".
53