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

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
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. cmake_minimum_required(VERSION 3.14)
  2. project (GraphEngine[CXX])
  3. set(GE_CODE_DIR ${CMAKE_CURRENT_LIST_DIR})
  4. set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY TRUE)
  5. if (NOT BUILD_PATH)
  6. set(BUILD_PATH "${CMAKE_SOURCE_DIR}/build")
  7. endif()
  8. if(DEFINED ENV{ASCEND_CUSTOM_PATH})
  9. set(ASCEND_DIR $ENV{ASCEND_CUSTOM_PATH})
  10. else()
  11. set(ASCEND_DIR /usr/local/Ascend)
  12. endif()
  13. if(DEFINED ENV{D_PKG_SERVER})
  14. set(GE_PB_PKG $ENV{D_PKG_SERVER})
  15. message("Download packages from PKG server")
  16. endif()
  17. set(ASCEND_DRIVER_DIR ${ASCEND_DIR}/driver/lib64)
  18. set(ASCEND_DRIVER_COMMON_DIR ${ASCEND_DIR}/driver/lib64/common)
  19. set(ASCEND_DRIVER_SHARE_DIR ${ASCEND_DIR}/driver/lib64/share)
  20. set(ASCEND_RUNTIME_DIR ${ASCEND_DIR}/fwkacllib/lib64)
  21. set(ASCEND_ATC_DIR ${ASCEND_DIR}/atc/lib64)
  22. set(ASCEND_ACL_DIR ${ASCEND_DIR}/acllib/lib64)
  23. set(STATIC_ACL_LIB ${ASCEND_ACL_DIR})
  24. set(ASCEND_MS_RUNTIME_PATH ${ASCEND_RUNTIME_DIR} ${ASCEND_ACL_DIR} ${ASCEND_ATC_DIR})
  25. set(ASCEND_MS_DRIVER_PATH ${ASCEND_DRIVER_DIR} ${ASCEND_DRIVER_COMMON_DIR})
  26. set(ATLAS_RUNTIME_DIR ${ASCEND_DIR}/ascend-toolkit/latest/fwkacllib/lib64)
  27. set(ATLAS_ACL_DIR ${ASCEND_DIR}/ascend-toolkit/latest/acllib/lib64)
  28. set(ATLAS_ATC_DIR ${ASCEND_DIR}/ascend-toolkit/latest/atc/lib64)
  29. set(ATLAS_MS_RUNTIME_PATH ${ATLAS_RUNTIME_DIR} ${ATLAS_ACL_DIR} ${ATLAS_ATC_DIR})
  30. option(ENABLE_OPEN_SRC "Enable graphengine compile in opensource." FALSE)
  31. if (ENABLE_OPEN_SRC)
  32. set(HI_PYTHON python3.7)
  33. include(cmake/external_libs/protobuf_shared.cmake)
  34. include(cmake/external_libs/protobuf_static.cmake)
  35. include(cmake/external_libs/protoc.cmake)
  36. include(cmake/external_libs/gflags.cmake)
  37. include(cmake/external_libs/gtest.cmake)
  38. include(cmake/external_libs/securec.cmake)
  39. include(cmake/external_libs/json.cmake)
  40. include(cmake/FindModule.cmake)
  41. include(cmake/intf_pub_linux.cmake)
  42. # for CPU/GPU mode, find c_sec and slog from local prebuild
  43. #if(NOT ENABLE_D AND NOT GE_ONLY)
  44. # set(GE_PREBUILD_PATH ${GE_CODE_DIR}/third_party/prebuild/${CMAKE_HOST_SYSTEM_PROCESSOR})
  45. # find_module(slog libslog.so ${GE_PREBUILD_PATH})
  46. # if D_LINK_PATH is set in environment variables, search libraries in given path
  47. if(DEFINED ENV{D_LINK_PATH})
  48. # D_LINK_PATH is set
  49. set(GE_LIB_PATH $ENV{D_LINK_PATH})
  50. set(GE_SYS_ARCH "")
  51. if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")
  52. # x86 ubuntu
  53. set(GE_SYS_ARCH "x86_64")
  54. elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
  55. # arm euleros
  56. set(GE_SYS_ARCH "aarch64")
  57. else()
  58. message(FATAL_ERROR "Running on a unsupported architecture: ${SYSTEM_TYPE}, build terminated")
  59. endif()
  60. set(GE_LIB_PATH ${GE_LIB_PATH}/${GE_SYS_ARCH})
  61. set(STATIC_ACL_LIB ${GE_LIB_PATH})
  62. find_module(slog libslog.so ${GE_LIB_PATH})
  63. find_module(static_mmpa libmmpa.a ${GE_LIB_PATH})
  64. find_module(msprof libmsprof.so ${GE_LIB_PATH})
  65. find_module(hccl libhccl.so ${GE_LIB_PATH})
  66. find_module(adump_server libadump_server.a ${GE_LIB_PATH})
  67. find_module(runtime libruntime.so ${GE_LIB_PATH})
  68. find_module(runtime_compile libruntime_compile.so ${GE_LIB_PATH})
  69. find_module(resource libresource.so ${GE_LIB_PATH})
  70. find_module(error_manager liberror_manager.so ${GE_LIB_PATH})
  71. find_module(ascend_hal_stub libascend_hal.so ${GE_LIB_PATH})
  72. find_module(error_manager_static liberror_manager.a ${GE_LIB_PATH})
  73. find_module(msprofiler libmsprofiler.a ${GE_LIB_PATH})
  74. #find_module(ascendcl_static libascendcl.a ${GE_LIB_PATH})
  75. else()
  76. find_module(slog libslog.so ${ASCEND_ATC_DIR})
  77. find_module(static_mmpa libmmpa.a ${ASCEND_ATC_DIR})
  78. find_module(error_manager liberror_manager.so ${ASCEND_ATC_DIR})
  79. if(PLATFORM STREQUAL "train")
  80. find_module(msprof libmsprof.so ${ASCEND_DRIVER_COMMON_DIR})
  81. find_module(hccl libhccl.so ${ASCEND_RUNTIME_DIR})
  82. find_module(adump_server libadump_server.a ${ASCEND_RUNTIME_DIR})
  83. find_module(runtime libruntime.so ${ASCEND_RUNTIME_DIR})
  84. find_module(resource libresource.so ${ASCEND_RUNTIME_DIR})
  85. find_module(error_manager liberror_manager.so ${ASCEND_RUNTIME_DIR})
  86. find_module(msprofiler libmsprofiler.a ${ASCEND_RUNTIME_DIR})
  87. find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR}/driver)
  88. if(PRODUCT STREQUAL "flr3")
  89. message(FATAL_ERROR "This platform is not supported in train mode, build terminated")
  90. endif()
  91. elseif(PLATFORM STREQUAL "inference")
  92. find_module(adump_server libadump_server.a ${ASCEND_ACL_DIR})
  93. find_module(runtime libruntime.so ${ASCEND_ACL_DIR})
  94. find_module(runtime_compile libruntime_compile.so ${ASCEND_ATC_DIR})
  95. find_module(resource libresource.so ${ASCEND_ATC_DIR})
  96. find_module(error_manager liberror_manager.so ${ASCEND_ATC_DIR})
  97. find_module(error_manager_static liberror_manager.a ${ASCEND_ACL_DIR})
  98. find_module(msprofiler libmsprofiler.a ${ASCEND_ACL_DIR})
  99. #find_module(ascendcl_static libascendcl.a ${ASCEND_ACL_DIR})
  100. if(PRODUCT STREQUAL "flr3")
  101. find_module(msprof libmsprof.so ${ASCEND_DRIVER_SHARE_DIR})
  102. elseif(PRODUCT STREQUAL "flr1")
  103. find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR}/driver)
  104. find_module(msprof libmsprof.so ${ASCEND_DRIVER_COMMON_DIR})
  105. elseif(PRODUCT STREQUAL "flr2")
  106. # flr2 ascend_hal_stub limsprof ?
  107. else()
  108. find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR})
  109. find_module(msprof libmsprof.so ${ASCEND_DRIVER_DIR})
  110. endif()
  111. elseif(PLATFORM STREQUAL "all")
  112. find_module(msprof libmsprof.so ${ASCEND_DRIVER_COMMON_DIR})
  113. find_module(hccl libhccl.so ${ASCEND_RUNTIME_DIR})
  114. find_module(adump_server libadump_server.a ${ASCEND_ACL_DIR})
  115. find_module(runtime libruntime.so ${ASCEND_ACL_DIR})
  116. find_module(runtime_compile libruntime_compile.so ${ASCEND_ATC_DIR})
  117. find_module(resource libresource.so ${ASCEND_ATC_DIR})
  118. find_module(error_manager liberror_manager.so ${ASCEND_ATC_DIR})
  119. find_module(error_manager_static liberror_manager.a ${ASCEND_ACL_DIR})
  120. find_module(msprofiler libmsprofiler.a ${ASCEND_ACL_DIR})
  121. find_module(ascend_hal_stub libascend_hal.so ${ASCEND_DRIVER_DIR}/driver)
  122. #find_module(ascendcl_static libascendcl.a ${ASCEND_ACL_DIR})
  123. else()
  124. message(STATUS "PLATFORM param is invalid, should be train or inference, you choose nothing!")
  125. endif()
  126. if (ENABLE_GE_COV OR ENABLE_GE_UT)
  127. add_subdirectory(tests)
  128. endif()
  129. endif()
  130. set(METADEF_DIR ${CMAKE_CURRENT_LIST_DIR}/metadef)
  131. set(PARSER_DIR ${CMAKE_CURRENT_LIST_DIR}/parser)
  132. set(GE_DEPEND_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
  133. add_subdirectory(metadef)
  134. add_subdirectory(parser)
  135. #add_subdirectory(metadef/graph)
  136. #add_subdirectory(metadef/register)
  137. elseif (ENABLE_D OR ENABLE_ACL)
  138. # compiling with MindSpore
  139. include(cmake/external_libs/protobuf_static.cmake)
  140. include(cmake/external_libs/protoc.cmake)
  141. include(cmake/external_libs/securec.cmake)
  142. include(cmake/external_libs/json.cmake)
  143. include(cmake/FindModule.cmake)
  144. include(cmake/intf_pub_linux.cmake)
  145. # common libraries
  146. find_module(slog libslog.so ${ASCEND_MS_DRIVER_PATH})
  147. find_module(error_manager liberror_manager.so ${ASCEND_MS_RUNTIME_PATH} ${ATLAS_MS_RUNTIME_PATH})
  148. find_module(static_mmpa libmmpa.a ${ASCEND_MS_RUNTIME_PATH} ${ATLAS_MS_RUNTIME_PATH})
  149. if (ENABLE_D)
  150. # training
  151. find_module(runtime libruntime.so ${ASCEND_MS_RUNTIME_PATH} ${ATLAS_MS_RUNTIME_PATH})
  152. find_module(register libregister.so ${ASCEND_MS_RUNTIME_PATH} ${ATLAS_MS_RUNTIME_PATH})
  153. endif ()
  154. set(METADEF_DIR ${CMAKE_CURRENT_LIST_DIR}/metadef)
  155. add_subdirectory(metadef)
  156. elseif(ENABLE_MS_TESTCASES)
  157. include(cmake/external_libs/protobuf_static.cmake)
  158. include(cmake/external_libs/protoc.cmake)
  159. include(cmake/external_libs/securec.cmake)
  160. include(cmake/FindModule.cmake)
  161. include(cmake/intf_pub_linux.cmake)
  162. # common libraries
  163. find_module(slog libslog.so ${ASCEND_MS_DRIVER_PATH})
  164. find_module(error_manager liberror_manager.so ${ASCEND_MS_RUNTIME_PATH} ${ATLAS_MS_RUNTIME_PATH})
  165. find_module(static_mmpa libmmpa.a ${ASCEND_MS_RUNTIME_PATH} ${ATLAS_MS_RUNTIME_PATH})
  166. set(METADEF_DIR ${CMAKE_CURRENT_LIST_DIR}/metadef)
  167. add_subdirectory(metadef)
  168. else()
  169. set(METADEF_DIR ${CMAKE_CURRENT_LIST_DIR}/../metadef)
  170. set(PARSER_DIR ${CMAKE_CURRENT_LIST_DIR}/../parser)
  171. set(GE_DEPEND_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
  172. endif()
  173. add_subdirectory(ge)

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