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.

format_source_code.sh 3.0 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/bin/bash
  2. # Copyright 2019-2020 Huawei Technologies Co., Ltd
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. # ============================================================================
  16. set -e
  17. CLANG_FORMAT=$(which clang-format) || (echo "Please install 'clang-format' tool first"; exit 1)
  18. version=$("${CLANG_FORMAT}" --version | sed -n "s/.*\ \([0-9]*\)\.[0-9]*\.[0-9]*.*/\1/p")
  19. if [[ "${version}" -lt "8" ]]; then
  20. echo "clang-format's version must be at least 8.0.0"
  21. exit 1
  22. fi
  23. CURRENT_PATH=$(pwd)
  24. SCRIPTS_PATH=$(dirname "$0")
  25. echo "CURRENT_PATH=${CURRENT_PATH}"
  26. echo "SCRIPTS_PATH=${SCRIPTS_PATH}"
  27. # print usage message
  28. function usage()
  29. {
  30. echo "Format the specified source files to conform the code style."
  31. echo "Usage:"
  32. echo "bash $0 [-a] [-c] [-l] [-h]"
  33. echo "e.g. $0 -c"
  34. echo ""
  35. echo "Options:"
  36. echo " -a format of all files"
  37. echo " -c format of the files changed compared to last commit, default case"
  38. echo " -l format of the files changed in last commit"
  39. echo " -h Print usage"
  40. }
  41. # check and set options
  42. function checkopts()
  43. {
  44. # init variable
  45. mode="changed" # default format changed files
  46. # Process the options
  47. while getopts 'aclh' opt
  48. do
  49. case "${opt}" in
  50. a)
  51. mode="all"
  52. ;;
  53. c)
  54. mode="changed"
  55. ;;
  56. l)
  57. mode="lastcommit"
  58. ;;
  59. h)
  60. usage
  61. exit 0
  62. ;;
  63. *)
  64. echo "Unknown option ${opt}!"
  65. usage
  66. exit 1
  67. esac
  68. done
  69. }
  70. # init variable
  71. # check options
  72. checkopts "$@"
  73. # switch to project root path, which contains clang-format config file '.clang-format'
  74. cd "${SCRIPTS_PATH}/.." || exit 1
  75. FMT_FILE_LIST='__format_files_list__'
  76. if [[ "X${mode}" == "Xall" ]]; then
  77. find src -type f -name "*" | grep "\.h$\|\.cc$" > "${FMT_FILE_LIST}" || true
  78. find inc -type f -name "*" | grep "\.h$\|\.cc$" >> "${FMT_FILE_LIST}" || true
  79. elif [[ "X${mode}" == "Xchanged" ]]; then
  80. # --diff-filter=ACMRTUXB will ignore deleted files in commit
  81. git diff --diff-filter=ACMRTUXB --name-only | grep "^inc\|^src" | grep "\.h$\|\.cc$" >> "${FMT_FILE_LIST}" || true
  82. else # "X${mode}" == "Xlastcommit"
  83. git diff --diff-filter=ACMRTUXB --name-only HEAD~ HEAD | grep "^inc\|^src" | grep "\.h$\|\.cc$" > "${FMT_FILE_LIST}" || true
  84. fi
  85. while read line; do
  86. if [ -f "${line}" ]; then
  87. ${CLANG_FORMAT} -i "${line}"
  88. fi
  89. done < "${FMT_FILE_LIST}"
  90. rm "${FMT_FILE_LIST}"
  91. cd "${CURRENT_PATH}" || exit 1
  92. echo "Specified cpp source files have been format successfully."

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