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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. if(APPLE)
  39. target_link_libraries(libmkl INTERFACE ${MKL_CORE_LIBRARY} ${MKL_SEQUENTIAL_LIBRARY} ${MKL_IPL_LIBRARY})
  40. else()
  41. target_link_libraries(libmkl INTERFACE -Wl,--start-group ${MKL_CORE_LIBRARY} ${MKL_SEQUENTIAL_LIBRARY} ${MKL_IPL_LIBRARY} -Wl,--end-group)
  42. endif()
  43. target_include_directories(libmkl INTERFACE ${MKL_INCLUDE_DIR})
  44. else()
  45. find_library(MKL_CORE_LIBRARY
  46. NAMES libmkl_core.so libmkl_core.dylib
  47. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  48. find_library(MKL_SEQUENTIAL_LIBRARY
  49. NAMES libmkl_sequential.so libmkl_sequential.dylib
  50. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  51. if(${MGE_ARCH} STREQUAL "x86_64")
  52. find_library(MKL_IPL_LIBRARY
  53. NAMES libmkl_intel_ilp64.so libmkl_intel_ilp64.dylib
  54. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  55. elseif(${MGE_ARCH} STREQUAL "x86_32")
  56. find_library(MKL_IPL_LIBRARY
  57. NAMES libmkl_intel_32.so libmkl_intel_32.dylib
  58. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  59. endif()
  60. target_link_libraries(libmkl INTERFACE ${MKL_CORE_LIBRARY} ${MKL_SEQUENTIAL_LIBRARY} ${MKL_IPL_LIBRARY})
  61. target_include_directories(libmkl INTERFACE ${MKL_INCLUDE_DIR})
  62. endif()
  63. if(${MGE_ARCH} STREQUAL "x86_64")
  64. target_compile_definitions(libmkl INTERFACE -DMKL_ILP64)
  65. endif()

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