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

5 years ago
5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. if (ENABLE_GITEE)
  9. set(REQ_URL "https://gitee.com/mirrors/protobuf_source/repository/archive/v3.8.0.tar.gz")
  10. set(MD5 "eba86ae9f07ba5cfbaf8af3bc4e84236")
  11. else()
  12. set(REQ_URL "https://github.com/protocolbuffers/protobuf/archive/v3.8.0.tar.gz")
  13. set(MD5 "3d9e32700639618a4d2d342c99d4507a")
  14. endif ()
  15. graphengine_add_pkg(protobuf
  16. VER 3.8.0
  17. LIBS protobuf
  18. EXE protoc
  19. URL ${REQ_URL}
  20. MD5 ${MD5}
  21. CMAKE_PATH ../cmake/
  22. CMAKE_OPTION -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=OFF)
  23. set(CMAKE_CXX_FLAGS ${_ge_tmp_CMAKE_CXX_FLAGS})
  24. endif()
  25. add_library(graphengine::protobuf ALIAS protobuf::protobuf)
  26. set(PROTOBUF_LIBRARY protobuf::protobuf)
  27. include_directories(${protobuf_INC})
  28. include_directories(${protobuf_DIRPATH}/src)
  29. function(ge_protobuf_generate comp c_var h_var)
  30. if(NOT ARGN)
  31. message(SEND_ERROR "Error: ge_protobuf_generate() called without any proto files")
  32. return()
  33. endif()
  34. set(${c_var})
  35. set(${h_var})
  36. foreach(file ${ARGN})
  37. get_filename_component(abs_file ${file} ABSOLUTE)
  38. get_filename_component(file_name ${file} NAME_WE)
  39. get_filename_component(file_dir ${abs_file} PATH)
  40. list(APPEND ${c_var} "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.cc")
  41. list(APPEND ${h_var} "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.h")
  42. add_custom_command(
  43. OUTPUT "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.cc"
  44. "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.h"
  45. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  46. COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/proto/${comp}/proto"
  47. COMMAND protobuf::protoc -I${file_dir} --cpp_out=${CMAKE_BINARY_DIR}/proto/${comp}/proto ${abs_file}
  48. DEPENDS protobuf::protoc ${abs_file}
  49. COMMENT "Running C++ protocol buffer compiler on ${file}" VERBATIM )
  50. endforeach()
  51. set_source_files_properties(${${c_var}} ${${h_var}} PROPERTIES GENERATED TRUE)
  52. set(${c_var} ${${c_var}} PARENT_SCOPE)
  53. set(${h_var} ${${h_var}} PARENT_SCOPE)
  54. endfunction()

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