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.pswp.cn/news/539539.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539539.shtml
英文地址,請注明出處:http://en.pswp.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…