From 8b81195919eaab90a803fabae57ca05136e9430e Mon Sep 17 00:00:00 2001 From: Anthony Barbier Date: Wed, 28 Feb 2018 13:47:58 +0000 Subject: COMPMID-978 Load/Store tuning data from file (Part2) Change-Id: I1819f42c0e456673543b267d51f730b6e80a0ad9 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/122629 Reviewed-by: Robert Hughes Tested-by: Jenkins Reviewed-by: Georgios Pinitas --- src/graph/Graph.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'src/graph') diff --git a/src/graph/Graph.cpp b/src/graph/Graph.cpp index b1698e4672..2fe3a90aef 100644 --- a/src/graph/Graph.cpp +++ b/src/graph/Graph.cpp @@ -33,8 +33,19 @@ #include "arm_compute/runtime/Tensor.h" #include "support/ToolchainSupport.h" +#include + using namespace arm_compute::graph; +namespace +{ +bool file_exists(const std::string &filename) +{ + std::ifstream file(filename); + return file.good(); +} + +} // namespace struct Stage { ITensorObject *_input; @@ -62,16 +73,20 @@ public: std::unique_ptr _current_node{ nullptr }; ITensorObject *_current_output{ nullptr }; bool _info_enabled{ false }; - CLFileTuner _tuner{}; + CLTuner _tuner{}; private: ITensorObject *_current_input{ nullptr }; GraphHints _previous_hints{}; }; +static const std::string tuner_data_filename = "acl_tuner.csv"; Graph::~Graph() //NOLINT { - //Can't use =default because the destructor must be defined after Graph::Private's definition + if(_pimpl->_tuner.tune_new_kernels() && !_pimpl->_tuner.lws_table().empty()) + { + _pimpl->_tuner.save_to_file(tuner_data_filename); + } } Graph::Graph() @@ -85,12 +100,14 @@ void Graph::graph_init(const bool use_cl_tuner) // Check if OpenCL is available and initialize the scheduler if(opencl_is_available()) { + if(_pimpl->_tuner.lws_table().empty() && file_exists(tuner_data_filename)) + { + _pimpl->_tuner.load_from_file(tuner_data_filename); + } _pimpl->_tuner.set_tune_new_kernels(use_cl_tuner); - _pimpl->_tuner.set_update_file(use_cl_tuner); arm_compute::CLScheduler::get().default_init(&_pimpl->_tuner); } } - void Graph::run() { while(true) -- cgit v1.2.1