Use ittnotify built from sources (#2577)
authorAndrey Somsikov <andrey.somsikov@intel.com>
Wed, 14 Oct 2020 10:08:06 +0000 (13:08 +0300)
committerGitHub <noreply@github.com>
Wed, 14 Oct 2020 10:08:06 +0000 (13:08 +0300)
* Use  ittnotify built from sources

ITT tracing was only possible on the platfroms supported by VTune.
Building ittnotify from sources removes VTune dependency.

ITT traces was found significantly slowdown tests execution time.
Disabling ENABLE_PROFILING_ITT by default. This is also
a current behavior of Intel Distribution of OpenVINO.

* Fix missprint

* Add include directories to itt

cmake/features.cmake
openvino/itt/CMakeLists.txt

index 804e75a..91d30c4 100644 (file)
@@ -44,7 +44,7 @@ ie_dependent_option (ENABLE_AVX2 "Enable AVX2 optimizations" ON "X86_64 OR X86"
 
 ie_dependent_option (ENABLE_AVX512F "Enable AVX512 optimizations" ON "X86_64 OR X86" OFF)
 
-ie_dependent_option (ENABLE_PROFILING_ITT "ITT tracing of IE and plugins internals" ON "NOT CMAKE_CROSSCOMPILING" OFF)
+ie_option (ENABLE_PROFILING_ITT "Build with ITT tracing. Optionally configure pre-built ittnotify library though INTEL_VTUNE_DIR variable." OFF)
 
 # Documentation build
 ie_option (ENABLE_DOCS "build docs using Doxygen" OFF)
index 6673301..60d2386 100644 (file)
@@ -21,9 +21,38 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
 file(GLOB_RECURSE SOURCES "src/*.cpp")
 
 if(ENABLE_PROFILING_ITT)
-    find_package(ITT)
-    if(NOT ITT_FOUND)
-        message(WARNING "Profiling option enabled, but no ITT library was found")
+    if(DEFINED INTEL_VTUNE_DIR OR DEFINED ENV{INTEL_VTUNE_DIR})
+        find_package(ITT)
+        if(NOT ITT_FOUND)
+            message(WARNING "Profiling option enabled, but no ITT library was found under INTEL_VTUNE_DIR")
+        endif()
+    else()
+        include(ExternalProject)
+        set(ITTAPI_BINARY_DIR  ${CMAKE_CURRENT_BINARY_DIR}/ittapi/build)
+        set(ITTAPI_SOURCE_DIR  ${CMAKE_CURRENT_BINARY_DIR}/ittapi/source)
+        set(ITTNOTIFY_LIBRARY  ${ITTAPI_BINARY_DIR}/bin/${CMAKE_STATIC_LIBRARY_PREFIX}ittnotify${CMAKE_STATIC_LIBRARY_SUFFIX})
+        ExternalProject_Add(
+            ext_ittapi
+            PREFIX ittapi
+            GIT_REPOSITORY https://github.com/intel/ittapi.git
+            GIT_TAG v3.18.6
+            LOG_DOWNLOAD ON
+            LOG_CONFIGURE ON
+            LOG_BUILD ON
+            INSTALL_COMMAND ""
+            UPDATE_COMMAND ""
+            CMAKE_GENERATOR ${CMAKE_GENERATOR}
+            CMAKE_GENERATOR_PLATFORM ${CMAKE_GENERATOR_PLATFORM}
+            CMAKE_GENERATOR_TOOLSET ${CMAKE_GENERATOR_TOOLSET}
+            BINARY_DIR ${ITTAPI_BINARY_DIR}
+            SOURCE_DIR ${ITTAPI_SOURCE_DIR}
+            EXCLUDE_FROM_ALL TRUE
+            BUILD_BYPRODUCTS ${ITTNOTIFY_LIBRARY})
+        add_library(ittnotify INTERFACE)
+        add_dependencies(ittnotify ittapi_external)
+        target_link_libraries(ittnotify INTERFACE ${ITTNOTIFY_LIBRARY})
+        target_include_directories(ittnotify INTERFACE ${ITTAPI_SOURCE_DIR}/include)
+        openvino_developer_export_targets(ittnotify)
     endif()
 endif()