armnn icon indicating copy to clipboard operation
armnn copied to clipboard

[20.05] LTO builds fail on UnitTest with check counterUidsMultiCore.front() >= nextCounterUids[0] has failed

Open ggardet opened this issue 5 years ago • 7 comments

LTO builds of ArmNN 20.05 fail on UnitTest with:

[ 1244s] + ./build/UnitTests
[ 1251s] Running 3215 test cases...
[ 1251s] /home/abuild/rpmbuild/BUILD/armnn-20.05/src/profiling/test/ProfilingTests.cpp(811): error: in "ExternalProfiling/CheckProfilingObjectUids": check counterUidsMultiCore.front() >= nextCounterUids[0] has failed
[ 1257s] 
[ 1257s] *** 1 failure is detected in the test module "UnitTests"

ggardet avatar Jun 30 '20 12:06 ggardet

Hi ggardet,

Thanks for reporting this issue.

Could you please provide us with some more information about your environment so we can diagnose this for you.

What values are in counterUidsMultiCore.front() and nextCounterUids[0] when you run the test?

Cheers, James

james-conroy-arm avatar Jul 01 '20 10:07 james-conroy-arm

Here are the values:

[  989s] counterUidsMultiCore.front() = 4
[  989s] nextCounterUids[0] = 13

ggardet avatar Jul 07 '20 13:07 ggardet

With armnn 20.08 I get an error on the link:

[ 3172s] /home/abuild/rpmbuild/BUILD/armnn-20.08/src/backends/reference/test/RefLayerTests.cpp: In function '__static_initialization_and_destruction_0.constprop':
[ 3172s] /home/abuild/rpmbuild/BUILD/armnn-20.08/src/backends/reference/test/RefLayerTests.cpp:2195: note: variable tracking size limit exceeded with '-fvar-tracking-assignments', retrying without
[ 3172s]  2195 | BOOST_AUTO_TEST_SUITE_END()
[ 3172s]       | 
[ 3172s] /home/abuild/rpmbuild/BUILD/armnn-20.08/src/backends/neon/test/NeonLayerTests.cpp: In function '__static_initialization_and_destruction_0.constprop':
[ 3172s] /home/abuild/rpmbuild/BUILD/armnn-20.08/src/backends/neon/test/NeonLayerTests.cpp:1401:1: note: variable tracking size limit exceeded with '-fvar-tracking-assignments', retrying without
[ 3172s]  1401 | BOOST_AUTO_TEST_SUITE_END()
[ 3172s]       | ^

ggardet avatar Sep 04 '20 16:09 ggardet

Hi @ggardet,

Have you seen that failure in ExternalProfiling/CheckProfilingObjectUids recently? I've come across it on Ubuntu 21.04 Hirsute whereas it doesn't occur while building for Ubuntu 20.10 Groovy, it's also only on x86.

This is my fix in case it's of use. (Merged to trunk) https://review.mlplatform.org/c/ml/armnn/+/5615

Regards, Francis.

FrancisMurtagh-arm avatar May 11 '21 11:05 FrancisMurtagh-arm

With 21.05, I have those link errors with LTO enabled:

[  334s] [ 66%] Linking CXX shared library ../../libarmnnSerializer.so
[  334s] cd /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer && /usr/bin/cmake -E cmake_link_script CMakeFiles/armnnSerializer.dir/link.txt --verbose=1
[  334s] /usr/bin/c++ -fPIC -mbranch-protection=standard -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -pthread  -Wno-error=deprecated-copy -Wno-error=deprecated-declarations -Wno-error=implicit-fallthrough -Wno-error=unused-parameter -std=c++14 -Wall -Wextra -Werror -Wold-style-cast -Wno-missing-braces -Wconversion -Wsign-conversion -O2 -g  -flto=auto -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -shared -Wl,-soname,libarmnnSerializer.so.25 -o ../../libarmnnSerializer.so.25.0 CMakeFiles/armnnSerializer.dir/Serializer.cpp.o CMakeFiles/armnnSerializer.dir/SerializerUtils.cpp.o CMakeFiles/armnnSerializer.dir/__/armnnDeserializer/Deserializer.cpp.o  ../../libarmnn.so.25.0 -lflatbuffers ../../libarmnnUtils.a ../../profiling/common/src/libpipeCommon.a -ldl ../../third-party/fmt/libfmt.a -larm_compute_core -larm_compute -larm_compute_core -larm_compute 
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:885:6: error: type 'ComparisonOperation' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   885 | enum ComparisonOperation {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:882:6: note: a type with different precision is defined in another translation unit
[  334s]   882 | enum ComparisonOperation : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:613:6: error: type 'ConstTensorData' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   613 | enum ConstTensorData {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:610:6: note: a type with different precision is defined in another translation unit
[  334s]   610 | enum ConstTensorData : uint8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:460:6: error: type 'DataType' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   460 | enum DataType {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:457:6: note: a type with different precision is defined in another translation unit
[  334s]   457 | enum DataType : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:517:6: error: type 'DataLayout' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   517 | enum DataLayout {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:514:6: note: a type with different precision is defined in another translation unit
[  334s]   514 | enum DataLayout : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:999:6: error: type 'PoolingAlgorithm' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   999 | enum PoolingAlgorithm {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:996:6: note: a type with different precision is defined in another translation unit
[  334s]   996 | enum PoolingAlgorithm : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:1032:6: error: type 'OutputShapeRounding' violates the C++ One Definition Rule [-Werror=odr]
[  334s]  1032 | enum OutputShapeRounding {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:1029:6: note: a type with different precision is defined in another translation unit
[  334s]  1029 | enum OutputShapeRounding : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:1062:6: error: type 'PaddingMethod' violates the C++ One Definition Rule [-Werror=odr]
[  334s]  1062 | enum PaddingMethod {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:1059:6: note: a type with different precision is defined in another translation unit
[  334s]  1059 | enum PaddingMethod : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:1092:6: error: type 'NormalizationAlgorithmChannel' violates the C++ One Definition Rule [-Werror=odr]
[  334s]  1092 | enum NormalizationAlgorithmChannel {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:1089:6: note: a type with different precision is defined in another translation unit
[  334s]  1089 | enum NormalizationAlgorithmChannel : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:1122:6: error: type 'NormalizationAlgorithmMethod' violates the C++ One Definition Rule [-Werror=odr]
[  334s]  1122 | enum NormalizationAlgorithmMethod {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:1119:6: note: a type with different precision is defined in another translation unit
[  334s]  1119 | enum NormalizationAlgorithmMethod : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:583:6: error: type 'ResizeMethod' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   583 | enum ResizeMethod {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:580:6: note: a type with different precision is defined in another translation unit
[  334s]   580 | enum ResizeMethod : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:547:6: error: type 'ReduceOperation' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   547 | enum ReduceOperation {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:544:6: note: a type with different precision is defined in another translation unit
[  334s]   544 | enum ReduceOperation : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:969:6: error: type 'LogicalBinaryOperation' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   969 | enum LogicalBinaryOperation {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:966:6: note: a type with different precision is defined in another translation unit
[  334s]   966 | enum LogicalBinaryOperation : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:927:6: error: type 'UnaryOperation' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   927 | enum UnaryOperation {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:924:6: note: a type with different precision is defined in another translation unit
[  334s]   924 | enum UnaryOperation : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:1152:6: error: type 'Layer' violates the C++ One Definition Rule [-Werror=odr]
[  334s]  1152 | enum Layer {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:1149:6: note: a type with different precision is defined in another translation unit
[  334s]  1149 | enum Layer : uint8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:370:6: error: type 'ActivationFunction' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   370 | enum ActivationFunction {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:367:6: note: a type with different precision is defined in another translation unit
[  334s]   367 | enum ActivationFunction : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:430:6: error: type 'ArgMinMaxFunction' violates the C++ One Definition Rule [-Werror=odr]
[  334s]   430 | enum ArgMinMaxFunction {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:427:6: note: a type with different precision is defined in another translation unit
[  334s]   427 | enum ArgMinMaxFunction : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:15:34: error: 'GetFlatBufferConstTensorData' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    15 | armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType);
[  334s]       |                                  ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:45:34: note: return value type mismatch
[  334s]    45 | armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
[  334s]       |                                  ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:610:6: note: type 'ConstTensorData' itself violates the C++ One Definition Rule
[  334s]   610 | enum ConstTensorData : uint8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:613:6: note: the incompatible type is defined here
[  334s]   613 | enum ConstTensorData {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:45:34: note: 'GetFlatBufferConstTensorData' was previously declared here
[  334s]    45 | armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
[  334s]       |                                  ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:30:48: error: 'GetFlatBufferNormalizationAlgorithmChannel' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    30 | armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(
[  334s]       |                                                ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:165:48: note: return value type mismatch
[  334s]   165 | armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(
[  334s]       |                                                ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:1089:6: note: type 'NormalizationAlgorithmChannel' itself violates the C++ One Definition Rule
[  334s]  1089 | enum NormalizationAlgorithmChannel : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:1092:6: note: the incompatible type is defined here
[  334s]  1092 | enum NormalizationAlgorithmChannel {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:165:48: note: 'GetFlatBufferNormalizationAlgorithmChannel' was previously declared here
[  334s]   165 | armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(
[  334s]       |                                                ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:33:47: error: 'GetFlatBufferNormalizationAlgorithmMethod' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    33 | armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(
[  334s]       |                                               ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:179:47: note: return value type mismatch
[  334s]   179 | armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(
[  334s]       |                                               ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:1119:6: note: type 'NormalizationAlgorithmMethod' itself violates the C++ One Definition Rule
[  334s]  1119 | enum NormalizationAlgorithmMethod : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:1122:6: note: the incompatible type is defined here
[  334s]  1122 | enum NormalizationAlgorithmMethod {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:179:47: note: 'GetFlatBufferNormalizationAlgorithmMethod' was previously declared here
[  334s]   179 | armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(
[  334s]       |                                               ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:23:35: error: 'GetFlatBufferPoolingAlgorithm' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    23 | armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm);
[  334s]       |                                   ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:127:35: note: return value type mismatch
[  334s]   127 | armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
[  334s]       |                                   ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:996:6: note: type 'PoolingAlgorithm' itself violates the C++ One Definition Rule
[  334s]   996 | enum PoolingAlgorithm : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:999:6: note: the incompatible type is defined here
[  334s]   999 | enum PoolingAlgorithm {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:127:35: note: 'GetFlatBufferPoolingAlgorithm' was previously declared here
[  334s]   127 | armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
[  334s]       |                                   ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:25:38: error: 'GetFlatBufferOutputShapeRounding' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    25 | armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(
[  334s]       |                                      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:141:38: note: return value type mismatch
[  334s]   141 | armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
[  334s]       |                                      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:1029:6: note: type 'OutputShapeRounding' itself violates the C++ One Definition Rule
[  334s]  1029 | enum OutputShapeRounding : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:1032:6: note: the incompatible type is defined here
[  334s]  1032 | enum OutputShapeRounding {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:141:38: note: 'GetFlatBufferOutputShapeRounding' was previously declared here
[  334s]   141 | armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
[  334s]       |                                      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:28:32: error: 'GetFlatBufferPaddingMethod' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    28 | armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod);
[  334s]       |                                ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:153:32: note: return value type mismatch
[  334s]   153 | armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
[  334s]       |                                ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:1059:6: note: type 'PaddingMethod' itself violates the C++ One Definition Rule
[  334s]  1059 | enum PaddingMethod : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:1062:6: note: the incompatible type is defined here
[  334s]  1062 | enum PaddingMethod {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:153:32: note: 'GetFlatBufferPaddingMethod' was previously declared here
[  334s]   153 | armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
[  334s]       |                                ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:36:31: error: 'GetFlatBufferResizeMethod' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    36 | armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method);
[  334s]       |                               ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:193:31: note: return value type mismatch
[  334s]   193 | armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method)
[  334s]       |                               ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:580:6: note: type 'ResizeMethod' itself violates the C++ One Definition Rule
[  334s]   580 | enum ResizeMethod : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:583:6: note: the incompatible type is defined here
[  334s]   583 | enum ResizeMethod {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:193:31: note: 'GetFlatBufferResizeMethod' was previously declared here
[  334s]   193 | armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method)
[  334s]       |                               ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:41:34: error: 'GetFlatBufferReduceOperation' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    41 | armnnSerializer::ReduceOperation GetFlatBufferReduceOperation(armnn::ReduceOperation reduceOperation);
[  334s]       |                                  ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:206:34: note: return value type mismatch
[  334s]   206 | armnnSerializer::ReduceOperation GetFlatBufferReduceOperation(armnn::ReduceOperation reduceOperation)
[  334s]       |                                  ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:544:6: note: type 'ReduceOperation' itself violates the C++ One Definition Rule
[  334s]   544 | enum ReduceOperation : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:547:6: note: the incompatible type is defined here
[  334s]   547 | enum ReduceOperation {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:206:34: note: 'GetFlatBufferReduceOperation' was previously declared here
[  334s]   206 | armnnSerializer::ReduceOperation GetFlatBufferReduceOperation(armnn::ReduceOperation reduceOperation)
[  334s]       |                                  ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:38:41: error: 'GetFlatBufferLogicalBinaryOperation' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    38 | armnnSerializer::LogicalBinaryOperation GetFlatBufferLogicalBinaryOperation(
[  334s]       |                                         ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:31:41: note: return value type mismatch
[  334s]    31 | armnnSerializer::LogicalBinaryOperation GetFlatBufferLogicalBinaryOperation(
[  334s]       |                                         ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:966:6: note: type 'LogicalBinaryOperation' itself violates the C++ One Definition Rule
[  334s]   966 | enum LogicalBinaryOperation : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:969:6: note: the incompatible type is defined here
[  334s]   969 | enum LogicalBinaryOperation {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:31:41: note: 'GetFlatBufferLogicalBinaryOperation' was previously declared here
[  334s]    31 | armnnSerializer::LogicalBinaryOperation GetFlatBufferLogicalBinaryOperation(
[  334s]       |                                         ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:21:33: error: 'GetFlatBufferUnaryOperation' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    21 | armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation unaryOperation);
[  334s]       |                                 ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:106:33: note: return value type mismatch
[  334s]   106 | armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation comparisonOperation)
[  334s]       |                                 ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:924:6: note: type 'UnaryOperation' itself violates the C++ One Definition Rule
[  334s]   924 | enum UnaryOperation : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:927:6: note: the incompatible type is defined here
[  334s]   927 | enum UnaryOperation {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:106:33: note: 'GetFlatBufferUnaryOperation' was previously declared here
[  334s]   106 | armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation comparisonOperation)
[  334s]       |                                 ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:13:38: error: 'GetFlatBufferComparisonOperation' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    13 | armnnSerializer::ComparisonOperation GetFlatBufferComparisonOperation(armnn::ComparisonOperation comparisonOperation);
[  334s]       |                                      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:11:38: note: return value type mismatch
[  334s]    11 | armnnSerializer::ComparisonOperation GetFlatBufferComparisonOperation(armnn::ComparisonOperation comparisonOperation)
[  334s]       |                                      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:882:6: note: type 'ComparisonOperation' itself violates the C++ One Definition Rule
[  334s]   882 | enum ComparisonOperation : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:885:6: note: the incompatible type is defined here
[  334s]   885 | enum ComparisonOperation {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:11:38: note: 'GetFlatBufferComparisonOperation' was previously declared here
[  334s]    11 | armnnSerializer::ComparisonOperation GetFlatBufferComparisonOperation(armnn::ComparisonOperation comparisonOperation)
[  334s]       |                                      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:19:29: error: 'GetFlatBufferDataLayout' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    19 | armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout);
[  334s]       |                             ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:94:29: note: return value type mismatch
[  334s]    94 | armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
[  334s]       |                             ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:514:6: note: type 'DataLayout' itself violates the C++ One Definition Rule
[  334s]   514 | enum DataLayout : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:517:6: note: the incompatible type is defined here
[  334s]   517 | enum DataLayout {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:94:29: note: 'GetFlatBufferDataLayout' was previously declared here
[  334s]    94 | armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
[  334s]       |                             ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.hpp:17:27: error: 'GetFlatBufferDataType' violates the C++ One Definition Rule [-Werror=odr]
[  334s]    17 | armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType);
[  334s]       |                           ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:67:27: note: return value type mismatch
[  334s]    67 | armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
[  334s]       |                           ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/build/src/armnnSerializer/ArmnnSchema_generated.h:457:6: note: type 'DataType' itself violates the C++ One Definition Rule
[  334s]   457 | enum DataType : int8_t {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/ArmnnSchema_generated.h:460:6: note: the incompatible type is defined here
[  334s]   460 | enum DataType {
[  334s]       |      ^
[  334s] /home/abuild/rpmbuild/BUILD/armnn-21.05/src/armnnSerializer/SerializerUtils.cpp:67:27: note: 'GetFlatBufferDataType' was previously declared here
[  334s]    67 | armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
[  334s]       |                           ^
[  334s] lto1: all warnings being treated as errors
[  334s] lto-wrapper: fatal error: /usr/bin/c++ returned 1 exit status
[  334s] compilation terminated.
[  334s] /usr/lib64/gcc/aarch64-suse-linux/10/../../../../aarch64-suse-linux/bin/ld: error: lto-wrapper failed
[  334s] collect2: error: ld returned 1 exit status
[  334s] make[2]: *** [src/armnnSerializer/CMakeFiles/armnnSerializer.dir/build.make:145: libarmnnSerializer.so.25.0] Error 1
[  334s] make[2]: Leaving directory '/home/abuild/rpmbuild/BUILD/armnn-21.05/build'
[  334s] make[1]: *** [CMakeFiles/Makefile2:826: src/armnnSerializer/CMakeFiles/armnnSerializer.dir/all] Error 2
[  334s] make[1]: *** Waiting for unfinished jobs....

ggardet avatar May 26 '21 14:05 ggardet

Hi @ggardet

sorry for the late reply, is this issue still present?

Kind Regards

TeresaARM avatar Mar 15 '22 10:03 TeresaARM

I currently build 22.02 which breaks differently, see: https://github.com/ARM-software/armnn/issues/623

ggardet avatar Mar 16 '22 09:03 ggardet

Closing as there is another issue now open as mentioned by @ggardet

keidav01 avatar Oct 05 '22 12:10 keidav01