mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
CMake option for using static MKL libraries
Fixes #70587 Pull Request resolved: https://github.com/pytorch/pytorch/pull/73069 Approved by: https://github.com/malfet
This commit is contained in:
parent
f3c6e8f720
commit
7ed73b2803
|
|
@ -304,6 +304,7 @@ set(MKLDNN_ENABLE_CONCURRENT_EXEC ${USE_MKLDNN})
|
|||
cmake_dependent_option(
|
||||
USE_MKLDNN_CBLAS "Use CBLAS in MKLDNN" OFF
|
||||
"USE_MKLDNN" OFF)
|
||||
option(USE_STATIC_MKL "Prefer to link with MKL statically (Unix only)" OFF)
|
||||
option(USE_DISTRIBUTED "Use distributed" ON)
|
||||
cmake_dependent_option(
|
||||
USE_MPI "Use MPI for Caffe2. Only available if USE_DISTRIBUTED is on." ON
|
||||
|
|
|
|||
|
|
@ -168,6 +168,26 @@ IF (EXISTS ${INTEL_OMP_DIR})
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
MACRO(GET_MKL_LIB_NAMES LIBRARIES INTERFACE MKL64)
|
||||
cmake_parse_arguments("" "" "THREAD" "" ${ARGN})
|
||||
SET(${LIBRARIES} mkl_${INTERFACE}${MKL64} mkl_core)
|
||||
IF(_THREAD)
|
||||
LIST(INSERT ${LIBRARIES} 1 ${_THREAD})
|
||||
IF(UNIX AND ${USE_STATIC_MKL})
|
||||
# The thread library defines symbols required by the other MKL libraries so also add it last
|
||||
LIST(APPEND ${LIBRARIES} ${_THREAD})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(${USE_STATIC_MKL})
|
||||
IF(UNIX)
|
||||
list(TRANSFORM ${LIBRARIES} PREPEND "lib")
|
||||
list(TRANSFORM ${LIBRARIES} APPEND ".a")
|
||||
ELSE()
|
||||
message(WARNING "Ignoring USE_STATIC_MKL")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
# Try linking multiple libs
|
||||
MACRO(CHECK_ALL_LIBRARIES LIBRARIES OPENMP_TYPE OPENMP_LIBRARY _name _list _flags)
|
||||
# This macro checks for the existence of the combination of libraries given by _list.
|
||||
|
|
@ -304,8 +324,9 @@ IF (NOT "${MKL_THREADING}" STREQUAL "SEQ")
|
|||
FOREACH(mkl64 ${mkl64s} "")
|
||||
FOREACH(mklthread ${mklthreads})
|
||||
IF (NOT MKL_LIBRARIES)
|
||||
GET_MKL_LIB_NAMES(mkl_lib_names "${mkliface}" "${mkl64}" THREAD "${mklthread}")
|
||||
CHECK_ALL_LIBRARIES(MKL_LIBRARIES MKL_OPENMP_TYPE MKL_OPENMP_LIBRARY cblas_sgemm
|
||||
"mkl_${mkliface}${mkl64};${mklthread};mkl_core;${mklrtl};${mkl_pthread};${mkl_m};${mkl_dl}" "")
|
||||
"${mkl_lib_names};${mklrtl};${mkl_pthread};${mkl_m};${mkl_dl}" "")
|
||||
ENDIF (NOT MKL_LIBRARIES)
|
||||
ENDFOREACH(mklthread)
|
||||
ENDFOREACH(mkl64)
|
||||
|
|
@ -317,8 +338,9 @@ ENDIF (NOT "${MKL_THREADING}" STREQUAL "SEQ")
|
|||
FOREACH(mkliface ${mklifaces})
|
||||
FOREACH(mkl64 ${mkl64s} "")
|
||||
IF (NOT MKL_LIBRARIES)
|
||||
GET_MKL_LIB_NAMES(mkl_lib_names "${mkliface}" "${mkl64}" THREAD "mkl_sequential")
|
||||
CHECK_ALL_LIBRARIES(MKL_LIBRARIES MKL_OPENMP_TYPE MKL_OPENMP_LIBRARY cblas_sgemm
|
||||
"mkl_${mkliface}${mkl64};mkl_sequential;mkl_core;${mkl_m};${mkl_dl}" "")
|
||||
"${mkl_lib_names};${mkl_m};${mkl_dl}" "")
|
||||
IF (MKL_LIBRARIES)
|
||||
SET(mklseq "_sequential")
|
||||
ENDIF (MKL_LIBRARIES)
|
||||
|
|
@ -331,8 +353,9 @@ FOREACH(mklrtl ${mklrtls} "")
|
|||
FOREACH(mkliface ${mklifaces})
|
||||
FOREACH(mkl64 ${mkl64s} "")
|
||||
IF (NOT MKL_LIBRARIES)
|
||||
GET_MKL_LIB_NAMES(mkl_lib_names "${mkliface}" "${mkl64}" THREAD "${mklthread}")
|
||||
CHECK_ALL_LIBRARIES(MKL_LIBRARIES MKL_OPENMP_TYPE MKL_OPENMP_LIBRARY cblas_sgemm
|
||||
"mkl_${mkliface}${mkl64};${mklthread};mkl_core;${mklrtl};pthread;${mkl_m};${mkl_dl}" "")
|
||||
"${mkl_lib_names};${mklrtl};pthread;${mkl_m};${mkl_dl}" "")
|
||||
ENDIF (NOT MKL_LIBRARIES)
|
||||
ENDFOREACH(mkl64)
|
||||
ENDFOREACH(mkliface)
|
||||
|
|
@ -341,6 +364,9 @@ ENDFOREACH(mklrtl)
|
|||
# Check for older versions
|
||||
IF (NOT MKL_LIBRARIES)
|
||||
SET(MKL_VERSION 900)
|
||||
if (USE_STATIC_MKL)
|
||||
message(WARNING "Ignoring USE_STATIC_MKL")
|
||||
endif()
|
||||
CHECK_ALL_LIBRARIES(MKL_LIBRARIES MKL_OPENMP_TYPE MKL_OPENMP_LIBRARY cblas_sgemm
|
||||
"mkl;guide;pthread;m" "")
|
||||
ENDIF (NOT MKL_LIBRARIES)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user