summarylogtreecommitdiffstats
path: root/system-dnnl.diff
blob: aad0d878293dea1a257416717408b41748d3e3ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
diff --git a/cmake/external/dnnl.cmake b/cmake/external/dnnl.cmake
index 5c42216..bc0a63f 100644
--- a/cmake/external/dnnl.cmake
+++ b/cmake/external/dnnl.cmake
@@ -26,6 +26,17 @@ elseif(onnxruntime_USE_DNNL AND onnxruntime_DNNL_GPU_RUNTIME STREQUAL "ocl" AND
 endif()
 
 if (onnxruntime_USE_DNNL)
+if (onnxruntime_PREFER_SYSTEM_LIB)
+  # https://oneapi-src.github.io/oneDNN/dev_guide_transition_to_dnnl.html
+  find_package(dnnl CONFIG)
+endif ()
+if (TARGET DNNL::dnnl)
+  message("Use DNNL from preinstalled system lib")
+  add_library(project_dnnl INTERFACE)
+  add_library(dnnl INTERFACE)
+  target_link_libraries(dnnl INTERFACE DNNL::dnnl)
+else ()
+  message("Use DNNL from submodule")
   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 b23d731..13ef7c3 100644
--- a/cmake/onnxruntime_python.cmake
+++ b/cmake/onnxruntime_python.cmake
@@ -752,7 +752,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 c5e1dfe..a9cb311 100644
--- a/cmake/onnxruntime_unittests.cmake
+++ b/cmake/onnxruntime_unittests.cmake
@@ -836,10 +836,12 @@ if (NOT onnxruntime_ENABLE_TRAINING_TORCH_INTEROP)
   endif()
   if (onnxruntime_USE_DNNL)
     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} $<TARGET_FILE_DIR:${test_data_target}>
       )
+    endif()
   endif()
   if(WIN32)
     if (onnxruntime_USE_NUPHAR_TVM)