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

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

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