diff --git a/.ci/azure/linux.yml b/.ci/azure/linux.yml index 3384fd40c0d..9594b4a2c26 100644 --- a/.ci/azure/linux.yml +++ b/.ci/azure/linux.yml @@ -138,7 +138,7 @@ jobs: -DENABLE_PYTHON=ON -DBUILD_SHARED_LIBS=$(CMAKE_BUILD_SHARED_LIBS) -DENABLE_GNA=$(CMAKE_BUILD_SHARED_LIBS) - -DENABLE_CLDNN=$(CMAKE_BUILD_SHARED_LIBS) + -DENABLE_ONEDNN_FOR_GPU=$(CMAKE_BUILD_SHARED_LIBS) -DPYTHON_EXECUTABLE=/usr/bin/python3.8 -DENABLE_WHEEL=ON -DENABLE_TESTS=ON diff --git a/cmake/developer_package/IEDevScriptsConfig.cmake b/cmake/developer_package/IEDevScriptsConfig.cmake index 5afa256f25d..159062f3398 100644 --- a/cmake/developer_package/IEDevScriptsConfig.cmake +++ b/cmake/developer_package/IEDevScriptsConfig.cmake @@ -211,9 +211,7 @@ endif() macro(ov_install_static_lib target comp) if(NOT BUILD_SHARED_LIBS) install(TARGETS ${target} EXPORT OpenVINOTargets - RUNTIME DESTINATION ${IE_CPACK_RUNTIME_PATH} COMPONENT ${comp} - ARCHIVE DESTINATION ${IE_CPACK_ARCHIVE_PATH} COMPONENT ${comp} - LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH} COMPONENT ${comp}) + ARCHIVE DESTINATION ${IE_CPACK_ARCHIVE_PATH} COMPONENT ${comp}) endif() endmacro() diff --git a/cmake/features.cmake b/cmake/features.cmake index d5c2303ced5..bd4f4891fff 100644 --- a/cmake/features.cmake +++ b/cmake/features.cmake @@ -14,6 +14,17 @@ ie_option (ENABLE_STRICT_DEPENDENCIES "Skip configuring \"convinient\" dependenc ie_dependent_option (ENABLE_CLDNN "clDnn based plugin for inference engine" ON "X86_64;NOT APPLE;NOT MINGW;NOT WINDOWS_STORE;NOT WINDOWS_PHONE" OFF) +if (NOT ENABLE_CLDNN OR ANDROID OR + (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)) + # oneDNN doesn't support old compilers and android builds for now, so we'll + # build GPU plugin without oneDNN + set(ENABLE_ONEDNN_FOR_GPU_DEFAULT OFF) +else() + set(ENABLE_ONEDNN_FOR_GPU_DEFAULT ON) +endif() + +ie_dependent_option (ENABLE_ONEDNN_FOR_GPU "Enable oneDNN with GPU support" ON "${ENABLE_ONEDNN_FOR_GPU_DEFAULT}" OFF) + ie_option (ENABLE_PROFILING_ITT "Build with ITT tracing. Optionally configure pre-built ittnotify library though INTEL_VTUNE_DIR variable." OFF) ie_option_enum(ENABLE_PROFILING_FILTER "Enable or disable ITT counter groups.\ diff --git a/inference-engine/src/cldnn_engine/CMakeLists.txt b/inference-engine/src/cldnn_engine/CMakeLists.txt index 07fdb08df84..c28ff772540 100644 --- a/inference-engine/src/cldnn_engine/CMakeLists.txt +++ b/inference-engine/src/cldnn_engine/CMakeLists.txt @@ -43,6 +43,11 @@ target_include_directories(${TARGET_NAME} PRIVATE set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) +# Workaround to avoid warnings during LTO build +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS_RELEASE "-Wno-error=maybe-uninitialized -Wno-maybe-uninitialized") +endif() + # Failed because of OpenCL # ie_add_api_validator_post_build_step(TARGET ${TARGET_NAME}) diff --git a/inference-engine/src/inference_engine/CMakeLists.txt b/inference-engine/src/inference_engine/CMakeLists.txt index bff4002cbdc..530dced9d33 100644 --- a/inference-engine/src/inference_engine/CMakeLists.txt +++ b/inference-engine/src/inference_engine/CMakeLists.txt @@ -140,7 +140,7 @@ target_include_directories(${TARGET_NAME}_obj SYSTEM PRIVATE $ # for ie_ir_version.hpp $ $ $) @@ -215,7 +215,7 @@ endif() target_include_directories(${TARGET_NAME}_s PUBLIC $ $ - $) + $/src>) if(WIN32) set_target_properties(${TARGET_NAME}_s PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME}_s) diff --git a/inference-engine/src/legacy_api/CMakeLists.txt b/inference-engine/src/legacy_api/CMakeLists.txt index d9158ef5ba1..1acd566e5b3 100644 --- a/inference-engine/src/legacy_api/CMakeLists.txt +++ b/inference-engine/src/legacy_api/CMakeLists.txt @@ -39,7 +39,7 @@ target_compile_definitions(${TARGET_NAME}_obj PRIVATE IMPLEMENT_INFERENCE_ENGINE target_include_directories(${TARGET_NAME}_obj PRIVATE ${PUBLIC_HEADERS_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src - ${IE_MAIN_SOURCE_DIR}/src/inference_engine/src # For CNNNetworkNGraphImpl + $/src # For CNNNetworkNGraphImpl $ $ $ diff --git a/inference-engine/tests/functional/inference_engine/CMakeLists.txt b/inference-engine/tests/functional/inference_engine/CMakeLists.txt index 1e00c1dfdc8..1aed4b84b0e 100644 --- a/inference-engine/tests/functional/inference_engine/CMakeLists.txt +++ b/inference-engine/tests/functional/inference_engine/CMakeLists.txt @@ -4,7 +4,7 @@ set(TARGET_NAME ieFuncTests) -set(INCLUDES ${IE_MAIN_SOURCE_DIR}/src/inference_engine/src) +set(INCLUDES $/src) set(LINK_LIBRARIES gmock diff --git a/inference-engine/tests/functional/plugin/cpu/CMakeLists.txt b/inference-engine/tests/functional/plugin/cpu/CMakeLists.txt index a9b7f932241..6535fca61e3 100644 --- a/inference-engine/tests/functional/plugin/cpu/CMakeLists.txt +++ b/inference-engine/tests/functional/plugin/cpu/CMakeLists.txt @@ -8,7 +8,7 @@ add_library(cpuSpecificRtInfo STATIC ${IE_MAIN_SOURCE_DIR}/src/mkldnn_plugin/uti ${IE_MAIN_SOURCE_DIR}/src/mkldnn_plugin/utils/rt_info/memory_formats_attribute.cpp) target_link_libraries(cpuSpecificRtInfo PRIVATE ngraph) -set(INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${IE_MAIN_SOURCE_DIR}/src/mkldnn_plugin) +set(INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} $) set(DEPENDENCIES MKLDNNPlugin) set(LINK_LIBRARIES funcSharedTests cpuSpecificRtInfo) if (NGRAPH_ONNX_FRONTEND_ENABLE) diff --git a/inference-engine/tests/unit/cpu/CMakeLists.txt b/inference-engine/tests/unit/cpu/CMakeLists.txt index a66c27aa5c2..d44d2584212 100644 --- a/inference-engine/tests/unit/cpu/CMakeLists.txt +++ b/inference-engine/tests/unit/cpu/CMakeLists.txt @@ -8,8 +8,8 @@ addIeTargetTest( NAME ${TARGET_NAME} ROOT ${CMAKE_CURRENT_SOURCE_DIR} INCLUDES - ${IE_MAIN_SOURCE_DIR}/src/mkldnn_plugin - ${IE_MAIN_SOURCE_DIR}/src/mkldnn_plugin/nodes + $ + $/nodes $ OBJECT_FILES $ diff --git a/inference-engine/tests_deprecated/behavior/vpu/CMakeLists.txt b/inference-engine/tests_deprecated/behavior/vpu/CMakeLists.txt index a2956a887dd..72c1b13436b 100644 --- a/inference-engine/tests_deprecated/behavior/vpu/CMakeLists.txt +++ b/inference-engine/tests_deprecated/behavior/vpu/CMakeLists.txt @@ -57,7 +57,7 @@ function(enable_vpu TARGET_NAME FLAG_NAME PLUGIN_NAME) target_include_directories(${TARGET_NAME} PRIVATE $ ${CMAKE_CURRENT_SOURCE_DIR}/myriad_tests - ${IE_MAIN_SOURCE_DIR}/src/inference_engine/src + $/src ${XLINK_INCLUDE} ${XLINK_PLATFORM_INCLUDE}) target_link_libraries(${TARGET_NAME} PRIVATE mvnc) diff --git a/inference-engine/tests_deprecated/unit/CMakeLists.txt b/inference-engine/tests_deprecated/unit/CMakeLists.txt index 5f109be495a..fb8fc881aff 100644 --- a/inference-engine/tests_deprecated/unit/CMakeLists.txt +++ b/inference-engine/tests_deprecated/unit/CMakeLists.txt @@ -82,7 +82,7 @@ if (ENABLE_MYRIAD) ) include_directories( engines/vpu/myriad_tests/helpers - ${IE_MAIN_SOURCE_DIR}/src/vpu/myriad_plugin + $ ${XLINK_INCLUDE} ${XLINK_PLATFORM_INCLUDE}) diff --git a/inference-engine/thirdparty/clDNN/CMakeLists.txt b/inference-engine/thirdparty/clDNN/CMakeLists.txt index 37b824c0698..18270b771a5 100644 --- a/inference-engine/thirdparty/clDNN/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/CMakeLists.txt @@ -12,14 +12,6 @@ project("${CLDNN__PROJ_NAME}") # ====================================== HELPER CONSTANT VARIABLES ===================================== # ====================================================================================================== # ====================================================================================================== -if (ENABLE_ONEDNN_FOR_GPU) - ExternalProject_Get_property(onednn_gpu_build SOURCE_DIR) - ExternalProject_Get_property(onednn_gpu_build BINARY_DIR) - - set(ONEDNN_TARGET_NAME onednn_gpu) - set(ONEDNN_INCLUDE_DIRS "${BINARY_DIR}/include/" "${SOURCE_DIR}/include/") - set(ONEDNN_LIBRARY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_STATIC_LIBRARY_PREFIX}onednn_gpu${CMAKE_STATIC_LIBRARY_SUFFIX}") -endif() if(ENABLE_GPU_DEBUG_CAPS) add_definitions(-DGPU_DEBUG_CONFIG=1) diff --git a/inference-engine/thirdparty/clDNN/runtime/CMakeLists.txt b/inference-engine/thirdparty/clDNN/runtime/CMakeLists.txt index 2239c995051..d4d6b319dcd 100644 --- a/inference-engine/thirdparty/clDNN/runtime/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/runtime/CMakeLists.txt @@ -67,12 +67,7 @@ target_link_libraries("${CLDNN_BUILD__PROJ}" PRIVATE ) if(ENABLE_ONEDNN_FOR_GPU) - add_dependencies("${CLDNN_BUILD__PROJ}" onednn_gpu_build) - target_link_libraries("${CLDNN_BUILD__PROJ}" PUBLIC ${ONEDNN_LIBRARY}) - foreach(dir IN LISTS ONEDNN_INCLUDE_DIRS) - target_include_directories("${CLDNN_BUILD__PROJ}" PUBLIC $) - endforeach() - target_compile_definitions("${CLDNN_BUILD__PROJ}" PUBLIC ENABLE_ONEDNN_FOR_GPU) + target_link_libraries("${CLDNN_BUILD__PROJ}" PUBLIC onednn_gpu) endif() if(WIN32) diff --git a/inference-engine/thirdparty/clDNN/src/CMakeLists.txt b/inference-engine/thirdparty/clDNN/src/CMakeLists.txt index f86a7a431d3..df2cde95958 100644 --- a/inference-engine/thirdparty/clDNN/src/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/src/CMakeLists.txt @@ -128,11 +128,7 @@ target_link_libraries("${CLDNN_BUILD__PROJ}" PRIVATE ) if(ENABLE_ONEDNN_FOR_GPU) - target_link_libraries("${CLDNN_BUILD__PROJ}" PUBLIC ${ONEDNN_LIBRARY}) - foreach(dir IN LISTS ONEDNN_INCLUDE_DIRS) - target_include_directories("${CLDNN_BUILD__PROJ}" PUBLIC $) - endforeach() - target_compile_definitions("${CLDNN_BUILD__PROJ}" PUBLIC ENABLE_ONEDNN_FOR_GPU) + target_link_libraries("${CLDNN_BUILD__PROJ}" PUBLIC onednn_gpu) endif() if(COMMAND add_cpplint_target) diff --git a/inference-engine/thirdparty/clDNN/tests/CMakeLists.txt b/inference-engine/thirdparty/clDNN/tests/CMakeLists.txt index 02189c28ffc..ca83c08ffa9 100644 --- a/inference-engine/thirdparty/clDNN/tests/CMakeLists.txt +++ b/inference-engine/thirdparty/clDNN/tests/CMakeLists.txt @@ -99,6 +99,11 @@ if(COMMAND set_ie_threading_interface_for) set_ie_threading_interface_for("${CLDNN_BUILD__PROJ}") endif() +# Workaround to avoid warnings during LTO build +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set_target_properties("${CLDNN_BUILD__PROJ}" PROPERTIES LINK_FLAGS_RELEASE "-Wno-error=maybe-uninitialized -Wno-maybe-uninitialized") +endif() + set_property(TARGET "${CLDNN_BUILD__PROJ}" PROPERTY PROJECT_LABEL "${CLDNN_BUILD__PROJ_LABEL}") # Set library dependencies diff --git a/ngraph/core/CMakeLists.txt b/ngraph/core/CMakeLists.txt index 2d382929019..0caa99e50c0 100644 --- a/ngraph/core/CMakeLists.txt +++ b/ngraph/core/CMakeLists.txt @@ -17,7 +17,6 @@ add_subdirectory(reference) add_subdirectory(shape_inference) # WA for Tensor implementation via ie::Blob::Ptr -set(IE_SRC_ROOT "${IE_MAIN_SOURCE_DIR}/src/inference_engine/src") set(IE_SHARED_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/src/ie_legacy/blob_factory.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/ie_legacy/ie_blob_common.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/ie_legacy/ie_layouts.cpp" @@ -28,7 +27,7 @@ set(MIXED_SRC ${IE_SHARED_SRCS} set_property(SOURCE ${MIXED_SRC} APPEND PROPERTY INCLUDE_DIRECTORIES - ${IE_SRC_ROOT} + $/src $ $) diff --git a/openvino/itt/CMakeLists.txt b/openvino/itt/CMakeLists.txt index 9be020f86cc..fbeab9f3e0d 100644 --- a/openvino/itt/CMakeLists.txt +++ b/openvino/itt/CMakeLists.txt @@ -33,6 +33,6 @@ endif() target_include_directories(${TARGET_NAME} PUBLIC $) -ov_install_static_lib(${TARGET_NAME} ngraph) +ov_install_static_lib(${TARGET_NAME} openvino_common) add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 79e85f2f444..fb7d82db8de 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -10,12 +10,12 @@ if(ENABLE_LTO) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) endif() -add_subdirectory(ittapi EXCLUDE_FROM_ALL) +add_subdirectory(ittapi) add_subdirectory(itt_collector EXCLUDE_FROM_ALL) add_subdirectory(zlib EXCLUDE_FROM_ALL) add_subdirectory(cnpy EXCLUDE_FROM_ALL) if(ENABLE_CLDNN) - add_subdirectory(ocl EXCLUDE_FROM_ALL) + add_subdirectory(ocl) endif() add_subdirectory(xbyak EXCLUDE_FROM_ALL) @@ -129,12 +129,6 @@ endif() # # oneDNN for GPU plugin # -if (ANDROID OR (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)) - # oneDNN doesn't support old compilers and android builds for now, so we'll build GPU plugin without oneDNN - set(ENABLE_ONEDNN_FOR_GPU OFF CACHE BOOL "") -else() - set(ENABLE_ONEDNN_FOR_GPU ON CACHE BOOL "") -endif() if(ENABLE_ONEDNN_FOR_GPU) function(build_onednn_gpu) @@ -144,6 +138,10 @@ if(ENABLE_ONEDNN_FOR_GPU) set(ONEDNN_LIBRARY "${ONEDNN_BUILD_DIR}/src/${CMAKE_STATIC_LIBRARY_PREFIX}onednn_gpu${CMAKE_STATIC_LIBRARY_SUFFIX}") set(ONEDNN_OUTPUT_LIBRARY "${ONEDNN_INSTALL_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}onednn_gpu${CMAKE_STATIC_LIBRARY_SUFFIX}") + if(CMAKE_COMPILER_IS_GNUCXX) + ie_add_compiler_flags(-Wno-undef) + endif() + # Get processors count to limit number of threads spawned by make include(ProcessorCount) ProcessorCount(CORES_COUNT) @@ -158,9 +156,14 @@ if(ENABLE_ONEDNN_FOR_GPU) EXCLUDE_FROM_ALL ON CMAKE_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}" + "-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}" + "-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}" + "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}" + "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}" + "-DCMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE=${ENABLE_LTO}" + "-DCMAKE_POLICY_DEFAULT_CMP0069=NEW" "-DDNNL_CPU_RUNTIME=NONE" "-DDNNL_GPU_RUNTIME=OCL" - "-DDNNL_GPU_RUNTIME=OCL" "-DDNNL_LIBRARY_NAME=onednn_gpu" "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" @@ -179,6 +182,23 @@ if(ENABLE_ONEDNN_FOR_GPU) COMMAND ${CMAKE_COMMAND} -E echo "OneDNN $ build for GPU complete" BUILD_BYPRODUCTS ${ONEDNN_OUTPUT_LIBRARY} ) + + ExternalProject_Get_property(onednn_gpu_build SOURCE_DIR) + ExternalProject_Get_property(onednn_gpu_build BINARY_DIR) + + # WA: create temp 'include' directory + file(MAKE_DIRECTORY "${BINARY_DIR}/include") + + add_library(onednn_gpu STATIC IMPORTED GLOBAL) + set_target_properties(onednn_gpu PROPERTIES + IMPORTED_LOCATION ${ONEDNN_OUTPUT_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES "$;$" + INTERFACE_COMPILE_DEFINITIONS ENABLE_ONEDNN_FOR_GPU) + add_dependencies(onednn_gpu onednn_gpu_build) + + # TODO: does not work for imported targets; need to import this target in + # OpenVINOConfig.cmake explicitly + # ov_install_static_lib(onednn_gpu gpu) endfunction() build_onednn_gpu() diff --git a/thirdparty/ittapi/CMakeLists.txt b/thirdparty/ittapi/CMakeLists.txt index e595c9dddd4..87cf02a851b 100644 --- a/thirdparty/ittapi/CMakeLists.txt +++ b/thirdparty/ittapi/CMakeLists.txt @@ -11,10 +11,10 @@ if(ENABLE_PROFILING_ITT) message(WARNING "Profiling option enabled, but no ITT library was found under INTEL_VTUNE_DIR") endif() else() - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ittapi ${CMAKE_BINARY_DIR}/_deps/ittapi) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ittapi ${CMAKE_BINARY_DIR}/_deps/ittapi EXCLUDE_FROM_ALL) target_compile_definitions(ittnotify INTERFACE ENABLE_PROFILING_ITT) - if (UNIX) + if(CMAKE_COMPILER_IS_GNUCXX) target_compile_options(ittnotify PRIVATE -Wno-undef) endif() diff --git a/thirdparty/ocl/CMakeLists.txt b/thirdparty/ocl/CMakeLists.txt index 3a2faa64624..4f085f6ad96 100644 --- a/thirdparty/ocl/CMakeLists.txt +++ b/thirdparty/ocl/CMakeLists.txt @@ -46,7 +46,7 @@ set(CMAKE_CXX_FLAGS_RELEASE "") # OpenCL has absolute paths to include directories set(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION OFF) -add_subdirectory(icd_loader) +add_subdirectory(icd_loader EXCLUDE_FROM_ALL) # override INTERFACE_INCLUDE_DIRECTORIES set_property(TARGET OpenCL PROPERTY INTERFACE_INCLUDE_DIRECTORIES