mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 00:21:07 +01:00
Summary:
Fixes https://github.com/pytorch/pytorch/issues/45838
`ARCH_OPT_FLAGS` was the old name of `MKLDNN_ARCH_OPT_FLAGS`, which has been renamed in [this commit](2a011ff02e (diff-a0abcbf647ed740b80615fb5b1614a44L97)), but not updated in pytorch.
As its default value will be set to sse4.1, some kernels are going to fail on the legacy arch that does not support SSE4.1. This patch was to make this flag effective.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/46082
Reviewed By: glaringlee
Differential Revision: D24252149
Pulled By: agolynski
fbshipit-source-id: 7079deed373d664763c5888feb28795e5235caa8
96 lines
3.5 KiB
CMake
96 lines
3.5 KiB
CMake
# - Try to find MKLDNN
|
|
#
|
|
# The following variables are optionally searched for defaults
|
|
# MKL_FOUND : set to true if a library implementing the CBLAS interface is found
|
|
#
|
|
# The following are set after configuration is done:
|
|
# MKLDNN_FOUND : set to true if mkl-dnn is found.
|
|
# MKLDNN_INCLUDE_DIR : path to mkl-dnn include dir.
|
|
# MKLDNN_LIBRARIES : list of libraries for mkl-dnn
|
|
#
|
|
# The following variables are used:
|
|
# MKLDNN_USE_NATIVE_ARCH : Whether native CPU instructions should be used in MKLDNN. This should be turned off for
|
|
# general packaging to avoid incompatible CPU instructions. Default: OFF.
|
|
|
|
IF (NOT MKLDNN_FOUND)
|
|
|
|
SET(MKLDNN_LIBRARIES)
|
|
SET(MKLDNN_INCLUDE_DIR)
|
|
|
|
SET(IDEEP_ROOT "${PROJECT_SOURCE_DIR}/third_party/ideep")
|
|
SET(MKLDNN_ROOT "${IDEEP_ROOT}/mkl-dnn")
|
|
|
|
FIND_PACKAGE(BLAS)
|
|
FIND_PATH(IDEEP_INCLUDE_DIR ideep.hpp PATHS ${IDEEP_ROOT} PATH_SUFFIXES include)
|
|
FIND_PATH(MKLDNN_INCLUDE_DIR mkldnn.hpp mkldnn.h PATHS ${MKLDNN_ROOT} PATH_SUFFIXES include)
|
|
IF (NOT MKLDNN_INCLUDE_DIR)
|
|
EXECUTE_PROCESS(COMMAND git${CMAKE_EXECUTABLE_SUFFIX} submodule update --init mkl-dnn WORKING_DIRECTORY ${IDEEP_ROOT})
|
|
FIND_PATH(MKLDNN_INCLUDE_DIR mkldnn.hpp mkldnn.h PATHS ${MKLDNN_ROOT} PATH_SUFFIXES include)
|
|
ENDIF(NOT MKLDNN_INCLUDE_DIR)
|
|
|
|
IF (NOT IDEEP_INCLUDE_DIR OR NOT MKLDNN_INCLUDE_DIR)
|
|
MESSAGE(STATUS "MKLDNN source files not found!")
|
|
RETURN()
|
|
ENDIF(NOT IDEEP_INCLUDE_DIR OR NOT MKLDNN_INCLUDE_DIR)
|
|
LIST(APPEND MKLDNN_INCLUDE_DIR ${IDEEP_INCLUDE_DIR})
|
|
IF(MKL_FOUND)
|
|
ADD_DEFINITIONS(-DIDEEP_USE_MKL)
|
|
# Append to mkldnn dependencies
|
|
LIST(APPEND MKLDNN_LIBRARIES ${MKL_LIBRARIES})
|
|
LIST(APPEND MKLDNN_INCLUDE_DIR ${MKL_INCLUDE_DIR})
|
|
ELSE(MKL_FOUND)
|
|
SET(MKLDNN_USE_MKL "NONE" CACHE STRING "" FORCE)
|
|
ENDIF(MKL_FOUND)
|
|
|
|
SET(MKL_cmake_included TRUE)
|
|
IF (NOT MKLDNN_CPU_RUNTIME)
|
|
SET(MKLDNN_CPU_RUNTIME "OMP" CACHE STRING "")
|
|
ELSEIF (MKLDNN_CPU_RUNTIME STREQUAL "TBB")
|
|
IF (USE_TBB)
|
|
MESSAGE(STATUS "MKL-DNN is using TBB")
|
|
|
|
SET(TBB_cmake_included TRUE)
|
|
SET(Threading_cmake_included TRUE)
|
|
|
|
SET(DNNL_CPU_THREADING_RUNTIME ${MKLDNN_CPU_RUNTIME})
|
|
SET(TBB_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/third_party/tbb/include")
|
|
INCLUDE_DIRECTORIES(${TBB_INCLUDE_DIRS})
|
|
LIST(APPEND EXTRA_SHARED_LIBS tbb)
|
|
ELSE()
|
|
MESSAGE(FATAL_ERROR "MKLDNN_CPU_RUNTIME is set to TBB but TBB is not used")
|
|
ENDIF()
|
|
ENDIF()
|
|
MESSAGE(STATUS "MKLDNN_CPU_RUNTIME = ${MKLDNN_CPU_RUNTIME}")
|
|
|
|
SET(MKLDNN_BUILD_TESTS FALSE CACHE BOOL "" FORCE)
|
|
SET(MKLDNN_BUILD_EXAMPLES FALSE CACHE BOOL "" FORCE)
|
|
SET(MKLDNN_LIBRARY_TYPE STATIC CACHE STRING "" FORCE)
|
|
SET(DNNL_ENABLE_PRIMITIVE_CACHE TRUE CACHE BOOL "" FORCE)
|
|
IF(MKLDNN_USE_NATIVE_ARCH) # Disable HostOpts in MKLDNN unless MKLDNN_USE_NATIVE_ARCH is set.
|
|
SET(MKLDNN_ARCH_OPT_FLAGS "HostOpts" CACHE STRING "" FORCE)
|
|
ELSE()
|
|
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
SET(MKLDNN_ARCH_OPT_FLAGS "-msse4" CACHE STRING "" FORCE)
|
|
ELSE()
|
|
SET(MKLDNN_ARCH_OPT_FLAGS "" CACHE STRING "" FORCE)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
ADD_SUBDIRECTORY(${MKLDNN_ROOT})
|
|
IF(NOT TARGET dnnl)
|
|
MESSAGE("Failed to include MKL-DNN target")
|
|
RETURN()
|
|
ENDIF(NOT TARGET dnnl)
|
|
|
|
IF(NOT APPLE AND CMAKE_COMPILER_IS_GNUCC)
|
|
TARGET_COMPILE_OPTIONS(dnnl PRIVATE -Wno-maybe-uninitialized)
|
|
TARGET_COMPILE_OPTIONS(dnnl PRIVATE -Wno-strict-overflow)
|
|
TARGET_COMPILE_OPTIONS(dnnl PRIVATE -Wno-error=strict-overflow)
|
|
ENDIF(NOT APPLE AND CMAKE_COMPILER_IS_GNUCC)
|
|
LIST(APPEND MKLDNN_LIBRARIES dnnl)
|
|
|
|
SET(MKLDNN_FOUND TRUE)
|
|
MESSAGE(STATUS "Found MKL-DNN: TRUE")
|
|
|
|
ENDIF(NOT MKLDNN_FOUND)
|