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 2.7 kB

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

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