Enabled code-style for OpenVINO folder (#3385)

This commit is contained in:
Ilya Lavrenov 2020-11-27 06:21:30 +03:00 committed by GitHub
parent 19ab50a4f6
commit b1e99ba699
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 254 additions and 251 deletions

View File

@ -89,11 +89,6 @@ endfunction()
# they must be built even if samples build is disabled (required for tests and tools). # they must be built even if samples build is disabled (required for tests and tools).
ie_build_samples() ie_build_samples()
file(GLOB_RECURSE SAMPLES_SOURCES samples/*.cpp samples/*.hpp samples/*.h)
add_cpplint_target(sample_cpplint
FOR_SOURCES ${SAMPLES_SOURCES}
EXCLUDE_PATTERNS "thirdparty/*" "pugixml/*")
if (ENABLE_PYTHON) if (ENABLE_PYTHON)
add_subdirectory(ie_bridges/python) add_subdirectory(ie_bridges/python)
endif() endif()

View File

@ -44,3 +44,6 @@ elseif(SELECTIVE_BUILD STREQUAL "ON")
ov_force_include(${TARGET_NAME} INTERFACE ${GENERATED_HEADER}) ov_force_include(${TARGET_NAME} INTERFACE ${GENERATED_HEADER})
endif() endif()
file(GLOB_RECURSE hdrs "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
add_cpplint_target(${TARGET_NAME}_cpplint FOR_SOURCES ${hdrs})

View File

@ -21,124 +21,127 @@
#include <type_traits> #include <type_traits>
#include <unordered_map> #include <unordered_map>
namespace openvino namespace openvino {
{ namespace cc {
namespace cc
{
template<typename Key, typename T>
class Factory;
template<typename Key, typename T, typename ...Args> template<typename Key, typename T>
class Factory<Key, T(Args...)> { class Factory;
Factory(Factory const&) = delete;
Factory& operator=(Factory const&) = delete;
public: template<typename Key, typename T, typename ...Args>
using builder_t = std::function<T(Args...)>; class Factory<Key, T(Args...)> {
Factory(Factory const&) = delete;
Factory& operator=(Factory const&) = delete;
Factory(const std::string & name) public:
: name(name) {} using builder_t = std::function<T(Args...)>;
#ifdef SELECTIVE_BUILD Factory(const std::string & name)
#define registerNodeIfRequired(Module, Name, key, Impl) \ : name(name) {}
OV_CC_EXPAND(OV_CC_CAT(registerImpl, OV_CC_SCOPE_IS_ENABLED(OV_CC_CAT3(Module, _, Name)))<Impl>(key))
#define createNodeIfRegistered(Module, key, ...) createImpl(key, __VA_ARGS__)
template<typename Impl> #ifdef SELECTIVE_BUILD
void registerImpl0(const Key &) { #define registerNodeIfRequired(Module, Name, key, Impl) \
} OV_CC_EXPAND(OV_CC_CAT(registerImpl, OV_CC_SCOPE_IS_ENABLED(OV_CC_CAT3(Module, _, Name)))<Impl>(key))
#define createNodeIfRegistered(Module, key, ...) createImpl(key, __VA_ARGS__)
template<typename Impl> template<typename Impl>
void registerImpl1(const Key & key) { void registerImpl0(const Key &) {
builders[key] = [](Args... args) -> T { }
Impl *impl = new Impl(args...);
return static_cast<T>(impl);
};
}
T createImpl(const Key & key, Args... args) { template<typename Impl>
auto builder = builders.find(key); void registerImpl1(const Key & key) {
if (builder != builders.end()) { builders[key] = [](Args... args) -> T {
return builder->second(args...); Impl *impl = new Impl(args...);
} return static_cast<T>(impl);
return nullptr;
}
#elif defined(SELECTIVE_BUILD_ANALYZER)
#define registerNodeIfRequired(Module, Name, key, Impl) registerImpl<OV_CC_CAT(FACTORY_, Module), Impl>(key, OV_CC_TOSTRING(Name))
#define createNodeIfRegistered(Module, key, ...) createImpl<OV_CC_CAT(FACTORY_, Module)>(key, __VA_ARGS__)
template<openvino::itt::domain_t(*domain)(), typename Impl>
void registerImpl(const Key & key, const char *typeName) {
const std::string task_name = "REG$" + name + "$" + to_string(key) + "$" + typeName;
openvino::itt::ScopedTask<domain> task(openvino::itt::handle(task_name));
builders[key] = [](Args... args) -> T {
Impl *impl = new Impl(args...);
return static_cast<T>(impl);
};
}
template<openvino::itt::domain_t(*domain)()>
T createImpl(const Key & key, Args... args) {
auto builder = builders.find(key);
if (builder != builders.end()) {
const std::string task_name = "CREATE$" + name + "$" + to_string(key);
openvino::itt::ScopedTask<domain> task(openvino::itt::handle(task_name));
return builder->second(args...);
}
return nullptr;
}
#else
#define registerNodeIfRequired(Module, Name, key, Impl) registerImpl<Impl>(key)
#define createNodeIfRegistered(Module, key, ...) createImpl(key, __VA_ARGS__)
template<typename Impl>
void registerImpl(const Key & key) {
builders[key] = [](Args... args) -> T {
Impl *impl = new Impl(args...);
return static_cast<T>(impl);
};
}
T createImpl(const Key & key, Args... args) {
auto builder = builders.find(key);
if (builder != builders.end()) {
return builder->second(args...);
}
return nullptr;
}
#endif
template<typename Fn>
void foreach(Fn fn) const {
for (auto itm : builders)
fn(itm);
}
size_t size() const noexcept {
return builders.size();
}
private:
const std::string & to_string(const std::string & str) const noexcept {
return str;
}
template<typename V,
typename std::enable_if<std::is_enum<V>::value, bool>::type = true>
std::string to_string(V val) const {
return std::to_string(static_cast<int>(val));
}
template<typename V,
typename std::enable_if<!std::is_enum<V>::value, bool>::type = true>
std::string to_string(V val) const {
return std::to_string(val);
}
using map_t = std::unordered_map<Key, builder_t>;
const std::string name;
map_t builders;
}; };
} }
}
T createImpl(const Key & key, Args... args) {
auto builder = builders.find(key);
if (builder != builders.end()) {
return builder->second(args...);
}
return nullptr;
}
#elif defined(SELECTIVE_BUILD_ANALYZER)
#define registerNodeIfRequired(Module, Name, key, Impl) registerImpl<OV_CC_CAT(FACTORY_, Module), Impl>(key, OV_CC_TOSTRING(Name))
#define createNodeIfRegistered(Module, key, ...) createImpl<OV_CC_CAT(FACTORY_, Module)>(key, __VA_ARGS__)
template<openvino::itt::domain_t(*domain)(), typename Impl>
void registerImpl(const Key & key, const char *typeName) {
const std::string task_name = "REG$" + name + "$" + to_string(key) + "$" + typeName;
openvino::itt::ScopedTask<domain> task(openvino::itt::handle(task_name));
builders[key] = [](Args... args) -> T {
Impl *impl = new Impl(args...);
return static_cast<T>(impl);
};
}
template<openvino::itt::domain_t(*domain)()>
T createImpl(const Key & key, Args... args) {
auto builder = builders.find(key);
if (builder != builders.end()) {
const std::string task_name = "CREATE$" + name + "$" + to_string(key);
openvino::itt::ScopedTask<domain> task(openvino::itt::handle(task_name));
return builder->second(args...);
}
return nullptr;
}
#else
#define registerNodeIfRequired(Module, Name, key, Impl) registerImpl<Impl>(key)
#define createNodeIfRegistered(Module, key, ...) createImpl(key, __VA_ARGS__)
template<typename Impl>
void registerImpl(const Key & key) {
builders[key] = [](Args... args) -> T {
Impl *impl = new Impl(args...);
return static_cast<T>(impl);
};
}
T createImpl(const Key & key, Args... args) {
auto builder = builders.find(key);
if (builder != builders.end()) {
return builder->second(args...);
}
return nullptr;
}
#endif
template<typename Fn>
void foreach(Fn fn) const {
for (auto itm : builders)
fn(itm);
}
size_t size() const noexcept {
return builders.size();
}
private:
const std::string & to_string(const std::string & str) const noexcept {
return str;
}
template<typename V,
typename std::enable_if<std::is_enum<V>::value, bool>::type = true>
std::string to_string(V val) const {
return std::to_string(static_cast<int>(val));
}
template<typename V,
typename std::enable_if<!std::is_enum<V>::value, bool>::type = true>
std::string to_string(V val) const {
return std::to_string(val);
}
using map_t = std::unordered_map<Key, builder_t>;
const std::string name;
map_t builders;
};
} // namespace cc
} // namespace openvino

View File

@ -70,50 +70,52 @@
#include <openvino/itt.hpp> #include <openvino/itt.hpp>
#ifdef SELECTIVE_BUILD_ANALYZER #ifdef SELECTIVE_BUILD_ANALYZER
#include <string> # include <string>
#endif #endif
#include <utility> #include <utility>
#include <tuple> #include <tuple>
namespace openvino namespace openvino {
{ namespace cc {
namespace cc
{
#ifndef SELECTIVE_BUILD_ANALYZER #ifndef SELECTIVE_BUILD_ANALYZER
namespace internal
{
template<typename C, typename T>
struct case_wrapper {
using type = T;
const C value {};
case_wrapper(C && val) namespace internal {
: value(std::forward<C>(val))
{}
};
template<typename T, typename C> template<typename C, typename T>
case_wrapper<C, T> make_case_wrapper(C && val) { struct case_wrapper {
return case_wrapper<C, T>(std::forward<C>(val)); using type = T;
} const C value {};
template<template<typename...> class Fn, typename Ctx, typename T, typename Case> case_wrapper(C && val)
bool match(Ctx && ctx, T && val, Case && cs) { : value(std::forward<C>(val))
const bool is_matched = val == cs.value; {}
if (is_matched) };
Fn<typename Case::type>()(std::forward<Ctx>(ctx));
return is_matched;
}
template<template<typename...> class Fn, typename Ctx, typename T, typename Case, typename ...Cases> template<typename T, typename C>
bool match(Ctx && ctx, T && val, Case && cs, Cases&&... cases) { case_wrapper<C, T> make_case_wrapper(C && val) {
if (match<Fn>(std::forward<Ctx>(ctx), std::forward<T>(val), std::forward<Case>(cs))) return case_wrapper<C, T>(std::forward<C>(val));
return true; }
return match<Fn>(std::forward<Ctx>(ctx), std::forward<T>(val), std::forward<Cases>(cases)...);
} template<template<typename...> class Fn, typename Ctx, typename T, typename Case>
} // namespace internal bool match(Ctx && ctx, T && val, Case && cs) {
#endif const bool is_matched = val == cs.value;
if (is_matched)
Fn<typename Case::type>()(std::forward<Ctx>(ctx));
return is_matched;
}
template<template<typename...> class Fn, typename Ctx, typename T, typename Case, typename ...Cases>
bool match(Ctx && ctx, T && val, Case && cs, Cases&&... cases) {
if (match<Fn>(std::forward<Ctx>(ctx), std::forward<T>(val), std::forward<Case>(cs)))
return true;
return match<Fn>(std::forward<Ctx>(ctx), std::forward<T>(val), std::forward<Cases>(cases)...);
}
} // namespace internal
#endif // SELECTIVE_BUILD_ANALYZER
// Macros for names concatenation // Macros for names concatenation
#define OV_CC_CAT_(x, y) x ## y #define OV_CC_CAT_(x, y) x ## y
@ -137,52 +139,53 @@ namespace openvino
OV_ITT_DOMAIN(OV_CC_CAT(SWITCH_, Module)); /* Domain for switch/cases */ \ OV_ITT_DOMAIN(OV_CC_CAT(SWITCH_, Module)); /* Domain for switch/cases */ \
OV_ITT_DOMAIN(OV_CC_CAT(FACTORY_, Module)); /* Domain for factories */ OV_ITT_DOMAIN(OV_CC_CAT(FACTORY_, Module)); /* Domain for factories */
namespace internal namespace internal {
{
template<typename C, typename T>
struct case_wrapper {
using type = T;
const C value {};
const char *name = nullptr;
case_wrapper(C && val, const char *name) template<typename C, typename T>
: value(std::forward<C>(val)) struct case_wrapper {
, name(name) using type = T;
{} const C value {};
}; const char *name = nullptr;
template<typename T, typename C> case_wrapper(C && val, const char *name)
case_wrapper<C, T> make_case_wrapper(C && val, const char *name) { : value(std::forward<C>(val))
return case_wrapper<C, T>(std::forward<C>(val), name); , name(name)
{}
};
template<typename T, typename C>
case_wrapper<C, T> make_case_wrapper(C && val, const char *name) {
return case_wrapper<C, T>(std::forward<C>(val), name);
}
template<openvino::itt::domain_t(*domain)(),
template<typename...> class Fn,
typename Ctx,
typename T,
typename Case>
bool match(char const *region, Ctx && ctx, T && val, Case && cs) {
const bool is_matched = val == cs.value;
if (is_matched) {
openvino::itt::ScopedTask<domain> task(
openvino::itt::handle<struct OV_CC_CAT(Task_, __LINE__)>(
std::string(region) + "$" + cs.name));
Fn<typename Case::type>()(std::forward<Ctx>(ctx));
} }
return is_matched;
}
template<openvino::itt::domain_t(*domain)(), template<openvino::itt::domain_t(*domain)(),
template<typename...> class Fn, template<typename...> class Fn,
typename Ctx, typename Ctx,
typename T, typename T,
typename Case> typename Case, typename ...Cases>
bool match(char const *region, Ctx && ctx, T && val, Case && cs) { bool match(char const *region, Ctx && ctx, T && val, Case && cs, Cases&&... cases) {
const bool is_matched = val == cs.value; if (match<domain, Fn>(region, std::forward<Ctx>(ctx), std::forward<T>(val), std::forward<Case>(cs)))
if (is_matched) { return true;
openvino::itt::ScopedTask<domain> task( return match<domain, Fn>(region, std::forward<Ctx>(ctx), std::forward<T>(val), std::forward<Cases>(cases)...);
openvino::itt::handle<struct OV_CC_CAT(Task_, __LINE__)>( }
std::string(region) + "$" + cs.name));
Fn<typename Case::type>()(std::forward<Ctx>(ctx));
}
return is_matched;
}
template<openvino::itt::domain_t(*domain)(), } // namespace internal
template<typename...> class Fn,
typename Ctx,
typename T,
typename Case, typename ...Cases>
bool match(char const *region, Ctx && ctx, T && val, Case && cs, Cases&&... cases) {
if (match<domain, Fn>(region, std::forward<Ctx>(ctx), std::forward<T>(val), std::forward<Case>(cs)))
return true;
return match<domain, Fn>(region, std::forward<Ctx>(ctx), std::forward<T>(val), std::forward<Cases>(cases)...);
}
} // namespace internal
#define OV_SCOPE(Module, region, ...) \ #define OV_SCOPE(Module, region, ...) \
OV_ITT_SCOPED_TASK(OV_CC_CAT(SIMPLE_, Module), OV_CC_TOSTRING(region)); \ OV_ITT_SCOPED_TASK(OV_CC_CAT(SIMPLE_, Module), OV_CC_TOSTRING(region)); \
@ -261,5 +264,5 @@ namespace internal
#endif #endif
} } // namespace cc
} } // namespace openvino

View File

@ -18,7 +18,7 @@ set(TARGET_NAME itt)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
file(GLOB_RECURSE SOURCES "src/*.cpp") file(GLOB_RECURSE SOURCES "src/*.cpp" "src/*.hpp")
if(ENABLE_PROFILING_ITT) if(ENABLE_PROFILING_ITT)
if(DEFINED INTEL_VTUNE_DIR OR DEFINED ENV{INTEL_VTUNE_DIR}) if(DEFINED INTEL_VTUNE_DIR OR DEFINED ENV{INTEL_VTUNE_DIR})
@ -71,3 +71,5 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
endif() endif()
target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME})

View File

@ -21,62 +21,59 @@
#include <ittnotify.h> #include <ittnotify.h>
#endif #endif
namespace openvino namespace openvino {
{ namespace itt {
namespace itt namespace internal {
{
namespace internal
{
#ifdef ENABLE_PROFILING_ITT #ifdef ENABLE_PROFILING_ITT
static size_t callStackDepth()
{
static const char *env = std::getenv("OPENVINO_TRACE_DEPTH");
static const size_t depth = env ? std::strtoul(env, nullptr, 10): 0;
return depth;
}
static thread_local uint32_t call_stack_depth = 0; static size_t callStackDepth() {
static const char *env = std::getenv("OPENVINO_TRACE_DEPTH");
domain_t domain(char const* name) static const size_t depth = env ? std::strtoul(env, nullptr, 10): 0;
{ return depth;
return reinterpret_cast<domain_t>(__itt_domain_create(name));
}
handle_t handle(char const* name)
{
return reinterpret_cast<handle_t>(__itt_string_handle_create(name));
}
void taskBegin(domain_t d, handle_t t)
{
if (!callStackDepth() || call_stack_depth++ < callStackDepth())
__itt_task_begin(reinterpret_cast<__itt_domain*>(d),
__itt_null,
__itt_null,
reinterpret_cast<__itt_string_handle*>(t));
}
void taskEnd(domain_t d)
{
if (!callStackDepth() || call_stack_depth-- > 0)
__itt_task_end(reinterpret_cast<__itt_domain*>(d));
}
void threadName(const char* name)
{
__itt_thread_set_name(name);
}
#else
domain_t domain(char const *) { return nullptr; }
handle_t handle(char const *) { return nullptr; }
void taskBegin(domain_t, handle_t) { }
void taskEnd(domain_t) { }
void threadName(const char *) { }
#endif
}
}
} }
static thread_local uint32_t call_stack_depth = 0;
domain_t domain(char const* name) {
return reinterpret_cast<domain_t>(__itt_domain_create(name));
}
handle_t handle(char const* name) {
return reinterpret_cast<handle_t>(__itt_string_handle_create(name));
}
void taskBegin(domain_t d, handle_t t) {
if (!callStackDepth() || call_stack_depth++ < callStackDepth())
__itt_task_begin(reinterpret_cast<__itt_domain*>(d),
__itt_null,
__itt_null,
reinterpret_cast<__itt_string_handle*>(t));
}
void taskEnd(domain_t d) {
if (!callStackDepth() || call_stack_depth-- > 0)
__itt_task_end(reinterpret_cast<__itt_domain*>(d));
}
void threadName(const char* name) {
__itt_thread_set_name(name);
}
#else
domain_t domain(char const *) { return nullptr; }
handle_t handle(char const *) { return nullptr; }
void taskBegin(domain_t, handle_t) { }
void taskEnd(domain_t) { }
void threadName(const char *) { }
#endif // ENABLE_PROFILING_ITT
} // namespace internal
} // namespace itt
} // namespace openvino