@@ -36,11 +36,28 @@ SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}" "${MKLDNN_INSTALL_DIR}/${LIBDIR
36
36
37
37
INCLUDE_DIRECTORIES (${MKLDNN_INC_DIR} ) # For MKLDNN code to include internal headers.
38
38
39
+ IF (${CBLAS_PROVIDER} STREQUAL "MKLML" )
40
+ SET (MKLDNN_DEPENDS ${MKLML_PROJECT} )
41
+ MESSAGE (STATUS "Build MKLDNN with MKLML ${MKLML_ROOT} " )
42
+ ELSE ()
43
+ MESSAGE (STATUS "Build MKLDNN without MKLML" )
44
+ ENDIF ()
45
+
39
46
IF (NOT WIN32 )
40
47
SET (MKLDNN_FLAG "-Wno-error=strict-overflow -Wno-error=unused-result -Wno-error=array-bounds" )
41
48
SET (MKLDNN_FLAG "${MKLDNN_FLAG} -Wno-unused-result -Wno-unused-value" )
42
49
SET (MKLDNN_CFLAG "${CMAKE_C_FLAGS} ${MKLDNN_FLAG} " )
43
50
SET (MKLDNN_CXXFLAG "${CMAKE_CXX_FLAGS} ${MKLDNN_FLAG} " )
51
+
52
+ IF (${CBLAS_PROVIDER} STREQUAL "MKLML" )
53
+ # Force libmkldnn.so to link libiomp5.so (provided by intel mkl) instead of libgomp.so (provided by gcc),
54
+ # since core_avx.so links libiomp5.so
55
+ set (MKLDNN_SHARED_LINKER_FLAG "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-as-needed -L${MKLML_LIB_DIR} -liomp5" )
56
+ set (FORBID "-fopenmp" )
57
+ ELSE ()
58
+ set (MKLDNN_SHARED_LINKER_FLAG "${CMAKE_SHARED_LINKER_FLAGS} " )
59
+ set (FORBID "" )
60
+ ENDIF ()
44
61
ELSE ()
45
62
SET (MKLDNN_CXXFLAG "${CMAKE_CXX_FLAGS} /EHsc" )
46
63
ENDIF (NOT WIN32 )
@@ -74,6 +91,8 @@ ExternalProject_Add(
74
91
-DCMAKE_C_FLAGS=${MKLDNN_CFLAG}
75
92
-DCMAKE_CXX_FLAGS=${MKLDNN_CXXFLAG}
76
93
-DDNNL_BUILD_TESTS=OFF -DDNNL_BUILD_EXAMPLES=OFF
94
+ -DCMAKE_SHARED_LINKER_FLAGS=${MKLDNN_SHARED_LINKER_FLAG}
95
+ -DCMAKE_CXX_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS=${FORBID}
77
96
CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${MKLDNN_INSTALL_DIR}
78
97
)
79
98
if (WIN32 )
0 commit comments