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.

protobuf.cmake 2.5 kB

5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. if (NOT TARGET protobuf::libprotobuf)
  2. graphengine_add_pkg(protobuf
  3. VER 3.8.0
  4. HEAD_ONLY ./
  5. URL https://github.com/protocolbuffers/protobuf/archive/v3.8.0.tar.gz
  6. MD5 3d9e32700639618a4d2d342c99d4507a)
  7. set(protobuf_BUILD_TESTS OFF CACHE BOOL "Disahble protobuf test")
  8. set(protobuf_BUILD_SHARED_LIBS ON CACHE BOOL "Gen shared library")
  9. set(_ms_tmp_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
  10. string(REPLACE " -Wall" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  11. string(REPLACE " -Werror" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  12. set(PROTOBUF_CMAKE_FILE "${protobuf_DIRPATH}/cmake/libprotobuf.cmake" )
  13. FILE(READ ${PROTOBUF_CMAKE_FILE} GE_MR_PROTOBUF_CMAKE)
  14. STRING(REPLACE "VERSION \${protobuf_VERSION}" "VERSION 19" GE_MR_PROTOBUF_CMAKE_V19 "${GE_MR_PROTOBUF_CMAKE}" )
  15. FILE(WRITE ${PROTOBUF_CMAKE_FILE} "${GE_MR_PROTOBUF_CMAKE_V19}")
  16. add_subdirectory(${protobuf_DIRPATH}/cmake ${protobuf_DIRPATH}/build)
  17. set(CMAKE_CXX_FLAGS ${_ms_tmp_CMAKE_CXX_FLAGS})
  18. endif()
  19. set(PROTOBUF_LIBRARY protobuf::libprotobuf)
  20. include_directories(${protobuf_DIRPATH}/src)
  21. add_library(ge_protobuf::protobuf ALIAS libprotobuf)
  22. function(ge_protobuf_generate comp c_var h_var)
  23. if(NOT ARGN)
  24. message(SEND_ERROR "Error: ge_protobuf_generate() called without any proto files")
  25. return()
  26. endif()
  27. set(${c_var})
  28. set(${h_var})
  29. foreach(file ${ARGN})
  30. get_filename_component(abs_file ${file} ABSOLUTE)
  31. get_filename_component(file_name ${file} NAME_WE)
  32. get_filename_component(file_dir ${abs_file} PATH)
  33. list(APPEND ${c_var} "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.cc")
  34. list(APPEND ${h_var} "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.h")
  35. add_custom_command(
  36. OUTPUT "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.cc"
  37. "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.h"
  38. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  39. COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/proto/${comp}/proto"
  40. COMMAND protobuf::protoc -I${file_dir} --cpp_out=${CMAKE_BINARY_DIR}/proto/${comp}/proto ${abs_file}
  41. DEPENDS protobuf::protoc ${abs_file}
  42. COMMENT "Running C++ protocol buffer compiler on ${file}" VERBATIM )
  43. endforeach()
  44. set_source_files_properties(${${c_var}} ${${h_var}} PROPERTIES GENERATED TRUE)
  45. set(${c_var} ${${c_var}} PARENT_SCOPE)
  46. set(${h_var} ${${h_var}} PARENT_SCOPE)
  47. endfunction()

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

Contributors (1)