Skip to content

Commit

Permalink
[GPU] Update cmake scripts for impls
Browse files Browse the repository at this point in the history
Signed-off-by: Vladimir Paramuzov <[email protected]>
  • Loading branch information
vladimir-paramuzov committed Jan 29, 2025
1 parent 90ae7ac commit 9f18a08
Show file tree
Hide file tree
Showing 7 changed files with 159 additions and 68 deletions.
2 changes: 1 addition & 1 deletion cmake/developer_package/add_target_helpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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}")
Expand Down
152 changes: 85 additions & 67 deletions src/plugins/intel_gpu/src/graph/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
$<BUILD_INTERFACE:${MAIN_DIR}/src>
$<BUILD_INTERFACE:${INCLUDE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>)

target_compile_options(${TARGET_NAME} PRIVATE
$<$<CONFIG:Release>:$<IF:$<CXX_COMPILER_ID:MSVC>,/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 $<$<CONFIG:Release>:$<IF:$<CXX_COMPILER_ID:MSVC>,/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 $<TARGET_OBJECTS:openvino_intel_gpu_${IMPL_TYPE}_obj>)
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()
10 changes: 10 additions & 0 deletions src/plugins/intel_gpu/src/graph/impls/common/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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}
)
20 changes: 20 additions & 0 deletions src/plugins/intel_gpu/src/graph/impls/cpu/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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()
10 changes: 10 additions & 0 deletions src/plugins/intel_gpu/src/graph/impls/ocl/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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}
)
17 changes: 17 additions & 0 deletions src/plugins/intel_gpu/src/graph/impls/onednn/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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
)
16 changes: 16 additions & 0 deletions src/plugins/intel_gpu/src/graph/impls/sycl/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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})

0 comments on commit 9f18a08

Please sign in to comment.