power designer数据流图_鲲云公开课 | 三分钟带你了解数据流架构

88cb684ab140b591fa5739ff2ad3d0cf.png

077f11489b10377036c08312ad6ad248.png

目前,市场上的芯片主要包括指令集架构和数据流架构两种实现方式。指令集架构主要包括X86架构、ARM架构、精简指令集运算RISC-V开源架构,以及SIMD架构。总体来说,四者都属于传统的通用指令集架构。传统的指令集架构采用冯诺依曼计算方式,通过指令执行次序控制计算顺序,并通过分离数据搬运与数据计算提供计算通用性。与上述四者不同,数据流架构采用了数据流引擎的计算架构,它的显著特点就是能够大幅提高芯片利用率。如鲲云的CAISA(Custom AI Streaming Accelerator Architecture)就采用了定制化的数据流架构。那么,究竟什么是数据流架构呢?它又是怎么实现性能的极大提升呢?

2780fced6ac665adef2891b6f2f1a5f7.png

数据流架构是一种计算机体系结构,直接与传统的冯·诺依曼架构或控制流体系结构进行对比,数据流架构没有概念上的指令计数器。它使用粗粒度表示(Coarse-grained Representation)来提高数据的并行度,并允许编译器同时调度多个顺序循环和功能,以实现更高的吞吐量更低的延迟


下图显示了数据流流水线的概念图。在这个概念图中,指令集架构首先执行函数A,完成之后再执行函数B,依次类推直至执行完所有程序。在定制数据流架构的情形下,编译器可以安排每个函数在数据可用时立即执行。

83f4e4230516c76a83798506c7015dee.png

在此示例中,指令集架构(图A)等待时间和间隔为8个时钟周期。使用数据流架构,该间隔可减少到仅三个时钟周期(图B)。

目前,数据流架构已在专用硬件中成功应用,例如数字信号处理、网络路由、图形处理、遥感检测、以及数据库处理等。同时,在当今的许多软件体系结构中(包括数据库引擎设计和并行计算框架),它也占据着非常重要的地位。1994年,帝国理工学院教授、英国皇家工程院院士、鲲云科技联合创始人和首席科学家Wayne Luk陆永青院士率先将数据流架构定制化并运用到AI领域。

9468db6fa000f3709abf67220f5d2070.png

0eeac7a7cf53f90f3faf8a4a7fe29a48.png

首先,现在大部分的 GPU、CPU 都是基于指令集的架构,应用层可以通过软件和编辑器去将语言最终转化为机器的语言,即二进制的码,从而执行指令和操作,并保证对不同应用的兼容性。

8889114085a103a85c6622b15b215c80.png

相较于指令集,数据流的核心就是使每个时钟周期都能进行有效计算。数据不停流入计算单元并完成计算,得到输出后,最终数据将会被存储到内存中或流入下一个流水线操作。

b4c1f106b78528b68cfd1a35976d974f.png

简而言之,数据流架构可以为特定应用场景提供更高的芯片利用率;而指令集架构虽然能提供更高的通用性,但其芯片利用率相对较低。两种架构产生差异的原因在于:

  • 数据流架构完全依靠数据流转的方式来控制计算,从而消除了由于指令控制和数据搬运而产生的数据开销;
  • 指令集架构通过指令控制来处理不同场景下的运算,提高了对不同计算需求的通用性支持。

数据流架构要实现性能的极大提升,需要解决两个问题,一是如何在复杂计算架构下保持较高的计算效率,二是如何保证定制架构的通用性,即如何支持不同的深度学习算法。

为此, 鲲云研发了RainBuilder与CAISA架构配合,通过动态配置使其能通用支持各种AI算法,提升了通用性。该编译器能进行算法模型结构的解析,并把模型导入数据流架构,从而提高数据流架构的计算效率来完成深度学习网络的计算。

RainBuilder的优势包括:

  • 是一种端到端(End-to-End)的编译工具
  • 最大化 AI 性能,充分利用数据流架构下的计算单元
  • 使用硬件流水线架构完成数据的计算与控制

RainBuilder由RbCompiler、RbRuntime和RbDriver三部分构成。RainBuilder的原理如下图所示:

f3621789f0792bfbb9e3ee595993ce13.png

------

RainBuilder Compiler(下文称为RbCompiler或Compiler)可以将用户在TensorFlow、Caffe、ONNX、PyTorch等深度学习框架下开发的算法模型进行全自动的编译优化,并提取数据流中间表达式(Streaming Graph IR,SG IR)。模型编译过程中自动进行数据量化、节点融合、软硬件分割等操作。Compiler通过鲲云研发的图优化算法将已有开发框架中的指令集计算图重构为数据流图。转化过程中涉及大量针对数据流架构的模型压缩和量化技术,从软件层面进一步提升计算效率。

------

RainBuilder Runtime为CAISA加速引擎的软件运行时,负责将SG IR进行加载并使用CAISA加速引擎对深度学习网络进行运行加速,该部分组件以C/C++ API接口的形式开放给用户进行二次开发和部署使用。RbRuntime作为RainBuilder的后端,配合RbCompiler使用,用于加载并运行RbCompiler编译生成的模型文件,即上文提到的SG IR,SG IR包含了模型的所有节点,并能根据节点创建对应的SG OP,同时还能按照拓扑顺序将SG OP部署在相应的设备上执行计算,返回模型的计算结果。Runtime提供深度学习算法的应用接口,用户可根据使用习惯调用python或C/C++的API完成算法的部署。Runtime设计了工作线程和计算线程精细化调度框架,同时针对x86、ARM平台实现了算子的深度适配和优化,从而保证目标算法可以充分发挥CAISA架构计算效率的优势。

------

RainBuilder Driver是底层CAISA架构的相关驱动模块,对应用开发者透明,驱动CAISA硬件架构,实现硬件模块的计算调度和硬件模型分析

RainBuilder的推出简化了算法从开发到芯片级部署的流程。用户不需要了解底层计算架构,也不需要改变开发习惯,就可以实现算法在数据流架构上的高效部署。

鲲云科技聚焦于基于数据流架构的定制AI计算引擎,凭借自1991年近三十年技术积累,2019年4月,鲲云科技发布全球首个AI数据流架构CAISA 2.0架构,其芯片利用率(Chip Utilization Ratio,CUR )最高可达98%,并且支持大多数主流卷积神经网络(CNN),是世界上首个针对人工智能的数据流架构。基于自主研发的CAISA数据流架构,鲲云的“星空”、“雨人”加速卡已在航空、航天、电力、安防、教育、智能制造、智慧城市等领域落地。

References

1. Veen, Arthur H.(Dec 1986). "Dataflow Machine Architecture". ACM Computing Surveys.18 (4): 365–396. doi:10.1145/27633.28055. Retrieved 5 March 2019.

2. "HX300Family of NPUs and Programmable Ethernet Switches to the Fiber AccessMarket", EN-Genius, June 18 2008.

3. ManchesterDataflow Research Project, Research Reports: Abstracts, September 1997

4.https://www.xilinx.com/html_docs/xilinx2017_4/sdaccel_doc/obx1504034310502.html

19cf72a20464f02fbac8080b5b1a1937.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

onCreate源码分析

原文地址Android面试题-onCreate源码都没看过,怎好意思说自己做android Activity扮演了一个界面展示的角色,堪称四大组件之首,onCreate是Activity的执行入口,都不知道入口到底干了嘛,还学什么android,所以本文会从源码…

linux php环境搭建教程,linux php环境搭建教程

linux php环境搭建的方法:首先获取相关安装包;然后安装Apache以及mysql;接着修改配置文件“httpd.conf”;最后设置环境变量和开机自启,并编译安装PHP即可。一、获取安装包PHP下载地址:http://cn.php.net/di…

Apache2.2与Tomcat7集成方案详解

原文地址:http://my.oschina.net/u/919173/blog/159206 ------------------------------------ 首先谈一下为什么要集成Apache和tomcat7? Apache是当前使用最为广泛的WWW服务器软件,具有相当强大的静态HTML处理的能力。 Tomcat服务器是一个…

cocos 制作动态生成内容的列表_零代码工具,让你在线轻松制作交互内容!

在工作中设计师不会写代码,懂代码的不会设计,2种不同工作互掐的情况屡见不鲜,那我们如何把这2项工作一并融合贯通呢?对于不懂代码的职场“小白”,我们可以利用一些零代码工具来完成。今天小编介绍几款在线开发设计工具…

php怎样数据缓存文件,php数据缓存到文件类设计

// 自定义缓存类class Cache_Filesystem {// 缓存写保存function set ($key, $data, $ttl) {//打开文件为读/写模式$h fopen($this->get_filename($key), ‘a‘);if (!$h) throw new Exception("Could not write to cache");flock($h, LOCK_EX); //写锁定&#x…

jsp放在web-inf下的注意事项

原文:http://blog.csdn.net/whatlookingfor/article/details/38381881 ------------------------------------------------- web-inf目录是不对外开放的,外部没办法直接访问到。所有只能通过映射来访问,比如映射为一个action或者servlet通过…

php打印布尔型,PHP数据类型之布尔型的介绍_PHP

布尔类型是PHP中 最简单的类型。它的值可以为 TRUE 或 FALSE。如:$foofalse;$foo1true;echo "为假时输出值为:".$foo; //没有输出值echo "为真时输出值为:".$foo1; //输出1这里主要的细节:当转换为 boolean 时,以下值被认…

oracle 如何终止存储过程的运行

0.查询正在执行的存储过程: select * from v$db_object_cache where locks > 0 and pins > 0 and typePROCEDURE;1. 在V$ACCESS视图中找到要停止进程的SID: 举例:存储过程名:CRH_ENTRY SELECT t.* FROM V$ACCESS t WHERE t.objectCRH_…

python install zabbix.4.0

1.安装 MySQLdb 模块; #!/bin/bash #this is rpm python Environment depends on function depends_rpm(){ yum clean all yum -y install gcc* python-devel python-pip mariadb mariadb-devel mariadb-server if [ $? -eq 0 ]thenpip install MySQL-python1.2.5 elsee…

asp.net 获取全部在线用户_Qamp;A | 在线考试问卷答疑

01.如何批量导入试题?如果您已经在word或者excel中准备好了考试文档,通过批量导入试题的方式,可以让考试问卷的制作更加方便快捷。详细了解批量导入考试的文本格式:【点击此处】02.如何进行考试随机抽题?老师事先建立题…

PHP 框架 模块化,Laravel 的模块化开发框架 Notadd RC1

本文我们要和大家分享 Laravel 的模块化开发框架 Notadd RC1 的介绍,它的优点是修复了首页编辑模式下滚动的BUG (Eleven),修复了后台菜单管理修改后不跳转的BUG (ganlanshu0211),修复后台 ESLint 的 Camelcase 的错误 (狒狒),暂时…

spring mvc 工作流程

1A)客户端发出http请求,只要请求形式符合web.xml 文件中配置的*.action的话,就由DispatcherServlet 来处理。 1B)DispatcherServlet再将http请求委托给映射器 的对象来将http请求交给对应的Action来处理 2&#xff0…

9-2 链表

package gather;import java.util.LinkedList; import java.util.List; import java.util.ListIterator;public class TestFour {public static void main(String[] args) {// TODO Auto-generated method stub/*** 1、通过整数遍历元素时,不要使用链表结构&#xf…

excel切片器_如何在Excel表格中使用切片器

切片器除了在数据透视表中会使用到,在Excel的表格功能下面,也是可以进行使用的。下面就来介绍一下如何使用切片器这个工具。创建和使用切片器1.首先就是要创建一个表格。选中目标区域,使用快捷键CtrlT,创建一个表格。2.点击“插入…

分阶段付款 学php,项目整理-支付宝的支付问题

支付宝作为一个被广泛使用的支付工具,在是用的时候可以被广泛使用。可以使用demo提取(由于当时开发时SDK下载路径无法下载,直接从DEMO中筛选了需要部分)------------------我是开始开发思路的分割线--------------------------本次主要是APP支付的流程。…

使用sqlldr导入文本数据到oracle

1.sqlldr介绍 用法: SQLLDR keywordvalue [,keywordvalue,...]有效的关键字:userid -- ORACLE 用户名/口令 control -- 控制文件名 log -- 日志文件名 bad -- 错误文件名 data -- 数据文件名 dis…

Mac os区别_SN及Mac地址烧录

platform:RK3399 OS:Android 7.1 参考: 1.比特人生 https://blog.csdn.net/ielife/article/details/86719313 2.KrisFei https://blog.csdn.net/kris_fei/article/details/79447343?ops_request_misc%257B%2522request%255Fid%2522%253A%2522158883304619726869022990%2522%25…

linux 查看数据库和表 mysql 命令

2019独角兽企业重金招聘Python工程师标准>>> 查看是否有安装数据库 :rpm -qa|grep -i mysql 如图已安装: 未安装: 查看MySQL版本的四种方法 1 在终端下执行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看…

php mvc 逻辑层在哪,mvc的业务逻辑应该放哪里?

背景: 基于laravel的后台管理系统,CURD密集型业务问题:当直接在控制器方法中调用orm处理业务逻辑时,代码复用性差,控制器层很肥尝试解决1:新建一个model层,将原先在控制器中的处理逻辑移到mode…