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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. set(PROTO_LIST
  2. "${METADEF_DIR}/proto/om.proto"
  3. "${METADEF_DIR}/proto/ge_ir.proto"
  4. "${METADEF_DIR}/proto/insert_op.proto"
  5. "${METADEF_DIR}/proto/task.proto"
  6. "${METADEF_DIR}/proto/dump_task.proto"
  7. "${METADEF_DIR}/proto/fwk_adapter.proto"
  8. "${METADEF_DIR}/proto/op_mapping_info.proto"
  9. "${METADEF_DIR}/proto/proto_inner/ge_onnx.proto"
  10. )
  11. protobuf_generate(ge PROTO_SRCS PROTO_HDRS ${PROTO_LIST})
  12. set(SRC_LIST
  13. "anchor.cc"
  14. "ge_attr_value.cc"
  15. "attr_value.cc"
  16. "buffer.cc"
  17. "compute_graph.cc"
  18. "ascend_string.cc"
  19. "gnode.cc"
  20. "graph.cc"
  21. "inference_context.cc"
  22. "shape_refiner.cc"
  23. "format_refiner.cc"
  24. "ref_relation.cc"
  25. "model.cc"
  26. "model_serialize.cc"
  27. "node.cc"
  28. "op_desc.cc"
  29. "operator.cc"
  30. "operator_factory.cc"
  31. "operator_factory_impl.cc"
  32. "ge_attr_define.cc"
  33. "ge_tensor.cc"
  34. "detail/attributes_holder.cc"
  35. "utils/anchor_utils.cc"
  36. "utils/tuning_utils.cc"
  37. "utils/graph_utils.cc"
  38. "utils/ge_ir_utils.cc"
  39. "utils/node_utils.cc"
  40. "utils/op_desc_utils.cc"
  41. "utils/type_utils.cc"
  42. "utils/tensor_utils.cc"
  43. "tensor.cc"
  44. "debug/graph_debug.cc"
  45. "opsproto/opsproto_manager.cc"
  46. "../ops/op_imp.cpp"
  47. "option/ge_context.cc"
  48. "option/ge_local_context.cc"
  49. "runtime_inference_context.cc"
  50. "${METADEF_DIR}/third_party/transformer/src/axis_util.cpp"
  51. "${METADEF_DIR}/third_party/transformer/src/transfer_shape_according_to_format.cpp"
  52. "utils/transformer_utils.cc"
  53. )
  54. if (NOT ENABLE_D AND NOT ENABLE_ACL AND NOT ENABLE_MS_TESTCASES)
  55. ######### libgraph.so #############
  56. add_library(graph SHARED ${SRC_LIST} ${PROTO_SRCS})
  57. target_compile_options(graph PRIVATE
  58. -O2
  59. $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions>
  60. $<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>: -Wno-deprecated-declarations>
  61. )
  62. target_compile_definitions(graph PRIVATE
  63. $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:FMK_SUPPORT_DUMP>
  64. google=ascend_private
  65. $<$<STREQUAL:${ENABLE_OPEN_SRC},True>:ONLY_COMPILE_OPEN_SRC>
  66. )
  67. target_include_directories(graph PRIVATE
  68. ${CMAKE_CURRENT_LIST_DIR}
  69. ${CMAKE_BINARY_DIR}
  70. ${CMAKE_BINARY_DIR}/proto/ge
  71. ${CMAKE_BINARY_DIR}/proto/ge/proto
  72. ${METADEF_DIR}
  73. ${METADEF_DIR}/graph
  74. ${METADEF_DIR}/inc
  75. ${METADEF_DIR}/inc/graph
  76. ${METADEF_DIR}/inc/external
  77. ${METADEF_DIR}/inc/external/graph
  78. #### yellow zone ####
  79. ${METADEF_DIR}/../inc
  80. ${METADEF_DIR}/../ops/built-in/op_proto/inc
  81. ${METADEF_DIR}/../cann/ops/built-in/op_proto/inc
  82. ${METADEF_DIR}/../libc_sec/include
  83. #### temp independent ####
  84. ${METADEF_DIR}/../graphengine/inc
  85. ${METADEF_DIR}/../graphengine/inc/framework
  86. ${METADEF_DIR}/../graphengine/inc/external
  87. #### temp in ge ####
  88. ${METADEF_DIR}/../inc
  89. ${METADEF_DIR}/../inc/framework
  90. ${METADEF_DIR}/../inc/external
  91. ${METADEF_DIR}/../../ops/built-in/op_proto/inc
  92. ${METADEF_DIR}/../../cann/ops/built-in/op_proto/inc
  93. #### temp in ge ####
  94. ${METADEF_DIR}/../../graphengine/inc
  95. ${METADEF_DIR}/../../graphengine/inc/framework
  96. ${METADEF_DIR}/../../graphengine/inc/external
  97. ${METADEF_DIR}/../../inc
  98. #### blue zone ####
  99. ${ASCEND_DIR}/driver/include
  100. ${ASCEND_DIR}/fwkacllib/include
  101. ${METADEF_DIR}/../third_party/fwkacllib/inc/ops
  102. ${METADEF_DIR}/../third_party/fwkacllib/inc
  103. #### blue independent compile #####
  104. ${METADEF_DIR}/third_party/graphengine/inc
  105. ${METADEF_DIR}/third_party/graphengine/ge/inc
  106. ${METADEF_DIR}/third_party/graphengine/inc/external
  107. ${METADEF_DIR}/third_party/fwkacllib/inc
  108. ${METADEF_DIR}/third_party/fwkacllib/inc/ops
  109. ${METADEF_DIR}/third_party
  110. ${METADEF_DIR}/third_party/transformer/inc
  111. )
  112. target_link_libraries(graph PRIVATE
  113. $<BUILD_INTERFACE:intf_pub>
  114. static_mmpa
  115. -Wl,--no-as-needed
  116. ascend_protobuf
  117. c_sec
  118. slog
  119. error_manager
  120. -Wl,--as-needed
  121. $<$<NOT:$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-lrt>
  122. -ldl
  123. )
  124. ######### libgraph.a #############
  125. add_library(graph_static STATIC ${SRC_LIST} ${PROTO_SRCS})
  126. target_compile_options(graph_static PRIVATE
  127. $<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC>
  128. $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions>
  129. $<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>: -Wno-deprecated-declarations>
  130. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd>
  131. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT>
  132. )
  133. target_compile_definitions(graph_static PRIVATE
  134. $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:FMK_SUPPORT_DUMP>
  135. google=ascend_private
  136. $<$<STREQUAL:${ENABLE_OPEN_SRC},True>:ONLY_COMPILE_OPEN_SRC>
  137. $<IF:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,OS_TYPE=WIN,OS_TYPE=0>
  138. $<$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>:SECUREC_USING_STD_SECURE_LIB=0 NOMINMAX>
  139. LOG_CPP
  140. )
  141. target_include_directories(graph_static PRIVATE
  142. ${CMAKE_CURRENT_LIST_DIR}
  143. ${CMAKE_BINARY_DIR}
  144. ${CMAKE_BINARY_DIR}/proto/ge
  145. ${CMAKE_BINARY_DIR}/proto/ge/proto
  146. ${METADEF_DIR}
  147. ${METADEF_DIR}/graph
  148. ${METADEF_DIR}/inc
  149. ${METADEF_DIR}/inc/graph
  150. ${METADEF_DIR}/inc/external
  151. ${METADEF_DIR}/inc/external/graph
  152. #### yellow zone ####
  153. ${METADEF_DIR}/../inc
  154. ${METADEF_DIR}/../ops/built-in/op_proto/inc
  155. ${METADEF_DIR}/../cann/ops/built-in/op_proto/inc
  156. ${METADEF_DIR}/../libc_sec/include
  157. #### temp independent ####
  158. ${METADEF_DIR}/../graphengine/inc
  159. ${METADEF_DIR}/../graphengine/inc/framework
  160. ${METADEF_DIR}/../graphengine/inc/external
  161. #### temp in ge ####
  162. ${METADEF_DIR}/../inc
  163. ${METADEF_DIR}/../inc/framework
  164. ${METADEF_DIR}/../inc/external
  165. ${METADEF_DIR}/../../ops/built-in/op_proto/inc
  166. ${METADEF_DIR}/../../cann/ops/built-in/op_proto/inc
  167. #### temp in ge ####
  168. ${METADEF_DIR}/../../graphengine/inc
  169. ${METADEF_DIR}/../../graphengine/inc/framework
  170. ${METADEF_DIR}/../../graphengine/inc/external
  171. ${METADEF_DIR}/../../inc
  172. #### blue zone ####
  173. ${ASCEND_DIR}/driver/include
  174. ${ASCEND_DIR}/fwkacllib/include
  175. ${METADEF_DIR}/../third_party/fwkacllib/inc
  176. ${METADEF_DIR}/../third_party/fwkacllib/inc/ops
  177. #### blue independent compile #####
  178. ${METADEF_DIR}/third_party/graphengine/inc
  179. ${METADEF_DIR}/third_party/graphengine/ge/inc
  180. ${METADEF_DIR}/third_party/graphengine/inc/external
  181. ${METADEF_DIR}/third_party/fwkacllib/inc
  182. ${METADEF_DIR}/third_party/fwkacllib/inc/ops
  183. ${METADEF_DIR}/third_party
  184. ${METADEF_DIR}/third_party/transformer/inc
  185. )
  186. target_link_libraries(graph_static PRIVATE
  187. $<BUILD_INTERFACE:intf_pub>
  188. ascend_protobuf
  189. c_sec
  190. $<$<NOT:$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-lrt>
  191. -ldl
  192. )
  193. set_target_properties(graph_static PROPERTIES
  194. WINDOWS_EXPORT_ALL_SYMBOLS TRUE
  195. OUTPUT_NAME $<IF:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,libgraph,graph>
  196. )
  197. ##############################################################
  198. add_custom_command(
  199. OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/stub_attr_value.cc
  200. ${CMAKE_CURRENT_BINARY_DIR}/stub_graph.cc
  201. ${CMAKE_CURRENT_BINARY_DIR}/stub_operator.cc
  202. ${CMAKE_CURRENT_BINARY_DIR}/stub_operator_factory.cc
  203. ${CMAKE_CURRENT_BINARY_DIR}/stub_tensor.cc
  204. ${CMAKE_CURRENT_BINARY_DIR}/stub_inference_context.cc
  205. ${CMAKE_CURRENT_BINARY_DIR}/stub_ascend_string.cc
  206. ${CMAKE_CURRENT_BINARY_DIR}/stub_gnode.cc
  207. COMMAND echo "Generating stub files."
  208. && ${HI_PYTHON} ${CMAKE_CURRENT_LIST_DIR}/stub/gen_stubapi.py ${METADEF_DIR}/inc/external ${CMAKE_CURRENT_BINARY_DIR}
  209. && mv attr_value.cc stub_attr_value.cc
  210. && mv graph.cc stub_graph.cc
  211. && mv operator.cc stub_operator.cc
  212. && mv operator_factory.cc stub_operator_factory.cc
  213. && mv tensor.cc stub_tensor.cc
  214. && mv inference_context.cc stub_inference_context.cc
  215. && mv ascend_string.cc stub_ascend_string.cc
  216. && mv gnode.cc stub_gnode.cc
  217. && echo "Generating stub files end."
  218. )
  219. add_custom_target(graph_stub
  220. DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/stub_attr_value.cc
  221. ${CMAKE_CURRENT_BINARY_DIR}/stub_graph.cc
  222. ${CMAKE_CURRENT_BINARY_DIR}/stub_operator.cc
  223. ${CMAKE_CURRENT_BINARY_DIR}/stub_operator_factory.cc
  224. ${CMAKE_CURRENT_BINARY_DIR}/stub_tensor.cc
  225. ${CMAKE_CURRENT_BINARY_DIR}/stub_inference_context.cc
  226. ${CMAKE_CURRENT_BINARY_DIR}/stub_ascend_string.cc
  227. ${CMAKE_CURRENT_BINARY_DIR}/stub_gnode.cc
  228. )
  229. #############################################################
  230. ############ stub/libgraph.so ############
  231. add_library(atc_stub_graph SHARED
  232. stub_graph.cc
  233. stub_operator.cc
  234. stub_operator_factory.cc
  235. stub_tensor.cc
  236. stub_attr_value.cc
  237. stub_ascend_string.cc
  238. stub_gnode.cc
  239. )
  240. add_dependencies(atc_stub_graph graph_stub)
  241. target_include_directories(atc_stub_graph PRIVATE
  242. ${CMAKE_CURRENT_LIST_DIR}
  243. ${CMAKE_BINARY_DIR}
  244. ${METADEF_DIR}
  245. ${METADEF_DIR}/graph
  246. ${METADEF_DIR}/inc
  247. ${METADEF_DIR}/inc/graph
  248. ${METADEF_DIR}/inc/external
  249. ${METADEF_DIR}/inc/external/graph
  250. #### yellow zone ####
  251. ${METADEF_DIR}/../inc
  252. ${METADEF_DIR}/../ops/built-in/op_proto/inc
  253. ${METADEF_DIR}/../cann/ops/built-in/op_proto/inc
  254. ${METADEF_DIR}/../libc_sec/include
  255. #### blue zone ####
  256. ${ASCEND_DIR}/driver/include
  257. ${ASCEND_DIR}/fwkacllib/include
  258. #### temp independent ####
  259. ${METADEF_DIR}/../graphengine/inc
  260. ${METADEF_DIR}/../graphengine/inc/framework
  261. ${METADEF_DIR}/../graphengine/inc/external
  262. #### temp in ge ####
  263. ${METADEF_DIR}/../inc
  264. ${METADEF_DIR}/../inc/framework
  265. ${METADEF_DIR}/../inc/external
  266. ${METADEF_DIR}/../../ops/built-in/op_proto/inc
  267. ${METADEF_DIR}/../../cann/ops/built-in/op_proto/inc
  268. ${METADEF_DIR}/third_party
  269. ${METADEF_DIR}/third_party/transformer/inc
  270. )
  271. target_link_libraries(atc_stub_graph PRIVATE
  272. $<BUILD_INTERFACE:intf_pub>
  273. )
  274. set_target_properties(atc_stub_graph PROPERTIES
  275. OUTPUT_NAME graph
  276. LIBRARY_OUTPUT_DIRECTORY atc_stub
  277. )
  278. ############ fwk_stub/libgraph.so ############
  279. add_library(fwk_stub_graph SHARED
  280. stub_graph.cc
  281. stub_operator.cc
  282. stub_operator_factory.cc
  283. stub_tensor.cc
  284. stub_attr_value.cc
  285. stub_inference_context.cc
  286. stub_ascend_string.cc
  287. stub_gnode.cc
  288. )
  289. add_dependencies(fwk_stub_graph graph_stub)
  290. target_include_directories(fwk_stub_graph PRIVATE
  291. ${CMAKE_CURRENT_LIST_DIR}
  292. ${CMAKE_BINARY_DIR}
  293. ${METADEF_DIR}
  294. ${METADEF_DIR}/graph
  295. ${METADEF_DIR}/inc
  296. ${METADEF_DIR}/inc/graph
  297. ${METADEF_DIR}/inc/external
  298. ${METADEF_DIR}/inc/external/graph
  299. #### yellow zone ####
  300. ${METADEF_DIR}/../inc
  301. ${METADEF_DIR}/../ops/built-in/op_proto/inc
  302. ${METADEF_DIR}/../cann/ops/built-in/op_proto/inc
  303. ${METADEF_DIR}/../libc_sec/include
  304. #### blue zone ####
  305. ${ASCEND_DIR}/driver/include
  306. ${ASCEND_DIR}/fwkacllib/include
  307. #### temp independent ####
  308. ${METADEF_DIR}/../graphengine/inc
  309. ${METADEF_DIR}/../graphengine/inc/framework
  310. ${METADEF_DIR}/../graphengine/inc/external
  311. #### temp in ge ####
  312. ${METADEF_DIR}/../inc
  313. ${METADEF_DIR}/../inc/framework
  314. ${METADEF_DIR}/../inc/external
  315. ${METADEF_DIR}/../../ops/built-in/op_proto/inc
  316. ${METADEF_DIR}/../../cann/ops/built-in/op_proto/inc
  317. ${METADEF_DIR}/third_party
  318. ${METADEF_DIR}/third_party/transformer/inc
  319. )
  320. target_link_libraries(fwk_stub_graph PRIVATE
  321. $<BUILD_INTERFACE:intf_pub>
  322. )
  323. set_target_properties(fwk_stub_graph PROPERTIES
  324. OUTPUT_NAME graph
  325. LIBRARY_OUTPUT_DIRECTORY fwk_stub
  326. )
  327. else ()
  328. ######### libgraph.so w/static protobuf #############
  329. add_library(graph SHARED ${SRC_LIST} ${PROTO_SRCS})
  330. target_compile_options(graph PRIVATE
  331. -O2
  332. $<$<STREQUAL:${PRODUCT_SIDE},host>:-fexceptions>
  333. $<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>: -Wno-deprecated-declarations>
  334. )
  335. target_compile_definitions(graph PRIVATE
  336. $<$<STREQUAL:${PRODUCT_SIDE},host>:FMK_SUPPORT_DUMP>
  337. $<$<STREQUAL:${ENABLE_OPEN_SRC},True>:ONLY_COMPILE_OPEN_SRC>
  338. google=ascend_private
  339. LOG_CPP
  340. )
  341. target_include_directories(graph PRIVATE
  342. ${CMAKE_CURRENT_LIST_DIR}
  343. ${CMAKE_BINARY_DIR}
  344. ${CMAKE_BINARY_DIR}/proto/ge
  345. ${CMAKE_BINARY_DIR}/proto/ge/proto
  346. ${METADEF_DIR}
  347. ${METADEF_DIR}/graph
  348. ${METADEF_DIR}/inc
  349. ${METADEF_DIR}/inc/graph
  350. ${METADEF_DIR}/inc/external
  351. ${METADEF_DIR}/inc/external/graph
  352. ${METADEF_DIR}/../third_party/fwkacllib/inc/ops
  353. ${METADEF_DIR}/../third_party/fwkacllib/inc
  354. ${METADEF_DIR}/../inc
  355. ${METADEF_DIR}/../inc/framework
  356. ${METADEF_DIR}/../inc/external
  357. ${METADEF_DIR}/../../ops/built-in/op_proto/inc
  358. ${METADEF_DIR}/../../cann/ops/built-in/op_proto/inc
  359. ${METADEF_DIR}/third_party
  360. ${METADEF_DIR}/third_party/transformer/inc
  361. )
  362. target_link_libraries(graph PRIVATE
  363. $<BUILD_INTERFACE:intf_pub>
  364. ascend_protobuf_static
  365. static_mmpa
  366. -Wl,--no-as-needed
  367. c_sec
  368. slog
  369. error_manager
  370. -Wl,--as-needed
  371. -lrt
  372. -ldl
  373. )
  374. endif ()
  375. ############ install ############
  376. set(INSTALL_BASE_DIR "")
  377. set(INSTALL_LIBRARY_DIR lib)
  378. install(TARGETS graph OPTIONAL
  379. LIBRARY DESTINATION ${INSTALL_LIBRARY_DIR}
  380. )
  381. if (NOT ENABLE_D AND NOT ENABLE_ACL AND NOT ENABLE_MS_TESTCASES)
  382. install(TARGETS atc_stub_graph OPTIONAL
  383. LIBRARY DESTINATION ${INSTALL_LIBRARY_DIR}/stub
  384. )
  385. install(TARGETS fwk_stub_graph OPTIONAL
  386. LIBRARY DESTINATION ${INSTALL_LIBRARY_DIR}/fwk_stub
  387. )
  388. endif ()

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