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

5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. cmake_minimum_required(VERSION 3.14)
  2. project (GraphEngine[CXX])
  3. set(GE_CODE_DIR ${CMAKE_CURRENT_LIST_DIR})
  4. if (NOT BUILD_PATH)
  5. set(BUILD_PATH "${CMAKE_SOURCE_DIR}/build")
  6. endif()
  7. option(ENABLE_OPEN_SRC "Enable graphengine compile in opensource." FALSE)
  8. if (ENABLE_OPEN_SRC)
  9. set(HI_PYTHON python3.7)
  10. include(cmake/external_libs/protobuf_shared.cmake)
  11. include(cmake/external_libs/protoc.cmake)
  12. include(cmake/external_libs/gflags.cmake)
  13. include(cmake/external_libs/securec.cmake)
  14. include(cmake/external_libs/json.cmake)
  15. include(cmake/FindModule.cmake)
  16. include(cmake/intf_pub_linux.cmake)
  17. # for CPU/GPU mode, find c_sec and slog from local prebuild
  18. if(NOT ENABLE_D AND NOT GE_ONLY)
  19. set(GE_PREBUILD_PATH ${GE_CODE_DIR}/third_party/prebuild/${CMAKE_HOST_SYSTEM_PROCESSOR})
  20. find_module(slog libslog.so ${GE_PREBUILD_PATH})
  21. # if D_LINK_PATH is set in environment variables, search libraries in given path
  22. elseif(DEFINED ENV{D_LINK_PATH})
  23. # D_LINK_PATH is set
  24. set(GE_LIB_PATH $ENV{D_LINK_PATH})
  25. set(GE_SYS_ARCH "")
  26. if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")
  27. # x86 ubuntu
  28. set(GE_SYS_ARCH "x86_64")
  29. elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
  30. # arm euleros
  31. set(GE_SYS_ARCH "aarch64")
  32. else()
  33. message(FATAL_ERROR "Running on a unsupported architecture: ${SYSTEM_TYPE}, build terminated")
  34. endif()
  35. set(GE_LIB_PATH ${GE_LIB_PATH}/${GE_SYS_ARCH})
  36. find_module(slog libslog.so ${GE_LIB_PATH})
  37. find_module(mmpa libmmpa.so ${GE_LIB_PATH})
  38. find_module(msprof libmsprof.so ${GE_LIB_PATH})
  39. find_module(hccl libhccl.so ${GE_LIB_PATH})
  40. find_module(adump_server libadump_server.a ${GE_LIB_PATH})
  41. find_module(runtime libruntime.so ${GE_LIB_PATH})
  42. find_module(runtime_compile libruntime_compile.so ${GE_LIB_PATH})
  43. find_module(resource libresource.so ${GE_LIB_PATH})
  44. find_module(error_manager liberror_manager.so ${GE_LIB_PATH})
  45. find_module(ascend_hal_stub libascend_hal.so ${GE_LIB_PATH})
  46. else()
  47. if(DEFINED ENV{ASCEND_CUSTOM_PATH})
  48. set(ASCEND_DIR $ENV{ASCEND_CUSTOM_PATH})
  49. else()
  50. set(ASCEND_DIR /usr/local/Ascend)
  51. endif()
  52. set(ASCEND_DRIVER_DIR ${ASCEND_DIR}/driver/lib64)
  53. set(ASCEND_DRIVER_COMMON_DIR ${ASCEND_DIR}/driver/lib64/common)
  54. set(ASCEND_RUNTIME_DIR ${ASCEND_DIR}/fwkacllib/lib64)
  55. set(ASCEND_ATC_DIR ${ASCEND_DIR}/atc/lib64)
  56. find_module(slog libslog.so ${ASCEND_DRIVER_DIR})
  57. find_module(mmpa libmmpa.so ${ASCEND_DRIVER_DIR})
  58. find_module(msprof libmsprof.so ${ASCEND_DRIVER_DIR})
  59. find_module(hccl libhccl.so ${ASCEND_RUNTIME_DIR})
  60. find_module(adump_server libadump_server.a ${ASCEND_RUNTIME_DIR})
  61. find_module(runtime libruntime.so ${ASCEND_RUNTIME_DIR})
  62. find_module(runtime_compile libruntime_compile.so ${ASCEND_ATC_DIR})
  63. find_module(resource libresource.so ${ASCEND_RUNTIME_DIR})
  64. find_module(error_manager liberror_manager.so ${ASCEND_RUNTIME_DIR})
  65. find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR})
  66. endif()
  67. set(METADEF_DIR ${CMAKE_CURRENT_LIST_DIR}/metadef)
  68. set(PARSER_DIR ${CMAKE_CURRENT_LIST_DIR}/parser)
  69. set(GE_DEPEND_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
  70. add_subdirectory(metadef)
  71. add_subdirectory(parser)
  72. #add_subdirectory(metadef/graph)
  73. #add_subdirectory(metadef/register)
  74. else()
  75. set(METADEF_DIR ${CMAKE_CURRENT_LIST_DIR}/../metadef)
  76. set(PARSER_DIR ${CMAKE_CURRENT_LIST_DIR}/../parser)
  77. set(GE_DEPEND_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
  78. endif()
  79. add_subdirectory(ge)

图引擎模块(GE)是MindSpore的一个子模块,其代码由C++实现,位于前端模块ME和底层硬件之间,起到承接作用。图引擎模块以ME下发的图作为输入,然后进行一系列的深度图优化操作,最后输出一张可以在底层硬件上高效运行的图。GE针对昇腾AI处理器的硬件结构特点,做了特定的优化工作,以此来充分发挥出昇腾AI处理器的强大算力。在进行模型训练/推理时,GE会被自动调用而用户并不感知。GE主要由GE API和GE Core两部分组成,详细的架构图如下所示