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.0 kB

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

MegEngine 安装包中集成了使用 GPU 运行代码所需的 CUDA 环境,不用区分 CPU 和 GPU 版。 如果想要运行 GPU 程序,请确保机器本身配有 GPU 硬件设备并安装好驱动。 如果你想体验在云端 GPU 算力平台进行深度学习开发的感觉,欢迎访问 MegStudio 平台