[GPU] Fix multi configuration build of onednn_gpu (#8743)
This commit is contained in:
parent
d15dcd6833
commit
a862331732
12
inference-engine/thirdparty/clDNN/CMakeLists.txt
vendored
12
inference-engine/thirdparty/clDNN/CMakeLists.txt
vendored
@ -12,6 +12,18 @@ project("${CLDNN__PROJ_NAME}")
|
|||||||
# ====================================== HELPER CONSTANT VARIABLES =====================================
|
# ====================================== HELPER CONSTANT VARIABLES =====================================
|
||||||
# ======================================================================================================
|
# ======================================================================================================
|
||||||
# ======================================================================================================
|
# ======================================================================================================
|
||||||
|
if (ENABLE_ONEDNN_FOR_GPU)
|
||||||
|
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
if (isMultiConfig)
|
||||||
|
ExternalProject_Get_property(onednn_gpu_build SOURCE_DIR)
|
||||||
|
ExternalProject_Get_property(onednn_gpu_build BINARY_DIR)
|
||||||
|
|
||||||
|
set(ONEDNN_INCLUDE_DIRS "${BINARY_DIR}/include/" "${SOURCE_DIR}/include/")
|
||||||
|
set(ONEDNN_LIBRARY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/$<CONFIG>/${CMAKE_STATIC_LIBRARY_PREFIX}onednn_gpu${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||||
|
else()
|
||||||
|
set(ONEDNN_LIBRARY "onednn_gpu")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(ENABLE_GPU_DEBUG_CAPS)
|
if(ENABLE_GPU_DEBUG_CAPS)
|
||||||
add_definitions(-DGPU_DEBUG_CONFIG=1)
|
add_definitions(-DGPU_DEBUG_CONFIG=1)
|
||||||
|
@ -67,7 +67,15 @@ target_link_libraries("${CLDNN_BUILD__PROJ}" PRIVATE
|
|||||||
)
|
)
|
||||||
|
|
||||||
if(ENABLE_ONEDNN_FOR_GPU)
|
if(ENABLE_ONEDNN_FOR_GPU)
|
||||||
target_link_libraries("${CLDNN_BUILD__PROJ}" PUBLIC onednn_gpu)
|
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
if (isMultiConfig)
|
||||||
|
add_dependencies(${CLDNN_BUILD__PROJ} onednn_gpu_build)
|
||||||
|
foreach(dir IN LISTS ONEDNN_INCLUDE_DIRS)
|
||||||
|
target_include_directories("${CLDNN_BUILD__PROJ}" PUBLIC $<BUILD_INTERFACE:${dir}>)
|
||||||
|
endforeach()
|
||||||
|
target_compile_definitions("${CLDNN_BUILD__PROJ}" PUBLIC ENABLE_ONEDNN_FOR_GPU)
|
||||||
|
endif()
|
||||||
|
target_link_libraries("${CLDNN_BUILD__PROJ}" PUBLIC ${ONEDNN_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
@ -128,7 +128,15 @@ target_link_libraries("${CLDNN_BUILD__PROJ}" PRIVATE
|
|||||||
)
|
)
|
||||||
|
|
||||||
if(ENABLE_ONEDNN_FOR_GPU)
|
if(ENABLE_ONEDNN_FOR_GPU)
|
||||||
target_link_libraries("${CLDNN_BUILD__PROJ}" PUBLIC onednn_gpu)
|
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
if (isMultiConfig)
|
||||||
|
add_dependencies(${CLDNN_BUILD__PROJ} onednn_gpu_build)
|
||||||
|
foreach(dir IN LISTS ONEDNN_INCLUDE_DIRS)
|
||||||
|
target_include_directories("${CLDNN_BUILD__PROJ}" PUBLIC $<BUILD_INTERFACE:${dir}>)
|
||||||
|
endforeach()
|
||||||
|
target_compile_definitions("${CLDNN_BUILD__PROJ}" PUBLIC ENABLE_ONEDNN_FOR_GPU)
|
||||||
|
endif()
|
||||||
|
target_link_libraries("${CLDNN_BUILD__PROJ}" PUBLIC ${ONEDNN_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(COMMAND add_cpplint_target)
|
if(COMMAND add_cpplint_target)
|
||||||
|
75
thirdparty/CMakeLists.txt
vendored
75
thirdparty/CMakeLists.txt
vendored
@ -135,9 +135,6 @@ if(ENABLE_ONEDNN_FOR_GPU)
|
|||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
set(ONEDNN_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/onednn_gpu_build/")
|
set(ONEDNN_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/onednn_gpu_build/")
|
||||||
set(ONEDNN_INSTALL_DIR "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
|
set(ONEDNN_INSTALL_DIR "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
|
||||||
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)
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
ie_add_compiler_flags(-Wno-undef)
|
ie_add_compiler_flags(-Wno-undef)
|
||||||
endif()
|
endif()
|
||||||
@ -148,13 +145,7 @@ if(ENABLE_ONEDNN_FOR_GPU)
|
|||||||
if(CORES_COUNT EQUAL 0)
|
if(CORES_COUNT EQUAL 0)
|
||||||
set(CORES_COUNT "")
|
set(CORES_COUNT "")
|
||||||
endif()
|
endif()
|
||||||
ExternalProject_Add(onednn_gpu_build
|
set (ONEDNN_CMAKE_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
|
||||||
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/onednn_gpu"
|
|
||||||
BINARY_DIR "${ONEDNN_BUILD_DIR}"
|
|
||||||
INSTALL_DIR "${ONEDNN_INSTALL_DIR}"
|
|
||||||
PREFIX onednn_gpu_build
|
|
||||||
EXCLUDE_FROM_ALL ON
|
|
||||||
CMAKE_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
|
|
||||||
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
|
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
|
||||||
"-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}"
|
"-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}"
|
||||||
"-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}"
|
"-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}"
|
||||||
@ -178,12 +169,50 @@ if(ENABLE_ONEDNN_FOR_GPU)
|
|||||||
"-DDNNL_LIBRARY_TYPE=STATIC"
|
"-DDNNL_LIBRARY_TYPE=STATIC"
|
||||||
"-DOpenCL_LIBRARY=${OpenCL_LIBRARY}"
|
"-DOpenCL_LIBRARY=${OpenCL_LIBRARY}"
|
||||||
"-DOpenCL_INCLUDE_DIR=${OpenCL_INCLUDE_DIR}"
|
"-DOpenCL_INCLUDE_DIR=${OpenCL_INCLUDE_DIR}"
|
||||||
"-DOPENCL_VERSION_2_2=${OPENCL_VERSION_2_2}"
|
"-DOPENCL_VERSION_2_2=${OPENCL_VERSION_2_2}")
|
||||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} --target onednn_gpu --parallel ${CORES_COUNT}
|
|
||||||
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${ONEDNN_LIBRARY} ${ONEDNN_OUTPUT_LIBRARY}
|
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "OneDNN $<CONFIG> build for GPU complete"
|
if (isMultiConfig)
|
||||||
BUILD_BYPRODUCTS ${ONEDNN_OUTPUT_LIBRARY}
|
set(DIR_PREFIX "/$<CONFIG>/")
|
||||||
)
|
set(ONEDNN_LIBRARY "${CMAKE_STATIC_LIBRARY_PREFIX}onednn_gpu${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||||
|
set(ONEDNN_OUTPUT_LIBRARY "${ONEDNN_INSTALL_DIR}${DIR_PREFIX}${ONEDNN_LIBRARY}")
|
||||||
|
if (WIN32)
|
||||||
|
set(DNNL_COMMAND_SUFFIX "bat" )
|
||||||
|
else()
|
||||||
|
set(DNNL_COMMAND_SUFFIX "sh" )
|
||||||
|
endif()
|
||||||
|
set(DNNL_BUILD_TARGET_COMMAND "${ONEDNN_BUILD_DIR}/target_$<CONFIG>_build.${DNNL_COMMAND_SUFFIX}" )
|
||||||
|
set(DNNL_COPY_TARGET_COMMAND "${ONEDNN_BUILD_DIR}/target_$<CONFIG>_copy.${DNNL_COMMAND_SUFFIX}" )
|
||||||
|
file( GENERATE OUTPUT "${DNNL_BUILD_TARGET_COMMAND}" CONTENT "\"${CMAKE_COMMAND}\" --build . --config $<CONFIG> --target onednn_gpu --parallel ${CORES_COUNT}")
|
||||||
|
file( GENERATE OUTPUT "${DNNL_COPY_TARGET_COMMAND}" CONTENT "\"${CMAKE_COMMAND}\" -E copy ${ONEDNN_BUILD_DIR}src${DIR_PREFIX}${ONEDNN_LIBRARY} ${ONEDNN_OUTPUT_LIBRARY}" )
|
||||||
|
ExternalProject_Add(onednn_gpu_build
|
||||||
|
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/onednn_gpu"
|
||||||
|
BINARY_DIR "${ONEDNN_BUILD_DIR}"
|
||||||
|
INSTALL_DIR "${ONEDNN_INSTALL_DIR}"
|
||||||
|
PREFIX onednn_gpu_build
|
||||||
|
EXCLUDE_FROM_ALL ON
|
||||||
|
CMAKE_ARGS ${ONEDNN_CMAKE_ARGS}
|
||||||
|
BUILD_COMMAND ${DNNL_BUILD_TARGET_COMMAND}
|
||||||
|
INSTALL_COMMAND ${DNNL_COPY_TARGET_COMMAND}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E echo "OneDNN build for GPU complete"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
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}")
|
||||||
|
ExternalProject_Add(onednn_gpu_build
|
||||||
|
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/onednn_gpu"
|
||||||
|
BINARY_DIR "${ONEDNN_BUILD_DIR}"
|
||||||
|
INSTALL_DIR "${ONEDNN_INSTALL_DIR}"
|
||||||
|
PREFIX onednn_gpu_build
|
||||||
|
EXCLUDE_FROM_ALL ON
|
||||||
|
CMAKE_ARGS ${ONEDNN_CMAKE_ARGS}
|
||||||
|
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} --target onednn_gpu --parallel ${CORES_COUNT}
|
||||||
|
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${ONEDNN_LIBRARY} ${ONEDNN_OUTPUT_LIBRARY}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E echo "OneDNN $<CONFIG> build for GPU complete"
|
||||||
|
BUILD_BYPRODUCTS ${ONEDNN_OUTPUT_LIBRARY}
|
||||||
|
)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
ExternalProject_Get_property(onednn_gpu_build SOURCE_DIR)
|
ExternalProject_Get_property(onednn_gpu_build SOURCE_DIR)
|
||||||
ExternalProject_Get_property(onednn_gpu_build BINARY_DIR)
|
ExternalProject_Get_property(onednn_gpu_build BINARY_DIR)
|
||||||
@ -191,12 +220,14 @@ if(ENABLE_ONEDNN_FOR_GPU)
|
|||||||
# WA: create temp 'include' directory
|
# WA: create temp 'include' directory
|
||||||
file(MAKE_DIRECTORY "${BINARY_DIR}/include")
|
file(MAKE_DIRECTORY "${BINARY_DIR}/include")
|
||||||
|
|
||||||
add_library(onednn_gpu STATIC IMPORTED GLOBAL)
|
if (NOT isMultiConfig)
|
||||||
set_target_properties(onednn_gpu PROPERTIES
|
add_library(onednn_gpu STATIC IMPORTED GLOBAL)
|
||||||
IMPORTED_LOCATION ${ONEDNN_OUTPUT_LIBRARY}
|
set_target_properties(onednn_gpu PROPERTIES
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${BINARY_DIR}/include>;$<BUILD_INTERFACE:${SOURCE_DIR}/include>"
|
IMPORTED_LOCATION ${ONEDNN_OUTPUT_LIBRARY}
|
||||||
INTERFACE_COMPILE_DEFINITIONS ENABLE_ONEDNN_FOR_GPU)
|
INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${BINARY_DIR}/include>;$<BUILD_INTERFACE:${SOURCE_DIR}/include>"
|
||||||
add_dependencies(onednn_gpu onednn_gpu_build)
|
INTERFACE_COMPILE_DEFINITIONS ENABLE_ONEDNN_FOR_GPU)
|
||||||
|
add_dependencies(onednn_gpu onednn_gpu_build)
|
||||||
|
endif()
|
||||||
|
|
||||||
# TODO: does not work for imported targets; need to import this target in
|
# TODO: does not work for imported targets; need to import this target in
|
||||||
# OpenVINOConfig.cmake explicitly
|
# OpenVINOConfig.cmake explicitly
|
||||||
|
Loading…
Reference in New Issue
Block a user