8 #include <common/include/LabelsAndEventClasses.hpp> 13 #include <doctest/doctest.h> 14 #include <fmt/format.h> 23 ProfilingGuid guid0(0);
24 ProfilingGuid guid1(1);
25 ProfilingGuid guid2(1);
27 CHECK(guid0 != guid1);
28 CHECK(guid1 == guid2);
30 CHECK(guid0 <= guid1);
31 CHECK(guid1 <= guid2);
33 CHECK(guid1 >= guid0);
34 CHECK(guid1 >= guid2);
37 TEST_CASE(
"StaticGuidTest")
39 ProfilingStaticGuid guid0(0);
40 ProfilingStaticGuid guid1(1);
41 ProfilingStaticGuid guid2(1);
43 CHECK(guid0 != guid1);
44 CHECK(guid1 == guid2);
46 CHECK(guid0 <= guid1);
47 CHECK(guid1 <= guid2);
49 CHECK(guid1 >= guid0);
50 CHECK(guid1 >= guid2);
53 TEST_CASE(
"DynamicGuidTest")
55 ProfilingDynamicGuid guid0(0);
56 ProfilingDynamicGuid guid1(1);
57 ProfilingDynamicGuid guid2(1);
59 CHECK(guid0 != guid1);
60 CHECK(guid1 == guid2);
62 CHECK(guid0 <= guid1);
63 CHECK(guid1 <= guid2);
65 CHECK(guid1 >= guid0);
66 CHECK(guid1 >= guid2);
69 void CheckStaticGuid(uint64_t guid, uint64_t expectedGuid)
71 CHECK(guid == expectedGuid);
72 CHECK(guid >= MIN_STATIC_GUID);
75 void CheckDynamicGuid(uint64_t guid, uint64_t expectedGuid)
77 CHECK(guid == expectedGuid);
78 CHECK(guid < MIN_STATIC_GUID);
81 TEST_CASE(
"StaticGuidGeneratorCollisionTest")
83 ProfilingGuidGenerator generator;
84 std::set<uint64_t> guids;
85 for (
int i = 0; i < 100000; ++i )
89 std::string str = ss.str();
90 ProfilingStaticGuid guid = generator.GenerateStaticId(str.c_str());
91 if (guids.find(guid) != guids.end())
96 if (guid == ProfilingGuid(armnn::profiling::MIN_STATIC_GUID))
98 WARN(
"MIN_STATIC_GUID returned more than once from GenerateStaticId.");
102 FAIL(fmt::format(
"GUID collision occurred: {} -> {}", str, guid));
110 TEST_CASE(
"StaticGuidGeneratorTest")
112 ProfilingGuidGenerator generator;
114 ProfilingStaticGuid staticGuid0 = generator.GenerateStaticId(
"name");
115 CheckStaticGuid(staticGuid0, LabelsAndEventClasses::NAME_GUID);
116 CHECK(staticGuid0 != generator.GenerateStaticId(
"Name"));
118 ProfilingStaticGuid staticGuid1 = generator.GenerateStaticId(
"type");
119 CheckStaticGuid(staticGuid1, LabelsAndEventClasses::TYPE_GUID);
120 CHECK(staticGuid1 != generator.GenerateStaticId(
"Type"));
122 ProfilingStaticGuid staticGuid2 = generator.GenerateStaticId(
"index");
123 CheckStaticGuid(staticGuid2, LabelsAndEventClasses::INDEX_GUID);
124 CHECK(staticGuid2 != generator.GenerateStaticId(
"Index"));
127 TEST_CASE(
"DynamicGuidGeneratorTest")
129 ProfilingGuidGenerator generator;
131 for (
unsigned int i = 0; i < 100; ++i)
133 ProfilingDynamicGuid guid = generator.NextGuid();
134 CheckDynamicGuid(guid, i);
138 void GenerateProfilingGUID(ProfilingGuidGenerator& guidGenerator)
140 for (
int i = 0; i < 1000; ++i)
142 guidGenerator.NextGuid();
146 TEST_CASE(
"ProfilingGuidThreadTest")
148 ProfilingGuidGenerator profilingGuidGenerator;
149 std::vector<std::thread> threads;
150 for (
unsigned int i = 0; i < 3; ++i)
152 threads.push_back(std::thread(GenerateProfilingGUID, std::ref(profilingGuidGenerator)));
154 std::for_each(threads.begin(), threads.end(), [](std::thread& theThread)
159 uint64_t guid = profilingGuidGenerator.NextGuid();
160 CHECK(guid == 3000u);
TEST_SUITE("TestConstTensorLayerVisitor")