From 29c2b4641d6aa0ae7266b5656b8dbbd894f22c59 Mon Sep 17 00:00:00 2001 From: Vladimir Paramuzov Date: Wed, 20 Nov 2024 16:32:01 +0400 Subject: [PATCH] [GPU] Update cmake scripts for impls Signed-off-by: Vladimir Paramuzov --- .../add_target_helpers.cmake | 2 +- .../intel_gpu/src/graph/CMakeLists.txt | 152 ++++++++++-------- .../src/graph/impls/common/CMakeLists.txt | 10 ++ .../src/graph/impls/cpu/CMakeLists.txt | 20 +++ .../src/graph/impls/ocl/CMakeLists.txt | 10 ++ .../src/graph/impls/onednn/CMakeLists.txt | 17 ++ .../src/graph/impls/sycl/CMakeLists.txt | 16 ++ 7 files changed, 159 insertions(+), 68 deletions(-) create mode 100644 src/plugins/intel_gpu/src/graph/impls/common/CMakeLists.txt create mode 100644 src/plugins/intel_gpu/src/graph/impls/cpu/CMakeLists.txt create mode 100644 src/plugins/intel_gpu/src/graph/impls/ocl/CMakeLists.txt create mode 100644 src/plugins/intel_gpu/src/graph/impls/onednn/CMakeLists.txt create mode 100644 src/plugins/intel_gpu/src/graph/impls/sycl/CMakeLists.txt diff --git a/cmake/developer_package/add_target_helpers.cmake b/cmake/developer_package/add_target_helpers.cmake index 9643f16c580d1c..fb5a0ede2f3176 100644 --- a/cmake/developer_package/add_target_helpers.cmake +++ b/cmake/developer_package/add_target_helpers.cmake @@ -91,7 +91,7 @@ function(ov_add_target) # defining a target if (ARG_TYPE STREQUAL EXECUTABLE) add_executable(${ARG_NAME} ${all_sources}) - elseif(ARG_TYPE STREQUAL STATIC OR ARG_TYPE STREQUAL SHARED) + elseif(ARG_TYPE STREQUAL STATIC OR ARG_TYPE STREQUAL SHARED OR ARG_TYPE STREQUAL OBJECT) add_library(${ARG_NAME} ${ARG_TYPE} ${all_sources}) else() message(SEND_ERROR "Invalid target type ${ARG_TYPE} specified for target name ${ARG_NAME}") diff --git a/src/plugins/intel_gpu/src/graph/CMakeLists.txt b/src/plugins/intel_gpu/src/graph/CMakeLists.txt index d82984205c0307..e58a08803d6ea8 100644 --- a/src/plugins/intel_gpu/src/graph/CMakeLists.txt +++ b/src/plugins/intel_gpu/src/graph/CMakeLists.txt @@ -4,76 +4,94 @@ set(TARGET_NAME "openvino_intel_gpu_graph") -file(GLOB_RECURSE SYCL_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/impls/sycl/*") -file(GLOB_RECURSE LIBRARY_SRC - "${INCLUDE_DIR}/*.h" - "${INCLUDE_DIR}/*.hpp" - "${CMAKE_CURRENT_SOURCE_DIR}/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp" - "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" - ) - -if (NOT ENABLE_ONEDNN_FOR_GPU) - set(EXCLUDE_DIR "/onednn/") - foreach (SOURCE_FILE ${LIBRARY_SRC}) - string (FIND ${SOURCE_FILE} ${EXCLUDE_DIR} EXCLUDE_DIR_FOUND) - if (NOT ${EXCLUDE_DIR_FOUND} EQUAL -1) - list (REMOVE_ITEM LIBRARY_SRC ${SOURCE_FILE}) - endif () - endforeach(SOURCE_FILE) -endif() - -if(NOT OV_COMPILER_IS_INTEL_LLVM) - list(REMOVE_ITEM LIBRARY_SRC ${SYCL_SOURCES}) -endif() - -add_library(${TARGET_NAME} STATIC ${LIBRARY_SRC}) - -target_include_directories(${TARGET_NAME} PUBLIC - $ - $ - $ - $) - -target_compile_options(${TARGET_NAME} PRIVATE - $<$:$,/Os,-Os>>) - -if(OV_COMPILER_IS_INTEL_LLVM) - add_sycl_to_target(TARGET ${TARGET_NAME} SOURCES ${SYCL_SOURCES}) - target_compile_definitions(${TARGET_NAME} PUBLIC OV_GPU_WITH_SYCL) -endif() - -target_link_libraries(${TARGET_NAME} PUBLIC OpenCL::OpenCL openvino::shape_inference) -target_link_libraries(${TARGET_NAME} PRIVATE openvino_intel_gpu_kernels - openvino_intel_gpu_runtime - openvino::itt - openvino::reference - openvino::runtime::dev - openvino::runtime) - -if(ENABLE_ONEDNN_FOR_GPU) - target_link_libraries(${TARGET_NAME} PUBLIC onednn_gpu_tgt) -endif() - -if(COMMAND add_cpplint_target) - add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) -endif() +file(GLOB SUBDIRS "${CMAKE_CURRENT_SOURCE_DIR}/impls/*") + +foreach(SUBDIR ${SUBDIRS}) + if(IS_DIRECTORY ${SUBDIR}) + get_filename_component(SUBDIR_NAME ${SUBDIR} NAME) + if (NOT SUBDIR_NAME STREQUAL "registry") + list(APPEND AVAILABLE_IMPL_TYPES ${SUBDIR_NAME}) + list(APPEND EXCLUDE_PATHS ${SUBDIR}) + endif() + endif() +endforeach() + +set(COMMON_COMPILE_OPTIONS $<$:$,/Os,-Os>>) +set(COMMON_INCLUDE_DIRS ${MAIN_DIR}/src + ${INCLUDE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/ + ${CMAKE_CURRENT_SOURCE_DIR}/include/ +) + +set(COMMON_LINK_LIBRARIES openvino::shape_inference # for tensor accessor + openvino_intel_gpu_kernels # for cl_kernel_data_serializer + openvino_intel_gpu_runtime + openvino::itt + openvino::runtime::dev + openvino::runtime +) + +function(ov_gpu_add_backend_target) + set(options + ) + set(oneValueRequiredArgs + NAME + ) + set(multiValueArgs + INCLUDES # Extra include directories + LINK_LIBRARIES # Link libraries (in form of target name or file name) + ) + cmake_parse_arguments(ARG "${options}" "${oneValueRequiredArgs}" "${multiValueArgs}" ${ARGN} ) + + set(TARGET_INCLUDES ${COMMON_INCLUDE_DIRS} ${ARG_INCLUDES}) + set(TARGET_LINK_LIBRARIES ${COMMON_LINK_LIBRARIES} ${ARG_LINK_LIBRARIES}) + + ov_add_target( + NAME ${ARG_NAME} + TYPE OBJECT + ADD_CPPLINT + INCLUDES + PUBLIC + ${TARGET_INCLUDES} + LINK_LIBRARIES + PRIVATE + ${TARGET_LINK_LIBRARIES} + ${ARG_UNPARSED_ARGUMENTS} + ) + + target_compile_options(${TARGET_NAME} PRIVATE ${COMMON_COMPILE_OPTIONS}) + ov_set_threading_interface_for(${TARGET_NAME}) +endfunction() + +foreach(IMPL_TYPE ${AVAILABLE_IMPL_TYPES}) + add_subdirectory(impls/${IMPL_TYPE}) + if (TARGET openvino_intel_gpu_${IMPL_TYPE}_obj) + list(APPEND OBJ_FILES $) + endif() +endforeach() + +ov_add_target( + NAME ${TARGET_NAME} + TYPE STATIC + ROOT ${CMAKE_CURRENT_SOURCE_DIR} + EXCLUDED_SOURCE_PATHS + ${EXCLUDE_PATHS} + OBJECT_FILES + ${OBJ_FILES} + INCLUDES + PUBLIC + ${COMMON_INCLUDE_DIRS} + LINK_LIBRARIES + PUBLIC + ${COMMON_LINK_LIBRARIES} + openvino::reference # for loop primitive subroutines + ADD_CPPLINT +) + +target_compile_options(${TARGET_NAME} PRIVATE ${COMMON_COMPILE_OPTIONS}) ov_set_threading_interface_for(${TARGET_NAME}) set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) -if(WIN32) - target_link_libraries(${TARGET_NAME} PRIVATE setupapi) -elseif((NOT ANDROID) AND (UNIX)) - target_link_libraries(${TARGET_NAME} PRIVATE pthread) -endif() - ov_install_static_lib(${TARGET_NAME} ${OV_CPACK_COMP_CORE}) - -if(ENABLE_SSE42) - ov_sse42_optimization_flags(sse4_2_flags) - set_source_files_properties(impls/cpu/detection_output.cpp PROPERTIES - COMPILE_FLAGS "${sse4_2_flags}" - COMPILE_DEFINITIONS "HAVE_SSE") -endif() diff --git a/src/plugins/intel_gpu/src/graph/impls/common/CMakeLists.txt b/src/plugins/intel_gpu/src/graph/impls/common/CMakeLists.txt new file mode 100644 index 00000000000000..0f369eb2382862 --- /dev/null +++ b/src/plugins/intel_gpu/src/graph/impls/common/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(TARGET_NAME "openvino_intel_gpu_common_obj") + +ov_gpu_add_backend_target( + NAME ${TARGET_NAME} + ROOT ${CMAKE_CURRENT_SOURCE_DIR} +) diff --git a/src/plugins/intel_gpu/src/graph/impls/cpu/CMakeLists.txt b/src/plugins/intel_gpu/src/graph/impls/cpu/CMakeLists.txt new file mode 100644 index 00000000000000..608fad3534e39c --- /dev/null +++ b/src/plugins/intel_gpu/src/graph/impls/cpu/CMakeLists.txt @@ -0,0 +1,20 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(TARGET_NAME "openvino_intel_gpu_cpu_obj") + +ov_gpu_add_backend_target( + NAME ${TARGET_NAME} + ROOT ${CMAKE_CURRENT_SOURCE_DIR} + LINK_LIBRARIES + PRIVATE + openvino::reference +) + +if(ENABLE_SSE42) + ov_sse42_optimization_flags(sse4_2_flags) + set_source_files_properties(detection_output.cpp PROPERTIES + COMPILE_FLAGS "${sse4_2_flags}" + COMPILE_DEFINITIONS "HAVE_SSE") +endif() diff --git a/src/plugins/intel_gpu/src/graph/impls/ocl/CMakeLists.txt b/src/plugins/intel_gpu/src/graph/impls/ocl/CMakeLists.txt new file mode 100644 index 00000000000000..52570a6e8997fa --- /dev/null +++ b/src/plugins/intel_gpu/src/graph/impls/ocl/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +set(TARGET_NAME "openvino_intel_gpu_ocl_obj") + +ov_gpu_add_backend_target( + NAME ${TARGET_NAME} + ROOT ${CMAKE_CURRENT_SOURCE_DIR} +) diff --git a/src/plugins/intel_gpu/src/graph/impls/onednn/CMakeLists.txt b/src/plugins/intel_gpu/src/graph/impls/onednn/CMakeLists.txt new file mode 100644 index 00000000000000..c8069017a98a3a --- /dev/null +++ b/src/plugins/intel_gpu/src/graph/impls/onednn/CMakeLists.txt @@ -0,0 +1,17 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +if (NOT ENABLE_ONEDNN_FOR_GPU) + return() +endif() + +set(TARGET_NAME "openvino_intel_gpu_onednn_obj") + +ov_gpu_add_backend_target( + NAME ${TARGET_NAME} + ROOT ${CMAKE_CURRENT_SOURCE_DIR} + LINK_LIBRARIES + PUBLIC + onednn_gpu_tgt +) diff --git a/src/plugins/intel_gpu/src/graph/impls/sycl/CMakeLists.txt b/src/plugins/intel_gpu/src/graph/impls/sycl/CMakeLists.txt new file mode 100644 index 00000000000000..fc8548ab74321b --- /dev/null +++ b/src/plugins/intel_gpu/src/graph/impls/sycl/CMakeLists.txt @@ -0,0 +1,16 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +if(NOT OV_COMPILER_IS_INTEL_LLVM) + return() +endif() + +set(TARGET_NAME "openvino_intel_gpu_sycl_obj") + +ov_gpu_add_backend_target( + NAME ${TARGET_NAME} + ROOT ${CMAKE_CURRENT_SOURCE_DIR} +) + +add_sycl_to_target(TARGET ${TARGET_NAME})