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.

CMakeLists.txt 2.9 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. set(LIBMEGDNN_DEF)
  2. file(GLOB_RECURSE SOURCES common/*.cpp naive/*.cpp)
  3. # Build configure
  4. list(APPEND SOURCES ${PROJECT_BINARY_DIR}/genfiles/megbrain_build_config.h)
  5. if(NOT ${MGE_ARCH} STREQUAL "naive")
  6. file(GLOB_RECURSE SOURCES_ fallback/*.cpp)
  7. list(APPEND SOURCES ${SOURCES_})
  8. if(${MGE_ARCH} STREQUAL "fallback")
  9. message(WARNING "build only with fallback")
  10. elseif(${MGE_ARCH} STREQUAL "x86_64" OR ${MGE_ARCH} STREQUAL "i386")
  11. file(GLOB_RECURSE SOURCES_ x86/*.cpp)
  12. list(APPEND SOURCES ${SOURCES_})
  13. if(NOT MSVC)
  14. file(GLOB_RECURSE SOURCES_ x86/*.S)
  15. set_source_files_properties(${SOURCES_} PROPERTIES LANGUAGE C)
  16. list(APPEND SOURCES ${SOURCES_})
  17. endif()
  18. elseif(${MGE_ARCH} STREQUAL "armv7")
  19. file(GLOB_RECURSE SOURCES_ armv7/*.cpp)
  20. list(APPEND SOURCES ${SOURCES_})
  21. file(GLOB_RECURSE SOURCES_ arm_common/*.cpp)
  22. list(APPEND SOURCES ${SOURCES_})
  23. file(GLOB_RECURSE SOURCES_ armv7/*.S)
  24. set_source_files_properties(${SOURCES_} PROPERTIES LANGUAGE C)
  25. list(APPEND SOURCES ${SOURCES_})
  26. elseif(${MGE_ARCH} STREQUAL "aarch64")
  27. file(GLOB_RECURSE SOURCES_ aarch64/*.cpp)
  28. list(APPEND SOURCES ${SOURCES_})
  29. file(GLOB_RECURSE SOURCES_ arm_common/*.cpp)
  30. list(APPEND SOURCES ${SOURCES_})
  31. file(GLOB_RECURSE SOURCES_ aarch64/*.S)
  32. set_source_files_properties(${SOURCES_} PROPERTIES LANGUAGE C)
  33. list(APPEND SOURCES ${SOURCES_})
  34. endif()
  35. endif()
  36. if(MGE_WITH_CUDA)
  37. file(GLOB_RECURSE SOURCES_ cuda/*.cpp)
  38. list(APPEND SOURCES ${SOURCES_})
  39. file(GLOB_RECURSE CUSOURCES cuda/*.cu)
  40. list(APPEND SOURCES ${CUSOURCES})
  41. endif()
  42. add_definitions(${LIBMEGDNN_DEF})
  43. add_library(megdnn EXCLUDE_FROM_ALL STATIC ${SOURCES})
  44. target_link_libraries(megdnn opr_param_defs)
  45. target_include_directories(megdnn PUBLIC ${PROJECT_BINARY_DIR}/genfiles ${PROJECT_SOURCE_DIR}/dnn/include)
  46. target_include_directories(megdnn PRIVATE ${PROJECT_SOURCE_DIR}/dnn ${PROJECT_SOURCE_DIR}/third_party/midout/src)
  47. install(DIRECTORY ${PROJECT_SOURCE_DIR}/dnn/include DESTINATION . FILES_MATCHING PATTERN "*.h*")
  48. if(CXX_SUPPORT_WCLASS_MEMACCESS)
  49. if(MGE_WITH_CUDA)
  50. target_compile_options(megdnn PRIVATE "$<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=-Wno-class-memaccess>"
  51. "$<$<NOT:$<COMPILE_LANGUAGE:CUDA>>:-Wno-class-memaccess>")
  52. else()
  53. target_compile_options(megdnn PRIVATE "-Wno-class-memaccess")
  54. endif()
  55. endif()
  56. target_compile_definitions(megdnn INTERFACE ${LIBMEGDNN_DEF})
  57. if(MGE_WITH_MKLDNN AND ${MGE_ARCH} STREQUAL "x86_64")
  58. target_link_libraries(megdnn libmkl_dnn)
  59. endif()
  60. target_link_libraries(megdnn ${MGE_CUDA_LIBS})
  61. target_link_libraries(megdnn ${MGE_BLAS_LIBS})
  62. if(CMAKE_THREAD_LIBS_INIT)
  63. target_link_libraries(megdnn Threads::Threads)
  64. endif()

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