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.4 kB

5 years ago
5 years ago
5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. if (NOT TARGET protobuf::protobuf)
  2. set(protobuf_USE_STATIC_LIBS ON)
  3. set(protobuf_CXXFLAGS "-Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2")
  4. set(protobuf_LDFLAGS "-Wl,-z,relro,-z,now,-z,noexecstack")
  5. set(_ge_tmp_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
  6. string(REPLACE " -Wall" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  7. string(REPLACE " -Werror" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  8. graphengine_add_pkg(protobuf
  9. VER 3.8.0
  10. LIBS protobuf
  11. EXE protoc
  12. URL https://github.com/protocolbuffers/protobuf/archive/v3.8.0.tar.gz
  13. MD5 3d9e32700639618a4d2d342c99d4507a
  14. CMAKE_PATH ../cmake/
  15. CMAKE_OPTION -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=OFF)
  16. set(CMAKE_CXX_FLAGS ${_ge_tmp_CMAKE_CXX_FLAGS})
  17. endif()
  18. add_library(graphengine::protobuf ALIAS protobuf::protobuf)
  19. set(PROTOBUF_LIBRARY protobuf::protobuf)
  20. include_directories(${protobuf_INC})
  21. include_directories(${protobuf_DIRPATH}/src)
  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两部分组成,详细的架构图如下所示