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

feat(cmake/windows/xp/sp2/inference): implement inference on windows xp (os vesion >= sp2) build with cmake * cmake build support(xp sp2): (dbg)EXTRA_CMAKE_ARGS="-DMGE_DEPLOY_INFERENCE_ON_WINDOWS_XP_SP2=ON" ./scripts/cmake-build/host_build.sh -m -d (opt)EXTRA_CMAKE_ARGS="-DMGE_DEPLOY_INFERENCE_ON_WINDOWS_XP_SP2=ON" ./scripts/cmake-build/host_build.sh -m * cmake build support(xp sp3): (dbg)EXTRA_CMAKE_ARGS="-DMGE_DEPLOY_INFERENCE_ON_WINDOWS_XP=ON" ./scripts/cmake-build/host_build.sh -m -d (opt)EXTRA_CMAKE_ARGS="-DMGE_DEPLOY_INFERENCE_ON_WINDOWS_XP=ON" ./scripts/cmake-build/host_build.sh -m * internal behavior: will define MGB_HAVE_THREAD=0 when enable -DMGE_DEPLOY_INFERENCE_ON_WINDOWS_XP_SP2=ON * refer to https://docs.microsoft.com/en-us/cpp/build/configuring-programs-for-windows-xp?view=msvc-160 xp sp2(x86) do not support vc runtime fully, casused by KERNEL32.dll do not implement some base apis for c++ std function, for example, std::mutex/std::thread/std::condition_variable as a workround, we will disable some MegEngine features on xp sp2 env, for exampe, multi-thread etc! * about DNN_MUTEX/MGB_MUTEX/LITE_MUTEX, if your code will build in inference code (even CPU backends), please replace std::mutex to DNN_MUTEX/MGB_MUTEX, * about multi-thread, if you code need multi-thread support, please enable it when MGB_HAVE_THREAD=1 * about test build env status 1: Visual Studio 2019(MSVC version <= 14.26.28801)---- pass 2: Visual Studio 2019(MSVC version > 14.26.28801) ---- failed caused by this 'new' version will put VCR depends on win7 KERNEL32.DLL, this may be fixed at Visual Studio 2019 later version but we do not test at this MR merge point 3: Visual Studio 2017 ---------- pass 4: Visual Studio 2014 ---------- pass GitOrigin-RevId: ea6e1f8b4fea9aa03594e3af8d59708b4cdf7bdc
3 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. ${PROJECT_SOURCE_DIR}/third_party/mkl/x86_32
  8. $ENV{MKLDIR}
  9. /opt/intel/mkl/*/
  10. /opt/intel/cmkl/*/
  11. /Library/Frameworks/Intel_MKL.framework/Versions/Current/lib/universal
  12. )
  13. if(${MKL_ROOT_DIR} STREQUAL "MKL_ROOT_DIR-NOTFOUND")
  14. message(FATAL_ERROR "Can not find MKL")
  15. endif()
  16. message(STATUS "Build with MKL in ${MKL_ROOT_DIR}")
  17. find_path(MKL_INCLUDE_DIR
  18. mkl_cblas.h
  19. PATHS
  20. ${MKL_ROOT_DIR}/include
  21. ${INCLUDE_INSTALL_DIR}
  22. )
  23. option(MGE_MKL_USE_STATIC "Build MegEngine with static MKL" ON)
  24. if(MGE_MKL_USE_STATIC)
  25. find_library(MKL_CORE_LIBRARY
  26. NAMES libmkl_core.a mkl_core.lib
  27. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  28. find_library(MKL_SEQUENTIAL_LIBRARY
  29. NAMES libmkl_sequential.a mkl_sequential.lib
  30. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  31. if(${MGE_ARCH} STREQUAL "x86_64")
  32. find_library(MKL_IPL_LIBRARY
  33. NAMES libmkl_intel_ilp64.a mkl_intel_ilp64.lib
  34. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  35. elseif(${MGE_ARCH} STREQUAL "i386")
  36. find_library(MKL_IPL_LIBRARY
  37. NAMES libmkl_intel_32.a mkl_intel_32.lib mkl_intel_c.lib
  38. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  39. endif()
  40. add_library(libmkl INTERFACE IMPORTED)
  41. if(UNIX AND NOT APPLE)
  42. target_link_libraries(libmkl INTERFACE -Wl,--start-group ${MKL_CORE_LIBRARY} ${MKL_SEQUENTIAL_LIBRARY} ${MKL_IPL_LIBRARY} -Wl,--end-group)
  43. else()
  44. target_link_libraries(libmkl INTERFACE ${MKL_CORE_LIBRARY} ${MKL_SEQUENTIAL_LIBRARY} ${MKL_IPL_LIBRARY})
  45. endif()
  46. target_include_directories(libmkl INTERFACE ${MKL_INCLUDE_DIR})
  47. else()
  48. find_library(MKL_CORE_LIBRARY
  49. NAMES libmkl_core.so libmkl_core.dylib
  50. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  51. find_library(MKL_SEQUENTIAL_LIBRARY
  52. NAMES libmkl_sequential.so libmkl_sequential.dylib
  53. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  54. if(${MGE_ARCH} STREQUAL "x86_64")
  55. find_library(MKL_IPL_LIBRARY
  56. NAMES libmkl_intel_ilp64.so libmkl_intel_ilp64.dylib
  57. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  58. elseif(${MGE_ARCH} STREQUAL "x86_32")
  59. find_library(MKL_IPL_LIBRARY
  60. NAMES libmkl_intel_32.so libmkl_intel_32.dylib
  61. PATHS ${MKL_ROOT_DIR}/lib/${MKL_ARCH_DIR} ${MKL_ROOT_DIR}/lib/)
  62. endif()
  63. target_link_libraries(libmkl INTERFACE ${MKL_CORE_LIBRARY} ${MKL_SEQUENTIAL_LIBRARY} ${MKL_IPL_LIBRARY})
  64. target_include_directories(libmkl INTERFACE ${MKL_INCLUDE_DIR})
  65. endif()
  66. if(${MGE_ARCH} STREQUAL "x86_64")
  67. target_compile_definitions(libmkl INTERFACE -DMKL_ILP64)
  68. endif()

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