armnn icon indicating copy to clipboard operation
armnn copied to clipboard

Custom Backend Tutorial Fails to Build Plugin

Open MisterBerg opened this issue 4 years ago • 11 comments

Hello!

I am following the tutorial here: Tutorial

I suspect the issue is that I cannot follow the instructions to configure it for Tensorflow. The link to that article is broken in the tutorial.

I am using arm-nn version 21.05. I have added the folder "custom" (from the downloaded zip file) to the src/backends directory. I am now trying to build the plugin using cmake/make, but there are files the compiler cannot find (the first is backendscommon/CpuTensorHandle.hpp, which I confirmed does not exist in src/backendsCommon

I appreciate any help you may be able to offer!

In file included from /home/jeff/armnn/src/backends/custom/CustomBackendUtils.cpp:6: /home/jeff/armnn/src/backends/custom/CustomBackendUtils.hpp:11:10: fatal error: backendsCommon/CpuTensorHandle.hpp: No such file or directory 11 | #include <backendsCommon/CpuTensorHandle.hpp> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [src/backends/custom/CMakeFiles/armnnCustomBackend.dir/build.make:76: src/backends/custom/CMakeFiles/armnnCustomBackend.dir/CustomBackendUtils.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... /home/jeff/armnn/src/backends/custom/CustomWorkloadFactory.cpp:11:10: fatal error: backendsCommon/CpuTensorHandle.hpp: No such file or directory 11 | #include <backendsCommon/CpuTensorHandle.hpp> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [src/backends/custom/CMakeFiles/armnnCustomBackend.dir/build.make:115: src/backends/custom/CMakeFiles/armnnCustomBackend.dir/CustomWorkloadFactory.cpp.o] Error 1 In file included from /home/jeff/armnn/src/backends/custom/workloads/CustomPreCompiledWorkload.cpp:8: /home/jeff/armnn/src/backends/custom/CustomBackendUtils.hpp:11:10: fatal error: backendsCommon/CpuTensorHandle.hpp: No such file or directory 11 | #include <backendsCommon/CpuTensorHandle.hpp> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. make[1]: *** [CMakeFiles/Makefile2:1339: src/backends/custom/CMakeFiles/armnnCustomBackend.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... make[2]: *** [src/backends/custom/workloads/CMakeFiles/armnnCustomBackendWorkloads.dir/build.make:76: src/backends/custom/workloads/CMakeFiles/armnnCustomBackendWorkloads.dir/CustomPreCompiledWorkload.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... In file included from /home/jeff/armnn/src/backends/custom/workloads/CustomAdditionWorkload.cpp:8: /home/jeff/armnn/src/backends/custom/CustomBackendUtils.hpp:11:10: fatal error: backendsCommon/CpuTensorHandle.hpp: No such file or directory 11 | #include <backendsCommon/CpuTensorHandle.hpp> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [src/backends/custom/workloads/CMakeFiles/armnnCustomBackendWorkloads.dir/build.make:63: src/backends/custom/workloads/CMakeFiles/armnnCustomBackendWorkloads.dir/CustomAdditionWorkload.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:1366: src/backends/custom/workloads/CMakeFiles/armnnCustomBackendWorkloads.dir/all] Error 2 /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:8:10: fatal error: backendsCommon/CpuTensorHandle.hpp: No such file or directory 8 | #include <backendsCommon/CpuTensorHandle.hpp> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/build.make:63: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... /home/jeff/armnn/src/backends/custom/test/CustomEndToEndTests.cpp: In function ‘void AdditionToPreCompiledTest()’: /home/jeff/armnn/src/backends/custom/test/CustomEndToEndTests.cpp:49:41: error: ‘OptimizedNetwork’ does not name a type; did you mean ‘optimizedNet’? 49 | Graph& optimizedGraph = static_cast<OptimizedNetwork*>(optimizedNet.get())->GetGraph(); | ^~~~~~~~~~~~~~~~ | optimizedNet /home/jeff/armnn/src/backends/custom/test/CustomEndToEndTests.cpp:49:57: error: expected ‘>’ before ‘*’ token 49 | Graph& optimizedGraph = static_cast<OptimizedNetwork*>(optimizedNet.get())->GetGraph(); | ^ /home/jeff/armnn/src/backends/custom/test/CustomEndToEndTests.cpp:49:57: error: expected ‘(’ before ‘*’ token 49 | Graph& optimizedGraph = static_cast<OptimizedNetwork*>(optimizedNet.get())->GetGraph(); | ^ | ( /home/jeff/armnn/src/backends/custom/test/CustomEndToEndTests.cpp:49:58: error: expected primary-expression before ‘>’ token 49 | Graph& optimizedGraph = static_cast<OptimizedNetwork*>(optimizedNet.get())->GetGraph(); | ^ /home/jeff/armnn/src/backends/custom/test/CustomEndToEndTests.cpp:49:81: error: ‘class armnn::IOptimizedNetwork’ has no member named ‘GetGraph’; did you mean ‘PrintGraph’? 49 | Graph& optimizedGraph = static_cast<OptimizedNetwork*>(optimizedNet.get())->GetGraph(); | ^~~~~~~~ | PrintGraph /home/jeff/armnn/src/backends/custom/test/CustomEndToEndTests.cpp:49:91: error: expected ‘)’ before ‘;’ token 49 | Graph& optimizedGraph = static_cast<OptimizedNetwork*>(optimizedNet.get())->GetGraph(); | ^ | ) make[2]: *** [src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/build.make:76: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomEndToEndTests.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:1393: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/all] Error 2 make: *** [Makefile:130: all] Error 2

MisterBerg avatar Jun 24 '21 20:06 MisterBerg

Hi @MisterBerg

Yeah, that example is broken as it still refers to TensorFlow and TensorFlow support was removed in ArmNN 21.05. The team over at developer.arm.com have been notified.

From looking at the tutorial it doesn't seem to actually need TensorFlow so instead of following the missing guide you could follow the steps here: https://developer.arm.com/solutions/machine-learning-on-arm/developer-material/how-to-guides/configure-the-arm-nn-sdk-build-environment

However, the contents of CpuTensorHandle.hpp were moved in 21.05 and the type has been deprecated. I'll see if I can get the code in ArmNNPluginFramework.zip to compile with 21.05 and I'll add it here if I can. You might have more luck compiling it for ArmNN 21.02.

Best regards, Mike

MikeJKelly avatar Jun 25 '21 13:06 MikeJKelly

Hi Mike

Thanks a lot for the help - I wasn't really expecting anything until next week at best, so I really appreciate it!

My project is really going to rely on accurate model parsing going forward, and we will potentially need to make use of the DSP and GPU on our board in addition to the ARM cores. So, having an up-to-date parser and continuing ARM support is probably a must-have and I don't want to start with an older release. By the way, ARMNN is a really good way for us to implement a one-stop shop for all potential ML targets on our ARM board, which is why I chose ARMNN for development. You might want to get someone to fix the tutorial to make it easer for others like me to get started.

Thanks again, and have a good weekend!

MisterBerg avatar Jun 25 '21 15:06 MisterBerg

Hi @MisterBerg

The code in the ArmNNPluginFramework.zip was definitely out of date. I can get it to compile with the 21.05 release with this patch:

Updated-ArmNNPluginFramework.zip.txt

Can you let me know if that works for you?

Best regards, Mike

MikeJKelly avatar Jun 30 '21 16:06 MikeJKelly

[Edit: Deleted zip file] This probably makes more sense. :)

It's the full, updated example, this should compile, please let me know if it works for you and I'll see if I can get the online guide updated.

MikeJKelly avatar Jun 30 '21 17:06 MikeJKelly

Hi Mike, sorry for the delay. I will check it now, thanks!

MisterBerg avatar Jun 30 '21 20:06 MisterBerg

Hi Mike

CMAKE is finding the boost library (1.64.0), but I think compiler doesn't see the right CHECK function in scope. I'm assuming CHECK comes from boost, but I am not sure. Here is the output:

/home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:58:5: error: ‘CHECK’ was not declared in this scope; did you mean ‘boost::test_tools::tt_detail::CHECK’? 58 | CHECK(queueDescriptor.m_Inputs.size() == 2); | ^~~~~ | boost::test_tools::tt_detail::CHECK In file included from /home/jeff/armnn/boost/include/boost/test/tools/old/impl.hpp:23, from /home/jeff/armnn/boost/include/boost/test/test_tools.hpp:46, from /home/jeff/armnn/boost/include/boost/test/unit_test.hpp:18, from /home/jeff/armnn/src/armnn/test/CreateWorkload.hpp:21, from /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:6: /home/jeff/armnn/boost/include/boost/test/tools/detail/fwd.hpp:78:11: note: ‘boost::test_tools::tt_detail::CHECK’ declared here 78 | WARN, CHECK, REQUIRE, PASS | ^~~~~ /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp: In function ‘void CustomCreatePreCompiledWorkloadTest()’: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:110:5: error: ‘CHECK’ was not declared in this scope; did you mean ‘boost::test_tools::tt_detail::CHECK’? 110 | CHECK(queueDescriptor.m_Inputs.size() == 2); | ^~~~~ | boost::test_tools::tt_detail::CHECK In file included from /home/jeff/armnn/boost/include/boost/test/tools/old/impl.hpp:23, from /home/jeff/armnn/boost/include/boost/test/test_tools.hpp:46, from /home/jeff/armnn/boost/include/boost/test/unit_test.hpp:18, from /home/jeff/armnn/src/armnn/test/CreateWorkload.hpp:21, from /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:6: /home/jeff/armnn/boost/include/boost/test/tools/detail/fwd.hpp:78:11: note: ‘boost::test_tools::tt_detail::CHECK’ declared here 78 | WARN, CHECK, REQUIRE, PASS | ^~~~~ /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp: At global scope: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:119:11: error: expected constructor, destructor, or type conversion before ‘(’ token 119 | TEST_SUITE("CreateWorkloadCustom") | ^ /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp: In instantiation of ‘void {anonymous}::CheckInputsOutput(std::unique_ptr<_Tp>, const armnn::TensorInfo&, const armnn::TensorInfo&, const armnn::TensorInfo&) [with Workload = armnn::CustomAdditionWorkload]’: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:64:62: required from here /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:27:10: error: ‘CHECK’ was not declared in this scope; did you mean ‘boost::test_tools::tt_detail::CHECK’? 27 | CHECK((inputHandle0->GetTensorInfo() == inputInfo0)); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | boost::test_tools::tt_detail::CHECK In file included from /home/jeff/armnn/boost/include/boost/test/tools/old/impl.hpp:23, from /home/jeff/armnn/boost/include/boost/test/test_tools.hpp:46, from /home/jeff/armnn/boost/include/boost/test/unit_test.hpp:18, from /home/jeff/armnn/src/armnn/test/CreateWorkload.hpp:21, from /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:6: /home/jeff/armnn/boost/include/boost/test/tools/detail/fwd.hpp:78:11: note: ‘boost::test_tools::tt_detail::CHECK’ declared here 78 | WARN, CHECK, REQUIRE, PASS | ^~~~~ /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:28:10: error: ‘CHECK’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] 28 | CHECK((inputHandle1->GetTensorInfo() == inputInfo1)); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:29:10: error: ‘CHECK’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] 29 | CHECK((outputHandle->GetTensorInfo() == outputInfo)); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp: In instantiation of ‘void {anonymous}::CheckInputsOutput(std::unique_ptr<_Tp>, const armnn::TensorInfo&, const armnn::TensorInfo&, const armnn::TensorInfo&) [with Workload = armnn::CustomPreCompiledWorkload]’: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:116:62: required from here /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:27:10: error: ‘CHECK’ was not declared in this scope; did you mean ‘boost::test_tools::tt_detail::CHECK’? 27 | CHECK((inputHandle0->GetTensorInfo() == inputInfo0)); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | boost::test_tools::tt_detail::CHECK In file included from /home/jeff/armnn/boost/include/boost/test/tools/old/impl.hpp:23, from /home/jeff/armnn/boost/include/boost/test/test_tools.hpp:46, from /home/jeff/armnn/boost/include/boost/test/unit_test.hpp:18, from /home/jeff/armnn/src/armnn/test/CreateWorkload.hpp:21, from /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:6: /home/jeff/armnn/boost/include/boost/test/tools/detail/fwd.hpp:78:11: note: ‘boost::test_tools::tt_detail::CHECK’ declared here 78 | WARN, CHECK, REQUIRE, PASS | ^~~~~ /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:28:10: error: ‘CHECK’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] 28 | CHECK((inputHandle1->GetTensorInfo() == inputInfo1)); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:29:10: error: ‘CHECK’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] 29 | CHECK((outputHandle->GetTensorInfo() == outputInfo)); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ make[2]: *** [src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/build.make:63: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [CMakeFiles/Makefile2:1393: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [ 40%] Built target armnnCustomBackend In file included from /home/jeff/armnn/boost/include/boost/test/unit_test.hpp:19, from /home/jeff/armnn/src/armnn/test/TensorHelpers.hpp:16, from /home/jeff/armnn/src/backends/backendsCommon/test/layerTests/BatchToSpaceNdTestImpl.hpp:20, from /home/jeff/armnn/src/backends/backendsCommon/test/LayerTests.hpp:13, from /home/jeff/armnn/src/backends/reference/test/RefLayerTests.cpp:8: /home/jeff/armnn/src/backends/reference/test/RefLayerTests.cpp: In function ‘void __static_initialization_and_destruction_0(int, int)’: /home/jeff/armnn/src/backends/reference/test/RefLayerTests.cpp:2273:1: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 2273 | BOOST_AUTO_TEST_SUITE_END() | ^~~~~~~~~~~~~~~~~~~~~~~~~ [ 42%] Built target armnnRefBackendUnitTests make: *** [Makefile:130: all] Error 2

MisterBerg avatar Jun 30 '21 20:06 MisterBerg

Hi @MisterBerg

we don't use boost anymore, it was causing some issues for some people, so we're in the process of removing it completely but there may still be references to it hanging around. We use doctest for unit tests now, if you add this include to CustomCreateWorkloadTests.cpp then it should hopefully work.

#include <doctest/doctest.h>

I don't know why it's working for me without that include but I'll update the version in the zip and then reupload it if that works for you.

MikeJKelly avatar Jul 01 '21 09:07 MikeJKelly

Hi again, Mike, and thanks for the help!

I was able to reach 100% compilation, but now there are doctest related linking errors. It clearly found the doctest header, but there is no .cpp file there (I assume this would be part of the repository).

There is a huge block of errors, but here is a small portion that might help: [100%] Linking CXX executable UnitTests /usr/bin/ld: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o: in function void (anonymous namespace)::CheckInputsOutputarmnn::CustomAdditionWorkload(std::unique_ptr<armnn::CustomAdditionWorkload, std::default_deletearmnn::CustomAdditionWorkload >, armnn::TensorInfo const&, armnn::TensorInfo const&, armnn::TensorInfo const&)': /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:27: undefined reference to doctest::detail::ResultBuilder::ResultBuilder(doctest::assertType::Enum, char const*, int, char const*, char const*, char const*)' /usr/bin/ld: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:27: undefined reference to doctest::detail::ExpressionDecomposer::ExpressionDecomposer(doctest::assertType::Enum)' /usr/bin/ld: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:27: undefined reference to doctest::detail::ResultBuilder::setResult(doctest::detail::Result const&)' /usr/bin/ld: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o: in function doctest::detail::Result::~Result()': /home/jeff/armnn/third-party/doctest/doctest.h:1032: undefined reference to doctest::String::~String()' /usr/bin/ld: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o: in function void (anonymous namespace)::CheckInputsOutputarmnn::CustomAdditionWorkload(std::unique_ptr<armnn::CustomAdditionWorkload, std::default_deletearmnn::CustomAdditionWorkload >, armnn::TensorInfo const&, armnn::TensorInfo const&, armnn::TensorInfo const&)': /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:27: undefined reference to doctest::detail::ResultBuilder::log()' /usr/bin/ld: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:27: undefined reference to doctest::detail::ResultBuilder::react() const' /usr/bin/ld: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o: in function doctest::AssertData::~AssertData()': /home/jeff/armnn/third-party/doctest/doctest.h:652: undefined reference to doctest::String::~String()' /usr/bin/ld: /home/jeff/armnn/third-party/doctest/doctest.h:652: undefined reference to doctest::String::~String()' /usr/bin/ld: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o: in function void (anonymous namespace)::CheckInputsOutputarmnn::CustomAdditionWorkload(std::unique_ptr<armnn::CustomAdditionWorkload, std::default_deletearmnn::CustomAdditionWorkload >, armnn::TensorInfo const&, armnn::TensorInfo const&, armnn::TensorInfo const&)': /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:28: undefined reference to doctest::detail::ResultBuilder::ResultBuilder(doctest::assertType::Enum, char const*, int, char const*, char const*, char const*)' /usr/bin/ld: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:28: undefined reference to doctest::detail::ExpressionDecomposer::ExpressionDecomposer(doctest::assertType::Enum)' /usr/bin/ld: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:28: undefined reference to doctest::detail::ResultBuilder::setResult(doctest::detail::Result const&)' /usr/bin/ld: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o: in function doctest::detail::Result::~Result()': /home/jeff/armnn/third-party/doctest/doctest.h:1032: undefined reference to doctest::String::~String()' /usr/bin/ld: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o: in function void (anonymous namespace)::CheckInputsOutputarmnn::CustomAdditionWorkload(std::unique_ptr<armnn::CustomAdditionWorkload, std::default_deletearmnn::CustomAdditionWorkload >, armnn::TensorInfo const&, armnn::TensorInfo const&, armnn::TensorInfo const&)': /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:28: undefined reference to doctest::detail::ResultBuilder::log()' /usr/bin/ld: /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:28: undefined reference to doctest::detail::ResultBuilder::react() const' /usr/bin/ld: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o: in function doctest::AssertData::~AssertData()': /home/jeff/armnn/third-party/doctest/doctest.h:652: undefined reference to doctest::String::~String()' /usr/bin/ld: /home/jeff/armnn/third-party/doctest/doctest.h:652: undefined reference to doctest::String::~String()' /usr/bin/ld: src/backends/custom/test/CMakeFiles/armnnCustomBackendUnitTests.dir/CustomCreateWorkloadTests.cpp.o: in function void (anonymous namespace)::CheckInputsOutputarmnn::CustomAdditionWorkload(std::unique_ptr<armnn::CustomAdditionWorkload, std::default_deletearmnn::CustomAdditionWorkload >, armnn::TensorInfo const&, armnn::TensorInfo const&, armnn::TensorInfo const&)': /home/jeff/armnn/src/backends/custom/test/CustomCreateWorkloadTests.cpp:29: undefined reference to doctest::detail::ResultBuilder::ResultBuilder(doctest::assertType::Enum, char const*, int, char const*, char const*, char const*)'

MisterBerg avatar Jul 01 '21 19:07 MisterBerg

Hi @MisterBerg

I got my timeline confused the version we still used boost for our unit tests in ArmNN at the end of 21.05, we switched to doctest in June. The version I previously uploaded will work with master but not 21.05.

This version should compile with 21.05: ArmNNPluginFramework.zip

Sorry about the confusion!

Best regards, Mike

MikeJKelly avatar Jul 05 '21 10:07 MikeJKelly

Hi Mike

I was able to get everything to build correctly after switching to the master branch. I would comment that cmake still fails if you don't provide the boost root directory through the -DBOOST_ROOT= parameter.

Regardless, I'd like to thank you again for all the help - your support has really been stellar and I appreciate it!

Let me know when the tutorial gets updated and I will take a look.

MisterBerg avatar Jul 06 '21 18:07 MisterBerg

Hi MisterBerg,

I'm glad that you were able to get it all working! I'll leave this issue open and post when the guide is updated.

Best regards, Mike

MikeJKelly avatar Jul 07 '21 08:07 MikeJKelly

Hi @MisterBerg,

The linked guide was updated in September 2021 according to https://developer.arm.com/documentation/102274/latest/?lang=en

6 September 2021 | Non-Confidential | Removes Boost library dependency.

I'll close the ticket for now, but please reopen if any other changes are needed.

Regards, Francis.

FrancisMurtagh-arm avatar Jan 06 '23 13:01 FrancisMurtagh-arm