diff options
author | openvino-pushbot <openvino_pushbot@intel.com> | 2018-10-16 13:45:03 +0300 |
---|---|---|
committer | openvino-pushbot <openvino_pushbot@intel.com> | 2018-10-16 13:45:03 +0300 |
commit | 866530fb047cd17af6bd2dbbde5f5cb35f876840 (patch) | |
tree | 91451785d290a2481d82ed8dfe175aade3a0f727 /inference-engine/thirdparty/clDNN/src/include/event_impl.h | |
parent | c37d4661a27afb408a45f7752acea968032afcc0 (diff) | |
download | dldt-866530fb047cd17af6bd2dbbde5f5cb35f876840.tar.gz dldt-866530fb047cd17af6bd2dbbde5f5cb35f876840.tar.bz2 dldt-866530fb047cd17af6bd2dbbde5f5cb35f876840.zip |
Publishing R3
Diffstat (limited to 'inference-engine/thirdparty/clDNN/src/include/event_impl.h')
-rw-r--r-- | inference-engine/thirdparty/clDNN/src/include/event_impl.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/inference-engine/thirdparty/clDNN/src/include/event_impl.h b/inference-engine/thirdparty/clDNN/src/include/event_impl.h new file mode 100644 index 000000000..a8adc745f --- /dev/null +++ b/inference-engine/thirdparty/clDNN/src/include/event_impl.h @@ -0,0 +1,85 @@ +/* +// Copyright (c) 2016 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +*/ + +/////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma once +#include "api_impl.h" +#include "refcounted_obj.h" + +#include <list> +#include <mutex> + +namespace cldnn +{ +struct user_event; + +struct event_impl : public refcounted_obj<event_impl> +{ +public: + event_impl() = default; + + void wait(); + bool is_set(); + + //returns true if handler has been successfully added + bool add_event_handler(cldnn_event_handler handler, void* data); + + const std::list<cldnn_profiling_interval>& get_profiling_info(); + +private: + std::mutex _handlers_mutex; + std::list<std::pair<cldnn_event_handler, void*>> _handlers; + + bool _profiling_captured = false; + std::list<cldnn_profiling_interval> _profiling_info; + +protected: + bool _set = false; + + void call_handlers(); + + virtual void wait_impl() = 0; + virtual bool is_set_impl() = 0; + virtual bool add_event_handler_impl(cldnn_event_handler, void*) { return true; } + + //returns whether profiling info has been captures successfully and there's no need to call this impl a second time when user requests to get profling info + virtual bool get_profiling_info_impl(std::list<cldnn_profiling_interval>&) { return true; }; +}; + +struct user_event : virtual public event_impl +{ +public: + user_event(bool set = false) + { + _set = set; + } + + void set() + { + if (_set) + return; + _set = true; + set_impl(); + call_handlers(); + } + +private: + virtual void set_impl() = 0; +}; + +} + +API_CAST(::cldnn_event, cldnn::event_impl) |