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

5 years ago
5 years ago
5 years ago
5 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. if (NOT TARGET ge_protobuf::ascend_protobuf)
  2. if (AS_MS_COMP)
  3. set(protobuf_USE_STATIC_LIBS OFF)
  4. set(protobuf_CMAKE_OPTION -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=ON -DLIB_PREFIX=ascend_
  5. -DCMAKE_C_FLAGS=\"-Dgoogle=ascend_private\" -DCMAKE_CXX_FLAGS=\"-Dgoogle=ascend_private\")
  6. else ()
  7. set(protobuf_USE_STATIC_LIBS ON)
  8. set(protobuf_CMAKE_OPTION -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=OFF -DLIB_PREFIX=ascend_)
  9. endif ()
  10. set(ge_protobuf_CXXFLAGS "-Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2 -D_GLIBCXX_USE_CXX11_ABI=0")
  11. set(ge_protobuf_LDFLAGS "-Wl,-z,relro,-z,now,-z,noexecstack")
  12. set(_ge_tmp_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
  13. string(REPLACE " -Wall" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  14. string(REPLACE " -Werror" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  15. if (ENABLE_GITEE)
  16. set(REQ_URL "https://gitee.com/mirrors/protobuf_source/repository/archive/v3.8.0.tar.gz")
  17. set(MD5 "eba86ae9f07ba5cfbaf8af3bc4e84236")
  18. else()
  19. set(REQ_URL "https://github.com/protocolbuffers/protobuf/archive/v3.8.0.tar.gz")
  20. set(MD5 "3d9e32700639618a4d2d342c99d4507a")
  21. endif ()
  22. graphengine_add_pkg(ge_protobuf
  23. VER 3.8.0
  24. LIBS ascend_protobuf
  25. EXE protoc
  26. URL ${REQ_URL}
  27. MD5 ${MD5}
  28. CMAKE_PATH ../cmake/
  29. CMAKE_OPTION ${protobuf_CMAKE_OPTION})
  30. set(CMAKE_CXX_FLAGS ${_ge_tmp_CMAKE_CXX_FLAGS})
  31. endif()
  32. add_library(graphengine::protobuf ALIAS ge_protobuf::ascend_protobuf)
  33. set(PROTOBUF_LIBRARY ge_protobuf::ascend_protobuf)
  34. include_directories(${ge_protobuf_INC})
  35. include_directories(${ge_protobuf_DIRPATH}/src)
  36. function(ge_protobuf_generate comp c_var h_var)
  37. if(NOT ARGN)
  38. message(SEND_ERROR "Error: ge_protobuf_generate() called without any proto files")
  39. return()
  40. endif()
  41. set(${c_var})
  42. set(${h_var})
  43. foreach(file ${ARGN})
  44. get_filename_component(abs_file ${file} ABSOLUTE)
  45. get_filename_component(file_name ${file} NAME_WE)
  46. get_filename_component(file_dir ${abs_file} PATH)
  47. list(APPEND ${c_var} "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.cc")
  48. list(APPEND ${h_var} "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.h")
  49. add_custom_command(
  50. OUTPUT "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.cc"
  51. "${CMAKE_BINARY_DIR}/proto/${comp}/proto/${file_name}.pb.h"
  52. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  53. COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/proto/${comp}/proto"
  54. COMMAND ge_protobuf::protoc -I${file_dir} --cpp_out=${CMAKE_BINARY_DIR}/proto/${comp}/proto ${abs_file}
  55. DEPENDS ge_protobuf::protoc ${abs_file}
  56. COMMENT "Running C++ protocol buffer compiler on ${file}" VERBATIM )
  57. endforeach()
  58. set_source_files_properties(${${c_var}} ${${h_var}} PROPERTIES GENERATED TRUE)
  59. set(${c_var} ${${c_var}} PARENT_SCOPE)
  60. set(${h_var} ${${h_var}} PARENT_SCOPE)
  61. endfunction()

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