diff --git a/cmake/external/dnnl.cmake b/cmake/external/dnnl.cmake index 175ad41b6f..8c3ba11491 100644 --- a/cmake/external/dnnl.cmake +++ b/cmake/external/dnnl.cmake @@ -26,6 +26,14 @@ elseif(onnxruntime_USE_DNNL AND onnxruntime_DNNL_GPU_RUNTIME STREQUAL "ocl" AND endif() if (onnxruntime_USE_DNNL) +# https://oneapi-src.github.io/oneDNN/dev_guide_transition_to_dnnl.html +find_package(dnnl CONFIG) +if (TARGET DNNL::dnnl) + message(STATUS "DNNL version: ${dnnl_VERSION}") + add_library(project_dnnl INTERFACE) + add_library(dnnl INTERFACE) + target_link_libraries(dnnl INTERFACE DNNL::dnnl) +else () set(DNNL_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/dnnl/src/dnnl/src) set(DNNL_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/dnnl/install) set(DNNL_LIB_DIR ${DNNL_INSTALL}/${CMAKE_INSTALL_LIBDIR}) @@ -55,3 +66,4 @@ if (onnxruntime_USE_DNNL) ) link_directories(${DNNL_LIB_DIR}) endif() +endif() diff --git a/cmake/onnxruntime_python.cmake b/cmake/onnxruntime_python.cmake index c24b6b9be5..11696cd761 100644 --- a/cmake/onnxruntime_python.cmake +++ b/cmake/onnxruntime_python.cmake @@ -795,7 +795,7 @@ if (onnxruntime_ENABLE_TRAINING) endif() endif() -if (onnxruntime_USE_DNNL) +if (onnxruntime_USE_DNNL AND NOT TARGET DNNL::dnnl) add_custom_command( TARGET onnxruntime_pybind11_state POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy diff --git a/cmake/onnxruntime_unittests.cmake b/cmake/onnxruntime_unittests.cmake index 00c017298c..1861e1a7ad 100644 --- a/cmake/onnxruntime_unittests.cmake +++ b/cmake/onnxruntime_unittests.cmake @@ -867,10 +867,12 @@ if (NOT onnxruntime_ENABLE_TRAINING_TORCH_INTEROP) target_compile_definitions(onnxruntime_test_all PUBLIC -DDNNL_GPU_RUNTIME=OCL) endif() list(APPEND onnx_test_libs dnnl) + if (NOT TARGET DNNL::dnnl) add_custom_command( TARGET ${test_data_target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${DNNL_DLL_PATH} $ ) + endif() endif() if(WIN32) if (onnxruntime_USE_TVM)