TWI781441B - 在具有目標架構的可重組態資料處理器上高效執行運算單元圖的方法、非暫態電腦可讀儲存媒體及系統 - Google Patents
在具有目標架構的可重組態資料處理器上高效執行運算單元圖的方法、非暫態電腦可讀儲存媒體及系統 Download PDFInfo
- Publication number
- TWI781441B TWI781441B TW109131513A TW109131513A TWI781441B TW I781441 B TWI781441 B TW I781441B TW 109131513 A TW109131513 A TW 109131513A TW 109131513 A TW109131513 A TW 109131513A TW I781441 B TWI781441 B TW I781441B
- Authority
- TW
- Taiwan
- Prior art keywords
- unit
- graph
- computing unit
- units
- computing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/95—Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Stored Programmes (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
所揭露的技術係關於在具有目標架構的可重組態資料處理器上高效執行運算單元圖。特別是,其關於藉由從使用者接收特定於該可重組態資料處理器之目標架構提示來將需要執行該運算單元圖的該可重組態資料處理器之實體計算單元及/或實體記憶體單元的數目降低,掃描該運算單元圖以偵測由該架構提示所明定的運算單元之圖樣的實例,以及將在該運算單元圖中的運算單元融合成為合併運算單元方塊,從而生成融合的運算單元圖。
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。
圖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%),其能被公式化為:througputideal=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)以及六個級,具有總數一百九十六(32×6)個算術邏輯單元(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,接著吾人能藉由將第一矩陣分割成兩個三十二乘一百(32×100)區塊以及第二矩陣分割成兩百乘六(200×6)區塊來達成百分之百利用率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持續疊代初始化及選擇。
效能估計計算器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)。設想我們目前對於級潛時的搜尋範圍為4 us(stage_latency_low)和12 us(stage_latency_high)。吾人選取中間點,其為(4+12)/2=8 us(stage_latency_average)。對於用以達到8 us的Conv1 1702,吾人需要將其平行化為200/8=25條道。因此,吾人將25 PCU指定(assign)給Conv1 1702。同樣的,吾人將ceil(18/8)=3 PCU指定給Add1 1712、將ceil(110/8)=14 PCU指定給Conv2 1722、將ceil(9/8)=2 PCU指定給Add2 1732以及將ceil(50/8)=7 PCU指定給MM 1742。所使用的總PCU為25+3+14+2+7=51(total_PUCs),大於可用的40(available_PCUs)。
因此,吾人藉由讓stage_latency_low=8 us來增加級潛時,並且下一個要嘗試的中間點將為(8+12)/2=10 us。二元搜尋演算法1300最終收斂成11 us,作為最佳級潛時。基於此,估計的處理量為1/11us=90,909樣本/s。圖潛時為1 us * 5=55 us。
圖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 (18)
- 一種在具有目標架構的可重組態資料處理器上高效執行運算單元圖的電腦實作方法,該方法包括: 藉由從使用者接收特定於該可重組態資料處理器之目標架構的架構提示來將需要執行該運算單元圖的該可重組態資料處理器之實體計算單元及/或實體記憶體單元的數目降低, 其中該架構提示在該可重組態資料處理器之該實體計算單元及/或實體記憶體單元上執行第一運算單元之型樣時,需融合該第一運算單元, 將在型樣中的該第一運算單元明定為第一節點, 將在該型樣中該第一運算單元之間的第一資料流明定為第一邊緣,以及 在該型樣中該第一運算單元之間直接融合; 掃描該運算單元圖以偵測由該架構提示所明定的該第一運算單元之型樣的實例,包括 將在該運算單元圖中的第二節點和第二邊緣與在該架構提示中的該第一節點和該第一邊緣匹配,並且偵測型樣匹配; 將在該運算單元圖中的該第二節點和該第二邊緣之運算單元融合成為合併運算單元方塊,從而生成融合的運算單元圖; 將該可重組態資料處理器之該實體計算單元及/或實體記憶體單元分配給該融合的運算單元圖;以及 基於該分配在該可重組態資料處理器上執行該融合的運算單元圖。
- 如請求項1所述的電腦實作方法,其中該架構提示將在該型樣中的第一輸出運算明定為第一輸出節點。
- 如請求項2所述的電腦實作方法,更包括: 藉由將由該架構提示所明定的該第一輸出節點與在該運算單元圖中的第二輸出節點匹配來偵測該型樣匹配,並且 以在該運算單元圖中的該第二輸出節點開始, 遍歷該運算單元圖以決定在該運算單元圖中的該第二節點和該第二邊緣匹配在該架構提示中的該第一節點和該第一邊緣。
- 如請求項3所述的電腦實作方法,其中該遍歷為向上遍歷。
- 如請求項1所述的電腦實作方法,更包括: 識別被融合成該合併運算單元方塊但具有到該合併運算單元方塊外側的運算單元圖之另一運算單元的資料流的運算單元圖之運算單元; 複製該經識別的運算單元和其資料流,並且複製在提供輸入給該經識別的運算單元及其資料流的該合併運算單元方塊中任何其它運算單元;以及 基於具有該合併運算單元方塊的該運算單元圖和該經複製的運算單元及資料流,進行該分配及該執行。
- 如請求項1所述的電腦實作方法,其中該架構提示被表示為轉印到型樣圖中的一系列節點和邊緣。
- 一種外加有電腦程式指令的非暫態電腦可讀儲存媒體,用以在具有目標架構的可重組態資料處理器上高效執行運算單元圖,當在處理器上執行時,該指令實作一方法,包含: 藉由從使用者接收特定於該可重組態資料處理器之目標架構的架構提示,將需要執行該運算單元圖的該可重組態資料處理器之實體計算單元及/或實體記憶體單元的數目降低, 其中該架構提示 在該可重組態資料處理器之該實體計算單元及/或實體記憶體單元上執行第一運算單元之型樣時,需融合該第一運算單元, 將在型樣中的該第一運算單元明定為第一節點, 將在該型樣中該第一運算單元之間的第一資料流明定為第一邊緣,以及 在該型樣中該第一運算單元之間進行直接融合; 掃描該運算單元圖以偵測由該架構提示所明定的該第一運算單元之型樣的實例,包括 將在該運算單元圖中的第二節點和第二邊緣與在該架構提示中的該第一節點和該第一邊緣匹配,並且偵測型樣匹配; 將在該運算單元圖中的該第二節點和該第二邊緣之運算單元融合成為合併運算單元方塊,從而生成融合的運算單元圖; 將該可重組態資料處理器之該實體計算單元及/或實體記憶體單元分配給該融合的運算單元圖;以及 基於該分配在該可重組態資料處理器上執行該融合的運算單元圖。
- 如請求項7所述的非暫態電腦可讀儲存媒體,其中該架構提示將在該型樣中的第一輸出運算明定為第一輸出節點。
- 如請求項8所述的非暫態電腦可讀儲存媒體,實作該方法更包含: 藉由將由該架構提示明定的該第一輸出節點與在該運算單元圖中的第二輸出節點匹配來偵測該型樣匹配,以及 以在該運算單元圖中的該第二輸出節點開始, 遍歷該運算單元圖以決定在該運算單元圖中的該第二節點和該第二邊緣匹配在該架構提示中的該第一節點和該第一邊緣。
- 如請求項9所述的非暫態電腦可讀儲存媒體,其中該遍歷為向上遍歷。
- 如請求項7所述的非暫態電腦可讀儲存媒體,實作該方法更包含: 識別被融合成該合併運算單元方塊但具有到該合併運算單元方塊外側的運算單元圖之另一運算單元的資料流的運算單元圖之運算單元; 複製該經識別的運算單元和其資料流,並且複製在提供輸入給該經識別的運算單元及其資料流的該合併運算單元方塊中任何其它運算單元;以及 基於具有該合併運算單元方塊的該運算單元圖和該經複製的運算單元及資料流,進行該分配及該執行。
- 如請求項7所述的非暫態電腦可讀儲存媒體,其中該架構提示被表示為轉印到型樣圖中的一系列節點和邊緣。
- 一種包括耦接至記憶體的一或多個處理器的系統,該記憶體載有電腦指令以在具有目標架構的可重組態資料處理器上高效執行運算單元圖,當在處理器上執行時,該指令實作動作,包含: 藉由從使用者接收特定於該可重組態資料處理器之該目標架構的架構提示,將需要執行運算單元圖的可重組態資料處理器之實體計算單元及/或實體記憶體單元的數目降低, 其中該架構提示 在該可重組態資料處理器之該實體計算單元及/或實體記憶體單元上執行第一運算單元之型樣時,需融合該第一運算單元, 將在型樣中的該第一運算單元明定為第一節點, 將在該型樣中該第一運算單元之間的第一資料流明定為第一邊緣,以及 在該型樣中該第一運算單元之間進行直接融合; 掃描該運算單元圖以偵測由該架構提示所明定的該第一運算單元之型樣的實例,包括 將在該運算單元圖中的第二節點和第二邊緣與在該架構提示中的該第一節點和該第一邊緣匹配,並且偵測型樣匹配; 將在該運算單元圖中的該第二節點和該第二邊緣之運算單元融合成為合併運算單元方塊,從而生成融合的運算單元圖; 將該可重組態資料處理器之該實體計算單元及/或實體記憶體單元分配給該融合的運算單元圖;以及 基於該分配在該可重組態資料處理器上執行該融合的運算單元圖。
- 如請求項13所述的系統,其中該架構提示將在該型樣中的第一輸出運算明定為第一輸出節點。
- 如請求項14所述的系統,實作的動作更包含: 藉由將由該架構提示明定的該第一輸出節點與在該運算單元圖中的第二輸出節點匹配來偵測該型樣匹配,以及 以在該運算單元圖中的該第二輸出節點開始, 遍歷該運算單元圖以決定在該運算單元圖中的該第二節點和該第二邊緣匹配在該架構提示中的該第一節點和該第一邊緣。
- 如請求項15所述的系統,其中該遍歷為向上遍歷。
- 如請求項13所述的系統,實作的動作更包含: 識別被融合成該合併運算單元方塊但具有到該合併運算單元方塊外側的運算單元圖之另一運算單元的資料流的運算單元圖之運算單元; 複製該經識別的運算單元和其資料流,並且複製在提供輸入給該經識別的運算單元及其資料流的該合併運算單元方塊中任何其它運算單元;以及 基於具有該合併運算單元方塊的該運算單元圖和該經複製的該運算單元及資料流,進行該分配及該執行。
- 如請求項13所述的系統,其中該架構提示被表示為轉印到型樣圖中的一系列節點和邊緣。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/572,516 | 2019-09-16 | ||
US16/572,516 US20210081691A1 (en) | 2019-09-16 | 2019-09-16 | Efficient Execution of Operation Unit Graphs on Reconfigurable Architectures Based on User Specification |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202127269A TW202127269A (zh) | 2021-07-16 |
TWI781441B true TWI781441B (zh) | 2022-10-21 |
Family
ID=72659881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109131513A TWI781441B (zh) | 2019-09-16 | 2020-09-14 | 在具有目標架構的可重組態資料處理器上高效執行運算單元圖的方法、非暫態電腦可讀儲存媒體及系統 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210081691A1 (zh) |
EP (1) | EP4031985A1 (zh) |
JP (1) | JP2022548114A (zh) |
CN (1) | CN115151898A (zh) |
TW (1) | TWI781441B (zh) |
WO (1) | WO2021055234A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10824784B2 (en) * | 2018-09-26 | 2020-11-03 | Taiwan Semiconductor Manufacturing Company Ltd. | System and method of timing characterization for semiconductor circuit |
US11568021B2 (en) | 2020-02-21 | 2023-01-31 | Alibaba Group Holding Limited | Vector-vector multiplication techniques for processing systems |
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 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9798527B1 (en) * | 2017-01-06 | 2017-10-24 | Google Inc. | Loop and library fusion |
US20180181380A1 (en) * | 2016-12-28 | 2018-06-28 | Waseda University | Parallel program generating method and parallelization compiling apparatus |
TW201901607A (zh) * | 2017-05-15 | 2019-01-01 | 美商谷歌有限責任公司 | 可組態及可程式化影像處理器單元 |
TW201921314A (zh) * | 2016-07-01 | 2019-06-01 | 美商谷歌有限責任公司 | 影像處理器、由其執行之方法、及非暫態機器可讀儲存媒體 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7262952B2 (ja) * | 2018-09-19 | 2023-04-24 | 株式会社東芝 | 紙葉類処理装置および紙葉類処理方法 |
-
2019
- 2019-09-16 US US16/572,516 patent/US20210081691A1/en not_active Abandoned
-
2020
- 2020-09-10 WO PCT/US2020/050220 patent/WO2021055234A1/en active Search and Examination
- 2020-09-10 EP EP20781150.6A patent/EP4031985A1/en active Pending
- 2020-09-10 JP JP2022516603A patent/JP2022548114A/ja active Pending
- 2020-09-10 CN CN202080079317.2A patent/CN115151898A/zh active Pending
- 2020-09-14 TW TW109131513A patent/TWI781441B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201921314A (zh) * | 2016-07-01 | 2019-06-01 | 美商谷歌有限責任公司 | 影像處理器、由其執行之方法、及非暫態機器可讀儲存媒體 |
US20180181380A1 (en) * | 2016-12-28 | 2018-06-28 | Waseda University | Parallel program generating method and parallelization compiling apparatus |
US9798527B1 (en) * | 2017-01-06 | 2017-10-24 | Google Inc. | Loop and library fusion |
TW201901607A (zh) * | 2017-05-15 | 2019-01-01 | 美商谷歌有限責任公司 | 可組態及可程式化影像處理器單元 |
Also Published As
Publication number | Publication date |
---|---|
WO2021055234A1 (en) | 2021-03-25 |
EP4031985A1 (en) | 2022-07-27 |
TW202127269A (zh) | 2021-07-16 |
CN115151898A (zh) | 2022-10-04 |
US20210081691A1 (en) | 2021-03-18 |
JP2022548114A (ja) | 2022-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI779355B (zh) | 用於可重組態資料處理器的效能估計式資源分配 | |
TWI781441B (zh) | 在具有目標架構的可重組態資料處理器上高效執行運算單元圖的方法、非暫態電腦可讀儲存媒體及系統 | |
US11714780B2 (en) | Compiler flow logic for reconfigurable architectures | |
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 | |
US20240241844A1 (en) | Method and System for Integrating Buffer Views into Buffer Access Operations in Reconfigurable Computing Environments | |
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 | |
US20230315411A1 (en) | Operation Fusion in Nested Meta-pipeline Loops | |
US20230273879A1 (en) | Critical Stage Optimization for Reconfigurable Architectures | |
US20230305823A1 (en) | Merging Skip-Buffers | |
US20230409520A1 (en) | All Reduce Across Multiple Reconfigurable Dataflow Processors | |
US20240020265A1 (en) | Operating a Cost Estimation Tool for Placing and Routing an Operation Unit Graph on a Reconfigurable Processor | |
US20230385077A1 (en) | Forward-style Gradient GeMMs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |