10 #include <boost/test/unit_test.hpp> 11 #include <boost/test/tools/output_test_stream.hpp> 26 return static_cast<size_t>(-1);
29 return profiler->m_EventSequence.size();
36 void RegisterUnregisterProfilerSingleThreadImpl(
bool &res)
48 std::unique_ptr<armnn::Profiler> profiler = std::make_unique<armnn::Profiler>();
52 res &= profiler.get() == profilerManager.
GetProfiler();
69 std::unique_ptr<armnn::Profiler> profiler = std::make_unique<armnn::Profiler>();
72 BOOST_TEST(!profiler->IsProfilingEnabled());
75 profiler->EnableProfiling(
true);
78 BOOST_TEST(profiler->IsProfilingEnabled());
81 profiler->EnableProfiling(
false);
84 BOOST_TEST(!profiler->IsProfilingEnabled());
90 RegisterUnregisterProfilerSingleThreadImpl(res);
96 bool res[3] = {
false,
false,
false};
97 std::thread thread1([&res]() { RegisterUnregisterProfilerSingleThreadImpl(res[0]); });
98 std::thread thread2([&res]() { RegisterUnregisterProfilerSingleThreadImpl(res[1]); });
99 std::thread thread3([&res]() { RegisterUnregisterProfilerSingleThreadImpl(res[2]); });
105 for (
int i = 0 ; i < 3 ; i++)
129 std::unique_ptr<armnn::Profiler> profiler = std::make_unique<armnn::Profiler>();
142 BOOST_TEST(eventSequenceSizeBefore == eventSequenceSizeAfter);
146 profiler->EnableProfiling(
true);
158 BOOST_TEST(eventSequenceSizeAfter == eventSequenceSizeBefore + 1);
162 profiler->EnableProfiling(
false);
165 #if defined(ARMNNREF_ENABLED) 182 mockNetwork->AddInputLayer(0,
"test layer");
184 runtime->LoadNetwork(networkIdentifier,
armnn::Optimize(*mockNetwork, backends, runtime->GetDeviceSpec()));
190 runtime->UnloadNetwork(networkIdentifier);
204 std::unique_ptr<armnn::Profiler> profiler = std::make_unique<armnn::Profiler>();
208 profiler->EnableProfiling(
true);
221 std::this_thread::sleep_for(std::chrono::milliseconds(10));
226 BOOST_TEST(eventSequenceSizeAfter == eventSequenceSizeBefore + 1);
228 boost::test_tools::output_test_stream output;
229 profiler->AnalyzeEventsAndWriteResults(output);
230 BOOST_TEST(!output.is_empty(
false));
233 BOOST_CHECK(output.str().find(
"test") != std::string::npos);
236 BOOST_CHECK(output.str().find(
"Event Sequence - Name") != std::string::npos);
237 BOOST_CHECK(output.str().find(
"Event Stats - Name") != std::string::npos);
238 BOOST_CHECK(output.str().find(
"Total") != std::string::npos);
239 BOOST_CHECK(output.str().find(
"Device") != std::string::npos);
241 BOOST_CHECK(output.str().find(
"CpuAcc") != std::string::npos);
243 BOOST_CHECK(output.str().find(
"e+") == std::string::npos);
245 BOOST_CHECK(output.str().find(
"+") == std::string::npos);
247 BOOST_CHECK(output.str().find(
" 0 ") == std::string::npos);
251 profiler->EnableProfiling(
false);
259 virtual ~TestInstrument() {}
260 void Start()
override {}
261 void Stop()
override {}
263 std::vector<armnn::Measurement> GetMeasurements()
const override 265 std::vector<armnn::Measurement> measurements;
268 armnn::Measurement::Unit::TIME_MS));
271 armnn::Measurement::Unit::TIME_US));
275 const char* GetName()
const override 277 return "TestInstrument";
285 std::unique_ptr<armnn::Profiler> profiler = std::make_unique<armnn::Profiler>();
288 profiler->EnableProfiling(
true);
309 std::stringbuf buffer;
310 std::ostream json(&buffer);
311 profiler->Print(json);
313 std::string output = buffer.str();
317 profiler->EnableProfiling(
false);
321 std::string blessedOutput(
"{\n\t\"ArmNN\": {\n\t\t\"inference_measurements_#1\": {\n\t\t\t\"type\": \"" 322 "Event\",\n\t\t\t\"Measurement1_#1\": {\n\t\t\t\t\"type\": \"" 323 "Measurement\",\n\t\t\t\t\"raw\": [\n\t\t\t\t\t1.000000\n\t\t\t\t],\n\t\t\t\t\"" 324 "unit\": \"ms\"\n\t\t\t},\n\t\t\t\"Measurement2_#1\": {\n\t\t\t\t\"type\": \"" 325 "Measurement\",\n\t\t\t\t\"raw\": [\n\t\t\t\t\t2.000000\n\t\t\t\t],\n\t\t\t\t\"" 326 "unit\": \"us\"\n\t\t\t},\n\t\t\t\"Level 0_#2\": {\n\t\t\t\t\"type\": \"" 327 "Event\",\n\t\t\t\t\"Measurement1_#2\": {\n\t\t\t\t\t\"type\": \"" 328 "Measurement\",\n\t\t\t\t\t\"raw\": [\n\t\t\t\t\t\t1.000000\n\t\t\t\t\t],\n\t\t\t\t\t\"" 329 "unit\": \"ms\"\n\t\t\t\t},\n\t\t\t\t\"Measurement2_#2\": {\n\t\t\t\t\t\"type\": \"" 330 "Measurement\",\n\t\t\t\t\t\"raw\": [\n\t\t\t\t\t\t2.000000\n\t\t\t\t\t],\n\t\t\t\t\t\"" 331 "unit\": \"us\"\n\t\t\t\t},\n\t\t\t\t\"Level 1A_#3\": {\n\t\t\t\t\t\"type\": \"" 332 "Event\",\n\t\t\t\t\t\"Measurement1_#3\": {\n\t\t\t\t\t\t\"type\": \"" 333 "Measurement\",\n\t\t\t\t\t\t\"raw\": [\n\t\t\t\t\t\t\t" 334 "1.000000\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"" 335 "unit\": \"ms\"\n\t\t\t\t\t},\n\t\t\t\t\t\"Measurement2_#3\": {\n\t\t\t\t\t\t\"type\": \"" 336 "Measurement\",\n\t\t\t\t\t\t\"raw\": [\n\t\t\t\t\t\t\t" 337 "2.000000\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"" 338 "unit\": \"us\"\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"Level 1B_#4\": {\n\t\t\t\t\t\"" 339 "type\": \"Event\",\n\t\t\t\t\t\"Measurement1_#4\": {\n\t\t\t\t\t\t\"type\": \"" 340 "Measurement\",\n\t\t\t\t\t\t\"raw\": [\n\t\t\t\t\t\t\t" 341 "1.000000\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"" 342 "unit\": \"ms\"\n\t\t\t\t\t},\n\t\t\t\t\t\"Measurement2_#4\": {\n\t\t\t\t\t\t\"" 343 "type\": \"Measurement\",\n\t\t\t\t\t\t\"raw\": [\n\t\t\t\t\t\t\t" 344 "2.000000\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"" 345 "unit\": \"us\"\n\t\t\t\t\t},\n\t\t\t\t\t\"Level 2A_#5\": {\n\t\t\t\t\t\t\"" 346 "type\": \"Event\",\n\t\t\t\t\t\t\"Measurement1_#5\": {\n\t\t\t\t\t\t\t\"type\": \"" 347 "Measurement\",\n\t\t\t\t\t\t\t\"raw\": [\n\t\t\t\t\t\t\t\t" 348 "1.000000\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"" 349 "unit\": \"ms\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"Measurement2_#5\": {\n\t\t\t\t\t\t\t\"" 350 "type\": \"Measurement\",\n\t\t\t\t\t\t\t\"raw\": [\n\t\t\t\t\t\t\t\t" 351 "2.000000\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"" 352 "unit\": \"us\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n");
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
size_t GetProfilerEventSequenceSize(armnn::Profiler *profiler)
static IRuntimePtr Create(const CreationOptions &options)
CPU Execution: Reference C++ kernels.
void RegisterProfiler(Profiler *profiler)
static ProfilerManager & GetInstance()
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
Copyright (c) 2020 ARM Limited.
void IgnoreUnused(Ts &&...)
BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)
#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)
#define ARMNN_SCOPED_PROFILING_EVENT_WITH_INSTRUMENTS(backendId,...)
IOptimizedNetworkPtr Optimize(const INetwork &network, const std::vector< BackendId > &backendPreferences, const IDeviceSpec &deviceSpec, const OptimizerOptions &options=OptimizerOptions(), Optional< std::vector< std::string > &> messages=EmptyOptional())
Create an optimized version of the network.
BOOST_AUTO_TEST_CASE(CheckConvolution2dLayer)
BOOST_AUTO_TEST_SUITE_END()
CPU Execution: NEON: ArmCompute.
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
armnn::Runtime::CreationOptions::ExternalProfilingOptions options
static INetworkPtr Create()