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.

readme.md 8.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. # graph engine 个人开发工具链使用说明
  2. GE开发者工具链是graph engine中的一套面向个人开发者的自动化脚本工具链。
  3. 目前支持基于容器开发环境准备、构建依赖的自动下载安装和配置、代码格式化、编译、测试、代码覆盖率检查、文档生成等一系列开发者常用功能。
  4. ## 前置准备
  5. 下面是使用GE开发者工具链,需要手动进行的前置准备;
  6. 下列是经过验证后的性能最佳推荐配置:
  7. 1. 操作系统,以下任选其一:
  8. - 原生的Linux操作系统,如ubuntu;
  9. - Windows操作系统,推荐安装WSL的ubuntu系统,强烈建议登录WSL内直接下载代码,不要挂卷(构建性能差)!
  10. - MAC OS;
  11. 2. docker安装:
  12. - docker安装成功,并且相关镜像源已经设置正确,可正常下载外部镜像。
  13. 3. OS支持的命令行工具: 原生Linux or WSL shell;
  14. 可用但不推荐的配置:
  15. - 在windows中直接安装docker,采用仿linux bash(Cygwin,minGW等)执行ge工具链;
  16. (使用这种方式也可以执行所有GE工具链的操作,但是因为windows和容器异构内核的文件访问限制会导致构建速度比较慢)
  17. ## 快速上手
  18. GE工具链对应的脚本在scripts下,可以按照下面流程来执行:
  19. 1. 进入到scripts目录:
  20. ```sh
  21. $ cd ./scripts
  22. ```
  23. 2.执行`ge env`自动下载容器环境,并登陆到环境中
  24. ```sh
  25. $ ./ge.sh env
  26. ```
  27. 3.配置外部依赖服务器信息
  28. ```sh
  29. ge config -i=121.36.**.** -u=asc**, -p=Asc***\#@\!$ (Need add escape character \ before special charactor $、#、!)
  30. ```
  31. 4.下载和安装构建所依赖的外部库
  32. ```sh
  33. $ ge update
  34. ```
  35. (注:进入容器后,`ge`命令已经自动注册进系统,因此容器内不需要写脚本全称)
  36. 5.执行测试,默认执行单元测试用例,`ge test`会自动触发构建
  37. ```sh
  38. $ ge test
  39. ```
  40. ## 详细用法
  41. 在scripts目录下,运行./ge.sh -h 即可查看到所有的子命令集合。
  42. ```sh
  43. $ ./ge.sh -h
  44. Usage: ge COMMANDS
  45. Run ge commands
  46. Commands:
  47. env Prepare docker env
  48. config Config dependencies server
  49. update Update dependencies
  50. format Format code
  51. lint Static verify
  52. build Build code
  53. test Run test of UT/ST
  54. cov Run Coverage
  55. docs Generate documents
  56. clean Clean
  57. ```
  58. 脚本内置的每个子命令,代表一个独立功能;每个子命令还提供了二级参数用于灵活指定执行方式。
  59. 每个子命令可以通过`-h`查看支持的可配参数。
  60. 例如查询`env`子命令的参数,可以使用如下命令:
  61. ```sh
  62. $ ./ge.sh env -h
  63. ```
  64. 每个子命令在不带参数时,会有一个默认的行为。
  65. ### `ge env`
  66. 该命令用于准备构建和测试使用的容器环境,具体包含参数如下:
  67. ```
  68. $ ./ge.sh env -h
  69. Usage: ge env [OPTIONS]
  70. Prepare for docker env for build and test
  71. Options:
  72. -b, --build Build docker image
  73. -p, --pull Pull docker image
  74. -e, --enter Enter container
  75. -r, --reset Reset container
  76. -h, --help
  77. ```
  78. 参数详细解释:
  79. - `-b -- build`: 依据“scripts/env/Dockerfile”生成需要运行的容器镜像;
  80. - `-p -- pull` : 从本地配置的容器中央仓拉取需要的的容器镜像;
  81. - `-e -- enter`: 在本地已有容器镜像的前提下,登录容器运行环境;
  82. - `-r -- reset`: 删除本地运行的容器镜像环境;
  83. 默认:从中央容器仓拉取对应的容器镜像,运行实例并登陆。
  84. ### `ge config`
  85. 配置外部依赖服务器,具体参数如下:
  86. ```sh
  87. $ ge config -h
  88. Usage: ge config [OPTIONS]
  89. update server config for ge, you need input all config info (ip, user, password)
  90. Options:
  91. -i, --ip Config ip config
  92. -u, --user Config user name
  93. -p, --password Config password
  94. -h, --help
  95. Example: ge config -i=121.36.**.** -u=asc**, -p=Asc***\#@\!$ (Need add escape character \ before special charactor $、#、!)
  96. ```
  97. 参数详细解释:
  98. - `-i, --ip` : 配置依赖库服务器IP地址;
  99. - `-u, --usr` : 配置依赖库服务器用户名;
  100. - `-p, --password` : 配置依赖库地址;
  101. 默认:打印帮助信息。
  102. ### `ge update`
  103. 安装graph engine构建所需的外部依赖库,具体参数如下:
  104. ```sh
  105. $ ge update -h
  106. Usage: ge update [OPTIONS]
  107. update dependencies of build and test
  108. Options:
  109. -d, --download Download dependencies
  110. -i, --install Install dependencies
  111. -c, --clear Clear dependencies
  112. -h, --help
  113. ```
  114. 参数详细解释:
  115. - `-d, --download` : 下载构建需要外部依赖库;
  116. - `-i, --install` : 安装外部依赖包到对应位置;
  117. - `-c, --clear` : 清除下载的外部依赖包;
  118. 默认:根据"scripts/update/deps_config.sh"的配置下载外部依赖库并安装到对应目录。
  119. (注:请确保“scripts/update/server_config.sh”中的服务器地址、用户名、密码已经配置)
  120. ### `ge format`
  121. 使用clang-format进行代码格式化,具体参数如下:
  122. ```sh
  123. $ ge format -h
  124. Options:
  125. -a format of all files
  126. -c format of the files changed compared to last commit, default case
  127. -l format of the files changed in last commit
  128. -h Print usage
  129. ```
  130. 参数详细解释:
  131. - `-a` : 格式化所有代码;
  132. - `-c` : 只格式化本次修改的代码;
  133. - `-l` : 格式化上次提交的代码;
  134. 默认:格式化本次修改代码。
  135. ### `ge lint`
  136. 使用clang-format进行代码格式化检查,具体参数如下:
  137. ```sh
  138. $ ge lint -h
  139. Options:
  140. -a Check code format of all files, default case
  141. -c Check code format of the files changed compared to last commit
  142. -l Check code format of the files changed in last commit
  143. -h Print usage
  144. ```
  145. 参数详细解释:
  146. - `-a` : 检查所有代码格式;
  147. - `-c` : 只检查修改的代码格式;
  148. - `-l` : 检查上次提交的代码格式;
  149. 默认:检查本次修改代码格式。
  150. ### `ge build`
  151. 执行构建 (注:调用原有build.sh脚本,改造中...);
  152. ### `ge test`
  153. 构建和运行测试用例,目前可以支持参数如下:
  154. ```sh
  155. $ ge test -h
  156. Usage: ge test [OPTIONS]
  157. Options:
  158. -u, --unit Run unit Test
  159. -c, --component Run component Test
  160. -h, --help
  161. ```
  162. 参数详细解释:
  163. - `-u, --unit` : 执行单元测试
  164. - `-c, --component` : 执行组件测试
  165. 默认:执行单元测试。
  166. ### `ge cov`
  167. 执行代码覆盖率检查, 支持全量覆盖和增量覆盖的功能,该命令需要已经跑完测试用例,目前可以支持参数如下:
  168. ```sh
  169. $ ge cov -h
  170. Usage: ge cov [OPTIONS]
  171. Options:
  172. -a, --all Full coverage
  173. -i, --increment Increment coverage
  174. -d, --directory Coverage of directory
  175. -h, --help
  176. ```
  177. 参数详细解释:
  178. - `-a, --all` : 执行全量覆盖率统计;
  179. - `-i, --increment` : 执行增量覆盖率检查,默认是分析未提交修改的代码覆盖率(如果存在新增加的git未跟踪文件,需要先git add 添加进来才可以);
  180. - `-d, --directory` : 代码进行增量覆盖率检查的代码路径,支持传入路径参数;
  181. 默认:执行增量覆盖率检查;
  182. 下面的命令演示了如何检查ge目录下所有代码的增量覆盖率:
  183. ```sh
  184. $ ge cov -d=ge
  185. ```
  186. ### `ge docs`
  187. Doxygen文档生成,包含代码逻辑和物理结构和关系,方便阅读和理解代码;目前可以支持参数如下:
  188. ```sh
  189. $ ge docs -h
  190. Usage: ge docs [OPTIONS]
  191. Options:
  192. -b, --brief Build brief docs
  193. -a, --all Build all docs
  194. -h, --help
  195. ```
  196. 参数详细解释:
  197. - `-b, --brief` : 生成简要文档,忽略部分关系图生成,速度快;
  198. - `-a, --all` : 生成全量文档,包含各种代码关系图,速度相对慢;
  199. 默认: 生成全量代码文档。
  200. ### `ge clean`
  201. 清除各种下载或生成的中间文件,目前支持的参数如下:
  202. ```sh
  203. $ ge clean -h
  204. Usage: ge clean [OPTIONS]
  205. Options:
  206. -b, --build Clean build dir
  207. -d, --docs Clean generate docs
  208. -i, --install Clean dependenices
  209. -a, --all Clean all
  210. -h, --help
  211. ```
  212. 参数详细解释:
  213. - `-b, --build` : 清除生成的编译构建临时文件;
  214. - `-d, --docs` : 清除生成的文档临时文件;
  215. - `-i, --install` : 清除安装的依赖文件;
  216. - `-a, --all` : 清除所有下载和生成的临时文件;
  217. 默认:清除编译构建产生临时文件。
  218. ## Follow us
  219. 工具链的功能还在不断完善中,有问题请提issue,谢谢!

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