aboutsummaryrefslogtreecommitdiff
path: root/tests/benchmark_examples
diff options
context:
space:
mode:
authorAnthony Barbier <anthony.barbier@arm.com>2018-04-20 15:46:21 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:49:54 +0000
commit9fb0cac961f70d1937c5fa3eafeaee1385c89768 (patch)
tree9a8847053f65631e050c231645549adb48c92fb8 /tests/benchmark_examples
parentfda901f0485371e8b6a807c8dd9614560a924793 (diff)
downloadComputeLibrary-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')
-rw-r--r--tests/benchmark_examples/RunExample.cpp48
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