You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

mkl.cmake 3.1 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. find_path(
  2. MKL_ROOT_DIR include/mkl_cblas.h
  3. PATHS ${PROJECT_SOURCE_DIR}/third_party/mkl/${MGE_ARCH}
  4. ${PROJECT_SOURCE_DIR}/third_party/mkl/${MGE_ARCH}/Library
  5. ${PROJECT_SOURCE_DIR}/third_party/mkl/x86_32/Library
  6. ${PROJECT_SOURCE_DIR}/third_party/mkl/x86_32
  7. $ENV{MKLDIR}
  8. /opt/intel/mkl/*/
  9. /opt/intel/cmkl/*/
  10. /Library/Frameworks/Intel_MKL.framework/Versions/Current/lib/universal)
  11. if(${MKL_ROOT_DIR} STREQUAL "MKL_ROOT_DIR-NOTFOUND")
  12. message(FATAL_ERROR "Can not find MKL")
  13. endif()
  14. message(STATUS "Build with MKL in ${MKL_ROOT_DIR}")
  15. find_path(MKL_INCLUDE_DIR mkl_cblas.h PATHS ${MKL_ROOT_DIR}/include
  16. ${INCLUDE_INSTALL_DIR})
  17. option(MGE_MKL_USE_STATIC "Build MegEngine with static MKL" ON)
  18. if(MGE_MKL_USE_STATIC)
  19. find_library(
  20. MKL_CORE_LIBRARY
  21. NAMES libmkl_core.a mkl_core.lib
  22. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  23. find_library(
  24. MKL_SEQUENTIAL_LIBRARY
  25. NAMES libmkl_sequential.a mkl_sequential.lib
  26. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  27. if(${MGE_ARCH} STREQUAL "x86_64")
  28. find_library(
  29. MKL_IPL_LIBRARY
  30. NAMES libmkl_intel_ilp64.a mkl_intel_ilp64.lib
  31. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  32. elseif(${MGE_ARCH} STREQUAL "i386")
  33. find_library(
  34. MKL_IPL_LIBRARY
  35. NAMES libmkl_intel_32.a mkl_intel_32.lib mkl_intel_c.lib
  36. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  37. endif()
  38. add_library(libmkl INTERFACE IMPORTED)
  39. if(UNIX AND NOT APPLE)
  40. target_link_libraries(
  41. libmkl INTERFACE -Wl,--start-group ${MKL_CORE_LIBRARY} ${MKL_SEQUENTIAL_LIBRARY}
  42. ${MKL_IPL_LIBRARY} -Wl,--end-group)
  43. else()
  44. target_link_libraries(libmkl INTERFACE ${MKL_CORE_LIBRARY}
  45. ${MKL_SEQUENTIAL_LIBRARY} ${MKL_IPL_LIBRARY})
  46. endif()
  47. target_include_directories(libmkl INTERFACE ${MKL_INCLUDE_DIR})
  48. else()
  49. find_library(
  50. MKL_CORE_LIBRARY
  51. NAMES libmkl_core.so libmkl_core.dylib
  52. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  53. find_library(
  54. MKL_SEQUENTIAL_LIBRARY
  55. NAMES libmkl_sequential.so libmkl_sequential.dylib
  56. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  57. if(${MGE_ARCH} STREQUAL "x86_64")
  58. find_library(
  59. MKL_IPL_LIBRARY
  60. NAMES libmkl_intel_ilp64.so libmkl_intel_ilp64.dylib
  61. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  62. elseif(${MGE_ARCH} STREQUAL "x86_32")
  63. find_library(
  64. MKL_IPL_LIBRARY
  65. NAMES libmkl_intel_32.so libmkl_intel_32.dylib
  66. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  67. endif()
  68. target_link_libraries(libmkl INTERFACE ${MKL_CORE_LIBRARY} ${MKL_SEQUENTIAL_LIBRARY}
  69. ${MKL_IPL_LIBRARY})
  70. target_include_directories(libmkl INTERFACE ${MKL_INCLUDE_DIR})
  71. endif()
  72. if(${MGE_ARCH} STREQUAL "x86_64")
  73. target_compile_definitions(libmkl INTERFACE -DMKL_ILP64)
  74. endif()