TWI779355B - 用於可重組態資料處理器的效能估計式資源分配 - Google Patents

用於可重組態資料處理器的效能估計式資源分配 Download PDF

Info

Publication number
TWI779355B
TWI779355B TW109131514A TW109131514A TWI779355B TW I779355 B TWI779355 B TW I779355B TW 109131514 A TW109131514 A TW 109131514A TW 109131514 A TW109131514 A TW 109131514A TW I779355 B TWI779355 B TW I779355B
Authority
TW
Taiwan
Prior art keywords
computing
unit
processing time
physical
units
Prior art date
Application number
TW109131514A
Other languages
English (en)
Other versions
TW202127270A (zh
Inventor
陳卓
蘇姆蒂 賈拉斯
Original Assignee
美商聖巴諾瓦系統公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商聖巴諾瓦系統公司 filed Critical 美商聖巴諾瓦系統公司
Publication of TW202127270A publication Critical patent/TW202127270A/zh
Application granted granted Critical
Publication of TWI779355B publication Critical patent/TWI779355B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7892Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/904Browsing; Visualisation therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

所揭露的技術係關於將可重組態資料處理器之可用實體計算單元(PCU)及/或實體記憶體單元(PMU)分配給運算單元圖之運算單元以用於其之執行。特別是,其係關於,對於評估在同屬級計算處理時間之上及下搜尋界限之間選擇中間級計算處理時間,決定需要處理該運算單元圖的該PCU及/或該PMU之管線數目,以及疊代地將該同屬級計算處理時間之新的下及上搜尋界限初始化,並且對於在下一個疊代中的評估,考量於在先前疊代中在先的中間級計算處理時間生成的該PCU及/或該PMU之該管線數目是否低於或高於該可用的PCU及/或PMU來選擇新的中間級計算處理時間。

Description

用於可重組態資料處理器的效能估計式資源分配
本技術係關於在可重組態架構上高效執行運算單元圖,且特別是能應用於在粗粒度(coarse-grain)可重組態架構及其它分佈式執行系統上高效執行深度神經網路(deep neural network)。
對於其它申請案的交叉參考
本申請案係與同時申請的名為「PERFORMANCE ESTIMATION-BASED RESOURCE ALLOCATION FOR RECONFIGURABLE ARCHITECTURES」之美國非臨時專利申請案相關(代理人檔案號碼第SBNV 1016-2號)。此相關申請案為了所有目的以參考資料而併入。
收編
下列係收編作為參考,以為了仿佛全部於此 提出的所有目的:Koeplinger等於2018年在關於程式語言設計及實作(PLDI)的第39屆ACM SIGPLAN會議的論文集、第43屆關於電腦架構的國際論壇之論文集發表的「Spatial:A Language And Compiler For Application Accelerators」。
Prabhakar等人於2017年六月24~28在加拿大安大略省多倫多市之ISCA’17發表的「Plasticine:A Reconfigurable Architecture for Parallel Patterns」。
在2019年一月3日申請的名為「VIRTUALIZATION OF A RECONFIGURABLE DATA PROCESSOR」之美國非臨時專利申請案第16/239,252號(代理人檔案號碼第SBNV 1000-1號)。
在2018年十一月21日申請的名為「CONFIGURATION LOAD OF A RECONFIGURABLE DATA PROCESSOR」之美國非臨時專利申請案第16/197,826號(代理人檔案號碼第SBNV 1001-1A號)。
在2018年十一月21日申請的名為「CONFIGURATION UNLOAD OF A RECONFIGURABLE DATA PROCESSOR」之美國非臨時專利申請案第16/198,086號(代理人檔案號碼第SBNV 1001-1B號)。
在2019年一月29日申請的名為「MATRIX NORMAL/TRANSPOSE READ AND A RECONFIGURABLE DATA PROCESSOR INCLUDING SAME」之美國非臨時專 利申請案第16/260,548號(代理人檔案號碼第SBNV 1005-1號)。
在2019年八月8日申請的名為「COMPILER FLOW LOGIC FOR RECONFIGURABLE ARCHITECTURES」之美國非臨時專利申請案第16/536,192號(代理人檔案號碼第SBNV 1006-1號)。
在2019年五月9日申請的名為「CONTROL FLOW BARRIER AND RECONFIGURABLE DATA PROCESSOR」之美國非臨時專利申請案第16/407,675號(代理人檔案號碼第SBNV 1007-1號)。
在2019年七月8日申請的名為「QUIESCE RECONFIGURABLE DATA PROCESSOR」之美國非臨時專利申請案第16/504,627號(代理人檔案號碼第SBNV 1008-1號)。
在此章節中討論的標的不應假定為前案,僅為其在此章節提及的結果。同樣的,在此章節中所提及的或與提供為先前技術的標的關聯的問題不應假定必需在前案中事先已認定。在此章節中的標的僅代表不同的方式,在他們本身中及他們本身的方式亦能符合所請求的技術的實作。
可重組態處理器,包括場可程式化閘陣列(FPGA;field programmable gate array),能被組態以比可 能使用執行電腦程式的通用處理器所達成更高效或更快速的實作各種功能。正在開發所謂粗粒度可重組態架構(CGRA;coarse-grain reconfigurable architecture),其中在陣列中的可組態單元(configurable unit)比在典型、更細粒度FPGA中所使用的更複雜,且可使能更快速或更高效執行各種類別的功能。例如,已提出能使能實作用於機器學習及人工智慧酬載的能源高效率加速器的CGRA。請見於2017年六月24~28在加拿大安大略省多倫多市ISCA’17上由Prabhakar等人發表的「Plasticine:A Reconfigurable Architecture for Parallel Patterns」。
當效能、功率或能源效率(energy efficiency)為卓越的時,CGRA為極度有吸引力的平台。CGRA為粗粒度可重組態計算和使用可重組態互連組構(reconfigurable interconnect fabric)之某種拓撲中被互連在一起的記憶體元件的組成。其被稱為粗粒度可重組態是因為在架構中的可重組態組件在較粗粒度上操作,像是與普通在諸如FPGA的架構中發現的細粒度、位元級粒度相反的指令、字和字的向量。在CGRA中的可程式化資料和控制路徑使他們自然適於藉由將可重組態計算和記憶體組件連接到客製化、深度巢狀及階層式的管線來利用在應用中的巢狀平行性(parallelism)。
現代應用通常數個級的巢狀迴圈級,並且含有在多個級的巢套(nesting)上的平行性。為了這類深度巢狀迴圈,傳統迴圈管線化方法(其僅聚焦於最內迴圈的本 體)通常利用不足的平行性,並且促成不良的硬體利用率(utilization),造成不良的效能、功率或能源效率。
用以基於引導運算平行性的使用者明定架構提示來加速執行在CGRA之可重組態元件上的運算的機會浮現。可導致改善的平性化及硬體利用率。
100:可重組態資料處理器
110:可重組態資料處理器
115:匯流排系統
120:主機
125:匯流排系統
130:介面
140:記憶體
145:匯流排系統
150:介面
170:外部時脈產生器
175:時脈信號
200:融合
202:架構提示
204:運算單元圖
212:架構規格
214:融合器
224:融合的運算單元圖
234:分配器
244:執行器
600:運算單元之型樣
602:2維卷積節點
604:2維卷積節點
612:批次正規化節點
614:批次正規化節點
622:加法輸出節點
702:掃描器
712:匹配器
714:偵測器
724:樣本碼
812:2維卷積運算單元
814:合併運算單元方塊
824:批次正規化運算單元
834:整流線性單元運算單元
842:加法運算單元
812A:2維卷積運算單元
1000:運算單元圖
1002:2維卷積運算單元
1012:批次正規化運算單元
1022:2維卷積運算單元
1032:批次正規化運算單元
1042:加法運算單元
1100:運算單元圖
1102:合併運算單元方塊
1202:效能估計器
1212:搜尋器
1222:管線資源決定器
1232:級潛時決定器
1242:級資源決定器
1252:效能估計計算器
1262:效能估計
1272:顯影儀
1700:運算單元圖
1702:運算單元
1712:運算單元
1722:運算單元
1732:運算單元
1742:運算單元
1901:組態載入/卸載控制器
1911:交換單元
1912:交換單元
1921:互連
1922:鏈接
1931:鏈接
1941:型樣記憶體單元
2000:可組態單元
2010:輸入組態資料
2020:組態資料存放區
2022:線
2023:線
2030:卸載輸出組態資料
2040:單元組態載入邏輯
2050:純量先進先出
2060:先進先出方塊
2070:控制方塊
2080:方塊
2091:菊鍊完成匯流排
2092:菊鍊命令匯流排
2093:菊鍊邏輯
在圖式中,遍及不同的視圖中相似的參考字符一般指的是相似的部分。同樣,圖式不必然是按比例,反而是一般以強調著眼於將所揭露的技術之原理進行闡述。在下列說明中,隨著參照下列圖式來說明所揭露的技術之各種實作,其中:[圖1]為闡述包括主機、記憶體以及具有可組態單元之陣列的可重組態資料處理器的系統之系統圖。
[圖2]為使用融合以在可重組態資料處理器上高效執行運算單元圖的一實作。
[圖3]為在JSON(JavaScript物件表示法)中寫入的型樣圖,並且為使用者明定的架構提示之範例。
[圖4]亦為在JSON中寫入的型樣圖,並且為使用者明定的架構提示之另一範例。
[圖5]描繪依據所揭露的技術之一實作的融合演算法。
[圖6]繪示由圖5之融合演算法建構的運算單元之型樣的一範例。
[圖7]為依據所揭露的技術之一實作找尋型樣匹配(匹配的子圖)的樣本碼。
[圖8]描繪對於複製選擇的一實作。
[圖9]描繪複製的一實作。
[圖10]繪示將圖6之融合演算法應用至ResNet50運算單元圖的一範例。
[圖11]繪示造成的融合ResNet50運算單元圖。
[圖12]闡述使用效能估計來將可重組態資料處理器之可用實體計算單元及/或實體記憶體單元分配至用於其執行的融合運算單元圖之運算單元的一實作。
[圖13]繪示使用以產生在可重組態資料處理器上執行融合運算單元圖之效能估計的二元搜尋演算法之一實作。
[圖14]描繪決定需要處理在可重組態資料處理器上融合運算單元圖之管線計算負載的可重組態資料處理器之實體計算單元及/或實體記憶體單元的管線數之資源決定功能的一實作。
[圖15]繪示決定融合運算單元圖之特定加法運算單元的級計算負載的一範例。
[圖16]繪示決定融合運算單元圖之特定矩陣乘法運算單元的級計算負載的另一範例。
[圖17]描繪依據所揭露的技術之一實作對於其決定效能估計的範例運算單元圖。
[圖18]闡述依據所揭露的技術之一實作對於圖18之運算單元圖之不同的運算單元所決定的級計算處理次數。
[圖19A]為在圖1之可重組態資料處理器中可使用的圖磚和陣列級網路的簡化圖。[圖19B]闡述將在陣列級網路中的元件連接的範例交換器單元。
[圖20]為闡述範例可組態單元的方塊圖。
【發明內容】及【實施方式】
提出下列討論用以使本領域中具有通常知識之任何人完成及使用所揭露的技術,並且在特定應用的情境及其需求而提供。對本揭露實作的各種修改將對本領域中具有通常知識者而言將是輕易地顯而易見,並且於此界定的一般原理在不悖離所揭露的技術之精神及範圍下可被應用到其它實作及應用中。因此,所揭露的技術並不打算限於所示的實作,而是打算給予與於此揭露的原理及特徵一致的最寬範圍。
可重組態資料處理器
圖1為闡述包括主機120、記憶體140以及可重組態資料處理器110的系統之系統圖。如在圖1之範例中所繪示,可重組態資料處理器110包括可組態單元之陣列190和組態載入/卸載控制器195。如於此所使用的詞彙「組態載入/卸載控制器」指的是組態載入控制器和組態 卸載控制器的結合。組態載入控制器和組態卸載控制器可使用分開的邏輯及資料路徑資源來實作,或是當配合特定實施例時可使用共用邏輯及資料路徑資源來實作。在一些實施例中,系統可包括僅於此討論的類型的組態載入控制器。在一些實施例中,系統可包括僅於此討論的類型的組態卸載控制器。
可組態單元之陣列190的組態含有由編譯器(未繪示)編譯組態描述,用以生成組態檔案(有時稱為位元串流或位元檔案),並且將組態檔案分佈到陣列190上的可組態單元中。在一實施例中,編譯器提供從應用程式到位元檔案的轉譯。
處理器110包括連接到主機120的外部I/O介面130以及連接到記憶體140的外部I/O介面150。I/O介面130、150經由匯流排系統115連接到可組態單元之陣列190以及連接到組態載入/卸載控制器195。匯流排系統115可具有運載一資料塊的匯流排寬度,舉此例而言其能為128位元(更一般而言,全篇對128位元的參考能被視為範例塊尺寸)。一般而言,可組態檔案塊能具有數目N個位元的資料,且匯流排系統能被組態以將N位元的資料在一匯流排循環/週期中轉移/傳輸,其中N為任何特定的匯流排寬度。在分布序列中分布的子檔案能包含一區塊(chunk),或是當配合特定實施例時包含其它數量的資料。於此描述使用子檔案的程序各者由一資料塊組成。當然,能組態技術以分布不同尺寸的子檔案,包括可包含例如在兩個匯流排 循環/週期中分布的兩個區塊。
為了以組態檔案在可組態單元之陣列190中組態可組態單元,主機120能經由介面130、匯流排系統115及在可重組態資料處理器110中的介面150來發送組態檔案到記憶體140。主機120經由匯流排系統125連接到介面130。記憶體140經由匯流排系統145連接到介面150。當配合特定架構時,組態檔案能以許多條通道載入,包括在可組態處理器110外側的資料路徑中。組態檔案能經由記憶體介面150從記憶體140取回。接著成塊的組態檔案能以如於此描述的分布序列來發送到在可重組態資料處理器110中之可組態單元之陣列190中的可組態單元。
外部時脈產生器170或其它時脈信號源能提供時脈信號175或多個時脈信號給在可重組態資料處理器110中的元件,包括可組態單元之陣列190和匯流排系統115以及外部資料I/O介面。
融合
圖2為使用融合200以在可重組態資料處理器100上高效執行運算單元圖204的一實作。融合器(fuser)214採用運算單元圖204、架構提示202以及架構規格212作為輸入,並且生成融合的運算單元圖224。
運算單元圖204為寫入程式語言的一種應用程式或來源碼,程式語言像是(但不限於)C、C++、Java、Python或Spatial。例如,運算單元圖204能以變化的尺寸 及資料類型的數個層來實作卷積神經網路(CNN;convolutional neural network)處理,使得各個層包含具有不同性質的數個巢狀迴圈。例如,運算單元圖204能含有記憶體運算,用以存取輸入和權重以及浮點運算來進行矩陣乘法。如另一範例,運算單元圖204能包括具有高疊代計數(iteration count)的巢狀迴圈和載入且將來自在先層的輸入值與後續層之權重相乘用以生成後續層之輸出的迴圈本體。運算單元圖204具有能使用粗粒度管線化來利用的最外迴圈本體之迴圈級平行性。其具有能類似地使用迴圈展開(loop unrolling)、SIMD向量化以及管線化來利用的最內迴圈本體之指令級平行性。
關於迴圈,直接在迴圈本體中巢套的迴圈稱外母迴圈之子迴圈。若其不具有任何子代(children),亦即沒有任何巢狀迴圈在其本體內,則迴圈被稱作最內迴圈。若其不具有任何母代(parent),亦即,其未被巢套於另外的迴圈本體內,則迴圈為最外迴圈。不完美的巢狀迴圈具有有著非巢套(non-looping)敘述(例如,基元算術(primitive arithmetic)、邏輯以及關係運算)與一或多個子迴圈之混合的本體。能在任何或所有迴圈級上且在包含迴圈本體之運算中利用於不完美的巢狀迴圈中的平行性。平行性能以多個形式發生,像是細粒度和粗粒度管線平行性、資料平行性以及任務平行性。
運算單元圖204之範例包括:
‧AlexNet
‧ResNet
‧Inception
‧WaveNet
‧PixelCNN
‧GoogLeNet
‧ENet
‧U-Net
‧BN-NIN
‧VGG
‧LeNet
‧DeepSEA
‧DeepChem
‧DeepBind
‧DeepMotif
‧FIDDLE
‧DeepLNC
‧DeepCpG
‧DeepCyTOF
‧SPINDLE
架構提示202係由使用者明定,像是應用開發者和使用高階語言(諸如JSON、C、C++、Java、Python或Spatial)的工程師。請見Koeplinger等人於2018年在關於程式語言設計及實作(PLDI)的第39屆ACM SIGPLAN會議的論文集、第43屆關於電腦架構的國際論壇之論文集發表 的「Spatial:A Language And Compiler For Application Accelerators」。
圖3及4繪示在JSON中寫入的架構提示202之範例。當在可重組態資料處理器100之實體計算單元及/或實體記憶體單元上執行第一運算單元之型樣時,架構提供202需融合第一運算單元。亦同樣,架構提示202明定在圖案中的第一運算為第一節點且明定在型樣中第一運算單元之間的第一資料流為第一邊緣。再者,架構提示202引導在型樣中第一運算單元(例如,322、332、342、252、422)之間的融合。
在一實作中,架構提示202描述成列的節點型樣,其被融合到能在可重組態資料處理器100之一實體計算單元上執行的一運算中。在一些實作中,各個節點型樣包含成列的節點(通用唯一識別符(UUID;universally unique identifier)和運算類型)、描述節點如何連接的邊緣(亦列,一系列各節點的輸入)以及融合節點之運算類型。
型樣圖300為架構提示202之範例。型樣圖300需要將三個運算單元(Conv2DBNRelu)融合322:(1)二維(2D)卷積運算單元(Conv2D),(2)批次正規化運算單元(BatchNorm)以及(3)整流線性單元(ReLU)運算單元(Relu)。型樣圖300將這三種運算單元明定為節點302且將在這三種運算單元之間的資料流明定為邊緣312。
型樣圖300亦需要將二個運算單元(Conv2DBN)融合332:(1)2D卷積運算單元和(2)批次正規 化運算單元。型樣圖300亦需要將二個運算單元(Conv2DRelu)融合342:(1)2D卷積運算單元和(2)ReLU運算單元。型樣圖300亦需要將二個運算單元(Addmm)融合352:(1)乘法運算單元(Mm)和(2)加法運算單元(Add)。
型樣圖400為用於非序列型樣的另一架構提示202之範例。型樣圖400需將五個運算單元(Conv2DBNAdd)融合422:(1)第一2D卷積運算單元,(2)第一批次正規化運算單元,(3)第二2D卷積運算單元,(4)第二批次正規化運算單元,以及(5)加法運算單元。型樣圖400將這五種運算單元明定為節點402且將在這五種運算單元之間的資料流明定為邊緣412。在此,可重組態資料處理器100之一實體計算單元對於兩組資料進行2D卷積運算和批次正規化,並且接著將他們的結果相加。
融合器214考量可重組態資料處理器100之目標架構進行融合。目標架構係明定於架構規格212中且由使用者所提供。在一實作中,架構提示202係特定於可重組態資料處理器100之目標架構。
圖5描繪依據所揭露的技術之一實作的融合演算法500。在一實作中,融合演算法500係由融合器214所實作。
在動作502處,融合演算法500基於使用者明定的架構提示202來建構「運算單元之型樣」。在運算單元之型樣中的節點代表控制結構、資料運算以及記憶體分配,同時邊緣代表資料與效果相依性。運算單元之型樣支 援批次、迴圈、函數呼叫以及其它各種控制相依性。在一實作中,運算單元的各個型樣能具有多個輸入,但僅一個輸出。輸出節點被稱為「node_pattern_output」。圖6繪示具有2D卷積節點602、604和批次正規化節點612、614連同加法輸出節點622(node_pattern_output)的運算單元之型樣的一範例600。
在動作512處,融合演算法500在匹配運算單元之型樣的輸出節點(例如,加法輸出節點622)的未融合運算單元圖204中找尋節點。此在未融合的運算單元圖204中匹配的節點被稱為「node_matched_output」。
在動作522處,融合演算法500從node_pattern_output及從node_matched_output平行地向上遍歷,並且檢查相應的節點是否匹配,直到在運算單元之型樣中的每一個節點已被訪查為止。若所有節點匹配,則接著找到「匹配的子圖」。若匹配的子圖未找到,則接著融合演算法500走回到動作512。
在一實作中,動作522係由偵測器714來進行,其轉而包含掃描器702和匹配器712。在圖7中提供體現動作522的樣本碼724,用以找尋700型樣匹配(匹配的子圖)。掃描器702掃描未融合的運算單元圖204,用以偵測由架構提示202所明定的第一運算單元之型樣的實例(例如,322、332、342、252、422)。匹配器712將在運算單元圖204中的第二節點和第二邊緣與在架構提示202中的第一節點和第一邊緣匹配,並且偵測型樣匹配(匹配的子 圖)。
在一實作中,動作522包含,在運算單元圖204中藉由被架構提示202所明定的第一輸出節點與第二輸出節點匹配來偵測型樣匹配,以及在運算單元圖204中以第二輸出節點開始,遍歷運算單元圖204來決定在運算單元圖204中的第二節點和第二邊緣匹配在架構提示202中的第一節點和第一邊緣。在一實作中,該遍歷為向上遍歷(upward traversal)。
於動作532處,若在其之中的中間節點在匹配的子圖外側具有連接指向,則融合演算法500將部分的所匹配的子圖複製。圖8繪示識別800被融合成合併運算單元方塊814但具有到該合併運算單元方塊814外側的運算單元圖204之另一運算單元的資料流的運算單元圖204之運算單元。合併運算單元方塊814包含2D卷積運算單元(Conv2D)812、批次正規化運算單元(BatchNorm)824和ReLU運算單元(ReLU)834。這裡,Conv2D 812與BatchNorm 824之中間結果需要外側於合併運算單元方塊814作為對加法運算單元(Add)842的輸入。此需要複製一些節點以確保在節點融合之後的正確性。
在一實作中,對於將匹配的子圖(亦即,合併運算單元方塊)之中間節點連接的任何連接,中間節點以及在合併運算單元方塊中所有其祖代(ancestor)被複製。在合併運算單元方塊814的情形中,這類中間節點為Conv2D 812和BatchNorm 824。
圖9繪示複製900識別的運算單元(例如,Conv2D 812A、Conv2D 812B、BatchNorm 824)以及其資料流,並且複製在提供輸入到識別的運算單元(例如,BatchNorm 824)的合併運算單元方塊814中任何其它運算單元(例如,Conv2D 812A)以及其資料流。
於動作542處,融合演算法500當由架構提示202明定時以融合的節點取代匹配的子圖。在一實作中,融合器214將在運算單元圖204中的第二節點和第二邊緣之運算單元融合成為合併運算單元方塊,從而生成融合的運算單元圖224。
分配器234將可重組態資料處理器100之實體計算單元及/或實體記憶體單元分配給融合的運算單元圖224。
執行器244基於分配在可重組態資料處理器100上執行融合的運算單元圖224。
ResNet 50融合範例
圖10繪示將圖6之融合演算法應用至ResNet50運算單元圖1000的一範例。融合演算法500識別匹配的子圖,其包含Conv2D運算單元1002、BatchNorm運算單元1012、Conv2D運算單元1022、BatchNorm運算單元1032以及加法運算單元1042連同他們的資料流(繪示為虛線箭頭)。
圖11繪示以合併運算單元方塊(亦即,融合 的方塊)1102造成的融合ResNet50運算單元圖1100。
效能估計
於此揭示的技術產生用於在可重組態資料處理器100上執行運算單元圖的效能估計。運算單元圖可以為融合的運算單元圖224。在一實作中,效能估計係使用於將可重組態資料處理器100之可用實體計算單元及/或實體記憶體單元分配至運算單元圖之運算單元以用於他們的執行。
圖12闡述使用效能估計1200來將可重組態資料處理器100之可用實體計算單元及/或實體記憶體單元分配至用於其執行的融合運算單元圖224之運算單元的一實作。
效能估計器1202採用融合的運算單元圖224作為輸入並且產生效能估計1262作為輸出。在一實作中,效能估計1262被使用來將可重組態資料處理器100之可用實體計算單元及/或實體記憶體單元分配給融合的運算單元圖224之運算單元,並且接著執行在可重組態資料處理器100上的融合的運算單元圖224。
在一些實作中,顯影儀(visualizer)1272產生效能估計1262以用於顯示。可以使用視覺化(visualization)來傳達融合的運算單元圖224如何高效地由可重組態資料處理器100執行。可以對於比較分析使用視覺化來將融合的運算單元圖224之效估計對運算單元圖204之效能估計進 行比較。可以對於比較分析使用視覺化來將第一融合運算單元圖之效能估計對第二融合運算單元圖之效能估計進行比較。可以對於比較分析使用視覺化來將第一運算單元圖之效估計對第二運算單元圖之效能估計進行比較。
效能估計器1202包含搜尋器1212、管線資源決定器(determiner)1222、級潛時決定器1232、級資源決定器1242以及效能估計計算器1252。
在一實作中,效能估計1262識別執行在可重組態資料處理器100上的融合運算單元圖224之處理量(throughput)和潛時。在理想的情形中,晶片(可重組態資料處理器100)利用率為百分之百(100%),其能被公式化為:througput ideal=GRAPH FLOP/CHIP FLOPS,其中GRAPH FLOP為在融合運算單元圖224中浮點運算之總數,並且CHIP FLOPS為每秒能由晶片(可重組態資料處理器100)處理的浮點運算之峰值數。
當未達成百分之百(100%)晶片(可重組態資料處理器100)之利用率時(例如由於軟體和硬體限制),接著:througput real=througput ideal*η,其中η為平均晶片利用率。
於此,η為取決於可重組態資料處理器100,融合運算單元圖224及/或融合運算單元圖224之輸入維度的架構的數目,因而無法容易地估計。此外,對於某種運 算單元圖,可重組態資料處理器100之不同實體計算單元及/或實體記憶體單元的利用率亦可以是不同的,其取決於在特定體計算單元或實體記憶體單元上運行的運算及資料尺寸。例如,運行卷積的實體計算單元能達到非常高的利用率,同時運行加法的實體計算單元可以是未充分利用的(under-utilized)。這些變數使得準確效能估計有挑戰性。
二元搜尋
圖13繪示使用以產生在可重組態資料處理器100上執行融合運算單元圖224之效能估計1262的二元搜尋演算法1300之一實作。
搜尋器1212決定需要用於透過二元搜尋演算法1300使用疊代過程(iterative process)執行融合運算單元圖224之運算的同屬級計算處理時間(「stage_latency」)。在一實作中,搜尋器1212利用同屬級計算處理時間(「stage_latency」)之下(「stage_latency_low」)和上(「stage_latency_high」)搜尋界限。
在一實作中,同屬級計算處理時間(「stage_latency」)之下搜尋界限(「stage_latency_low」)可以基於可重組態資料處理器100之最大利用率(例如,100%利用率)。此係在動作1302中體現。
在一實作中,同屬級計算處理時間(「stage_latency」)之上搜尋界限(「stage_latency_high」) 能夠基於將同屬級計算處理時間(「stage_latency」)之下搜尋界限(「stage_latency_low」)與最小利用率因子相乘。在一些實作中,最小利用率因子為一百因而最小利用率為1%。在其它實作中,上搜尋界限(「stage_latency_high」)之初始值被設定成下搜尋界限(「stage_latency_low」)之1000x,其亦等於0.1%利用率。此亦在動作1302中體現。
接著,搜尋器1212針對評估在同屬級計算處理時間(「stage_latency」)之下(「stage_latency_low」)和上(「stage_latency_high」)搜尋界限之間選擇中間級計算處理時間。在一實作中,中間級計算處理時間可以為同屬級計算處理時間(「stage_latency」)之下(「stage_latency_low」)和上(「stage_latency_high」)搜尋界限的平均(「stage_latency_average」)。此係在動作1312中體現。
管線資源決定器1222接著決定需要在可重組態資料處理器100上處理融合運算單元圖224之管線計算負載的實體計算單元及/或實體記憶體單元之管線數目1432(「total_PCUs」)。
級計算負載
轉向圖14來看,對於融合運算單元圖224之運算單元(「針對在fused_graph中的節點」)之各者,級潛時決定器1232藉由使用資源決定功能(例如, 「get_graph_PCU」1402)來進行資源決定1400,用以決定需要使用僅一實體計算單元及/或僅一實體記憶體單元處理融合運算單元圖224之運算單元的分別者之級計算負載1424(「node.get_flop()」)的特定級計算處理時間1414(「node_latency_with_one_PCU」)。
運算單元之分別者的級計算負載1424(「node.get_flop()」)(其意味需要執行運算單元之分別者的浮點運算(FLOP)之總數)係藉由其運算類型、輸入維數(dimensionality)和輸出維數來決定。
例如,在圖15中,用於加法運算單元的級計算負載1500係藉由首先估算FLOP 1502之總數作為輸出尺寸的函數來決定。亦即,一運算產生一輸出數。接著,基於張量形狀(tensor shape)估算輸入尺寸1512。
在可重組態資料處理器100之一實作中,實體計算單元具有三十二條線道(lane)以及六個級,具有總數一百九十六(32x6)個算術邏輯單元(ALU)。各個ALU能進行每週期兩個運算,並且在一週期中能完成乘法及加法。此係體現為「n_passes」1522。
加法運算單元僅能使用一個級,因此「/config.PCU_N_STAGES」參數1536被包括在「PCU_utilization」式子1532中。PCU_utilizaiton估算1532之其餘組件1534是出於加法可能不能夠善用所有的線道的事實。例如,若吾人具有三十二個數加三十二個數,則吾人能善用三十二條線道(並行地)。然而,若吾人具有 四十個數,吾人將首先載入三十二個數,而接著是八個數,因此利用於將乘以(40/64)。
在另一範例中於圖16中,用於矩陣乘法運算的級計算負載1600係藉由首先估算FLOP 1602之總數作為輸出尺寸之函數M * N來決定。亦即,對於各個輸出元件,吾人需要完成K個乘法及加法運算,因此總共的FLOP為M * N * (K * 2)。
使用一實體計算單元,吾人能在M維度中跨三十二條線道來平行化,並且在N維度中跨六個級來平行化,如在1612中所體現的。所以,若M=64,K=100以及N=12,接著吾人能藉由將第一矩陣分割成兩個三十二乘一百(32x100)區塊以及第二矩陣分割成兩百乘六(200x6)區塊來達成百分之百利用率1622。然而,若M=16,K=100及N=3,接著吾人僅能得到百分之二十五的利用率1622。
級計算處理時間
最後,特定級計算處理時間1414("node_latency_with_one_PCU")被決定為利用率和僅一實體計算單元及/或僅一實體記憶體單元(後者對於特定處理器/晶片/硬體可以是恆定的)之性能(capability)的比率。
級資源
級資源決定器1242決定需要藉由將特定級計算處理時間1414(「node_latency_with_one_PCU」)與中間 級計算處理時間1434(例如「stage_latency_average」)相除來處理運算單元之分別者的級計算負載1424(「node.get_flop()」)的實體計算單元及/或實體記憶體單元之級數目1432(「node_PCUs」)。
在一實作中,級資源決定器1242決定需要藉由將級計算處理時間1414(「node_latency_with_one_PCU」)與中間級計算處理時間1432(例如「stage_latency_average」)相除的結果捨入到整數來處理級計算負載1424(「node.get_flop()」)的實體計算單元及/或實體記憶體單元之級數目1432(「node_PCUs」)。此係藉由取整函數(ceiling function)1433來體現。
管線資源
管線資源決定器1222將用於運算單元之各者的實體計算單元及/或實體記憶體單元的級數目1432(「node_PCUs」)加總並且生成實體計算單元及/或實體記憶體單元之管線數目1442(「total_PCUs」)。此亦在圖13之動作1312中體現。
在一實作中,對於各個節點,若僅使用一PCU,則吾人首先估算其潛時。此需要建立具有各個運算(例如,Conv,Add)的建模之節點庫,使得我們知道如何計算FLOP及給定輸入和輸出尺寸的各個運算之利用。接著,我們看向此潛時(具有一PCU)與我們的目標 stage_latency之間的比率來決定需要多少PCU來對此運算平行化。用於該圖的總PCU接著為分配給各個節點的PCU之總和。
疊代
搜尋器1212接著疊代地將同屬級計算處理時間(「stage_latency」)之新的上(「stage_latency_low」)及下(「stage_latency_high」)搜尋界限初始化,並且對於在下個疊代中的評估,考量在先前疊代中對於在先的中間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數目1432(「total_PCUs」)是否低於或高於可用(available_PCUs)實體計算單元及/或實體記憶體單元來在同屬級計算處理時間(「stage_latency」)之新的下及上搜尋界限之間選擇新的中間級計算處理時間。此係在動作1322中體現。
在一實作中,當對於在先前疊代中在先的中間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數目1432(「total_PCUs」)低於可用(available_PCUs)實體計算單元及/或實體記憶體單元時,搜尋器1212對於作為在先中間級計算處理時間(例如「stage_latency_average」)的下一個疊代設定新的上(「stage_latency_high」)搜尋界限。此係在動作1324中體現。
在一實作中,當對於在先前疊代中在先的中 間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數目1432(「total_PCUs」)高於可用(available_PCUs)實體計算單元及/或實體記憶體單元時,搜尋器1212對於作為在先中間級計算處理時間(例如「stage_latency_average」)的下一個疊代設定新的下(「stage_latency_low」)搜尋界限。此係在動作1332中體現。
在一實作中,在各個疊代中,吾人選取上及下界限(stage_latency_average)的中間點,並且取得需要透過get_graph_PCUs函數呼叫達到這樣的級潛時的總PCU之估計。若PCU之總數超過可用的PCU,則吾人需要增加級潛時(讓stage_latency_low=stage_latency_average)。否則,吾人具有更多計算資源來花費以進一步改善效能,因此吾人嘗試降低級潛時(讓stage_latency_high=stage_latency_average)。
終止
當對於在目前疊代中目前中間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數1432(「total_PCUs」)符合收斂準則(convergence criteria)時,搜尋器1212將疊代初始化及選擇終止。在一實作中,當上搜尋界限和下搜尋界限之間的差去到低於臨限(threshold)時,收斂準則發生。此係在動作1342中體現。在一實作中,只要上搜尋界限和下搜尋界限之間的差在臨 限之上,則搜尋器1212持續疊代初始化及選擇。
處理量(throughput)和潛時
效能估計計算器1252將管線處理量估算為目前中間級計算處理時間的反函數(inverse function),並且藉由將級計算處理時間與在融合運算圖224中的運算單元之數目(「graph depth」)相乘來計算圖潛時。此係在動作1344中體現。
同屬效能估計範例
圖17描繪依據所揭露的技術之一實作對於其決定效能估計的範例運算單元圖1700。
在空間架構中,節點運算被管線化。換言之,各個節點為在管線中的級且管線之長度為圖之深度。例如,在運算單元圖1700中,在管線中有五個節點/級/運算單元。在分配給第二運算「Add1」的PCU正將加法應用到第n個樣本的同時,用於第一運算「Conv1」1702的PCU正對於第n+1個樣本進行卷積(並且Conv2為在第n-1個樣本上的運算,等等)。
圖18闡述依據所揭露的技術之一實作對於圖17之運算單元圖1700之不同的運算單元1702、1712、1722、1732及1742所決定的級計算處理次數1800。在直行1802和1812中的值係基於在考量若僅一PCU及/或PCU被分配給各個節點/運算單元/級之類似命名的章節中上述討論 的級計算負載和級計算處理時間實施例來決定。
來假定吾人具有40個可用的PCU(available_PCUs)。設想我們目前對於級潛時的搜尋範圍為4us(stage_latency_low)和12us(stage_latency_high)。吾人選取中間點,其為(4+12)/2=8us(stage_latency_average)。對於用以達到8us的Conv1 1702,吾人需要將其平行化為200/8=25條道。因此,吾人將25PCU指定(assign)給Conv1 1702。同樣的,吾人將ceil(18/8)=3PCU指定給Add1 1712、將ceil(110/8)=14PCU指定給Conv2 1722、將ceil(9/8)=2PCU指定給Add2 1732以及將ceil(50/8)=7PCU指定給MM 1742。所使用的總PCU為25+3+14+2+7=51(total_PUCs),大於可用的40(available_PCUs)。
因此,吾人藉由讓stage_latency_low=8us來增加級潛時,並且下一個要嘗試的中間點將為(8+12)/2=10us。二元搜尋演算法1300最終收斂成11us,作為最佳級潛時。基於此,估計的處理量為1/11us=90,909樣本/s。圖潛時為1us * 5=55us。
可重組態圖磚(tile)
圖19A為在圖1之可重組態資料處理器中可使用的圖磚和陣列級網路的簡化圖1900。圖19B闡述將在陣列級網路中的元件連接的範例交換器單元。在此範例中,可組態單元300之陣列包括複數個類型的可組態單元。在 此範例中,可組態單元之類型包括型樣計算單元(PCU;Pattern Compute Unit)、型樣記憶體單元(PMU;Pattern Memory Unit)、交換單元(S)以及位址產生及合併單元(各者包括兩個位址產生器AG和共用CU)。對於這些類型的可組態單元之函數的一範例,請見於2017年六月24~28在加拿大安大略省多倫多市ISCA’17上由Prabhakar等人發表的「Plasticine:A Reconfigurable Architecture for Parallel Patterns」,其如同於此完全提出地參引合併。
這些可組態單元之各者含有組態存放區(configuration store)(其包含代表安裝或用以運行程式的序列其一者之成組的暫存器或正反器),並且能包括巢狀迴圈之數目、各個迴圈疊代器的限制、要對於各個級執行的指令、運算元的來源以及用於輸入及輸出介面的網路參數。
此外,這算可組態單元之各者含有包含儲存使用來追蹤在巢狀迴圈或其他方面中進展的存放區狀態(store status)之成組的暫存器或正反器。組態檔案含有代表執行程式的組件之各者的初始組態或開始狀態的位元流。此位元流係稱為位元檔案(bit file)。程式載入為基於位元檔案的內容來在可組態單元之陣列190中安裝組態存放區的過程,用以允許所有的組件執行程式(亦即,機器)。程式載入亦需要載入所有的PMU記憶體。
陣列級網路(array level network)包括將在陣列中的可組態單元互連的鏈接(link)。在陣列級網路中 的鏈接包括一或多且在此情形中為三種實體匯流排:區塊級(chunk-level)向量匯流排(例如,128位元的資料),字級(word-level)純量匯流排(例如,32位元的資料)以及多個位元級(bit-level)控制匯流排。舉例來說,在交換單元1911和1912之間的互連1921包括具有128位元之向量匯流排寬度的向量匯流排互連、具有32位元之純量匯流排寬度的純量匯流排互連以及控制匯流排互連。
這三種實體匯流排區別在於正被轉移/傳輸的資料之粒度。在一實施例中,向量匯流排能攜載包括16位元組(=128位元)的資料作為其酬載的區塊。純量匯流排能具有32位元酬載,並且攜載純量運算元或控制資訊。控制匯流排能攜載控制交握(handshake),像是符記(token)和其它信號。向量和純量匯流排能為交換的封包,其包括指示各個封包之目的地的標頭,以及像是當封包被亂序接收時能被使用來重組檔案的順序號碼(sequence number)之其它資訊。各個封包標頭能含有識別目的地交換單元之地理座標(例如,在陣列中的橫列和直行)之目的地識別符,以及識別使用以到達目的地單元之目的地交換器上的介面(例如,北、南、東、西等)的介面識別符。控制網路例如能為基於在裝置中的時序電路來交換的電路。組態載入/卸載控制器能產生用於128位元之組態資料的各個區塊的標頭。標頭係在標頭匯流排上傳送至在可組態單元之陣列190中的各個可組態單元。
在一範例中,128位元之資料的區塊係在將 區塊提供為對可組態單元之輸入的向量匯流排上傳送。向量匯流排可以包括128酬載線以及成組的標頭線。標頭可以包括對於各個區塊的順序ID,其可以包括: 用以指示該區塊是否為高速暫存記憶體(scratchpad memory)或是組態存放區資料的位元。
‧形成區塊號碼的位元。
‧指示直行識別符的位元。
‧指示橫列識別符的位元。
‧指示組件識別符的位元。
對於載入運算,組態載入控制器能將區塊之號碼以從N-1到0的次序發送到可組態單元。舉此例來說,6個區塊係以區塊5->區塊4->區塊3->區塊2->區塊1->區塊0之最高有效位元優先次序來送出。(請注意,此最高有效位元優先次序造成區塊5從陣列組態載入控制器之分佈順序的第0輪中分佈。)對於卸載運算,組態卸載控制器能將亂序的卸載資料寫到記憶體。對於載入和卸載運算兩者,在可組態單元中組態資料存放區中的組態串鏈(serial chain)中的移位係從LSB(最低有效位元)到MSB(最高有效位元),或MSB先出。
圖19B闡述將在陣列級網路中的元件連接的範例交換器單元。如在圖19B的範例中所繪示,交換單元可以具有8個介面。交換單元之北、南、東及西介面係用於在交換單元之間連接。交換單元之東北、東南、西北及西南介面各者係使用於完成對PCU或PMU介面的連接。在 各個象限(tile quadrant)中之成組的2個交換單元具有對位址產生及合併單元(AGCU;Address Generation and Coalescing Unit)的連接,該AGCU包括多個位址產生(AG;Address Generation)及連接到多個位址產生單元的合併單元(CU;coalescing unit)。合併單元(CU)在AG之間仲裁並且處理記憶體請求。交換單元的8個介面之各者可以包括向量介面、純量介面以及用以與向量網路、純量網路以及控制網路通訊的控制介面。
在組態之後執行機器期間,資料能使用在陣列級網路上一或多個交換單元之向量匯流排及向量介面經由一或多個單元交換器和在單元交換器之間的一或多個鏈接來發送到可組態單元。
在於此說明的實施例中,在將圖磚組態之前,組態檔案或位元檔案能使用在陣列級網路上一或多個交換單元之向量匯流排及向量介面經由一或多個單元交換器和在單元交換器之間的一或多個鏈接來從使用相同向量匯流排的組態載入控制器發送到可組態單元。舉例而言,在特別對於可組態單元PMU 1941的單元檔案中的組態資料之區塊能經由在組態載入/卸載控制器1901與交換單元1911之西(W)向量介面之間的鏈接1922、交換單元1911以及在交換單元1911之東南(SE)向量介面與PMU 1941之間的鏈接1931來從組態載入/卸載控制器1901發送到PMU 1941。
在此範例中,AGCU其中一者係組態以作為 主AGCU,其包括組態載入/卸載控制器(例如,1901)。主AGCU實作暫存器,主機(120,圖1)能透過該暫存器將命令經由匯流排系統發送到主AGCU。主AGCU控制在圖磚中可組態單元之陣列上的運算,並且實作程式控制狀態機器來基於命令追蹤圖磚之狀態,其從透過寫入到暫存器的主機接收。對於每個狀態的變遷,主AGCU將命令發出到於菊鍊(daisy chained)命令匯流排(圖19A)之上圖磚上的所有組件。命令包括程式重置命令,用以將在圖磚中可組態單元之陣列中的可組態單元重置,並且包括程式載入命令,用以將組態檔案載入到可組態單元。
在主AGCU中的組態載入控制器負責從記憶體讀取組態檔案並且將組態檔案發送到圖磚的每一個可組態單元。主AGCU可以較佳地在頂級網路之最大處理量上從記憶體讀取組態檔案。從記憶體讀取的資料係依據於此說明的分佈順序由在陣列級網路上的向量介面之上的主AGCU傳送到對應的可組態單元。
在一實施例中,以吾人能降低在可組態單元內的佈線需求的方式,保有要在組態載入過程/處理中載入之單元檔案或是在組件中於組態卸載過程/處理中卸載的組態及狀態暫存器係以串鏈來連接,並且能透過通過串列鏈的移位位元之過程來載入。在一些實施例中,可有並列或串列地佈設之多於一個的串鏈。當可組態單元在一匯流排週期中從主AGCU接收例如128位元的組態資料時,可組態單元每週期1位元的速率透過其串鏈來將其資料移 位,其中移位器(shifter)週期以與匯流排週期相同的速率來運行。對於用以將在向量介面之上具有128位元的資料的128組態位元載入的可組態單元,其將花費128移位器週期。128位元的組態資料係稱為一區塊。可組態單元可以需要多個資料區塊來載入所有其組態位元。
可組態單元透過多個記憶體介面(150,圖1)與記憶體介接。記憶體介面之各者能使用數個AGCU來存取。各個AGCU含有可重組態資料深度以對於外接晶片記憶體(off-chip memory)產生請求。各個AGCU含有FIFO(用於組織資料的先進先出緩衝器),用以將輸出(outgoing)的命令、資料和從外接晶片記憶體進來的(incoming)回應緩存。
在AGCU中的位址產生器AG可以產生密集或稀疏其一者的記憶體命令。密集請求能被使用來大量傳輸相連外接晶片記憶體區域,並且能被使用來將資料之區塊讀取或寫入自/至在可組態單元之陣列中的可組態單元。密集請求可以藉由在AGCU中的合併單元(CU)被轉換成多個外接晶片記憶體叢發(burst)請求。稀疏請求能將位址之串流進入佇列(enqueue)於合併單元中。合併單元能使用合併快取來在發出的外接晶片記憶體請求上維護後設資料(metadata),用以將屬於相同外接晶片記憶體請求的稀疏位址結合以最小化發出的外接晶片記憶體請求之數目。
可重組態單元
圖20為闡述範例可組態單元2000的方塊圖,像是型樣計算單元(PCU)。在本案的上下文中,PCU對應於實體計算單元。在可組態單元之陣列中的可組態單元包括組態資料存放區2020(例如,串鏈),用以儲存單元檔案,其包含特別對於對應的可組態單元的組態資料之複數個區塊(或其它尺寸的子檔)。在可組態單元之陣列中的可組態單元各者包括經由線2022連接至組態資料存放區2020的單元組態載入邏輯2040,用以執行單元組態載入過程/處理。單元組態載入過程包括,經由匯流排系統(例如,向量輸入)接收特別對於可組態單元的單元檔案之區塊,以及將接收的區塊載入到可組態單元之組態資料存放區2020中。
在此範例中,在複數個可組態單元之可組態單元中的組態資料存放區包含閂鎖器(latch)之串鏈,其中閂鎖器儲存在可組態單元中資源之控制組態的位元。在組態資料存放區中的串鏈包括串聯連接的用於組態資料的移位暫存器和用於狀態資訊及計數器值的第二移位暫存器鏈。
可組態單元能使用三個對應組的輸入及輸出(IO)來與純量、向量及控制匯流排介接,該三個對應組的輸入及輸出(IO):純量輸入/輸出,向量輸入/輸出以及控制輸入/輸出。能使用純量IO來傳達單一字的資料(例如,32位元)。在像是於單元組態載入過程/處理中接收組態資料並且在跨多個PCU之間的長管線的組態之後的運算期間 傳送及接收資料的情形中,能使用向量IO來傳達資料之區塊(例如,128位元)。能使用控制IO來傳達控制信號,像是可組態單元之執行的開始或結束。控制輸入係由控制方塊2070所接收,並且控制輸出係由控制方塊2070所提供。
各個向量輸入係使用在向量FIFO方塊2060(其可以包括一或多個向量FIFO)中的向量FIFO所緩存。各個純量輸入係使用純量FIFO 2050所緩存。使用輸入FIFO解耦資料生成器和消耗器之間的時序,並且藉由使其耐受於輸入延遲不匹配來簡化可組態單元間(inter-configurable-unit)的控制邏輯。
可以提供輸入組態資料2010給向量FIFO作為向量輸入,且接著被傳輸到組態資料存放區2020。可以使用向量輸出來從組態資料存放區2020卸載輸出組態資料2030。
CGRA使用菊鍊完成匯流排以指示何時已完成載入/卸載命令。主AGCU傳送程式載入及卸載命令給在菊鍊命令匯流排之上的可組態單元之陣列中的可組態單元。如在圖20之範例中所繪示,菊鍊完成匯流排2091和菊鍊命令匯流排2092被連接到菊鍊邏輯2093,其與單元組態載入邏輯2040進行通訊。如下所述,菊鍊邏輯2093可以包括載入完成狀態邏輯。菊鍊完成匯流排進一步說明於下。用於命令及完成匯流排的其它拓撲是清楚可能的,但未於此說明。
在方塊2080中,可組態單元包括多個可重組 態資料路徑。在可組態單元中的資料路徑能被組織為多級(級1…級N)、可重組態SIMD(單一指令,多筆資料)管線。被推入到在可組態單元中的組態串鏈中成塊的資料包括用於在可組態單元中各個資料路徑之各個級的組態資料。在組態資料存放區2020中的組態串鏈經由線2023被連接到在方塊2080中的多個資料路徑。
在本案的上下文中,型樣記憶體單元(PMU)對應於實體記憶體單元。PMU可以含有與打算用於位址估算的可重組態資料路徑耦接的高速暫存記憶體,連同在PCU中使用的匯流排介面。可以使用PMU來將晶片上記憶體分佈遍及可重組態單元之陣列。在一實施例中,在PMU資料路徑上進行在PMU內的記憶體之位址估算,同時在PCU內進行核心計算。各個PMU含有與打算主要用於位址估算的可重組態資料路徑耦接的程式器管理的(programmer-managed)高速暫存記憶體,以及如由程式所需要的其它計算運算。PMU被使用來將晶片上記憶體分佈遍及陣列190。陣列架構在涉及於記憶體位址計算中的運算和核心計算下層應用之間作出區分。在PMU資料路徑上進行位址估算,同時在PCU內進行核心計算。數個觀察已促成此設計選擇:(i)位址估算包含簡單純量數學,其需要比在PCU中的ALU更簡單的ALU;(ii)對於位址計算使用多條線道通常對於大多晶片上存取型樣是不需要的;以及(iii)在PUC內進行位址計算需要選路從PCU到PMU的位址,其佔據PCU級和輸出鏈接,並且能導致PCU利用不足 (under-utilization)。
PCU和PMU(統稱「單元」)與三種互連進行通訊:字級純量、多字級向量以及位元級控制互連。可組態單元之陣列190透過多個DDR通道與DRAM介接。各個通道具有在多個位址串流之間仲裁的關聯位址管理單元,並且由用以支援多個待決記憶體請求的緩衝器及合併以最小化DRAM存取的位址所組成。區域位址估算係在PMU中做完,DRAM位址計算發生在DRAM位址管理單元中以及剩餘資料計算發生在PCU中。高速暫存係以匹配PCU線道之數目的多個SRAM組庫(bank)來建立。在高速暫存周圍的位址解碼邏輯可以被組態以在數個分庫模式(banking mode)中運算,用以支援各種存取型樣。跨步分庫模式(Strided banking mode)支援通常在密集資料結構上發現的線性存取型樣。FIFO模式支援串流存取(streaming access)。線緩存模式捕捉類似於滑動視窗的存取型樣。複製模式(其中內容係跨所有記憶體組庫來複製)提供多個讀取位址通道以支援平行化的晶片上集中(gather)運算。
PCU被設計來執行在應用中最內的平行型樣。PCU資料路徑被組織為多級、可重組態SIMD管線。此設計使各個PCU能達成高計算密度,並且利用跨線道之迴圈級平行性和跨級的管線平行性兩者。各個SIMD線道之各個級係由功能單元(FU;functional unit)和關聯的管線暫存器(PR;pipeline register)所組成。FU進行32位元字級算術和二進制運算,包括對於浮點及整數運算的支援。如 在SIMD中單一管線級運算中的FU,各個級需要僅單一組態暫存器。來自各個FU的結果被寫入到其關聯的暫存器中。在各個線道中的PR係跨管線級鏈接在一起,用以允許活值(live value)在相同線道內的級之間傳播。FU之間的跨線道通訊係使用兩類型的PCU內網路(intra-PCU network)來捕捉:允許從多個線道將值精簡成單一純量的精簡樹網路,以及允許將PR使用為跨級以在模板應用中利用再用的滑動視窗之位移網路。兩個網路皆在PR內使用專用暫存器以最小化硬體負擔。
PCU使用三種輸入及輸出(IO)來與全域互連介接:純量,向量及控制。純量IO係使用以傳達單一資料之字,像是摺疊之結果。各個向量IO允許在PCU中每線道傳達一字,並且係在像是讀取及寫入到在PMU中的高速暫存中且跨多個PCU之間長管線傳送中間資料的情形中使用。各個向量及純量輸入係使用小FIFO來緩存。使用輸入FIFO解耦資料生成器和消耗器,並且藉由使其耐受於輸入延遲不匹配來簡化PCU間的控制邏輯。控制IO係使用來傳達控制信號,像是PCU之執行的開始或結束,或者用來指示背壓(backpressure)。
計數器之可重組態鏈產生型樣疊代索引和用以協調執行的控制信號。PCU執行在當控制方塊致能計數器其中一者時開始。基於本案的控制和資料相依性,控制方塊能被組態以將來自用以觸發PCU執行的區域FIFO及全域控制輸入兩者的多個控制信號結合。控制方塊係使用可 重組態組合邏輯及用於狀態機的可程式化可逆計數器(up-down counter)來實作。
正如對饋送多個SIMD單元以維持計算處理量來說分庫是重要的,N緩存(N-buffering)或普遍的雙倍緩存即同樣是重要的以支援粗粒度管線。如一範例,在ResNet中的殘差連接(skip connection)和持定各層之輸出的緩衝器能使用N緩存來實作。PMU高速暫存可以被組態以操作為具有描述的分庫模式之任一者的N緩術器(N-buffer)。N緩衝器藉由將在各個SRAM組庫中的位址空間分割成N個不相交(disjoint)區域來實作。使用寫入和讀取狀態資訊,添加適當的偏移到各個組庫的區域位址來存取正確的資料。
可程式化計數器鏈及控制方塊觸發類似於PCU的PMU執行。各個PMU典型地含有來自生成器型樣的寫入位址估算邏輯,以及來自消耗器的讀取位址估算邏輯。基於區域FIFO之狀態及外部控制輸入,控制方塊能組態以藉由致能適當的計數器來觸發寫入位址計算、讀取位址計算或兩者。
特定實作
在一實作中,吾人揭露在具有目標架構的可重組態資料處理器上高效執行運算單元圖之電腦實作方塊。方法包括將需要執行運算單元圖的可重組態資料處理器之實體計算單元及/或實體記憶體單元的數目降低。
方法包括:從使用者接收特定於可重組態資料處理器之目標架構的架構提示。架構提示需當在可重組態資料處理器之實體計算單元及/或實體記體單元上執行第一運算單元之型樣時融合第一運算單元、將在型樣中的第一運算單元明定為第一節點、將在型樣中的第一運算單元之間的第一資料流明定為第一邊緣以及在型樣中第一運算單元之間的直接融合。
方法包括掃描運算單元圖以偵測由架構提示所明定的第一運算單元之型樣的實例。這更包括將在運算單元圖中的第二節點和第二邊緣與在架構提示中的第一節點和第一邊緣匹配,並且偵測型樣匹配。
方法包括將在運算單元圖中的第二節點和第二邊緣之運算單元融合成為合併運算單元方塊,從而生成融合的運算單元圖。
方法包括將可重組態資料處理器之實體計算單元及/或實體記憶體單元分配給融合的運算單元圖。
方法包括基於分配在可重組態資料處理器上執行融合的運算單元圖。
在對於其它實作的特定實作章節中討論的特徵之各者同樣地應用至此實例中。如上所指,於此不重複所有其它特徵並且應視重複參引。讀者將了解在這些實例中識別的特徵如何能輕易地與在其它實例中識別的成組基礎特徵結合。
架構提示將在型樣中的第一輸出運算單元明 定為第一輸出節點。
方法包含:在運算單元圖中藉由被架構提示所明定的第一輸出節點與第二輸出節點匹配來偵測型樣匹配,以及在運算單元圖中以第二輸出節點開始,遍歷運算單元圖來決定在運算單元圖中的第二節點和第二邊緣匹配在架構提示中的第一節點和第一邊緣。在一實作中,該遍歷為向上遍歷(upward traversal)。
方法包括:識別被融合到合併運算單元方塊中但具有至合併運算單元方塊外側的運算單元圖之另一運算單元的資料流的運算單元圖中之運算單元,複製識別的運算單元及其資料流且在提供輸入給識別的運算單元及其資料流的合併運算單元方塊中複製任何其它運算單元,以及基於具有合併運算單元方塊之運算單元圖以及複製運算單元及資料流,進行分配及執行。
在一實作中,架構提示被展開為轉印到型樣圖中的一系列節點和邊緣。
在此章節中所述的方法之其它實作可以包括非暫態電腦可讀儲存媒體,其儲存由處理器執行的指令來進行於此所述的方法之任一者。然而,在此章節中所述的方法之另一個實作更能包括一種系統,其包括記憶體和一或多個處理器,可操作以執行在記憶體中儲存的指令,用以進行上述的方法中之任一者。
吾人揭露將可重組態資料處理器之可用實體計算單元及/或實體記憶體單元(available_PCUs)分配給運 算單元圖之運算單元,以用於其執行。
方法包括初始化需要用於執行運算單元圖之運算單元的同屬級計算處理時間(「stage_latency」)之下(「stage_latency_low」)及上(「stage_latency_high」)搜尋界限。
方法包括針對評估在同屬級計算處理時間(「stage_latency」)之下(「stage_latency_low」)和上(「stage_latency_high」)搜尋界限之間選擇中間級計算處理時間(例如,「stage_latency_average」)。
方法包括決定需要在可重組態資料處理器上處理運算單元圖之管線計算負載的實體計算單元及/或實體記憶體單元之管線數目(「total_PCUs」)。
方法包括,對於運算單元圖之運算單元之各者(「對於在fused_graph中的節點」)使用僅一實體計算單元及/或僅一實體記憶體單元決定需要處理運算單元之分別者的級計算負載(「node.get_flop()」)的特定級計算處理時間(「node_latency_with_one_PCU」),並且藉由將特定級計算處理時間(「node_latency_with_one_PCU」)與中間級計算處理時間(例如,「stage_latency_average」)相除決定需要處理運算單元之分別者的級計算負載(「node.get_flop()」)的實體計算單元及/或實體記憶體單元之級數目(「node_PCUs」)。
方法包括,將用於運算單元之各者的實體計算單元及/或實體記憶體單元的級數目(「node_PCUs」)加 總並且生成實體計算單元及/或實體記憶體單元之管線數目(「total_PCUs」)。
方法包括,疊代地將同屬級計算處理時間(「stage_latency」)之新的上(「stage_latency_low」)及下(「stage_latency_high」)搜尋界限初始化,並且對於在下個疊代中的評估,考量在先前疊代中對於在先的中間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數目(「total_PCUs」)是否低於或高於可用(available_PCUs)實體計算單元及/或實體記憶體單元來在同屬級計算處理時間(「stage_latency」)之新的下及上搜尋界限之間選擇新的中間級計算處理時間。
方法包括,當對於在目前疊代中目前中間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數符合收斂準則(convergence criteria)時,將疊代初始化及選擇終止。
方法包括,基於目前中間級計算處理時間將可用實體計算單元及/或實體記憶體單元分配給運算單元圖之運算單元。
方法包括,基於該分配在可重組態資料處理器上執行運算單元圖之運算單元。
在對於其它實作的特定實作章節中討論的特徵之各者同樣地應用至此實例中。如上所指,於此不重複所有其它特徵並且應視重複參引。讀者將了解在這些實例中識別的特徵如何能輕易地與在其它實例中識別的成組基 礎特徵結合。
在一實作中,當上搜尋界限和下搜尋界限之間的差低於臨限時,收斂準則發生。
在一實作中,同屬級計算處理時間之下搜尋界限能基於可重組態資料處理器之最大利用且藉由將運算單元圖之管線計算負載與可重組態資料處理器之總處理容量相除來決定。
在一實作中,運算單元圖之管線計算負載能由需要執行運算單元圖的浮點運算(FLOP)之總數來決定。
在一實作中,可重組態資料處理器之總處理容量能由每秒被可重組態資料處理器可執行的FLOP(FLOP/s)之最大數目所決定。
在一實作中,同屬級計算處理時間之上搜尋界限能夠基於將同屬級計算處理時間之下搜尋界限與最小利用率因子相乘。在一些實作中,最小利用率因子為一百。
在一實作中,方法包括:只要上搜尋界限和下搜尋界限之間的差在臨限之上,則持續疊代初始化及選擇。
在一實作中,中間級計算處理時間可以為同屬級計算處理時間(「stage_latency」)之下(「stage_latency_low」)和上(「stage_latency_high」)搜尋界限的平均(「stage_latency_average」)。
在一實作中,當對於在先前疊代中在先的中 間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數目低於可用實體計算單元及/或實體記憶體單元時,方法包括:對於作為在先中間級計算處理時間的下一個疊代設定新的上搜尋界限。
在一實作中,當對於在先前疊代中在先的中間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數目高於可用實體計算單元及/或實體記憶體單元時,方法包括:對於作為在先中間級計算處理時間的下一個疊代設定新的下搜尋界限。
在一實作中,運算單元之分別者的級計算負載(其意味需要執行運算單元之分別者的浮點運算(FLOP)之總數)係藉由其運算類型、輸入維數(dimensionality)和輸出維數來決定。
在一實作中,方法包括:決定需要藉由將級計算處理時間與中間級計算處理時間相除的結果捨入到整數來處理級計算負載的實體計算單元及/或實體記憶體單元之級數目。
在一實作中,方法包括:基於目前中間級計算處理時間來決定處理量值。
在一實作中,方法包括:基於將運算單元圖之運算單元的數目與目前中間級計算處理時間相乘來決定需要用於執行運算單元圖的管線計算處理時間。
在一實作中,方法包括:選擇其級計算處理時間相對大於運算單元圖之大部分其它運算單元的運算單 元圖之該些運算單元,並且將額外可用實體計算單元及/或實體記憶體單元分配給選定的運算單元。
在一實作中,分配造成在運算單元圖之運算單元之各者實質上具有匹配級計算處理時間。
在一實作中,運算單元圖能為具有至少一融合運算單元的融合運算單元圖。
在一實作中,運算單元圖能為深度神經網路。
在一實作中,方法包括:針對顯示,產生將在符合收斂準則的目前疊代中的目前中間級計算處理時間視覺化的資料、對於目前中間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數目、需要使用僅一實體計算單元及/或僅一實體記憶體單元來處理運算單元之分別者的級計算負載的級計算處理時間及/或需要處理運算單元之分別者的級計算負載的實體計算單元及/或實體記憶體單元之級數目。
在一實作中,方法包括:針對顯示,產生將基於目前中間級計算處理時間決定的處理量值視覺化的資料。
在一實作中,方法包括:針對顯示,產生將需要用於執行運算單元圖的管線計算處理時間視覺化的資料。
在一實作中,方法包括:針對顯示,產生將分別分配給運算單元圖之運算單元之各者的可用實體計算 單元及/或實體記憶體單元視覺化的資料。
在一實作中,疊代的初始化及選擇係基於二元搜尋。
在此章節中所述的方法之其它實作可以包括非暫態電腦可讀儲存媒體,其儲存由處理器執行的指令來進行於此所述的方法之任一者。然而,在此章節中所述的方法之另一個實作更能包括一種系統,其包括記憶體和一或多個處理器,可操作以執行在記憶體中儲存的指令,用以進行上述的方法中之任一者。
吾人揭露將可重組態資料處理器之可用實體計算單元及/或實體記憶體單元(available_PCUs)分配給運算單元圖之運算單元,以用於其執行。
方法包括初始化需要用於執行運算單元圖之運算單元的同屬級計算處理時間之下(「stage_latency_low」)及上(「stage_latency_high」)搜尋界限。
方法包括針對評估在同屬級計算處理時間之下(「stage_latency_low」)和上(「stage_latency_high」)搜尋界限之間選擇中間級計算處理時間(例如,「stage_latency_average」)。
方法包括決定需要在可重組態資料處理器上處理運算單元圖之管線計算負載的實體計算單元及/或實體記憶體單元之管線數目(「total_PCUs」,「get_graph_PCUs」)。
方法包括:疊代地將同屬級計算處理時間之新的上及下搜尋界限初始化,並且對於在下個疊代中的評估,考量在先前疊代中對於在先的中間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數目是否低於或高於可用實體計算單元及/或實體記憶體單元(available_PCUs)來在同屬級計算處理時間之新的下及上搜尋界限之間選擇新的中間級計算處理時間。
方法包括,當對於在目前疊代中目前中間級計算處理時間生成的實體計算單元及/或實體記憶體單元之管線數符合收斂準則(convergence criteria)時,將疊代初始化及選擇終止。
在對於其它實作的特定實作章節中討論的特徵之各者同樣地應用至此實例中。如上所指,於此不重複所有其它特徵並且應視重複參引。讀者將了解在這些實例中識別的特徵如何能輕易地與在其它實例中識別的成組基礎特徵結合。
方法包括,對於運算單元圖之運算單元之各者(「對於在fused_graph中的節點」)使用僅一實體計算單元及/或僅一實體記憶體單元決定需要處理運算單元之分別者的級計算負載(「node.get_flop()」)的特定級計算處理時間(「node_latency_with_one_PCU」),並且藉由將特定級計算處理時間(「node_latency_with_one_PCU」)與中間級計算處理時間(「stage_latency」,例如,「stage_latency_average」)相除決定需要處理運算單元之 分別者的級計算負載(「node.get_flop()」)的實體計算單元及/或實體記憶體單元之級數目(「node_PCUs」)。
方法包括,將用於運算單元之各者的實體計算單元及/或實體記憶體單元的級數目(「node_PCUs」)加總並且生成實體計算單元及/或實體記憶體單元之管線數目。
方法包括,基於目前中間級計算處理時間將可用實體計算單元及/或實體記憶體單元分配給運算單元圖之運算單元。
方法包括,基於該分配在可重組態資料處理器上執行運算單元圖之運算單元。
在此章節中所述的方法之其它實作可以包括非暫態電腦可讀儲存媒體,其儲存由處理器執行的指令來進行於此所述的方法之任一者。然而,在此章節中所述的方法之另一個實作更能包括一種系統,其包括記憶體和一或多個處理器,可操作以執行在記憶體中儲存的指令,用以進行上述的方法中之任一者。
提出前面的說明以使能作成且使用所揭露的技術。對本揭露實作的各種修改將是顯而易見的,並且於此界定的一般原理在不悖離所揭露的技術之精神及範圍下可被應用到其它實作及應用中。因此,所揭露的技術並不打算限於所示的實作,而是打算給予與於此揭露的原理及特徵一致的最寬範圍。所揭露的技術之範圍係由附隨的申請專利範圍所界定。
100:可重組態資料處理器
110:可重組態資料處理器
115:匯流排系統
120:主機
125:匯流排系統
130:介面
140:記憶體
145:匯流排系統
150:介面
170:外部時脈產生器
175:時脈信號
190:陣列
195:組態載入/卸載控制器

Claims (30)

  1. 一種將可重組態資料處理器之可用實體計算單元及/或實體記憶體單元分配給用於其之執行的運算單元圖之運算單元的電腦實作方法,該方法包括:初始化需要用於執行運算單元圖之運算單元的同屬級計算處理時間之下及上搜尋界限;針對評估在該同屬級計算處理時間之該下和上搜尋界限之間選擇中間級計算處理時間;決定需要在該可重組態資料處理器上處理該運算單元圖之管線計算負載的實體計算單元及/或實體記憶體單元之管線數目,包括針對該運算單元圖之運算單元之各者進行,決定需要使用僅一實體計算單元及/或僅一實體記憶體單元處理該運算單元之分別者的級計算負載的特定級計算處理時間,及決定需要藉由將該特定級計算處理時間與中間級計算處理時間相除來處理該運算單元之分別者的級計算負載的該實體計算單元及/或該實體記憶體單元之級數目;以及將用於該運算單元之各者的該實體計算單元及/或該實體記憶體單元的級數目加總並且生成該實體計算單元及/或該實體記憶體單元之該管線數目;疊代地進行下列步驟,將該同屬級計算處理時間之新的下及上搜尋界限初始 化,並且針對在下一個疊代中的評估,在該同屬級計算處理時間之新的該下和上搜尋界限之間選擇新的中間級計算處理時間;考量於在先前疊代中在先的中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之管線數目是否低於或高於該可用的實體計算單元及/或實體記憶體單元;當於在目前疊代中目前中間級計算處理時間生成的該實體計算單元及/或實體記憶體單元之該管線數目符合收斂準則時,終止該疊代的初始化及選擇;基於該目前中間級計算處理時間將該可用實體計算單元及/或實體記憶體單元分配給該運算單元圖之該運算單元;基於該分配在可該重組態資料處理器上執行該運算單元圖之該運算單元。
  2. 如請求項1所述的電腦實作方法,其中該收斂準則為在該上搜尋界限與該下搜尋界限之間的差低於臨限。
  3. 如請求項1所述的電腦實作方法,其中該同屬計算處理時間之該下搜尋界限係基於該可重組態資料處理器之最大利用,並且藉由將該運算單元圖之該管線計算負載與該可重組態資料處理器之總處理容量來決定。
  4. 如請求項3所述的電腦實作方法,其中該 運算單元圖之該管線計算負載係由需要執行該運算單元圖的浮點運算(FLOP)之總數來決定。
  5. 如請求項3所述的電腦實作方法,其中該可重組態資料處理器之總處理容量能由每秒被該可重組態資料處理器可執行的FLOP(FLOP/s)之最大數目所決定。
  6. 如請求項3所述的電腦實作方法,其中該同屬級計算處理時間之該上搜尋界限係基於將該同屬級計算處理時間之該下搜尋界限與最小利用率因子相乘。
  7. 如請求項6所述的電腦實作方法,其中該最小利用率因子為一百。
  8. 如請求項2所述的電腦實作方法,更包括:只要該上搜尋界限和該下搜尋界限之間的差在臨限之上,則持續疊代初始化及選擇。
  9. 如請求項1所述的電腦實作方法,其中該中間級計算處理時間為該同屬級計算處理時間之該下和上搜尋界限之平均。
  10. 如請求項9所述的電腦實作方法,當於在該先前疊代中,該在先的中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之該管線數目低於該可用的實體計算單元及/或實體記憶體單元時的步驟,更包括:將用於下一個疊代的該新的上搜尋界限設定為該在先中間級計算處理時間。
  11. 如請求項9所述的電腦實作方法,當於在該先前疊代中,該在先的中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之該管線數目高於該可用實體計算單元及/或實體記憶體單元時的步驟,更包括:將用於下一個疊代的該新的下搜尋界限設定為該在先中間級計算處理時間。
  12. 如請求項1所述的電腦實作方法,其中該運算單元之該各別者的該級計算負載被明定為需要執行該運算單元之該分別者的FLOP之總數並且基於運算類型來決定。
  13. 如請求項1所述的電腦實作方法,其中該運算單元之該分別者的該級計算負載被明定為需要執行該運算單元之該分別者的FLOP之總數並且基於輸入維數和輸出維數來決定。
  14. 如請求項1所述的電腦實作方法,更包括:決定需要藉由將該級計算處理時間與該中間級計算處理時間相除的結果捨入到整數來處理該級計算負載的該實體計算單元及/或該實體記憶體單元之該級數目。
  15. 如請求項1所述的電腦實作方法,更包括:基於該目前中間級計算處理時間來決定處理量值。
  16. 如請求項1所述的電腦實作方法,更包括:基於將該運算單元圖之該運算單元的數目與該目前中間級計算處理時間相乘來決定需要用於執行該運算單元圖 的管線計算處理時間。
  17. 如請求項1所述的電腦實作方法,更包括:選擇其級計算處理時間相對大於該運算單元圖之大多數其它運算單元的運算單元圖之該運算單元;以及將額外可用實體計算單元及/或該實體記憶體單元分配給該選定的運算單元。
  18. 如請求項17所述的電腦實作方法,其中該分配造成在該運算單元圖之該運算單元之各者實質上具有匹配級計算處理時間。
  19. 如請求項1所述的電腦實作方法,其中該運算單元圖為具有至少一融合運算單元的融合運算單元圖。
  20. 如請求項1所述的電腦實作方法,其中該運算單元圖為深度神經網路。
  21. 如請求項1所述的電腦實作方法,更包括:產生用於顯示的資料來將下列視覺化在符合該收斂準則的該目前疊代中的該目前中間級計算處理時間,對於該目前中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之該管線數目,需要使用該僅一實體計算單元及/或該僅一實體記憶體單元來處理該運算單元之該分別者的該級計算負載的該 級計算處理時間,及/或需要處理該運算單元之該分別者的該級計算負載的該實體計算單元及/或該實體記憶體單元之該級數目。
  22. 如請求項15所述的電腦實作方法,更包括:產生用於顯示將基於該目前中間級計算處理時間決定的該處理量值視覺化的資料。
  23. 如請求項16所述的電腦實作方法,更包括:產生用於顯示將需要用於執行該運算單元圖的該管線計算處理時間視覺化的資料。
  24. 如請求項17所述的電腦實作方法,更包括:產生用於顯示將分別分配給該運算單元圖之該運算單元之各者的可用實體計算單元及/或實體記憶體單元視覺化的資料。
  25. 如請求項1所述的電腦實作方法,其中該疊代的初始化及選擇係基於二元搜尋。
  26. 一種將可重組態資料處理器之可用實體計算單元及/或實體記憶體單元分配給用於其之執行的運算單元圖之運算單元的電腦實作方法,該方法包括:初始化需要用於執行運算單元圖之運算單元的同屬級計算處理時間之下及上搜尋界限;針對評估在該同屬級計算處理時間之該下和上搜尋界 限之間選擇中間級計算處理時間;決定需要在該可重組態資料處理器上處理該運算單元圖之管線計算負載的該實體計算單元及/或該實體記憶體單元之管線數目;疊代地進行下列步驟,將該同屬級計算處理時間之新的下及上搜尋界限初始化,並且針對在下一個疊代中的評估,在該同屬級計算處理時間之新的該下和上搜尋界限之間選擇新的中間級計算處理時間;考量於在先前疊代中在先的中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之管線數目是否低於或高於該可用的實體計算單元及/或實體記憶體單元;以及當於在目前疊代中目前中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之管線數目符合收斂準則時,終止該疊代的初始化及選擇。
  27. 一種外加有電腦程式指令的非暫態電腦可讀儲存媒體,用以將可重組態資料處理器之可用實體計算單元及/或實體記憶體單元分配給運算單元圖之運算單元以用於其之執行,當在處理器上執行時,該指令實作一種方法,包含:初始化需要用於執行運算單元圖之運算單元的同屬級計算處理時間之下及上搜尋界限; 針對評估在該同屬級計算處理時間之該下和上搜尋界限之間選擇中間級計算處理時間;決定需要在該可重組態資料處理器上處理該運算單元圖之管線計算負載的實體計算單元及/或實體記憶體單元之管線數目,包括針對該運算單元圖之運算單元之各者進行下列步驟,決定需要使用僅一實體計算單元及/或僅一實體記憶體單元處理該運算單元之分別者的級計算負載的特定級計算處理時間,及決定需要藉由將該特定級計算處理時間與中間級計算處理時間相除來處理該運算單元之分別者的級計算負載的該實體計算單元及/或該實體記憶體單元之級數目;以及將用於該運算單元之各者的該實體計算單元及/或該實體記憶體單元的級數目加總並且生成該實體計算單元及/或該實體記憶體單元之該管線數目;疊代地進行下列步驟,將該同屬級計算處理時間之新的下及上搜尋界限初始化,並且針對在下一個疊代中的評估,在該同屬級計算處理時間之新的該下和上搜尋界限之間選擇新的中間級計算處理時間;考量於在先前疊代中,在先的中間級計算處理時 間生成的該實體計算單元及/或該實體記憶體單元之管線數目是否低於或高於該可用的實體計算單元及/或實體記憶體單元;當於在目前疊代中,目前中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之該管線數目符合收斂準則時,終止該疊代的初始化及選擇;基於該目前中間級計算處理時間將該可用實體計算單元及/或實體記憶體單元分配給該運算單元圖之該運算單元;基於該分配在可該重組態資料處理器上執行該運算單元圖之該運算單元。
  28. 一種包括耦接至記憶體的一或多個處理器的系統,該記憶體載有電腦指令,用以將可重組態資料處理器之可用實體計算單元及/或實體記憶體單元分配給運算單元圖之運算單元以用於其之執行,當在該處理器上執行時,該指令實作下列動作,包含:初始化需要用於執行運算單元圖之運算單元的同屬級計算處理時間之下及上搜尋界限;針對評估在該同屬級計算處理時間之該下和上搜尋界限之間選擇中間級計算處理時間;決定需要在該可重組態資料處理器上處理該運算單元圖之管線計算負載的實體計算單元及/或實體記憶體單元之管線數目,包括針對該運算單元圖之運算單元之各者進行下列步 驟,決定需要使用僅一實體計算單元及/或僅一實體記憶體單元處理該運算單元之分別者的級計算負載的特定級計算處理時間,及決定需要藉由將該特定級計算處理時間與中間級計算處理時間相除來處理該運算單元之分別者的級計算負載的該實體計算單元及/或該實體記憶體單元之級數目;以及將用於該運算單元之各者的該實體計算單元及/或該實體記憶體單元的級數目加總並且生成該實體計算單元及/或該實體記憶體單元之該管線數目;疊代地進行下列步驟,將該同屬級計算處理時間之新的下及上搜尋界限初始化,並且針對在下一個疊代中的評估,在該同屬級計算處理時間之新的該下和上搜尋界限之間選擇新的中間級計算處理時間;考量於在先前疊代中在先的中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之管線數目是否低於或高於該可用的實體計算單元及/或實體記憶體單元;當於在目前疊代中目前中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之該管線數目符合收斂準則時,終止該疊代的初始化及選擇; 基於該目前中間級計算處理時間將該可用實體計算單元及/或實體記憶體單元分配給該運算單元圖之該運算單元;基於該分配在可該重組態資料處理器上執行該運算單元圖之該運算單元。
  29. 一種外加有電腦程式指令的非暫態電腦可讀儲存媒體,用以將可重組態資料處理器之可用實體計算單元及/或實體記憶體單元分配給運算單元圖之運算單元以用於其之執行,當在處理器上執行時,該指令實作一種方法,包含:初始化需要用於執行運算單元圖之運算單元的同屬級計算處理時間之下及上搜尋界限;針對評估在該同屬級計算處理時間之該下和上搜尋界限之間選擇中間級計算處理時間;決定需要在該可重組態資料處理器上處理該運算單元圖之管線計算負載的該實體計算單元及/或該實體記憶體單元之管線數目;疊代地進行下列步驟,將該同屬級計算處理時間之新的下及上搜尋界限初始化,並且針對在下一個疊代中的評估,在該同屬級計算處理時間之新的該下和上搜尋界限之間選擇新的中間級計算處理時間;考量於在先前疊代中在先的中間級計算處理時間 生成的該實體計算單元及/或該實體記憶體單元之管線數目是否低於或高於該可用的實體計算單元及/或實體記憶體單元;以及當於在目前疊代中目前中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之該管線數目符合收斂準則時,終止該疊代的初始化及選擇。
  30. 一種包括耦接至記憶體的一或多個處理器的系統,該記憶體載有電腦指令,用以將可重組態資料處理器之可用實體計算單元及/或實體記憶體單元分配給運算單元圖之運算單元以用於其之執行,當在該處理器上執行時,該指令實作下列動作,包含:初始化需要用於執行運算單元圖之運算單元的同屬級計算處理時間之下及上搜尋界限;針對評估在該同屬級計算處理時間之該下和上搜尋界限之間選擇中間級計算處理時間;決定需要在該可重組態資料處理器上處理該運算單元圖之管線計算負載的該實體計算單元及/或該實體記憶體單元之管線數目;疊代地進行下列步驟,將該同屬級計算處理時間之新的下及上搜尋界限初始化,並且針對在下一個疊代中的評估,在該同屬級計算處理時間之新的該下和上搜尋界限之間選擇新的中間級計算處理時間; 考量於在先前疊代中在先的中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之管線數目是否低於或高於該可用的實體計算單元及/或實體記憶體單元;以及當於在目前疊代中目前中間級計算處理時間生成的該實體計算單元及/或該實體記憶體單元之該管線數目符合收斂準則時,終止該疊代的初始化及選擇。
TW109131514A 2019-09-16 2020-09-14 用於可重組態資料處理器的效能估計式資源分配 TWI779355B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/572,527 2019-09-16
US16/572,527 US11410027B2 (en) 2019-09-16 2019-09-16 Performance estimation-based resource allocation for reconfigurable architectures

Publications (2)

Publication Number Publication Date
TW202127270A TW202127270A (zh) 2021-07-16
TWI779355B true TWI779355B (zh) 2022-10-01

Family

ID=72644964

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109131514A TWI779355B (zh) 2019-09-16 2020-09-14 用於可重組態資料處理器的效能估計式資源分配

Country Status (3)

Country Link
US (2) US11410027B2 (zh)
TW (1) TWI779355B (zh)
WO (1) WO2021055233A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11568021B2 (en) 2020-02-21 2023-01-31 Alibaba Group Holding Limited Vector-vector multiplication techniques for processing systems
US11709664B2 (en) * 2020-06-02 2023-07-25 SambaNova Systems, Inc. Anti-congestion flow control for reconfigurable processors
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11442696B1 (en) 2021-03-23 2022-09-13 SambaNova Systems, Inc. Floating point multiply-add, accumulate unit with exception processing
US11366783B1 (en) * 2021-03-29 2022-06-21 SambaNova Systems, Inc. Multi-headed multi-buffer for buffering data for processing
US11366699B1 (en) * 2021-07-19 2022-06-21 Sas Institute Inc. Handling bulk requests for resources
WO2023129594A1 (en) * 2021-12-29 2023-07-06 SambaNova Systems, Inc. High-bandwidth power estimator for ai accelerator

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140123132A1 (en) * 2012-10-25 2014-05-01 Mansoor Alicherry Optimizing latencies in cloud systems by intelligent compute node placement
US8914802B2 (en) * 2012-07-11 2014-12-16 Sap Se Feedback-driven tuning for efficient parallel execution
TW201640338A (zh) * 2014-12-24 2016-11-16 英特爾股份有限公司 用於資料預測執行之系統、裝置及方法
TW201730756A (zh) * 2015-12-22 2017-09-01 英特爾股份有限公司 用於從鏈結結構取回元件的設備和方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100281429A1 (en) * 2009-04-30 2010-11-04 Bigmachines, Inc. Methods and apparatus for configuring a product using an array of configuration sets
GB2471067B (en) 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US20140136777A1 (en) * 2012-11-12 2014-05-15 Daniel S. Davis Method and system for configuring a storage array
US9298848B2 (en) * 2013-11-01 2016-03-29 International Business Machines Corporation Managing a template in an operator graph
US9262222B2 (en) * 2013-12-03 2016-02-16 International Business Machines Corporation Lazy initialization of operator graph in a stream computing application
JP5842255B2 (ja) * 2013-12-12 2016-01-13 国立大学法人東京工業大学 プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法
US20160335583A1 (en) * 2015-05-14 2016-11-17 Atlassian Pty Ltd Systems and Methods for Scheduling Work Items
US9888057B2 (en) * 2015-05-21 2018-02-06 International Business Machines Corporation Application bundle management across mixed file system types
US9853878B2 (en) * 2015-06-09 2017-12-26 International Business Machines Corporation Limiting data output from windowing operations
JP6740719B2 (ja) * 2016-06-03 2020-08-19 富士通株式会社 情報処理装置、情報処理方法、およびプログラム
US20180005346A1 (en) 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
US10666570B2 (en) * 2016-11-28 2020-05-26 Intel Corporation Computing infrastructure resource-workload management methods and apparatuses
EP3343351B1 (en) 2016-12-28 2023-04-26 Waseda University Parallel program generating method and parallelization compiling apparatus
US9798527B1 (en) 2017-01-06 2017-10-24 Google Inc. Loop and library fusion
US10649518B2 (en) * 2017-01-26 2020-05-12 Ati Technologies Ulc Adaptive power control loop
US10437646B2 (en) * 2017-02-13 2019-10-08 Dell Products L.P. Automatic detection of optimal compute unit partitioning
US10489878B2 (en) 2017-05-15 2019-11-26 Google Llc Configurable and programmable image processor unit
US10467183B2 (en) * 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US20200001779A1 (en) * 2018-06-27 2020-01-02 drive.ai Inc. Method for communicating intent of an autonomous vehicle
US11188497B2 (en) * 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914802B2 (en) * 2012-07-11 2014-12-16 Sap Se Feedback-driven tuning for efficient parallel execution
US20140123132A1 (en) * 2012-10-25 2014-05-01 Mansoor Alicherry Optimizing latencies in cloud systems by intelligent compute node placement
TW201640338A (zh) * 2014-12-24 2016-11-16 英特爾股份有限公司 用於資料預測執行之系統、裝置及方法
TW201730756A (zh) * 2015-12-22 2017-09-01 英特爾股份有限公司 用於從鏈結結構取回元件的設備和方法

Also Published As

Publication number Publication date
TW202127270A (zh) 2021-07-16
US11410027B2 (en) 2022-08-09
WO2021055233A1 (en) 2021-03-25
US20220374695A1 (en) 2022-11-24
US11816560B2 (en) 2023-11-14
US20210081769A1 (en) 2021-03-18

Similar Documents

Publication Publication Date Title
TWI779355B (zh) 用於可重組態資料處理器的效能估計式資源分配
TWI781441B (zh) 在具有目標架構的可重組態資料處理器上高效執行運算單元圖的方法、非暫態電腦可讀儲存媒體及系統
US11714780B2 (en) Compiler flow logic for reconfigurable architectures
CN107239420B (zh) 具有散布处理器dma-fifo的处理系统
US11709664B2 (en) Anti-congestion flow control for reconfigurable processors
Verdoscia et al. A data-flow soft-core processor for accelerating scientific calculation on FPGAs
TW202227979A (zh) 用於檢測串流相容及廣播相容的資料存取型樣的編譯時邏輯
Ashby et al. The impact of global communication latency at extreme scales on Krylov methods
US11983141B2 (en) System for executing an application on heterogeneous reconfigurable processors
US11954053B2 (en) Integrating buffer views into buffer access operations in a coarse-grained reconfigurable computing environment
US20230244748A1 (en) Matrix Multiplication on Coarse-grained Computing Grids
US20230281156A1 (en) Partitioning dataflow operations for a reconfigurable computing system
US11709611B2 (en) Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems
US20240037061A1 (en) Sorting the Nodes of an Operation Unit Graph for Implementation in a Reconfigurable Processor
US20230305823A1 (en) Merging Skip-Buffers
US20230273879A1 (en) Critical Stage Optimization for Reconfigurable Architectures
US20230315411A1 (en) Operation Fusion in Nested Meta-pipeline Loops
US20240020265A1 (en) Operating a Cost Estimation Tool for Placing and Routing an Operation Unit Graph on a Reconfigurable Processor
Verdoscia et al. Research Article A Data-Flow Soft-Core Processor for Accelerating Scientific Calculation on FPGAs

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent