TWI817490B - 在神經網路中傳播延遲減少之電腦實施方法 - Google Patents
在神經網路中傳播延遲減少之電腦實施方法 Download PDFInfo
- Publication number
- TWI817490B TWI817490B TW111117324A TW111117324A TWI817490B TW I817490 B TWI817490 B TW I817490B TW 111117324 A TW111117324 A TW 111117324A TW 111117324 A TW111117324 A TW 111117324A TW I817490 B TWI817490 B TW I817490B
- Authority
- TW
- Taiwan
- Prior art keywords
- blocks
- hardware circuit
- matrix
- layer
- schedule
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000013528 artificial neural network Methods 0.000 title description 11
- 239000011159 matrix material Substances 0.000 claims abstract description 80
- 238000012545 processing Methods 0.000 claims description 72
- 230000008569 process Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 abstract description 12
- 239000013598 vector Substances 0.000 description 68
- 238000004891 communication Methods 0.000 description 38
- 230000015654 memory Effects 0.000 description 35
- 230000001934 delay Effects 0.000 description 16
- 238000010801 machine learning Methods 0.000 description 10
- 230000004913 activation Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Abstract
本發明揭示方法、系統及設備,其等包含編碼於電腦儲存媒體上用於排程操作以減少一加速器之運算塊之間之傳播延遲之電腦程式。該等方法之一者包含接收產生待藉由經組態以至少部分並行執行矩陣操作之一加速器執行之一程式之一第一層之一排程之一請求,其中該程式定義包含該第一層之複數個層,該程式之各層定義待使用值之一各自矩陣執行之矩陣操作。根據一初始指派方向指派該排程之複數個初始區塊。在一特定循環開始切換該指派方向,使得沿著第一矩陣之一不同第二維度處理在該選定特定循環之後處理之區塊。接著根據該經切換指派方向指派全部剩餘未指派區塊。
Description
本說明書係關於機器學習加速器。
一機器學習加速器係經設計用於執行高度並行同步操作之一特定應用積體電路(ASIC)。藉由整合可同時執行之許多不同獨立處理元件而達成並行性。
此等裝置良好適合於加速通過神經網路之推斷遍次。神經網路係採用多個操作層以自一或多個輸入預測一或多個輸出之機器學習模型。神經網路通常包含位於一輸入層與一輸出層之間之一或多個隱藏層。各層之輸出用作至網路中之另一層(例如,下一隱藏層或輸出層)之輸入。
通常言之,可藉由執行矩陣乘法而達成各層所需之運算操作。通常,矩陣之一者係一向量,例如,一矩陣乘向量乘法。因此,機器學習加速器容許以高度並行性執行一矩陣乘法之相乘及相加。
然而,歸因於一神經網路之層之間之相依性,在此等運算機構中存在固有延遲。延遲因為一個層之輸出變為至下一層之輸入而產生。因此,一神經網路之層通常必須循序而非並行執行。換言之,通常一個層之最後運算操作必須在下一層之第一運算可開始之前完成。
兩個類型之延遲通常發生於使用經指派至不同各自層之多個運算塊(tile)之一機器學習加速器中。首先,運算延遲歸因於一晶片之組件在其等實際上可用於執行運算時等待輸入資料而發生。第二,傳播延遲歸因於將由一個運算塊運算之一個層之輸出傳播至由一第二運算塊運算之另一層之輸入之需要而發生。運算延遲可藉由製造具有更多運算元件之一更大裝置而改良。然而,傳播延遲趨於隨著裝置變得更大而增加,此係因為資料需要在運算塊之間行進之距離亦變得更大。
本說明書描述一系統可如何產生減少介於一機器學習加速器中之運算塊之間時之運算延遲以及傳播延遲之一機器學習加速器之一排程。
本說明書中描述之標的物之特定實施例可經實施以便實現一或多個以下優點。可藉由修改操作之排程而減少一機器學習加速器之運算延遲及傳播延遲。此導致效能改良而不需要昂貴或複雜的硬體改變。當僅存在一個運算塊時,下文描述之排程技術之效能改良亦提供運算優點,在該情況中,一些排程可達成接近100%之一利用率,儘管存在固有運算相依性。
在下文之隨附圖式及描述中闡述本說明書之標的物之一或多項實施例之細節。自描述、圖式及發明申請專利範圍將變得明白標的物之其他特徵、態樣及優點。
本說明書描述用於排程運算塊操作以減少一多運算塊加速器(例如,一機器學習加速器)之運算塊之間之傳播延遲之技術。
在本說明書中,一運算塊係指具有可對一矩陣之一部分執行運算之單元之一運算陣列之一裝置。因此,一運算塊係指經組態以執行矩陣-向量乘法之固定大小區塊之任何適當加速器。各單元可包含容許單元執行數學或其他運算之電路。在一典型案例中,一運算塊接收一輸入向量,使用運算陣列以將輸入向量乘以一權重矩陣,且產生一輸出向量。
在本說明書中,一排程係指一特定運算塊應對其操作之一矩陣之部分之一時間順序序列。在本說明書中,一矩陣之此等離散部分將亦被稱為區塊。因此,一排程指定一特定運算塊之區塊之一排序。
每次運算塊對矩陣之一不同區塊操作可被稱為排程之一個迭代。若一矩陣完全配合於一運算塊之運算陣列內,則全部矩陣操作可在無任何排程之情況下執行。然而,當矩陣大於運算陣列時,系統可產生指定應以何順序處理一矩陣之不同區塊之一排程。為了方便起見,本說明書中之一排程之操作將被稱為指派至可具體識別之時脈循環。然而,此等時脈循環需要對應於實際硬體時脈循環,且可使用相同技術以將運算指派至包含多個硬體時脈循環之時間段。
圖1A繪示改變排程可如何減少一神經網路之兩個層之間之延遲。圖1之左手側繪示其中使用兩個運算塊以執行兩個神經網路層之操作之一直觀排程。然而,直觀排程具有延遲,該延遲可藉由使用圖1之右手側上之一增強排程而減少。
一第一層102具有一第一權重矩陣M1 110。第一層102之操作包含接收一輸入向量V1 115且將輸入向量115乘以第一權重矩陣110以產生一輸出向量V2 117。
在此實例中,第一權重矩陣110大於經指派以執行第一層102之操作之一第一運算塊之一運算陣列。第一權重矩陣110係第一運算塊之運算陣列之寬度之兩倍及高度之兩倍。因此,第一層之操作必須根據一特定排程在多個時脈循環內在多個區塊中執行。
在圖1之實例中,第一排程106將一列主排程指派至第一層102之操作,意謂經指派至第一層102之第一運算塊將在第一矩陣110之上半部分上操作兩個迭代且接著在第一矩陣110之下半部分上操作兩個迭代。在圖1中,在對應矩陣區塊上繪示時脈循環指派。因此,針對根據第一排程之第一矩陣110,第一運算塊將在循環0及循環1處理矩陣之上半部分,且以該順序在循環2及循環3處理矩陣之下半部分。
接著藉由對個別迭代之部分結果求和而產生第一層102之輸出向量117。因此,輸出向量117之一第一半部分包含對來自時脈循環0及2之部分結果求和。輸出向量117之一第二半部分包含對來自時脈循環1及3之部分結果求和。
輸出向量117接著經由通信硬體傳播至一第二運算塊,該第二運算塊經指派以執行具有一第二權重矩陣M2 120之第二層104之矩陣操作。在此實例中,假定加速器之傳播延遲為兩個時脈循環。
在此圖式中,第二層104亦具有根據第一排程106之一列主排程。
分別指派至第一層102及第二層104之第一運算塊及第二運算塊可同時執行操作。然而,層之間之運算自然引入某些資料相依性,且傳播延遲引入影響第二層104之操作何時可開始之延時。
特定言之,無法執行第二矩陣120之左上區塊直至循環0及循環2兩者已由第一層102執行。因此,在已執行第一層之循環2之後,將花費循環3及4來將輸出向量117之左半部分傳播至運算第二層104之第二運算塊。因此,可運算第二層之結果之最早時間點在循環5。
出於相同原因,無法執行第二層104之第二矩陣120之左下區塊,直至已對第一層102執行循環1及循環3兩者且直至資料已傳播,此招致兩個循環之傳播延時。由於循環6已被指派至右上區塊,故第一排程106指派第二矩陣120之左下部分在循環7開始被處理。
因此,圖1A繪示第一排程106如何導致8個循環之一總執行時間。
第二排程108調整第一層102之執行順序。第二排程108將一行主序指派至第一層102而非具有一列主序。
換言之,第一層可首先在循環0對第一矩陣110之左上部分操作,接著為在循環1對第一矩陣110之左下部分操作。
應注意,在此時間點,第二層104之操作可立即開始用第二矩陣120之左上區塊進行處理。因此,在循環2及3之兩個循環傳播延時之後,第二矩陣120之左上區塊可已在循環4被處理,且第二矩陣120之右上區塊可在循環5被處理。
第一層102之操作之列/行排序之此重新配置將兩個層之總體執行時間減少至7個循環。實際上,藉由改變第一層102中之列/行排序,系統能夠隱藏經指派以對第一層及第二層操作之兩個運算塊之間之傳播延遲之一整個循環。雖然此係一簡單實例,但時間節約仍係通過層102及104之一單一遍次之12.5%。
此技術可經一般化且經細化為選擇兩個值之一問題:(1)一特定循環M,在其執行一指派方向切換;及(2)一特定循環
T
i ,在其處理一矩陣之「左下區塊」。在本說明書中,矩陣之「左下」區塊意謂需要在後續層可開始處理由該層產生之輸出之前被處理之一矩陣之最後區塊。因此,取決於排程中之特定配置,「左下」區塊可係矩陣之任何邊角區塊,或使用來自先前層之一列或行之一最後到達部分之任何邊緣區塊。
針對具有層n-1與層n之間之N個循環之傳播延遲及層n與層n+1之間之C個循環之傳播延遲之一加速器,系統可藉由將層n之矩陣之左下區塊排程為自層之開端被處理至少N個循環且自層之末端被處理至少C個循環而減輕傳播延遲。
因此,經增強排程在選定循環M之後在指派方向上進行一切換。一般言之,M指定在特定循環
T
i 或之前之一循環。在循環M,排程可自以列主序指派區塊切換至行主序,或反之亦然。此係因為在循環
T
i 之後,運算塊繼續接收足以產生下一層之進一步輸出之資料。下文描述之技術進一步描述如何改變一排程之列/行指派方向以便減輕具有任意大小之矩陣之延遲。
指派方向上之相同切換亦可減少僅具有一個運算塊及具有較少傳播延遲或無傳播延遲之一機器學習加速器中之延遲。例如,假設一裝置僅包含其任務為運算兩個層之結果之一單一運算塊。
圖1B繪示具有處理兩個層之各者上之4x4矩陣之9個運算元件之一單一運算塊之排程指派。
第一排程107繪示基本列主序。可產生之一個問題係一些運算元件可能無事可做,此係因為其等正在等待其他運算之結果完成。
在循環0,成功地將全部9個運算元件投入對M1 111之前兩列及M1 111之第三列之第一元件工作。但在第一排程107中之循環1,9個運算元件之僅7個可被賦予工作。此係因為當使用列主排程時,無法運算第二層之左上邊角直至第一層之右下邊角被處理。因此,無法運算第二層104之第一結果直至一個週期之後。
代替性地,考量使用一指派方向切換之一第二排程109。亦即,在指派矩陣111之第一列之後,系統可切換至行主指派。且因此,在循環0而非循環1運算矩陣111之左下區塊。接著,第二層之操作可在循環1立即開始,此係因為左下區塊已在循環0被處理。
結果係具有指派方向之切換之第二排程中之循環1能夠達成100%之利用率,此係因為運算陣列之一些元件能夠開始進行第二層操作而無需等待第一層之操作完成。可使用相同技術以改良通過一神經網路之層之利用率。
圖2係用於產生用於減少一加速器之延遲之一排程之一例示性程序之一流程圖。為了方便起見,程序將被描述為藉由定位於一或多個位置中且根據本說明書適當地程式化之一或多個電腦之一系統執行。
系統接收產生具有一第一矩陣之一第一層之一排程之一請求(210)。第一層可係藉由指定待由各層執行之操作之一輸入程式定義之多個層之一者。在具有多個運算塊之一裝置中,各層可被指派至具有複數個運算塊之一裝置之一各自運算塊。各層可具有一各自矩陣。例如,輸入程式可指定一神經網路架構之操作。
系統根據在一第一維度上之一初始指派方向指派排程之複數個初始區塊(220)。指派方向指定應沿著其執行排程之迭代之矩陣之一第一維度。例如,指派方向可最初指定列主序或行主序。
系統選擇左下區塊之一循環(230)。如上文描述,
T
i 表示將執行矩陣之左下區塊之循環。亦如上文描述,
T
i 連同排程之一特定類型之選擇亦可判定
M,
M係切換指派方向之循環。
一般言之,無論
T
i 之選擇為何,
T
i 個循環之延遲可隱藏於層i-1與層i之間,且
W
i x
H
i -
T
i 個循環之延遲可隱藏於層i與層i+1之間。換言之,系統可選擇
T
i 以在將延遲隱藏於i-1至i過渡處與將延遲隱藏於i至i+1過渡處之間折衷。
一些矩陣可足夠大使得傳播延遲可完全被隱藏。假設
L
i 表示總末端層延遲,其包含在層i之末端處之任何結束運算或啟動函數以及傳播延遲。為了隱藏層i之全部延遲,以下不等式必須成立:
W
ix H
i ≥
L
i-1 +
L
i ,
其中
W
i 係區塊中之矩陣之寬度且
H
i 係區塊中之矩陣之高度。區塊大小可由運算塊硬體判定。
當條件成立時,系統可選擇
T
i 為
L
i-1 。
換言之,系統可排程區塊,使得左下區塊在先前層已完成產生處理該區塊所需之輸出之後儘可能快地執行。
然而,並非全部矩陣都足夠大以完全隱藏層之間之延遲。在該等情況中,排程可引入閒置循環以便迫使等待結果準備好。若一層i之後為
S
i 個閒置循環,則以下不等式對於層i之全部有效排程成立:
W
ix H
i ≥ max(
L
i-1 –
S
i-1 , 0) + max(
L
i –
S
i , 0)。
若此不等式對於一有效排程成立,則系統可根據以下項指派
T
i :
T
i = max(
L
i-1 -
S
i-1 , 0 )。
當使用具有閒置循環之此配置時,系統亦程式化地選擇通過各層之閒置循環之數目以便最小化由閒置循環引入之總延時。為了完成此,系統可執行一最佳化程序以選擇各層k之閒置循環Sk之一整數數目,使得以下不等式成立:
W
ix H
i - max(
L
i –
S
i , 0) ≥ 0
及
S
i-1 ≥
L
i-1 + max(
L
i –
S
i , 0) -
W
ix H
i 。
系統切換指派方向,使得沿著一第二維度循序處理在特定區塊之後處理之區塊(240)。切換循環M之選擇取決於所使用之排程之類型。下文參考圖3A至圖3C更詳細描述選擇M之實例。
系統根據經切換指派方向指派全部剩餘未指派區塊(250)。換言之,系統可以根據第二維度之一排序指派全部未排程區塊。
圖3A至圖4繪示使用一經切換指派方向之例示性排程。在圖3A至圖3C中,編號箭頭表示經指派以依一特定順序執行之區塊線。
圖3A繪示執行列主序且接著切換至行主序。換言之,系統沿著待首先處理之頂部列指派區塊,接著沿著待其次處理之第二列指派區塊等。
在此實例中,循環M發生在沿著區塊之第四列之中途之某處。因此,系統在指派方向上行進一切換,且開始以行主序指派區塊。系統可進行此以便排程矩陣之左下邊角以在一選定循環
T
i 被執行。換言之,系統運算列主序直至未觸及列之數目等於當前循環與
T
i 之間之差。
圖3A中繪示之排程導致大多數運算被花費於行主階段中。此趨於以一非常均勻的速率遞送輸出且在各行之末端處留下一些閒置循環。當各層之輸出需要額外處理時(例如,如長短期記憶體(long short-term memory,LSTM)之情況),此可係有利的。
圖3B繪示執行具有一列限制之列主序。在此實例中,列主階段在移動至下一列之前僅處理有限數目個區塊。在此例示性排程中,初始列包含多於後續列之區塊。在一些實施方案中,系統藉由運算一值N = (
T
i /
H
i -1)而運算列限制,其中
H
i 係矩陣之各行中之區塊之數目。系統可接著針對初始列使用N之上限及針對後續列使用N之底限。
因此,在此實例中,左下區塊
T
i 之循環由N之兩個值及矩陣中之列之數目給定。換言之,若在矩陣中存在8個列且底限(N) = 3,且上限(N)=4,則
T
i = 5 x 4 + 3 x 3 – (3-1) = 27。在此情況中,切換循環M由M = 5x4 + 3x3 = 29給定。
圖3B中之排程在處理前幾行時消除延時且降低記憶體要求。然而,圖3B中之排程之實施可更複雜。
圖4繪示對角線排程。如展示,在列主序期間,各列接收由一對角線之斜率定義之減小數目個區塊。在此實例中,系統藉由運算填充左上對角線所需之區塊之數目而選擇
T
i ,且系統可選擇M =
T
i 。
對角線排程在列主階段與行主階段之間具有對稱性,但具有上文提及之兩個排程之缺點。
圖5係繪示專用邏輯電路(特定言之,一ASIC 500)之一實例之一示意圖。ASIC 500包含為簡潔起見將被稱為運算塊的多個同步處理器。舉例而言,ASIC 500包含運算塊502,其中運算塊502之一或多者包含經組態以執行同步運算(諸如(例如)乘法運算及加法運算)的專用電路。特定言之,各運算塊502可包含一運算單元陣列,其中各單元經組態以執行數學運算(參見(例如)在圖6中展示且在本文中描述之例示性運算塊600)。在一些實施方案中,運算塊502經配置成一格柵圖案,其中沿一第一維度501 (例如,列)且沿一第二維度503 (例如,行)配置運算塊502。例如,在圖5中展示之實例中,將運算塊502劃分成四個不同區段(510a、510b、510c、510d),各區段含有配置成向下18個運算塊×橫向16個運算塊之一格柵的288個運算塊。在一些實施方案中,圖5中展示之ASIC 500可被理解為包含細分/配置成單獨運算塊的一單一脈動(systolic)單元陣列,其中各運算塊包含單元、局部記憶體及匯流排線之一子集/子陣列(參見(例如)圖6)。
ASIC 500亦包含一向量處理單元504。向量處理單元504包含經組態以從運算塊502接收輸出且基於從運算塊502接收之輸出而運算向量運算輸出值的電路。舉例而言,在一些實施方案中,向量處理單元504包含經組態以對從運算塊502接收之輸出執行累加運算的電路(例如,乘法電路、加法器電路、移位器、及/或記憶體)。替代地或另外地,向量處理單元504包含經組態以將一非線性函數應用於運算塊502之輸出的電路。替代地或另外地,向量處理單元504產生正規化值、合併值或該兩者。可將向量處理單元之向量運算輸出儲存於一或多個運算塊中。舉例而言,可將向量運算輸出儲存於與一運算塊502唯一地相關聯之記憶體中。替代地或另外地,可將向量處理單元504之向量運算輸出傳送至ASIC 500外部之一電路,例如,作為一運算之一輸出。在一些實施方案中,將向量處理單元504分段,使得各片段包含經組態以從運算塊502之一對應集合接收輸出且基於該等所接收輸出而運算向量運算輸出的電路。例如,在圖5中展示之實例中,向量處理單元504包含沿第一維度501跨越之兩列,該等列之各者包含配置成32行的32個片段506。各片段506包含經組態以基於來自運算塊502之一對應行之輸出(例如,一累加和)而執行如本文中說明之一向量運算的電路(例如,乘法電路、加法器電路、移位器、及/或記憶體)。可將向量處理單元504定位於如圖5中展示之運算塊502之格柵中間。向量處理單元504之其他位置配置亦係可行的。
ASIC 500亦包含一通信介面508 (例如,介面508a、508b)。通信介面508包含串列器/解串器(SerDes)介面及一通用輸入/輸出(GPIO)介面之一或多個集合。SerDes介面經組態以接收ASIC 500之指令(例如,用於操作下文描述之可控制匯流排線之指令)及/或輸入資料且將資料從ASIC 500輸出至一外部電路。舉例而言,SerDes介面可經組態以按32 Gbps、56 Gbps、或包含於通信介面508內之SerDes介面集合上方之任何適合資料速率的一速率傳輸指令及/或輸入資料。GPIO介面經組態以提供用於除錯及/或啟動之一介面。舉例而言,ASIC 500可在其導通時運行一開機程式。若程式失敗,則一管理員可使用GPIO介面來對失敗源進行除錯。
ASIC 500進一步包含經組態以在通信介面508、向量處理單元504、及多個運算塊502之間輸送資料的多個可控制匯流排線(參見(例如)圖6)。可控制匯流排線包含(例如)沿格柵之第一維度501 (例如,列)及格柵之第二維度503 (例如,行)兩者延伸的導線。沿第一維度501延伸之可控制匯流排線之一第一子集可經組態以在一第一方向上(例如,至圖5之右側)傳送資料。沿第一維度501延伸之可控制匯流排線之一第二子集可經組態以在一第二方向上(例如,至圖5之左側)傳送資料。沿第二維度503延伸之可控制匯流排線之一第一子集可經組態以在一第三方向上(例如,至圖5之頂部)傳送資料。沿第二維度503延伸之可控制匯流排線之一第二子集可經組態以在一第四方向上(例如,至圖5之底部)傳送資料。
各可控制匯流排線包含用於根據一時脈信號沿線輸送資料的多個輸送器元件,諸如正反器。經由一可控制匯流排線傳送資料可包含在各時脈週期將資料從該可控制匯流排線之一第一輸送器元件移位至該可控制匯流排線之一第二鄰近輸送器元件。在一些實施方案中,在一時脈週期之上升或下降邊緣上經由可控制匯流排線輸送資料。舉例而言,在一第一時脈週期在一可控制匯流排線之一第一輸送器元件(例如,一正反器)上存在之資料可在一第二時脈週期傳送至該可控制匯流排線之一第二輸送器元件(例如,一正反器)。在一些實施方案中,輸送器元件可按距彼此之一固定距離週期性地隔開。舉例而言,在一些情況中,各可控制匯流排線包含多個輸送器元件,其中各輸送器元件經定位於一對應運算塊502內或近接一對應運算塊502。
各可控制匯流排線亦包含多個多工器及/或解多工器。一可控制匯流排線之一多工器/解多工器經組態以在匯流排線與ASIC晶片500之一組件之間傳送資料。舉例而言,一可控制匯流排線之一多工器/解多工器可經組態以向及/或從一運算塊502、向及/或從向量處理單元504、或向及/或從通信介面508傳送資料。在運算塊502、向量處理單元504及通信介面之間傳送資料可包含基於待發生之所要資料傳送而將控制信號發送至多工器。可將控制信號儲存於直接耦合至多工器及/或解多工器之暫存器中。接著,控制信號之值可判定(例如)什麼資料從一源(例如,一運算塊502或一向量處理單元504內之記憶體)傳送至一可控制匯流排線或替代地什麼資料從可控制匯流排線傳送至一接收點(sink) (例如,一運算塊502或一向量處理單元504內之記憶體)。
可控制匯流排線經組態以依一局部級控制,使得各運算塊、向量處理單元及/或通信介面包含其自身用於操控通過該運算塊、向量處理單元及/或通信介面之可控制匯流排線之控制元件集合。舉例而言,各運算塊、1D向量處理單元及通信介面可包含用於控制至及來自該運算塊、1D向量處理單元及通信介面之資料傳送之輸送器元件、多工器及/或解多工器之一對應集合。
為最小化與ASIC晶片500之操作相關聯之延遲,運算塊502及向量處理單元504可經定位以減小資料在各種組件之間行進之距離。在一特定實施方案中,可將運算塊502及通信介面508兩者分割成多個區段,其中運算塊區段及通信介面區段兩者經配置使得減小資料在一運算塊與一通信介面之間行進之最大距離。例如,在一些實施方案中,運算塊502之一第一群組可經配置成通信介面508之一第一側上之一第一區段,且運算塊502之一第二群組可經配置成通信介面之一第二側上之一第二區段。因此,與其中全部運算塊502經配置成通信介面之一側上之一單一區段的一組態相比,從一通信介面至最遠運算塊之距離可減小一半。
替代地,運算塊可經配置成不同數目個區段,諸如四個區段。例如,在圖5中展示之實例中,ASIC 500之多個運算塊502經配置成多個區段510 (510a、510b、510c、510d)。各區段510包含配置成一格柵圖案的類似數目個運算塊502 (例如,各區段510可包含配置成16個列及16個行之256個運算塊)。亦將通信介面508劃分成多個區段:配置於運算塊502之區段510之任一側上之一第一通信介面508a及一第二通信介面508b。第一通信介面508a可透過可控制匯流排線耦合至ASIC晶片500之左側上之兩個運算塊區段510a、510c。第二通信介面508b可透過可控制匯流排線耦合至ASIC晶片500之右側上之兩個運算塊區段510b、510d。因此,與其中僅一單一通信介面可用之一配置相比,資料向及/或從一通信介面508行進之最大距離(及因此與資料傳播相關聯之延遲)可減半。運算塊502及通信介面508之其他耦合配置亦可減少資料延遲。可藉由將控制信號提供至可控制匯流排線之輸送器元件及多工器而程式化運算塊502及通信介面508之耦合配置。
在一些實施方案中,一或多個運算塊502經組態以相對於可控制匯流排線及/或ASIC 500內之其他運算塊(本文中被稱為「控制運算塊」)起始讀取及寫入操作。ASIC 500內之剩餘運算塊可經組態以基於輸入資料而執行運算(例如,以運算層推論)。在一些實施方案中,控制運算塊包含與ASIC 500內之其他運算塊相同之組件及組態。可將控制運算塊添加為ASIC 500之一或若干額外運算塊、一或若干額外列、或一或若干額外行。舉例而言,對於其中各運算塊502經組態以對輸入資料執行一運算之運算塊502之一對稱格柵,可包含控制運算塊之一或多個額外列以處置用於運算塊502對輸入資料執行運算之讀取及寫入操作。例如,各區段510包含18列運算塊,其中最後兩列運算塊可包含控制運算塊。在一些實施方案中,提供單獨控制運算塊增加用於執行運算之其他運算塊中可用之記憶體的量。然而,不需要專用於提供如本文中描述之控制之單獨運算塊,且在一些情況中,未提供單獨控制運算塊。實情係,各運算塊可在其局部記憶體中儲存用於起始該運算塊之讀取及寫入操作之指令。
此外,雖然圖5中展示之各區段510包含配置成18列×16行的運算塊,但一區段中之運算塊502之數目及其等配置可係不同的。舉例而言,在一些情況中,區段510可包含相等數目個列及行。
此外,儘管在圖5中被展示為劃分成四個區段,然可將運算塊502劃分成其他不同分組。舉例而言,在一些實施方案中,將運算塊502分組成兩個不同區段,諸如向量處理單元504上方(例如,較接近圖5中展示之頁面之頂部)之一第一區段及向量處理單元504下方(例如,較接近圖5中展示之頁面之底部)之一第二區段。在此一配置中,各區段可含有(例如)配置成向下(沿方向506) 18個運算塊×橫向(沿方向501) 32個運算塊之一格柵的576個運算塊。區段可含有其他總數個運算塊且可經配置成不同大小陣列。在一些情況中,藉由ASIC 500之硬體特徵劃定區段之間之劃分。舉例而言,如圖5中展示,可藉由向量處理單元504將區段510a、510b與區段510c、510d分離。
亦可藉由相對於運算塊區段510居中定位向量處理單元504而減少延遲。在一些實施方案中,運算塊502之一第一半經配置於向量處理單元504之一第一側上,且運算塊502之一第二半經配置於向量處理單元504之一第二側上。
舉例而言,在圖5中展示之ASIC晶片500中,向量處理單元504包含兩個區段(例如,兩列),該兩個區段之各者包含匹配運算塊502之行數之若干片段506。各片段506可經定位且經組態以從運算塊之一區段510內之運算塊502之一對應行接收一輸出,諸如一累加和。在圖5中展示之實例中,定位於向量處理單元504之一第一側上(例如,向量處理單元504上方)之運算塊區段510a、510b可透過可控制匯流排線耦合至片段506之頂列。定位於向量處理單元504之一第二側上(例如,向量處理單元504下方)之運算塊區段510c、510d可透過可控制匯流排線耦合至片段506之底列。此外,可將處理單元504上方第一半內之各運算塊502定位於距向量處理單元504之與處理單元504下方第二半內之一各自運算塊502相同之一距離處,使得兩半之間之整體延遲不存在差異。例如,可將第一區段510a中之列i中之運算塊502 (其中變數i對應於列位置)定位於遠離向量處理單元504之與運算塊之一第二區段(例如,區段510c)中之列m-1-i中之運算塊502相同的距離處(其中m表示各區段中之列之總數,且假定列在兩個區段中沿相同方向遞增)。
與其中將向量處理單元504定位於全部運算塊502之一遠端(例如,底部)處的一配置相比,以此方式組態運算塊區段510可使資料向及/或從向量處理單元504行進之距離(及因此與資料傳播相關聯之延遲)減半。例如,與透過運算塊502之一行從區段510a接收一累加和相關聯之延遲可係與透過運算塊502之一行從區段510a及510c接收一累加和相關聯之延遲的一半。可藉由將控制信號提供至可控制匯流排線之輸送器元件及多工器而程式化運算塊502及向量處理單元504之耦合配置。
在ASIC晶片500之操作期間,啟動輸入可在運算塊之間移位。舉例而言,啟動輸入可沿第一維度501移位。另外,來自由運算塊502執行之運算之輸出(例如,由運算塊502內之運算陣列執行之運算之輸出)可沿第二維度503在運算塊之間移位。
在一些實施方案中,可控制匯流排線可實體上硬接線以導致資料跳過運算塊502以減少與ASIC晶片500之操作相關聯之延遲。舉例而言,由一第一運算塊502執行之一運算之一輸出可沿格柵之第二維度503移位至一第二運算塊502,該第二運算塊502經定位成遠離第一運算塊502至少一個運算塊,因此跳過其間之運算塊。在另一實例中,來自一第一運算塊502之一啟動輸入可沿格柵之第一維度501移位至一第二運算塊502,該第二運算塊502經定位成遠離第一運算塊502至少一個運算塊,因此跳過其間之運算塊。藉由在使啟動輸入或輸出資料移位時跳過至少一個運算塊,可減小整體資料路徑長度,使得更快速地傳送資料(例如,無需利用一時脈週期以將資料儲存於跳過運算塊處),且減少延遲。
在一例示性實施方案中,區段510a之各行內之各運算塊502可透過可控制匯流排線組態以沿第二維度503朝向向量處理單元504傳遞輸出資料。各行內之運算塊502可進一步經組態以藉由跳過下一鄰近運算塊(例如,透過運算塊之間之可控制匯流排線之實體硬接線)而朝向向量處理單元504傳遞資料。即,第一區段510a中之一位置(i, j) = (0, 0)處之一運算塊502 (其中變數i對應於列位置且變數j對應於行位置)可經硬接線以將輸出資料傳遞至一位置(i, j) = (2, 0)處之一運算塊502;類似地,第一區段510a中之一位置(i, j) = (2, 0)處之運算塊502可經硬接線以將輸出資料傳遞至一位置(i, j) = (4, 0)處之一運算塊502等等。未被跳過之最後運算塊(例如,定位於位置(i, j) = (16, 0)處之運算塊502)將輸出資料傳遞至向量處理單元504。對於具有18列運算塊之一區段510,諸如圖5中展示之實例,運算塊跳過確保一區段510內之全部運算塊遠離向量處理單元504至多9個「運算塊跳躍(tile hop)」,因此藉由將資料路徑長度及所得資料延遲減小一半而改良ASIC晶片500效能。
在另一例示性實施方案中,區段510a、510c之各列內及區段510b、510d之各列內之各運算塊502可透過可控制匯流排線組態以沿第一維度501傳遞啟動輸入。舉例而言,區段510a、510b、510c、510d之一些運算塊可經組態以朝向格柵500之一中心或朝向通信介面508傳遞啟動輸入。各列內之運算塊502可進一步經組態以(例如)藉由硬接線運算塊之間之可控制匯流排線而跳過鄰近運算塊。舉例而言,第一區段510a中之一位置(i, j) = (0, 0)處之一運算塊502 (其中變數i對應於列位置且變數j對應於行位置)可經組態以將啟動輸入傳遞至一位置(i, j) = (0, 2)處之一運算塊502;類似地,第一區段510a中之一位置(i, j) = (0, 2)處之一運算塊502可經組態以將啟動輸入傳遞至一位置(i, j) = (0, 4)處之一運算塊502等等。在一些情況中,未被跳過之最後運算塊(例如,定位於位置(i, j) = (0, 14)處之運算塊502)未將啟動輸入傳遞至另一運算塊上。
類似地,被跳過之運算塊可在相反方向上傳遞啟動輸入。舉例而言,第一區段510a中之一位置(i, j) = (0, 15)處之一運算塊502 (其中變數i對應於列位置且變數j對應於行位置)可經組態以將啟動輸入傳遞至一位置(i, j) = (0, 13)處之一運算塊502;類似地,第一區段510a中之一位置(i, j) = (0, 13)處之一運算塊502可經組態以將啟動輸入傳遞至一位置(i, j) = (0, 11)處之一運算塊502等等。在一些情況中,未被跳過之最後運算塊(例如,定位於位置(i, j) = (0, 1)處之運算塊502)未將啟動輸入傳遞至另一運算塊上。藉由跳過運算塊,在一些實施方案中可藉由使資料路徑長度及所得資料延遲減小一半而改良ASIC晶片500效能。
如本文中說明,在一些實施方案中,運算塊502之一或多者專用於儲存控制資訊。即,專用於儲存控制資訊之運算塊502未參與對諸如權重輸入及啟動輸入之輸入資料執行計算。控制資訊可包含(例如)用於在ASIC晶片500之操作期間組態可控制匯流排線,使得可在ASIC晶片500上四處移動資料的控制資料。可以控制信號之形式將控制資料提供至可控制匯流排線以用於控制可控制匯流排線之輸送器元件及多工器。控制資料指定可控制匯流排線之特定輸送器元件是否將資料傳遞至可控制匯流排線之一下一輸送器元件,使得根據一預定排程在運算塊之間傳送資料。控制資料額外地指定是否從或向一匯流排線傳送資料。舉例而言,控制資料可包含控制信號,該等控制信號引導一多工器以將資料從一匯流排線傳送至記憶體及/或一運算塊內之其他電路。在另一實例中,控制資料可包含控制信號,該等控制信號引導一多工器以將資料從運算塊內之記憶體及/或電路傳送至匯流排線。在另一實例中,控制資料可包含控制信號,該等控制信號引導一多工器以在一匯流排線與通信介面508之間及/或在匯流排線與向量處理單元504之間傳送資料。替代地,如本文中揭示,未使用專用控制運算塊。實情係,在此等情況中,各運算塊之局部記憶體儲存該特定運算塊之控制資訊。
圖6繪示用於ASIC晶片500中之一運算塊600之一實例。各運算塊600包含局部記憶體602及耦合至記憶體602的一運算陣列604。局部記憶體602包含定位成近接運算陣列604的實體記憶體。運算陣列604包含多個單元606。運算陣列604之各單元606包含經組態以基於至單元606之資料輸入(諸如啟動輸入及權重輸入)而執行一運算(例如,一乘法及累加運算)的電路。各單元可在時脈信號之一週期執行運算(例如,乘法及累加運算)。運算陣列604可具有比行更多之列、比列更多之行、或相等數目個行及列。例如,在圖6中展示之實例中,運算陣列604包含配置成8列及8行的64個單元。其他運算陣列大小亦係可行的,諸如具有16個單元、32個單元、128個單元、或256個單元等等之運算陣列。各運算塊可包含相同數目個單元及/或相同大小運算陣列。接著,可針對ASIC晶片並行執行之操作之總數取決於具有晶片內之相同大小運算陣列之運算塊之總數。舉例而言,對於圖5中展示之含有大約1150個運算塊之ASIC晶片500,此意謂每一週期可並行執行大約72,000個運算。可使用之時脈速度之實例包含(但不限於) 225 MHz、500 MHz、750 MHz、1 Ghz、1.25 GHz、1.5 GHz、1.75 GHz或2 GHz。各個別運算塊之運算陣列604係較大脈動運算塊陣列之一子集,如圖5中繪示。
含於運算塊600中之記憶體602可包含(例如)隨機存取記憶體(RAM),諸如SRAM。各記憶體602可經組態以儲存與圖5中繪示之ASIC晶片之n個運算塊502相關聯之總記憶體之1/n。記憶體602可被提供為一單一晶片或多個晶片。舉例而言,圖6中展示之記憶體602被提供為四個單埠SRAM,其等之各者耦合至運算陣列604。替代地,記憶體602可被提供為兩個單埠SRAM或八個單埠SRAM以及其他組態。在錯誤校正編碼之後,記憶體之聯合容量可係(但不限於) (例如) 16 kB、32 kB、64 kB或128 kB。藉由在運算陣列本端提供實體記憶體602,在一些實施方案中可大大減小ASIC 500之接線密度。在其中記憶體集中於ASIC 500內之一替代組態中,與如本文中描述般在本端提供相反,記憶體頻寬之各位元可能需要一導線。覆蓋ASIC 500之各運算塊所需之導線之總數將遠遠超過ASIC 100內之可用空間。相比之下,運用針對各運算塊提供之專用記憶體,可實質上減小跨越ASIC 500之區域所需之總數。
運算塊600亦包含可控制匯流排線。可將可控制匯流排線分類成多個不同群組。舉例而言,可控制匯流排線可包含經組態以沿各基本方向在運算塊之間傳送資料的通用可控制匯流排線610之一第一群組。即,可控制匯流排線610之第一群組可包含:匯流排線610a,其等經組態以沿運算塊之格柵之第一維度501朝向一第一方向(被稱為圖6中之「東」)傳送資料;匯流排線610b,其等經組態以沿運算塊之格柵之第一維度101朝向一第二方向(被稱為圖6中之「西」)傳送資料,其中該第二方向與該第一方向相反;匯流排線610c,其等經組態以沿運算塊之格柵之第二維度103朝向一第三方向(被稱為圖6中之「北」)傳送資料;及匯流排線610d,其等經組態以沿運算塊之格柵之第二維度103朝向一第四方向(被稱為圖6中之「南」)傳送資料,其中該第四方向與該第三方向相反。通用匯流排線610可經組態以攜載控制資料、啟動輸入資料、來自及/或至通信介面之資料、來自及/或至向量處理單元之資料、及待由運算塊600儲存及/或使用之資料(例如,權重輸入)。運算塊600可包含用於控制可控制匯流排線且因此向及/或從運算塊600及/或從記憶體602路由資料的一或多個控制元件621 (例如,正反器及多工器)。
可控制匯流排線亦可包含可控制匯流排線之一第二群組,本文中被稱為運算陣列部分和匯流排線620。運算陣列部分和匯流排線620可經組態以攜載從由運算陣列604執行之運算輸出之資料。舉例而言,匯流排線620可經組態以攜載從運算陣列604中之列獲得之部分和資料,如圖6中展示。在此情況中,匯流排線620之數目將匹配陣列604中之列之數目。例如,對於一8×8運算陣列,將存在8個部分和匯流排線620,其等之各者耦合至運算陣列604中之一對應列之輸出。運算陣列輸出匯流排線620可進一步經組態以耦合至ASIC晶片內之另一運算塊,例如,作為ASIC晶片內之另一運算塊之一運算陣列之輸入。舉例而言,運算塊600之陣列部分和匯流排線620可經組態以接收定位成遠離運算塊600至少一個運算塊之一第二運算塊之一運算陣列之輸入(例如,部分和620a)。接著,將運算陣列604之輸出與部分和線620相加以產生新部分和620b,該新部分和620b可從運算塊600輸出。接著,可將部分和620b傳遞至另一運算塊或替代地傳遞至向量處理單元。舉例而言,各匯流排線620可耦合至向量處理單元之一對應片段(諸如圖5中之片段506)。
如關於圖5說明,可控制匯流排線可包含諸如經組態以允許沿匯流排線輸送資料之輸送器元件(例如,正反器)的電路。在一些實施方案中,各可控制匯流排線針對各運算塊包含一對應輸送器元件。如關於圖5進一步說明,可控制匯流排線可包含諸如經組態以允許在ASIC晶片之不同運算塊、向量處理單元及通信介面之間傳送資料之多工器的電路。可將多工器定位於存在資料之一源或接收點之任何位置。舉例而言,在一些實施方案中,如圖6中展示,可將諸如多工器之控制電路621定位於可控制匯流排線之交叉點處(例如,通用匯流排線610a及610d之交叉點處、通用匯流排線610a及610c之交叉點處、通用匯流排線610b及610d之交叉點處、及/或通用匯流排線610b及610c之交叉點處)。匯流排線交叉點處之多工器可經組態以在交叉點處在匯流排線之間傳送資料。因此,藉由多工器之適當操作,可改變資料在可控制匯流排線上方行進之方向。舉例而言,可將在通用匯流排線610a上沿第一維度101行進之資料傳送至通用匯流排線610d,使得資料代替地沿第二維度103行進。在一些實施方案中,多工器可經定位成鄰近運算塊600之記憶體602,使得可向及/或從記憶體602傳送資料。
可在數位電子電路中、在有形體現之電腦軟體或韌體中、在電腦硬體中(包含本說明書中揭示之結構及其等結構等效物)、或在其等之一或多者之組合中實施本說明書中描述之標的及功能操作之實施例。本說明書中描述之標的之實施例可經實施為一或多個電腦程式,即,在一有形非暫時性儲存媒體上編碼以由資料處理設備執行或控制資料處理設備之操作之電腦程式指令之一或多個模組。電腦儲存媒體可係一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。替代地或另外地,程式指令可在一人工產生之傳播信號(例如,一機器產生之電氣、光學或電磁信號)上編碼,該信號經產生以對資訊進行編碼以傳輸至適合接收器設備以由一資料處理設備執行。
術語「資料處理設備」係指資料處理硬體且涵蓋用於處理資料之全部種類之設備、裝置及機器,包含(藉由實例)一可程式化處理器、一電腦或多個處理器或電腦。設備亦可係或進一步包含專用邏輯電路,例如,一FPGA (場可程式化閘陣列)或一ASIC (特定應用積體電路)。除硬體以外,設備可視情況包含針對電腦程式建立一執行環境之程式碼,例如,組成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合之程式碼。
亦可被稱為或描述為一程式、軟體、一軟體應用程式、一應用程式、一模組、一軟體模組、一指令碼或程式碼之一電腦程式可以任何形式之程式設計語言(包含編譯或解譯語言,或宣告式或程序語言)撰寫,且其可以任何形式(包含作為一獨立程式或作為一模組、組件、副常式,或適於用於一運算環境中之其他單元)部署。一程式可能但非必需對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令碼)之一檔案之一部分中、儲存於專用於討論中程式之一單一檔案中、或儲存於多個協調檔案(例如,儲存程式碼之一或多個模組、副程式或部分之檔案)中。一電腦程式可經部署以在一個電腦上執行或在定位於一個位點處或跨多個位點分佈且藉由一資料通信網路互連之多個電腦上執行。
一或多個電腦之一系統經組態以執行特定操作或動作意謂系統已在其上安裝在操作中導致系統執行操作或動作之軟體、韌體、硬體或其等之一組合。一或多個電腦程式經組態以執行特定操作或動作意謂一或多個程式包含在由資料處理設備執行時導致設備執行操作或動作的指令。
如本說明書中使用,一「引擎」或「軟體引擎」係指提供不同於輸入之一輸出之一軟體實施之輸入/輸出系統。一引擎可係一編碼功能性區塊,諸如一程式庫、一平台、一軟體開發工具包(「SDK」)或一物件。可在包含一或多個處理器及電腦可讀媒體之任何適當類型之運算裝置(例如,伺服器、行動電話、平板電腦、筆記型電腦、音樂播放器、電子書閱讀器、膝上型或桌上型電腦、PDA、智慧型電話或其他固定或可攜帶裝置)上實施各引擎。此外,可在相同運算裝置上或在不同運算裝置上實施引擎之兩者或兩者以上。
可藉由執行一或多個電腦程式之一或多個可程式化電腦執行本說明書中描述之程序及邏輯流程以藉由對輸入資料操作且產生輸出而執行功能。亦可藉由專用邏輯電路(例如,一FPGA或一ASIC),或藉由專用邏輯電路及一或多個程式化電腦之一組合執行程序及邏輯流程。
適於執行一電腦程式之電腦可基於通用或專用微處理器或該兩者,或任何其他種類之中央處理單元。通常,一中央處理單元將從一唯讀記憶體或一隨機存取記憶體或該兩者接收指令及資料。一電腦之必要元件係用於執行(performing或executing)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。中央處理單元及記憶體可藉由專用邏輯電路補充或併入專用邏輯電路中。通常,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或操作地耦合以從該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置或該兩者。然而,一電腦未必具有此等裝置。此外,一電腦可嵌入在另一裝置(例如,一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲主控台、一全球定位系統(GPS)接收器或一可攜帶儲存裝置,例如,一通用串列匯流排(USB)快閃隨身碟,僅舉幾例)中。
適於儲存電腦程式指令及資料之電腦可讀媒體包含全部形式之非揮發性記憶體、媒體及記憶體裝置,包括(藉由實例):半導體記憶體裝置,例如,EPROM、EEPROM及快閃記憶體裝置;磁碟,例如,內部硬碟或可移除磁碟;磁光碟;及CD-ROM及DVD-ROM光碟。
為提供與一使用者的互動,可在具有用於將資訊顯示給使用者之一顯示裝置(例如,一CRT (陰極射線管)或LCD (液晶顯示器)監視器)及一鍵盤及指標裝置(例如,一滑鼠、軌跡球或一存在敏感顯示器或使用者可藉由其提供輸入至電腦之其他表面)之一電腦上實施本說明書中描述之標的之實施例。亦可使用其他種類之裝置來提供與一使用者的互動;舉例而言,提供給使用者之回饋可係任何形式之感覺回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自使用者之輸入可以任何形式接收,包含聲學、語音或觸覺輸入。另外,一電腦可藉由將文件發送至由使用者使用之一裝置且從該裝置接收文件而與一使用者互動;舉例而言,藉由回應於從一使用者之裝置上之一網頁瀏覽器接收之請求而將網頁發送至網頁瀏覽器。再者,一電腦可藉由將文字訊息或其他形式之訊息發送至運行一傳訊應用程式且作為回報從使用者接收回應訊息之一個人裝置(例如,一智慧型電話)而與一使用者互動。
可在一運算系統中實施本說明書中描述之標的之實施例,該運算系統包含一後端組件(例如,作為一資料伺服器),或包含一中間組件(例如,一應用程式伺服器),或包含一前端組件(例如,具有一使用者可透過其與本說明書中描述之標的之一實施方案互動之一圖形使用者介面、一網頁瀏覽器或一應用程式之一用戶端電腦),或一或多個此等後端組件、中間組件或前端組件之任何組合。系統之組件可藉由任何形式或介質之數位資料通信(例如,一通信網路)互連。通信網路之實例包含一區域網路(LAN)及一廣域網路(WAN),例如,網際網路。
運算系統可包含用戶端及伺服器。一用戶端及伺服器通常彼此遠離且通常透過一通信網路互動。用戶端及伺服器之關係憑藉運行於各自電腦上且彼此具有一用戶端-伺服器關係之電腦程式而產生。在一些實施例中,一伺服器將資料(例如,一HTML頁面)傳輸至一使用者裝置(例如)用於將資料顯示給與用作一用戶端之裝置互動之一使用者且自與用作一用戶端之裝置互動之一使用者接收使用者輸入。在使用者裝置處產生之資料(例如,使用者互動之一結果)可在伺服器處自裝置接收。
除上文描述之實施例之外,以下實施例亦係新穎的:
實施例1係一種方法,其包括:
接收產生待藉由經組態以至少部分並行執行矩陣操作之一加速器執行之一程式之一第一層之一排程之一請求,其中該程式定義包含該第一層之複數個層,該程式之各層定義待使用值之一各自矩陣執行之矩陣操作;
根據一初始指派方向指派該排程之複數個初始區塊,其中該初始指派方向指定待沿著其執行該複數個初始區塊之該第一層之一第一矩陣之一第一維度;
選擇一特定循環以處理在一後續層可開始處理之前所需之一矩陣之一最後區塊;
切換該指派方向,使得沿著該第一矩陣之一不同第二維度處理在該選定特定循環之後處理之區塊;及
根據該經切換指派方向指派全部剩餘未指派區塊。
實施例2係如實施例1之方法,其中選擇該特定循環包括:
運算一先前層之傳播延遲;及
基於該先前層之該傳播延遲指派該特定循環。
實施例3係如實施例1至2中任一項之方法,其中選擇該特定循環包括:
運算一先前層之該傳播延遲;
運算該先前層之閒置循環之一數目;及
選擇該先前層之該傳播延遲與該先前層之閒置循環之該數目之間之一最大值。
實施例4係如實施例1至3中任一項之方法,其中該排程以列主序指派該複數個初始區塊,且其中指派全部剩餘未指派區塊以行主序指派區塊。
實施例5係如實施例4之方法,其進一步包括選擇在其切換該指派方向之一循環,其包含選擇在其未排程列之一數目等於一當前循環與該選定特定循環之間之一差之一循環。
實施例6係如實施例4之方法,其中該排程僅沿著該矩陣之部分列指派該複數個初始區塊。
實施例7係如實施例6之方法,其中該排程指派複數個初始部分列及複數個後續部分列,其中該等後續部分列小於該等初始部分列。
實施例8係如實施例7之方法,其中該等初始部分列具有藉由上限(N)給定之一長度,且該等後續部分列具有藉由底限(N)給出之一長度,其中N係藉由該選定循環除以一先前層上之一矩陣之區塊高度給定。
實施例9係如實施例4之方法,其中該排程以該列主序指派該等初始區塊以填充藉由該矩陣中之一對角線界定之一空間。
實施例10係如實施例9之方法,其中切換該指派方向發生在該特定選定循環。
實施例11係如實施例1至10中任一項之方法,其中該加速器具有多個運算塊且各層待藉由該多個運算塊之一各自運算塊運算。
實施例12係如實施例1至10中任一項之方法,其中該加速器具有用以執行兩個層之操作之一單一運算塊。
實施例13係一種系統,其包括:一或多個電腦及儲存指令之一或多個儲存裝置,該等指令在藉由該一或多個電腦執行時可操作以引起該一或多個電腦執行如實施例1至12中任一項之方法。
實施例14係一種編碼有一電腦程式之電腦儲存媒體,該程式包括在藉由資料處理設備執行時可操作以引起該資料處理設備執行如實施例1至12中任一項之方法之指令。
雖然本說明書含有許多特定實施方案細節,但此等不應被解釋為對任何發明之範疇或對可主張之內容之範疇之限制,而係被解釋為可能特定於特定發明之特定實施例之特徵之描述。本說明書中在單獨實施例之背景內容中描述之某些特徵亦可在一單一實施例中組合實施。相反地,在一單一實施例之背景內容中描述之各種特徵亦可在多個實施例中分別或以任何適合子組合實施。此外,儘管特徵在上文中可被描述為以某些組合起作用且甚至最初如此主張,然來自一所主張組合之一或多個特徵在一些情況中可從組合刪除,且所主張組合可能係關於一子組合或一子組合之變化例。
類似地,雖然在圖式中以一特定順序描繪操作,但此不應被理解為要求以展示之特定順序或以循序順序執行此等操作,或執行全部繪示操作以達成所要結果。在某些情境中,多任務及並行處理可係有利的。此外,上文中描述之實施例中之各種系統模組及組件之分離不應被理解為在全部實施例中要求此分離,且應瞭解,所描述之程式組件及系統通常可一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。舉例而言,發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成所要結果。作為一個實例,附圖中描繪之程序不一定要求所展示之特定順序,或循序順序以達成所要結果。在特定一些情況中,多任務及並行處理可係有利的。
101:第一維度
102:第一層
103:第二維度
104:第二層
106:第一排程
107:第一排程
108:第二排程
109:第二排程
110:第一權重矩陣M1
111:矩陣
115:輸入向量V1
117:輸出向量V2
120:第二權重矩陣M2
210:步驟
220:步驟
230:步驟
240:步驟
250:步驟
500:特定應用積體電路(ASIC)
501:第一維度
502:運算塊
503:第二維度
504:向量處理單元
506:片段
508a:第一通信介面
508b:第二通信介面
510a:區段
510b:區段
510c:區段
510d:區段
600:運算塊
602:局部記憶體
604:運算陣列
606:單元
610a:匯流排線
610b:匯流排線
610c:匯流排線
610d:匯流排線
620:運算陣列部分和匯流排線
620a:部分和
620b:部分和
621:控制元件/控制電路
圖1A繪示改變排程可如何減少一神經網路之兩個層之間之延遲。
圖1B繪示一單一運算塊之排程指派。
圖2係用於產生用於減少一加速器之運算塊之間之延遲之一排程之一例示性程序之一流程圖。
圖3A繪示執行列主序且接著切換至行主序。
圖3B繪示執行具有一列限制之列主序。
圖4繪示對角線排程。
圖5係繪示專用邏輯電路之一實例之一示意圖。
圖6繪示用於ASIC晶片中之一運算塊之實例。
各種圖式中之相同元件符號及名稱指示相同元件。
210:步驟
220:步驟
230:步驟
240:步驟
250:步驟
Claims (22)
- 一種硬體電路,其經組態以執行包括以下之操作:接收一請求以產生待藉由該硬體電路執行之一程式之一第一層之一排程,其中該程式定義包含該第一層之複數個層,該程式之各層定義待使用值之一各自矩陣執行之矩陣操作(matrix operations);根據一初始指派方向指派該排程之複數個初始區塊,其中該初始指派方向指定待沿著其執行該排程之該複數個初始區塊之該第一層之一第一矩陣之一第一維度;選擇一特定循環以處理在一後續層可開始處理之前所需之一矩陣之一最後區塊;切換該指派方向,使得沿著該第一矩陣之一不同第二維度處理在該選定特定循環之後處理之區塊;及根據該經切換指派方向指派一未指派區塊。
- 如請求項1之硬體電路,其中選擇該特定循環包括:運算一先前層之傳播延遲;及基於該先前層之該傳播延遲指派該特定循環。
- 如請求項1之硬體電路,其中選擇該特定循環包括:運算一先前層之一傳播延遲;運算該先前層之閒置循環之一數目;及選擇該先前層之該傳播延遲與該先前層之閒置循環之該數目之間之 一最大值。
- 如請求項1之硬體電路,其中以列主序(row-major order)指派該排程之該複數個初始區塊,且其中指派該未指派區塊以行主序(column-major order)指派該未指派區塊。
- 如請求項4之硬體電路,其進一步包括選擇在其切換該指派方向之一循環,其包含選擇在其未排程列之一數目等於一當前循環與該選定特定循環之間之一差之一循環。
- 如請求項4之硬體電路,其中僅沿著該矩陣之部分列指派該排程之該複數個初始區塊。
- 如請求項6之硬體電路,其中該排程指派複數個初始部分列及複數個後續部分列,其中該等後續部分列小於該等初始部分列。
- 如請求項7之硬體電路,其中該等初始部分列具有藉由上限(N)給定之一長度,且該等後續部分列具有藉由底限(N)給出之一長度,其中N係藉由該選定循環除以一先前層上之一矩陣之一區塊高度給定。
- 如請求項4之硬體電路,其中以該列主序指派該排程之該複數個初始區塊以填充藉由該矩陣中之一對角線界定之一空間。
- 如請求項9之硬體電路,其中切換該指派方向發生在該特定選定循環。
- 如請求項1之硬體電路,其中該硬體電路具有多個運算塊(tile)且各層待藉由該多個運算塊之一各自運算塊運算。
- 如請求項1之硬體電路,其中該硬體電路具有用以執行兩個層之操作之一單一運算塊。
- 一硬體電路之一或多個非暫時性機器可讀儲存裝置,其儲存指令,藉由一或多個處理裝置可執行該等指令以導致包括以下操作之執行:接收一請求以產生待藉由該硬體電路執行之一程式之一第一層之一排程,其中該程式定義包含該第一層之複數個層,該程式之各層定義待使用值之一各自矩陣執行之矩陣操作;根據一初始指派方向指派該排程之複數個初始區塊,其中該初始指派方向指定待沿著其執行該排程之該複數個初始區塊之該第一層之一第一矩陣之一第一維度;選擇一特定循環以處理在一後續層可開始處理之前所需之一矩陣之一最後區塊;切換該指派方向,使得沿著該第一矩陣之一不同第二維度處理在該選定特定循環之後處理之區塊;及根據該經切換指派方向指派一未指派區塊。
- 如請求項13之該硬體電路之該一或多個非暫時性機器可讀儲存裝置,其中選擇該特定循環包括:運算一先前層之傳播延遲;及基於該先前層之該傳播延遲指派該特定循環。
- 如請求項13之該硬體電路之該一或多個非暫時性機器可讀儲存裝置,其中選擇該特定循環包括:運算一先前層之一傳播延遲;運算該先前層之閒置循環之一數目;及選擇該先前層之該傳播延遲與該先前層之閒置循環之該數目之間之一最大值。
- 如請求項1之該硬體電路之該一或多個非暫時性機器可讀儲存裝置,其中以列主序(row-major order)指派該排程之該複數個初始區塊,且其中指派該未指派區塊以行主序(column-major order)指派該未指派區塊。
- 如請求項16之該硬體電路之該一或多個非暫時性機器可讀儲存裝置,其進一步包括選擇在其切換該指派方向之一循環,其包含選擇在其未排程列之一數目等於一當前循環與該選定特定循環之間之一差之一循環。
- 如請求項16之該硬體電路之該一或多個非暫時性機器可讀儲存裝置,其中僅沿著該矩陣之部分列指派該排程之該複數個初始區塊。
- 如請求項16之該硬體電路之該一或多個非暫時性機器可讀儲存裝置,其中該排程指派複數個初始部分列及複數個後續部分列,其中該等後續部分列小於該等初始部分列。
- 如請求項19之該硬體電路之該一或多個非暫時性機器可讀儲存裝置,其中該等初始部分列具有藉由上限(N)給定之一長度,且該等後續部分列具有藉由底限(N)給出之一長度,其中N係藉由該選定循環除以一先前層上之一矩陣之一區塊高度給定。
- 如請求項16之該硬體電路之該一或多個非暫時性機器可讀儲存裝置,其中以該列主序指派該排程之該複數個初始區塊以填充藉由該矩陣中之一對角線界定之一空間。
- 如請求項21之該硬體電路之該一或多個非暫時性機器可讀儲存裝置,其中切換該指派方向發生在該特定選定循環。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962890351P | 2019-08-22 | 2019-08-22 | |
US62/890,351 | 2019-08-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202301172A TW202301172A (zh) | 2023-01-01 |
TWI817490B true TWI817490B (zh) | 2023-10-01 |
Family
ID=72428336
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109128654A TWI767303B (zh) | 2019-08-22 | 2020-08-21 | 在神經網路中傳播延遲減少之電腦實施方法 |
TW111117324A TWI817490B (zh) | 2019-08-22 | 2020-08-21 | 在神經網路中傳播延遲減少之電腦實施方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109128654A TWI767303B (zh) | 2019-08-22 | 2020-08-21 | 在神經網路中傳播延遲減少之電腦實施方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220318638A1 (zh) |
EP (1) | EP3973394A1 (zh) |
JP (2) | JP7326501B2 (zh) |
KR (1) | KR20220011740A (zh) |
CN (1) | CN114026543A (zh) |
TW (2) | TWI767303B (zh) |
WO (1) | WO2021035079A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113469631B (zh) * | 2021-09-03 | 2021-12-10 | 浙江凯乐士科技集团股份有限公司 | 拣选调度方法、设备及矩阵分拣系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200707285A (en) * | 2005-07-26 | 2007-02-16 | Advanced Risc Mach Ltd | Algebraic single instruction multiple data processing |
CN102144225A (zh) * | 2008-05-29 | 2011-08-03 | 阿克西斯半导体有限公司 | 实时数据处理方法和装置 |
TWI526935B (zh) * | 2010-06-10 | 2016-03-21 | 美光科技公司 | 可程式化裝置、階層平行機器、用於提供狀態資訊之方法 |
US9501325B2 (en) * | 2014-04-11 | 2016-11-22 | Maxeler Technologies Ltd. | System and method for shared utilization of virtualized computing resources |
CN107168683A (zh) * | 2017-05-05 | 2017-09-15 | 中国科学院软件研究所 | 国产申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 |
CN108462495A (zh) * | 2018-04-03 | 2018-08-28 | 北京航空航天大学 | 一种基于gpu的多元ldpc码高速并行译码器及其译码方法 |
WO2019078885A1 (en) * | 2017-10-20 | 2019-04-25 | Google Llc | PARALLEL EXECUTION OF OPERATIONS OF ACTIVATION UNITS WITH RELEASE |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378065B2 (en) * | 2013-03-15 | 2016-06-28 | Advanced Elemental Technologies, Inc. | Purposeful computing |
US20170249282A1 (en) * | 2014-10-08 | 2017-08-31 | Analog Devices, Inc. | Configurable pre-processing array |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US10482337B2 (en) | 2017-09-29 | 2019-11-19 | Infineon Technologies Ag | Accelerating convolutional neural network computation throughput |
-
2020
- 2020-08-20 WO PCT/US2020/047254 patent/WO2021035079A1/en unknown
- 2020-08-20 US US17/636,662 patent/US20220318638A1/en active Pending
- 2020-08-20 JP JP2021577625A patent/JP7326501B2/ja active Active
- 2020-08-20 EP EP20768427.5A patent/EP3973394A1/en active Pending
- 2020-08-20 CN CN202080047574.8A patent/CN114026543A/zh active Pending
- 2020-08-20 KR KR1020217042808A patent/KR20220011740A/ko active IP Right Grant
- 2020-08-21 TW TW109128654A patent/TWI767303B/zh active
- 2020-08-21 TW TW111117324A patent/TWI817490B/zh active
-
2023
- 2023-08-02 JP JP2023126257A patent/JP2023145676A/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200707285A (en) * | 2005-07-26 | 2007-02-16 | Advanced Risc Mach Ltd | Algebraic single instruction multiple data processing |
CN102144225A (zh) * | 2008-05-29 | 2011-08-03 | 阿克西斯半导体有限公司 | 实时数据处理方法和装置 |
TWI526935B (zh) * | 2010-06-10 | 2016-03-21 | 美光科技公司 | 可程式化裝置、階層平行機器、用於提供狀態資訊之方法 |
US9501325B2 (en) * | 2014-04-11 | 2016-11-22 | Maxeler Technologies Ltd. | System and method for shared utilization of virtualized computing resources |
CN107168683A (zh) * | 2017-05-05 | 2017-09-15 | 中国科学院软件研究所 | 国产申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 |
WO2019078885A1 (en) * | 2017-10-20 | 2019-04-25 | Google Llc | PARALLEL EXECUTION OF OPERATIONS OF ACTIVATION UNITS WITH RELEASE |
CN108462495A (zh) * | 2018-04-03 | 2018-08-28 | 北京航空航天大学 | 一种基于gpu的多元ldpc码高速并行译码器及其译码方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20220011740A (ko) | 2022-01-28 |
CN114026543A (zh) | 2022-02-08 |
TWI767303B (zh) | 2022-06-11 |
JP2022544739A (ja) | 2022-10-21 |
JP2023145676A (ja) | 2023-10-11 |
EP3973394A1 (en) | 2022-03-30 |
US20220318638A1 (en) | 2022-10-06 |
TW202301172A (zh) | 2023-01-01 |
WO2021035079A1 (en) | 2021-02-25 |
JP7326501B2 (ja) | 2023-08-15 |
TW202109341A (zh) | 2021-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200287525A1 (en) | Synchronization in a quantum controller with modular and dynamic pulse generation and routing | |
TWI767310B (zh) | 處理器、運算方法及電腦程式產品 | |
CN111417965A (zh) | 软件限定的量子计算机 | |
CN111310904A (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
US20240104012A1 (en) | Topological scheduling | |
US11088694B1 (en) | Application specific integrated circuit accelerators | |
JP7476299B2 (ja) | 同期プロセッサのためのコンパイル | |
JP2023145676A (ja) | 伝搬レイテンシの短縮 | |
CN103870335A (zh) | 用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法 | |
Xiao et al. | FCNNLib: An efficient and flexible convolution algorithm library on FPGAs | |
US20210049496A1 (en) | Device and methods for a quantum circuit simulator | |
TW202127840A (zh) | 初始化晶片上操作 | |
JP2018063576A (ja) | 情報処理装置、情報処理方法及びプログラム | |
TWI776212B (zh) | 用於積體電路加速器之系統、方法及電腦儲存媒體 | |
JP7004083B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
CN115293095A (zh) | 考虑最大时延优化的fpga布线方法 |