资料介绍
软件简介
图引擎模块(GE)由C++实现,位于前端模块MindSpore/Tensorflow和底层硬件之间,起到承接作用。图引擎模块以ME/TF下发的图作为输入,然后进行一系列的深度图优化操作,最后输出一张可以在底层硬件上高效运行的图。GE针对昇腾AI处理器的硬件结构特点,做了特定的优化工作,以此来充分发挥出昇腾AI处理器的强大算力。在进行模型训练/推理时,GE会被自动调用而用户并不感知。GE主要由GE API和GE Core两部分组成,详细的架构图如下所示。
-
GE API
GE API是连接前端模块ME/TF和GE Core的接口,负责GE Core中初始化、Session管理模块的接口,支持运行环境初始化,Session创建、销毁,图添加执行。
-
GE Core
GE Core是GE的核心模块,负责整个训练过程中的图管理。GE Core中的图处理可细分为六大步骤,分别是图准备、图拆分、图优化、图编译、图加载和图执行,对于ME下发的每一张图都会经过这六个步骤的操作,最终得到可以直接在底层硬件上高效执行的图。
-
图准备 & 整图优化
完成整图级别的数据准备和优化,涉及到IR库及算子库。使用IR库中算子的InferShape函数,完成整图的Shape推导,以便后续申请内存;同时根据算子的聚合属性,完成某些算子的聚合优化,如allreduce算子,会按照聚合参数,将若干各参数对应梯度的allreduce算子聚合为一个,以此减少通讯耗时。
-
图拆分
昇腾AI处理器是一种异构芯片,含有CPU(AICPU)和向量计算部件AICORE,图中每个算子会按照开销模型选择执行的核心,此阶段会对算子进行最优的核心分配,每种核心对应软件上的一个抽象引擎;按照之前对各算子的引擎分配,以引擎为边界,将整图拆分为若干子图,在图边界算子上插入相应的Placeholder算子以做标识,之后的优化、编译、加载操作均会以子图为单位进行,这样可以有效减少优化过程的耗时。
-
子图优化
根据子图所属引擎,调用不同的优化器接口执行优化。为了充分发挥昇腾AI处理器中AICORE模块的算力,在AICORE内CUBE单元进行计算的算子会采用一种5D的数据格式,图优化阶段会对相应算子进行4D/5D的类型转换;为了进一步发挥CUBE单元的算力,减少数据搬运次数,GE会对某种范式的算子连接进行融合操作,此步骤也在图优化阶段进行;对所有子图优化之后,需进行算子运行属性计算,以计算输入输出内存大小。
-
图编译 & 图加载
GE采用即时算子编译技术,即按照实际网络结构即时编译生成算子可执行程序,同时完成内存复用与内存分配、流分配、算子可执行程序加载等。每个算子执行任务绑定到特定的流上,同一个流的任务是串行执行的,不同流上的任务可以并行执行。图加载阶段按照引擎归属的runtime,将子图加载到硬件上准备执行。
-
图执行
最终在硬件上执行子图,并返回相应的输出值。为了提高运行效率,图执行阶段提供了一种下沉模式,可以在底层硬件上连续运行多轮再返回输出值,以此减少从底层硬件拷贝数据的次数。
-
在训练/推理过程中,上述过程会自动执行,通过上述图操作,GE可以将前端下发的图转换为一种可以在昇腾AI处理器上高效运行的图模式。
安装说明
安装GE
GE内嵌在MindSpore/Ascend安装包中,MindSpore/Ascend安装完毕后,GE以动态库的方式被调用。
源码安装
GE也支持由源码编译,进行源码编译前,首先确保你有昇腾910 AI处理器的环境(可通过昇腾开发者社区获取),同时系统满足以下要求:
- GCC >= 7.3.0
- CMake >= 3.14.0
- Autoconf >= 2.64
- Libtool >= 2.4.6
- Automake >= 1.15.1
编译完成后会生成几个动态库,他们会链接到MindSpore/Ascend中执行,无法单独运行。
-
下载GE源码。
GE源码托管在码云平台,可由此下载。
git clone https://gitee.com/mindspore/graphengine.git cd graphengine
-
在GE根目录下执行下列命令即可进行编译。
bash build.sh
- 开始编译之前,请确保正确设置相关的环境变量。
-
在
build.sh
的脚本中,会进行git clone
操作,请确保网络连接正常且git配置正确。 -
在
build.sh
的脚本中,默认会8线程编译,如果机器性能较差,可能会编译失败。可以通过-j{线程数}
来控制线程数,如bash build.sh –j4
。
-
完成编译后,相应的动态库文件会生成在output文件夹中。
更多指令帮助,可以使用:
bash build.sh –h
如果想清除历史编译记录,可以如下操作:
rm -rf build/ output/ bash build.sh
社区
- MindSpore Slack - 可以提问和找答案。
贡献
欢迎参与贡献,更多信息详见Contributor Wiki。
路标
以下将展示graphengine近期的计划,我们会根据用户的反馈诉求,持续调整计划的优先级。
总体而言,我们会努力在以下几个方面不断改进。
1、完备性:Cast/ConcatV2算子支持输入数据类型为int64的常量折叠; 2、完备性:onnx parser支持一对多映射; 3、架构优化:ATC解耦并迁移至parser; 4、易用性:提供tensorflow训练的checkpoint文件转pb文件的一键式转化工具; 5、易用性:提供一键式本地编译环境构建工具; 6、可维测:ATC转换生成的om模型包含框架信息、cann版本信息和芯片信息等;
- C和C++实物精选《C专家编程》 0次下载
- C和C++经典著作《C和指针》 0次下载
- 适用于ADSP-219x处理器的VisualDSP++3.5 C/C++编译器和库手册
- 适用于SHARC<sup>®</sup>处理器的VisualDSP++<sup>®</sup>5.0 C/C++编译器手册
- 用于SHARC<sup>®</sup>处理器的CrossCore<sup>®</sup>Embedded Studio 2.9.0 C/C++编译器手册
- 用于TigerSHARC处理器的VisualDSP++<sup>®</sup>5.0 C/C++编译器和库手册
- 适用于Blackfin处理器的VisualDSP++<sup>®</sup>5.0 C/C++编译器和库手册
- 用于Blackfin<sup>®</sup>处理器的CrossCore<sup>®</sup>Embedded Studio 2.9.0 C/C++编译器和库手册
- Visual C++和MFC创建的应用程序基础知识 0次下载
- TMS320C6474数字信号处理器硅修订2.1, 1.2, 1.1, 1.0 勘误表 4次下载
- OMAPL138B C6-Integra™ DSP+ARM® 处理器 6次下载
- TMS320F28x 优化C/C++编译器用户指南 25次下载
- LonWorks节点中主从处理器之间IC接口设计 18次下载
- Blackfin处理器与音视频外设之间的连接
- 安腾处理器中多级分支预测机制
- C++简史:C++是如何开始的 415次阅读
- 射频前端都包含哪些器件? 1643次阅读
- 昇腾AI框架全栈深度介绍 2633次阅读
- CodeGeexX 功能使用 1943次阅读
- 昇腾AI处理器:全面解密DaVinci架构 7799次阅读
- C++程序异常处理机制是什么 744次阅读
- 昇思MindSpore全场景AI框架1.6版本的关键特性 2107次阅读
- 基于S3C241OX微处理器和MC39i模块实现无线数据传输系统的设计 2231次阅读
- 手机处理器与电脑处理器的差异分析 8670次阅读
- 详谈C语言和C++的区别和联系 5554次阅读
- 图解华为昇腾310的用途以及设计细节 1.9w次阅读
- 华为推出昇腾910、昇腾310两款AI芯片,昇腾910的半精度算力可达到256 TFLOPs 1.8w次阅读
- c++和c语言之间有什么区别 3.1w次阅读
- 基于FPGA处理器的C编译指令 2584次阅读
- 基于双MicroBlaze软核处理器的SOPC系统 3943次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多