diff options
author | Anthony Barbier <anthony.barbier@arm.com> | 2018-04-20 15:46:21 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:49:54 +0000 |
commit | 9fb0cac961f70d1937c5fa3eafeaee1385c89768 (patch) | |
tree | 9a8847053f65631e050c231645549adb48c92fb8 /tests/benchmark_examples/RunExample.cpp | |
parent | fda901f0485371e8b6a807c8dd9614560a924793 (diff) | |
download | ComputeLibrary-9fb0cac961f70d1937c5fa3eafeaee1385c89768.tar.gz |
COMPMID-1081: Introduced test-wide instruments
Change-Id: I5831241f3fc503717cc51136453c2bf96d4b420b
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/128484
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'tests/benchmark_examples/RunExample.cpp')
-rw-r--r-- | tests/benchmark_examples/RunExample.cpp | 48 |
1 files changed, 17 insertions, 31 deletions
diff --git a/tests/benchmark_examples/RunExample.cpp b/tests/benchmark_examples/RunExample.cpp index 656a06a099..f6a9742048 100644 --- a/tests/benchmark_examples/RunExample.cpp +++ b/tests/benchmark_examples/RunExample.cpp @@ -50,11 +50,17 @@ namespace arm_compute { namespace utils { -static Example *g_example = nullptr; +static std::unique_ptr<Example> g_example = nullptr; +static std::vector<char *> g_example_argv = {}; class ExampleTest : public arm_compute::test::framework::TestCase { public: ExampleTest() = default; + void do_setup() override + { + ARM_COMPUTE_ERROR_ON_NULLPTR(g_example.get()); + g_example->do_setup(g_example_argv.size(), &g_example_argv[0]); + } void do_run() override { g_example->do_run(); @@ -62,10 +68,11 @@ public: void do_teardown() override { g_example->do_teardown(); + g_example = nullptr; } }; -int run_example(int argc, char **argv, Example &example) +int run_example(int argc, char **argv, std::unique_ptr<Example> example) { framework::CommandLineParser parser; framework::CommonOptions options(parser); @@ -82,42 +89,17 @@ int run_example(int argc, char **argv, Example &example) } std::vector<std::unique_ptr<framework::Printer>> printers = options.create_printers(); - g_example = &example; - std::vector<char *> example_argv = {}; - example_argv.clear(); - example_argv.emplace_back(argv[0]); + g_example = std::move(example); + g_example_argv.clear(); + g_example_argv.emplace_back(argv[0]); for(auto &arg : example_args->value()) { - example_argv.emplace_back(const_cast<char *>(arg.c_str())); // NOLINT + g_example_argv.emplace_back(const_cast<char *>(arg.c_str())); // NOLINT } // Set number of threads in Scheduler Scheduler::get().set_num_threads(options.threads->value()); - // We need to do the setup here because framework.init() will need CL / GLES to be initialised - try - { - example.do_setup(example_argv.size(), &example_argv[0]); - } -#ifdef ARM_COMPUTE_CL - catch(cl::Error &err) - { - std::cerr << "!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cerr << std::endl - << "ERROR " << err.what() << "(" << err.err() << ")" << std::endl; - std::cerr << "!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return 1; - } -#endif /* ARM_COMPUTE_CL */ - catch(std::runtime_error &err) - { - std::cerr << "!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cerr << std::endl - << "ERROR " << err.what() << " " << (errno ? strerror(errno) : "") << std::endl; - std::cerr << "!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return 1; - } - if(options.log_level->value() > framework::LogLevel::NONE) { for(auto &p : printers) @@ -134,6 +116,10 @@ int run_example(int argc, char **argv, Example &example) #ifdef ARM_COMPUTE_CL if(opencl_is_available()) { + if(!CLScheduler::get().is_initialised()) + { + CLScheduler::get().default_init(); + } p->print_entry("CL_DEVICE_VERSION", CLKernelLibrary::get().get_device_version()); } else |