TW202301203A - 用於類神經網路加速器的稀疏張量儲存的方法與設備 - Google Patents
用於類神經網路加速器的稀疏張量儲存的方法與設備 Download PDFInfo
- Publication number
- TW202301203A TW202301203A TW111109904A TW111109904A TW202301203A TW 202301203 A TW202301203 A TW 202301203A TW 111109904 A TW111109904 A TW 111109904A TW 111109904 A TW111109904 A TW 111109904A TW 202301203 A TW202301203 A TW 202301203A
- Authority
- TW
- Taiwan
- Prior art keywords
- tensor
- exemplary
- data
- circuit
- storage elements
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6047—Power optimization with respect to the encoder, decoder, storage or transmission
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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 Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
本案揭露用於類神經網路加速器的稀疏張量儲存的方法、設備、系統及製造物品。示範設備包含:稀疏性圖產生電路,用以產生對應於張量的稀疏性圖,該稀疏性圖用以指示該張量的資料點為零,靜態儲存控制電路,用以將張量細分為一或更多儲存元件,及壓縮器,用以執行該一或更多儲存元件的第一壓縮,以產生一或更多壓縮儲存元件,該第一壓縮用以根據該稀疏性圖,移除該一或更多儲存元件的零點並執行該一或更多壓縮儲存元件的第二壓縮,該第二壓縮,用以將該一或更多壓縮儲存元件相鄰地儲存於記憶體中。
Description
本案大致關係於張量儲存,及更明確地說,關係於用於類神經網路加速器的稀疏張量儲存的方法與設備。
類神經網路可以儲存資料於張量中。張量為資料結構。例如,張量為用以儲存資料的多維陣列(如,向量、矩陣等)。於處理時,張量可以被旋轉(如,張量的軸被置換)。在類神經網路加速器中,張量計算可以被細分為更小工作負載,用於平行化。
及
類神經網路可以在張量中儲存資料。因為張量係透過類神經網路加以處理,所以,它們可以取得高度的稀疏性。如於此所用,“稀疏性”表示張量可以儲存多少個零的度量。稀疏性可以為類神經網路所利用以增加類神經網路加速器的效能。在一些例子中,為利用張量稀疏性,需要張量資料的有效儲存。即,在加速器仍能快速處理的情形下,張量資料能愈緊縮,則加速器的效率愈高。如果張量資料被壓縮於記憶體內,則張量資料需要較少儲存空間及較少傳輸進出記憶體,改良了類神經網路的速度與能力。
張量的儲存也可以取決於張量的取向。例如,在卷積類神經網路中,張量可以在網路中的一些級中被旋轉(如,張量的軸被置換)。在一些例子中,3D張量可以被視覺化為具有沿著X軸、Y軸、及Z軸的維度的3D陣列。在一些例子中,張量的旋轉係根據資料相對於X軸、Y軸、及Z軸如何儲存而定。例如,對於3D張量可能有六個旋轉(如,XYZ、XZY、YXZ、YZX、ZXY、及ZYX)。儲存格式類似軸置換之一。例如,如果影像的XY平面被連續儲存(如,通道為主模式),則影像被儲存於XYZ格式。如果網路操作需要旋轉一張量,則張量儲存格式被切換。
在類神經網路加速器中,張量計算可以被細分為更小工作負載,供平行加速。例如,第一計算的輸出可以被使用作為下一計算的輸入。如果前一計算已經被分割於平面(如,XY平面等),則涉及大於1×1尺寸的計算核心的張量操作可能需要相鄰工作負載的加邊區。在此等例子中,較佳將加邊區複製入在下一步驟中需要資料的平行計算單元的本地記憶體內,與在計算時作出較高潛候期讀取的平行計算單元相反。
在先前解決方案中,稀疏性在卷積類神經網路加速器中並未列考量。因此,張量資料被以未壓縮的密集格式儲存並佔用更多儲存空間。快速記憶體為稀有資源,並且,在處理時使用它可能變成瓶頸。另外,如果張量資料由於其尺寸而不能將其整體配合於記憶體內,則類神經網路加速器可能被儲存在較大、較慢記憶體資源內。張量資料的記憶體佔用區愈大,則需要愈多的交易。如果張量資料需要被儲存及/或移動,則這可能增加傳送時間及功率消耗。
先前解決方案以通用應用處理器旋轉張量,處理器由記憶體讀取原始格式的張量、執行用於各個資料塊(chuck)的位址變換、及將之以新格式回存至記憶體。關於以應用處理器讀出資料、執行位址變換、及將之回存至記憶體的計算時間與功率可能花用高成本。再者,如果應用處理器被使用以旋轉張量資料,則應用處理器不能在同一時間被用於其他工作。因此,由於同步化(即,當資料已經被產生並已經被儲存記憶體中時,應用處理器只可以開始讀入予以旋轉的資料)之故,為了張量旋轉,將需要額外延遲。如果需要排程客製處理功能,以在應用處理器上執行旋轉,則軟體設計也將會變得更複雜。
在一些先前解決方案中,計算單元向在先前步驟中已經產生資料的其他計算單元請求邊界區(如,環)資料。在一些其他先前解決方案中,計算單元廣播所有所產生的資料至其他可能只需要該資料的一部分的計算單元。因此,如果不只是所需邊界區而是整個資料被複製於計算單元之間,則較所需為多的資料被傳送。這可能造成較長延遲及較高功耗。如果由其他計算單元請求先前工作負載的資料,則引入了延遲。例如,由於所需同步化機制之故,資料通常在其已經被產生一些時間後被請求。同時,如果相較於唯寫機制,請求資料涉及具有請求與反應的兩步驟程序。用於共享張量資料的請求介面由於更多複雜邏輯而需要較多面積並增加引擎間接線,同時,也增加功率需求。軟體複雜度也由於邊界區複製的額外管理而增加。
於此所述之例子利用稀疏性以在傳送及/或儲存張量於記憶體之前先壓縮張量資料。例如,壓縮串流被細分為相連記憶體塊,其可以在預定記憶體位置及/或經由指標加以存取。於此所揭露的示範技術也在類神經網路加速器中執行張量資料的旋轉。例如,緩衝於類神經網路加速器內的張量係被旋轉並隨後被送至記憶體。於此所揭露的示範技術更包含複製邊界區資料至可能在下一處理步驟中需要它的其他計算單元。即,只有需要的資料被傳送。
圖1為依據本案所教示建構的用於稀疏張量儲存的示範張量儲存系統100的示意圖。示範張量儲存系統100包含示範類神經網路(NN)加速器102、示範類神經網路控制電路104、示範後-處理電路106、及示範本地記憶體108。
在圖1的例示例子中,NN加速器102包含NN控制電路104及後-處理電路106。示範NN控制電路104存取儲存於本地記憶體108中的資料並產生輸出張量。在一些例子中,NN控制電路104實施卷積類神經網路。在此所揭露的例子中,輸出張量為三維。然而,NN控制電路104可以額外或替代地產生具有更少或更多維度的張量(如,二維等)。以下參考圖4描述示範張量。
示範NN控制電路104產生輸出張量並以示範磚片區段110傳送輸出張量至後-處理電路106。示範磚片區段110包含示範磚片區段112。在圖1的例示例子中,磚片區段112具有1×4×16(如,X=1、Y=4、Z=16)的維度。在一些例子中,磚片區段110的點為1、2、4、8、16或32位元寬。例如,如果磚片區段110的點為1、2、或4位元寬資料,則後-處理電路106可以傳送張量點至本地記憶體108填入整個位元組。例如,1位元組儲存兩個張量點的4位元資料、1位元組儲存四個張量點的2位元資料,及1位元組儲存八個張量點的1位元資料。
示範後-處理電路106取得磚片區段110。示範後-處理電路106確定是否旋轉張量的磚片區段110。在一些例子中,後-處理電路106根據由編譯器(未示出)所設定的組態暫存器,來確定是否旋轉磚片區段110。示範後-處理電路106壓縮該張量。例如,後-處理電路106壓縮張量以靜態格式儲存張量。另外或替代地,後-處理電路106壓縮靜態格式張量,以動態格式儲存張量。示範後-處理電路106廣播壓縮及/或未壓縮張量的環。例如,後-處理電路106確定張量的資料點,以複製至其他計算單元。示範後-處理電路106儲存壓縮及/未壓縮張量於示範本地記憶體108中。後-處理電路106的示範實施方式係如下參考圖3加以描述。
示範本地記憶體108儲存張量資料。例如,本地記憶體108儲存為後-處理電路106所產生的壓縮張量。在一些例子中,本地記憶體108為快速記憶體。本地記憶體108可以是由同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS®動態隨機存取記憶體(RDRAM®)及/或任何其他類型隨機存取記憶體所實施的揮發記憶體。另外或替代地,本地記憶體108可以為快閃記憶體及/或任何其他想要類型記憶體裝置所實施的非揮發記憶體。
圖2為依據本案的教示建構的示範張量儲存架構200。在圖2的示範例子中,張量儲存架構200包含示範張量旋轉級202、示範壓縮級204、示範環廣播級206、及示範儲存級208。示範張量儲存架構200包含示範輸出張量210。例如,NN控制電路104(圖1)產生輸出張量210。
在示範張量旋轉級202期間,示範後-處理電路106(圖1)旋轉輸出張量210。例如,後-處理電路106確定輸出張量210的取向及目標取向。示範後-處理電路106執行輸出張量210的軸置換,以產生旋轉張量。在一些例子中,後-處理電路106確定不旋轉輸出張量210。
在示範壓縮級204期間,後-處理電路106壓縮輸出張量210(如,旋轉張量)。示範後-處理電路106取決於何種儲存格式被選擇,而產生某些輸出元件。例如,後-處理電路106產生示範輸出啟動交易212,其集中於示範密集儲存214中。如於此所用,“輸出啟動”表示輸出張量(如,輸出張量210)的資料點。即,張量以未壓縮格式儲存(如,張量的資料被相連儲存在記憶體中)。以下參考圖5描述張量的密集儲存。
在一些例子中,後-處理電路106產生示範稀疏性圖216。在於此所揭露的例子中,稀疏性圖216指示是否未壓縮張量的資料點(如,密集儲存214)為零。稀疏性圖216促成張量的壓縮。因此,示範後-處理電路106產生示範靜態儲存元件218。示範後-處理電路106產生示範指標220。示範指標220儲存張量的儲存元件於記憶體中的開始位址。在一些例子中,後-處理電路106儲存指標220於指標表中。示範指標表參考圖13加以描述如下。後-處理電路106根據指標220產生示範動態儲存元件222。
在示範環廣播級206期間,後-處理電路106廣播張量環區。例如,後-處理電路106傳送儲存於張量工作負載的邊界區中的資料至其他計算單元。在一些例子中,後-處理電路106執行串列廣播(如,第一計算單元的環區的資料點被複製至第二計算單元)。額外或替代地,後-處理電路106執行平行廣播(如,第一計算單元的環區的資料點被複製到K數量的計算單元)。在示範儲存級208期間,後-處理電路106儲存張量(如,靜態儲存元件218及/或動態儲存元件222)於記憶體(如圖1及/或圖2的本地記憶體108)中。
圖3為圖1的示範張量儲存系統100的示範後-處理電路106的方塊代表圖。示範後-處理電路106包含示範旋轉控制電路302、示範壓縮器304、示範高速暫存記憶體306、及示範資料處置電路308。
示範旋轉控制電路302旋轉張量。例如,旋轉控制電路302取得張量(如,圖2的輸出張量210)並確定是否旋轉張量。即,在此所揭露的例子中,NN加速器102(圖1)旋轉張量。如果旋轉控制電路302確定旋轉張量,則旋轉控制電路302確定張量的旋轉(如,目標取向)。例如,旋轉控制電路302可以取得ZXY格式的張量並確定旋轉該張量或為ZYX格式。
示範旋轉控制電路302包含示範位址確定電路310。如果旋轉控制電路302確定旋轉張量,則示範位址確定電路310確定在記憶體(如,圖1的本地記憶體108)中儲存該張量的點的位址。示範位址確定電路310確定該張量的初次值(如,OX、OY、OZ)。在於此所述的例子中,張量的初次值對應於張量的維度。張量的初次值係配合圖10加以描述如下。
示範位址確定電路310根據該初次值與該目標旋轉,確定該張量的二次值。例如,位址確定電路310根據示範表1確定二次值。
例如,二次值包含變數a、b、c、len
a、len
c、及e
offset。示範位址確定電路310根據在張量中的資料點的座標(如,X、Y、及Z),而確定變數a、b、及c。示範位址確定電路310根據張量的初次值,確定變數len
a、len
c及e
offset。
示範位址確定電路310根據示範方程式1確定用旋轉張量的位址(如,記憶體開始位元組)。
ADR(
i)
=(
b*len
a+a+i*e
offset )
*d+c*scaling方程式1
變數
i為處理資料點的引擎
i(即,計算單元)。變數
scaling為定標因數。示範位址確定電路310根據方程式2確定定標變數。
Scaling=
方程式2
變數
datawidth為資料點的大小(如,1、2、4、8、16或32位元)。示範位址確定電路310根據張量的對齊確定示範方式1的變數
d。例如,位址確定電路310根據示範表2確定變數
d。
示範表2例示張量的兩資料對齊:1位元組對齊(如,超密)及16位元組對齊。例如,位址確定電路310根據二次值(如,
len
c )與定標因數,確定
d。張量對齊係如下參考圖6加以描述。因此,旋轉控制電路302根據由示範位址確定電路310所確定的計算位址,旋轉該張量。
示範壓縮器304壓縮張量。例如,壓縮器304由旋轉控制電路302取得張量。在一些例子中,張量為未壓縮(如,以密集格式儲存)。在圖3所例示的例子中,壓縮器304包含示範稀疏性圖產生電路312、示範靜態儲存控制電路314、及示範動態儲存控制電路316。
示範稀疏性圖產生電路312產生稀疏性圖。如上所述,稀疏性圖指示未壓縮(如,密集)張量的哪些資料點為零。在此所述的例子中,稀疏性圖為二進制張量。例如,如果未壓縮張量的資料點不是零,則稀疏性圖產生電路312確定稀疏圖的對應位元為1。如果未壓縮張量的資料點為零,則稀疏性圖產生電路312確定稀疏性圖的對應位元為0。在此所述的例子中,稀疏性圖的尺寸係根據於張量的資料點的資料尺寸。例如,如果張量資料為8、16或32位元資料,則稀疏性圖為與張量相同尺寸(如,相同維度)。額外或替代地,如果張量的資料點為4位元資料,則稀疏性圖為張量的尺寸的一半。即,兩個張量點對應於一稀疏性圖位元。在一些此等例子中,稀疏性圖產生電路312回應於張量的兩個4位元點為0,確定該稀疏性位元為0。額外或替代地,如果張量的資料點為2位元資料,則稀疏性圖為張量的尺寸的四分之一(如,四個張量點對應於一稀疏性位元)。額外或替代地,如果張量的資料點為1位元資料,則稀疏性圖為張量的尺寸的八分之一(如,八個張量點對應於一稀疏性位元)。
在一些例子中,稀疏性圖產生電路312儲存稀疏性圖於高速暫存記憶體306中。在一些例子中,稀疏性圖係被儲存為與未壓縮張量相同的格式(如,旋轉)。例如,如果未壓縮張量被儲存為ZXY格式,則稀疏性圖被儲存為ZXY格式。示範第一未壓縮張量係被顯示於示範表3。
在一些例子中,例示於表3中的張量資料為8、16、或32位元寬。示範稀疏性圖產生電路312產生例示於示範於表4中的示範稀疏性圖。
表3、表4的示範未壓縮張量與示範稀疏性圖具有10×1×1的維度。表4的稀疏性圖指示表3的未壓縮張量的哪些點為零。示範第二未壓縮張量係被例示於示範表5中。
在一些例子中,例示於表5中的張量資料為4位元寬資料。稀疏性圖產生電路312產生例示於示範表6中的示範稀疏性圖。
示範表6的示範稀疏性圖對應於示範表5的張量。即,稀疏性圖的尺寸為張量的尺寸的一半。例如,表5的張量的兩資料點對應於表6的稀疏性圖的1資料點。示範於未壓縮張量係被例示於示範表7。
在一些例子中,例示於表7中的張量資料為2位元寬資料。示範稀疏性圖產生電路312產生例示於示範表8中的示範稀疏性圖。
示範表8的示範稀疏性圖對應於示範表7的張量。即,稀疏性圖的尺寸係為張量的尺寸的四分之一。例如,表7的張量的四個資料點對應於表8的稀疏性圖的1資料點。示範第四未壓縮張量係被例示於示範表9中。
在一些例子中,例示於表9中的張量資料為1位元寬資料。示範稀疏性圖產生電路312產生例示於示範表10中的示範稀疏性圖。
示範表10的示範稀疏性圖對應於示範表9的張量。即,稀疏性圖的尺寸為張量的尺寸的八分之一。例如,表9的張量的八個資料點對應於表10的稀疏性圖的1資料點。
示範靜態儲存控制電路314壓縮未壓縮張量。示範靜態儲存控制電路314將未壓縮張量細分為儲存元件。如於此所用,儲存元件為具有相對更小維度的張量。作為用於ZXY資料的示範基礎情況,針對特定XY座標對的沿著Z軸的資料為單一儲存元件。然而,在一些例子中,靜態儲存控制電路314確定一數量的儲存元件,以將張量沿著一軸細分。例如,靜態儲存控制電路314可以確定以將張量沿著Z軸細分為兩儲存元件。然而,靜態儲存控制電路314可以額外或替代地確定將該張量沿著X、Y、及/或Z軸細分為更多或更少數量的儲存元件(如,沿著Z軸三個儲存元件,等等)。儲存元件係配合圖11加以描述如下。額外或替代地,靜態儲存控制電路314確定不細分未壓縮張量成為儲存元件。
示範靜態儲存控制電路314壓縮張量。例如,靜態儲存控制電路314將零資料點由儲存元件移除。即,儲存元件的非零資料點被相連地儲存於記憶體中。在此所揭露的例子中,只包含零的儲存元件並未佔用記憶體空間(如,儲存元件並未被儲存)。因此,儲存元件的記憶體需求被降低,造成較少的記憶體交易進出加速器。在一些例子中,靜態儲存控制電路314儲存該靜態壓縮張量於圖1的本地記憶體108中。
靜態儲存控制電路314儲存儲存元件的開始於與未壓縮張量相同的對應記憶體位置。即,在一些例子中,儲存元件在記憶體中的開始位置為固定的。因此,靜態儲存控制電路314以靜態格式儲存該張量。在一些例子中,以靜態格式儲存的張量的記憶體佔用區係與未壓縮張量的記憶體佔用區相同。因為儲存元件的開始位址為已知(如,開始位置為固定),NN控制電路104可以執行儲存元件的隨機存取。例如,隨機存取可以於後續步驟中執行,其中輸出張量為至下一卷積的輸入張量。例如,NN控制電路104根據稀疏性圖確定存取在儲存元件內的特定資料點的偏移。儲存元件的尺寸愈小(如,由示範靜態儲存控制電路314確定),則有可能愈快存取該特定資料點。然而,靜態儲存控制電路314不能如同較小儲存元件般大量降低記憶體佔用區。儲存於靜態格式的張量係如下參考圖12加以描述。
在一些例子中,靜態儲存控制電路314將儲存元件的開始點移動更彼此靠近(如,靜態儲存控制電路314降低記憶體佔用區)。即,保留給張量的記憶體佔用區被減少。即,在一些例子中,後-處理電路106包含稀疏性臨限。在一些此等例子中,稀疏性臨限指示張量的預期稀疏性(如,零的預期數量、百分比等等)。例如,稀疏性臨限可以為使用者界定、為編譯器組態等等。示範靜態儲存控制電路314根據稀疏性臨限儲存儲存元件。在一些例子中,靜態儲存控制電路314檢測違規。例如,儲存元件可以超出稀疏性臨限,並且,因此,使用較配置為多的記憶體。在一些例子中,回應於檢測到違規,靜態儲存控制電路314重新配置保留給張量的記憶體數量。
額外或替代地,靜態儲存控制電路314並未移動儲存元件的開始位置。例如,靜態儲存控制電路314儲存儲存元件於本地記憶體108中。示範靜態儲存控制電路314確定儲存在張量的儲存元件中的資料的最大數量。即,靜態儲存控制電路314確定儲存最多資料(如,最少非零點)的儲存元件。在一些例子中,DMA傳送壓縮佔用區至另一記憶體區(如,在本地記憶體108中、計算裝置的一較大記憶體等等)。例如,DMA可以使用跨步設定,以根據在儲存元件中的資料的最大數量,傳送壓縮記憶體佔用區,並且,因此,省略傳送無用的記憶體區。
在一些例子中,靜態儲存控制電路314限制儲存元件在記憶體中的位置。例如,靜態儲存控制電路314確定儲存元件的開始位置為記憶體字元邊界。在此等例子中,張量的記憶體佔用區係相對大於儲存於無限定開始位置(如,緊縮在一起)的儲存元件。
示範動態儲存控制電路316壓縮靜態壓縮張量,以產生動態壓縮張量。如上所述,靜態壓縮張量包含壓縮儲存元件(如,儲存元件並未包含零)。即,靜態壓縮張量的儲存元件係位於預定記憶體位置。示範動態儲存控制電路316壓縮儲存元件並儲存儲存元件的開始位置於指標表中。即,指標表促成對儲存位置的存取。因為儲存元件並未儲存在記憶體中的固定位置,所以,動態儲存控制電路316可以將儲存元件更靠近一起儲存在記憶體中,並且,因此,記憶體佔用區隨著靜態壓縮張量而降低。在一些例子中,動態儲存控制電路316依儲存元件號碼的下降順序,儲存該等儲存元件的開始位址於指標表中。在一些例子中,動態儲存控制電路316儲存動態壓縮張量及/或指標表於本地記憶體108中。示範指標表係配合圖13被描述如下。示範動態壓縮張量係參考圖14被描述如下。
示範高速暫存記憶體306儲存張量資料。例如,高速暫存記憶體306儲存為稀疏性圖產生電路312所產生的稀疏性圖。額外或替代地,高速暫存記憶體306儲存為靜態儲存控制電路314所產生的靜態張量及/或由動態儲存控制電路316所產生的動態張量。即,後-處理電路106可以在傳送張量資料至記憶體(如,本地記憶體108)之前,聚集張量資料,以改良頻寬利用。在一些例子中,本地記憶體108儲存輸出啟動(如,未壓縮密集格式)。額外或替代地,本地記憶體108儲存輸出啟動(如,壓縮格式)及稀疏性圖。額外或替代地,本地記憶體108儲存輸出啟動(如,壓縮格式)、稀疏性圖、及指標表。資料處置電路308根據示範表11確定在單一交易中,寫入記憶體內的位元組的最大數量。
資料處置電路308根據NTHW模式確定位元組的最大數量。在此所揭露的例子中,“NTHW模式”表示資料再使用組態。示範NTHW模式係如下參考圖7A-7C加以說明。例如,NTHW模式確定順序張量資料被傳送(如,所取得磚片區段的位置)。在表11的例子中,位元組的數量係根據8位元資料。然而,如果使用16位元或32位元資料,則位元組的數量分別被放大2或4倍,至每記憶體交易16位元組的最大數量。額外或替代地,對於1、2、或4位元資料,位元組的數量被分別縮小8、4或2倍。額外或替代地,後-處理電路106並未包含高速暫存記憶體306。在一些此等例子中,後-處理電路106將張量資料直接儲存於本地記憶體108(圖1)。
圖3的例示例子的示範高速暫存記憶體306係為任何記憶體、儲存裝置及/或用以儲存資料的儲存碟所實施,例如,快閃記憶體、磁媒體、光媒體、固態記憶體、硬碟機、隨身碟等。再者,儲存於示範高速暫存記憶體306中的資料可以為任何資料格式,例如,二進制資料、逗號定界資料、欄標定界資料、結構化查詢語言(SQL)結構等。雖然在所例示例子中,高速暫存記憶體306被例示為單一裝置,但示範高速暫存記憶體306及/或在此所述之任何其他資料儲存裝置可以為任何數量及/或類型記憶體所實施。
示範資料處置電路308傳送張量資料。在一些例子中,資料處置電路308儲存動態張量於本地記憶體108中。額外或替代地,資料處置電路308執行張量環廣播。即,資料處置電路308傳送及/或複製張量資料至其他計算單元。例如,張量可以被細分給一或更多計算單元。例如,一計算單元可以處理一工作負載(如,儲存在張量中之資料)。該工作負載具有寛度W、高度H、及深度D。在一些例子中,第一計算單元產生為第二計算單元所需的輸出。然而,第二計算單元可能並不需要該第一計算單元的工作負載的所有資料。在一些例子中,為第一計算單元所產生的所需輸出係被儲存在工作負載的邊界區內。在此所揭露的例子中,工作負載的邊界區具有邊界寬B
W、及邊界高度B
H。因此,以
2B
W+1
× 2B
H+1
的核心尺寸,示範資料處置電路308複製第一計算單元的加邊區至對應計算單元(如,第二計算單元)。在一些例子中,張量工作負載寬度與高度係為邊界寬度與邊界高度所填補。即,整體尺寸為
W+2B
W × H+2B
H 。張量工作負載的填補區係為其他計算單元所填充(如,填補區為相鄰計算單元的張量工作負載的一部分)。示範張量工作負載係參考圖15加以描述如下。在圖3的例示例子中,資料處置電路308包含示範記憶體位置確定電路318及示範位址變換電路320。
示範記憶體位置確定電路318指明張量工作負的被傳送資料點。例如,資料點對應於張量工作負載的座標(X、Y、Z)。示範記憶體位置確定電路318確定資料點是否位於張量工作負載的邊界區內。記憶體位置確定電路318根據示範表12確定資料點是否在邊界區內。
例如,記憶體位置確定電路318執行四個比較,CL、CT、CR及CB。即,記憶體位置確定電路318確定是否四個比較為真。例如,如果記憶體位置確定電路318確定資料點的X座標小於邊界寬度,則CL比較為真。
示範記憶體位置確定電路318根據在圖5的比較,確定資料點在張量工作負載中的位置。在此所揭露的例子中,張量工作負載包含九個區:左上區(TL)、上區(T)、右上區(TR)、左區(L)、中心區、右區(R)、左下區(BL)、下區(B)、及右下區(BR)。示範記憶體位置確定電路318根據示範表13確定資料點在張量中的位置。
示範記憶體位置確定電路318確定表12的哪些比較為真,以確定資料點所在的區域。例如,如果記憶體位置確定電路318確定只有CL比較為真,則記憶體位置確定電路318確定資料點係位於左區。額外或替代地,如果記憶體位置確定電路318確定表12的比較都不是真,則記憶體位置確定電路318確定資料點係位於中心區。
示範位址變換電路320確定資料點所傳送的位址。例如,位址變換電路320確定資料點是否位於邊界區中(如,TL、T、TR、L、R、BL、B或BR)。如果位址變換電路320確定資料點係位於邊界區中,則位址變換電路320確定資料點所將複製的其他計算單元的位址。位址變換邏輯係如下參考圖16加以描述。
圖4例示示範張量400。在圖4的例示例子中,張量400為三維。在此所揭露的例子沿著示範X軸402、示範Y軸404、及示範Z軸406遍歷張量400。在一些例子中,張量400以未壓縮(如,密集)格式儲存。
圖5例示儲存於示範記憶體500中的示範未壓縮張量資料。例如,記憶體500儲存張量400(圖4)。在圖5的例示例子中,張量400係被儲存為ZXY格式。即,張量400被分割成連續儲存的ZX平面。例如,記憶體500儲存示範第一ZX平面502、示範第二ZX平面504、及示範第三ZX平面506。當Y=0時,示範第一ZX平面502對應於張量400的張量資料,當Y=1時,示範第二ZX平面504對應於張量400的張量資料,及當Y=2时,示範第三ZX平面506對應於張量400的張量資料。雖然圖5的例示例子包含三個ZX平面502、504、506,但在此所揭露的例子可以包含更少或更多數量的ZX平面(例如,對應於張量400的Y維度)。
示範後-處理電路106(圖1)遍歷Z軸。例如,後-處理電路106根據遍歷X=0,Y=0的Z軸,儲存資料508的示範第一列。當後-處理電路106完成遍歷Z軸時,後-處理電路106將X增量1並遍歷Z軸(例如,X=1,Y=0),以產生示範第二列510等等。示範後-處理電路106將張量400的資料相連地儲存於記憶體500(如,圖1的本地記憶體108)中。
圖6例示示範張量600。示範張量600具有6×4×2(如,OX=6,OY=4,OZ=2)的尺寸。在一些例子中,張量600的各個點的資料寬度為8位元。示範後-處理電路106(圖1)以ZXY格式儲存張量600於1位元組對齊(如,超密集)儲存器,如示範表14所例示。
即,後-處理電路106沿著ZX平面(如,0,0,1,1等)遍歷張量600。在圖6的例示例子中,粗體資料點索引對應於用於Z=0的XY平面(如,前平面)的資料點。額外或替代地,後-處理電路106將張量600以ZYX格式儲存於超密集儲存器中,如於示範表15所例示。
因此,後-處理電路106沿著ZY平面(如,0,0,6,6等)遍歷張量600。在此所揭露的例子中,對於位元組對齊設定,張量資料被相連儲存於記憶體中。即,張量資料在記憶體中並未包含空的位元組。
在一些例子中,後-處理電路106確定以ZXY格式儲存張量600於16位元組對齊儲存器中,如示範表16所例示。
額外或替代地,後-處理電路106確定以ZYX格式將張量600儲存於16位元組對齊儲存器中,如於示範表17所示。
儲存張量600於16位元組對齊儲存器(如,示範表9、10的資料)需要相對較1位元組對齊儲存器為多的記憶體。在此所揭露的例子中,對於16位元組對齊設定,張量資料係被儲存於記憶體中,使得第一旋轉軸開始於16位元組邊界。
圖7A例示示範張量700的示範第一NTHW遍歷模式。示範張量700包含示範磚片區段702。在一些例子中,磚片區段702對應於磚片區段110(圖1)。例如,磚片區段702具有1×4×16的尺寸。示範NN控制電路104(圖1)使用第一NTHW遍歷模式遍歷張量700。在圖7A的例示例子中,第一NTHW遍歷模式為NTHW=4。即,NN控制電路104沿著X軸(如,Y=0,Z=0)遍歷八個磚片區段。NN控制電路104將Y增量4並沿著X軸(如,Y=4,Z=0)遍歷八個磚片區段。NN控制電路104將Z增量16並沿著X軸(如,Y=0,Z=16)遍歷八個磚片區段。
圖7B例示示範張量700(圖7A)的示範第二NTHW遍歷模式。示範NN控制電路104(圖1)使用第二NTHW遍歷模式遍歷張量700。在圖7B的例示例子中,第二NTHW遍歷模式為NTHW=8。即,NN控制電路104沿著X軸(如,Y=0,Z=0)遍歷16磚片區段。即,相關於NTHW=4,在增量Y軸之前,NTHW=8沿著X軸遍歷16磚片區段。NN控制電路104對Y增量4並沿著X軸(如,Y=4,Z=0)遍歷16磚片區段。NN控制電路104對Z增量16並沿著X軸(如,Y=0,Z=16)遍歷16磚片區段。
圖7C例示示範張量700(圖7A)的示範第三NTHW遍歷模式。示範NN控制電路104(圖1)使用第三NTHW遍歷模式遍歷張量700。在圖7C的例示例子中,第三NTHW遍歷模式為NTHW=16。即,NN控制電路104沿著X軸(如,Y=0,Z=0)遍歷16磚片區段。NN控制電路104對Y增量4並沿著X軸(如,Y=4,Z=0)遍歷16磚片區段。NN控制電路104對Y增量4並沿著X軸(如,Y=8,Z=0)遍歷16磚片區段。NN控制電路104對Y增量4並沿著X軸(如,Y=16,Z=0)遍歷16磚片區段。即,有關於NTHW=8,在增量Z軸之前,NTHW=16沿著Y軸遍歷四個磚片區段。NN控制電路104對Z增量16並沿著X軸(如,Y=0,Z=16)遍歷16磚片區段。
圖8例示示範張量旋轉。圖8的例示例子包含示範張量800。圖8的例示例子包含在示範第一取向802的張量800。例如,第一取向802對應於ZXY格式。在一些例子中,旋轉控制電路302(圖3)將張量800由第一取向802旋轉至示範第二取向804。例如,第二取向804為ZYX格式。即,旋轉控制電路302置換張量800的軸,以旋轉張量800。
圖9A例示示範磚片區段900的示範第一輸入多工。例如,磚片區段900對應於張量的磚片區段110(圖1)。後-處理電路106取得磚片區段900。圖9的例示例子包含示範第一引擎902、示範第二引擎904、示範第三引擎906、及示範第四引擎908。例如,後-處理電路106實施引擎902、904、906、908。引擎902、904、906、908處理(如,旋轉、壓縮等)磚片區段900的資料,以儲存於記憶體(如,圖1的本地記憶體108)。在一些例子中,引擎902、904、906、908可以每時鐘週期處理8位元資料的16個點。然而,於此所揭露的例子並不限於此。因此,如果磚片區段900的資料點為1、2、4及/或8位元資料,則引擎902、904、906、908在一時鐘週期內處理磚片區段900。如果磚片區段900的資料點為16位元資料,則引擎902、904、806、908在兩時鐘週期內處理磚片區段900。額外或替代地,如果磚片區段900的資料點為32位元資料,則引擎902、904、906、908在四時鐘週期內處理磚片區段900。
示範旋轉控制電路302(圖3)確定磚片區段900的資料點如何指定給引擎902、904、906、908。即,張量旋轉確定如何將張量資料放入引擎902、904、906、908。例如,旋轉控制電路302確定磚片區段900的目標取向為ZXY及/或ZYX。因此,旋轉控制電路302沿著Z軸輸入磚片區段900的資料。即,旋轉控制電路302傳送示範第一列910至第一引擎902,示範第二列912至第二引擎904,示範第三列914至第三引擎906,示範第四列916至第四引擎908。因此,如果資料點為1、2、4及/或8位元組,則對於ZXY及ZYX取向,花用一時鐘週期以傳送磚片區段900至引擎902、904、906、908。在此所揭露的例子中,後-處理電路106可以處理及旋轉磚片區段900。即,後-處理電路106可以基本上同時旋轉及處理(如,壓縮、傳送於邊界區中的資料等等)。
圖9B例示圖9A的磚片區段900的示範第二輸入多工。圖9B所例示的例子包含圖9A的引擎902、904、906、908。因此,圖9A的類似元件符號組件的討論可以等效適用至圖9B的類似編號組件,為了避免冗長,圖9B的類似編號組件將不再分開說明。在圖9B的例示例子中,旋轉控制電路302(圖3)確定磚片區段900的目標取向為YXZ或YZX。因此,旋轉控制電路302沿著Y軸輸入磚片區段900的資料。即,旋轉控制電路302傳送示範第一行918至第一引擎902,示範第二行920至第二引擎904,示範第三行922至第三引擎906,及示範第四行924至第四引擎908。
示範旋轉控制電路302在示範第一時鐘週期926中傳送行918、920、922、924至引擎902、904、906、908。示範旋轉控制電路302在示範第二時鐘週期928中,傳送磚片區段900的四行至對應引擎902、904、906、908。示範旋轉控制電路302在示範第三時鐘週期930中,傳送磚片區段900的四行至對應引擎902、904、906、908。示範旋轉控制電路302在示範第四時鐘週期932中,傳送磚片區段900的四行至對應引擎902、904、906、908。即,對於YXZ及/或YZX取向,它花用四個時鐘週期(如,時鐘週期926、928、930、932)以傳送磚片區段900至引擎902、904、906、908,而無關於儲存在磚片區段900中的資料寬度。
圖9C例示圖9A之示範磚片區段900的示範第三輸入多工。圖9C的例示例子包含圖9A的引擎902、904、906、908。因此,以上圖9A中之類似元件符號的組件討論也可以等效適用至圖9C的類似元件符號的組件,並為避免冗餘,圖9C的類似元件符號組件將不再分開描述。在圖9C的例示例子中,旋轉控制電路302(圖3)確定磚片區段900的取向為XYZ或XZY。即,旋轉控制電路302傳送示範第一資料點934至第一引擎902、示範第二資料點936至第二引擎904、示範第三資料點938至第三引擎906、及示範第四資料點940至第四引擎908。例如,資料點934、936、938、940對應於圖9B的第一行918。對於XYZ及/或XZY取向,花用16時鐘週期以將磚片區段900傳送至引擎902、904、906、908,而無關於資料寬度。
圖10例示示範張量1000。在此所揭露的例子中,張量1000的初次值對應於張量1000的維度。例如,第一初次值OX對應於張量1000的X維度,第二初次值OY對應於張量1000的Y維度、及第三初次值OZ對應於張量1000的Z維度。示範張量1000包含示範磚片區段1002。在一些例子中,磚片區段1002對應於磚片區段110(圖1)。磚片區段1002的資料點具有座標(X,Y,Z)。在一些例子中,位址確定電路310(圖3)根據張量1000的資料點的初次值與座標,確定用於張量旋轉的二次值。
圖11例示示範張量1100的示範儲存元件。在一些例子中,張量1100為ZXY格式。在圖11的例示例子中,張量1100具有維度X=4及Y=2。在一些例子中,靜態儲存控制電路314(圖3)確定以將張量1100沿著Z軸細分成多數儲存元件。在圖11的例示例子中,靜態儲存控制電路314將張量1100沿著Z軸細分成兩儲存元件。示範張量1100被細分為16儲存元件。儲存元件具有1×1×N/2的維度,其中N為張量1100沿著Z軸的維度。
圖12例示儲存在示範記憶體1200中的示範靜態張量資料。在一些例子中,儲存於記憶體1200的資料對應於張量1100(圖11)的儲存元件。示範靜態儲存控制電路314(圖3)壓縮圖11的儲存元件並儲存靜態張量於記憶體1200中。即,靜態儲存控制電路314沿著Z軸儲存張量1100的用於XY座標對的資料。例如,儲存於記憶體1200中的靜態張量包含示範第一列1202及示範第二列1204。示範第一列1202對應於第一儲存元件(如,儲存元件0對應於X=0,Y=0)及示範第二列1204對應於圖11的第二儲存元件(如,儲存元件1對應於X=0,Y=0)。即,列1202、1204對應於XY座標對X=0,Y=0的儲存元件。在圖12的例示例子中,靜態儲存控制電路314壓縮儲存元件(如,移除為0的資料點)。因此,記憶體1200的儲存元件並不是同一尺寸。
在圖12的例示例子中,靜態儲存控制電路314將儲存元件(如,圖11的儲存元件)儲存在記憶體的固定位置。例如,圖12的例示例子的陰影方塊對應於儲存元件的開始位址。在圖12的例示例子中,記憶體1200包含示範第三列1206。示範第三列1206對應於圖11的第四儲存元件(如,儲存元件3)。在圖12的例示例子中,第三列1206並未儲存資料。因此,第四儲存元件只包含零。然而,靜態儲存控制電路314保留記憶體1200中的空間,供第四儲存元件。
圖13例示示範指標表1300。在一些例子中,動態儲存控制電路316(圖3)產生指標表1300。示範指標表1300儲存儲存元件於記憶體中的開始位置。例如,指標表1300儲存圖11的儲存元件的開始位置。示範指標表1300包含示範記憶體字元1302及示範位址1304。在一些例子中,記憶體字元1302係相關於四儲存元件。例如,一記憶體字元係相關於儲存元件0、儲存元件1、儲存元件2及儲存元件3。然而,在一些例子中,動態儲存控制電路316確定指標表1300的指標具有不同寬度。在一些例子中,動態儲存控制電路316儲存該儲存元件為空(如,儲存元件只包含零)的指示。
圖14例示儲存於示範記憶體1400中的示範動態張量資料。在一些例子中,動態儲存控制電路316(圖3)儲存示範儲存元件1402於記憶體1400中。在圖14的例示例子中,記憶體1400儲存15個儲存元件(如,SE0、SE1等)。示範動態儲存控制電路316壓縮記憶體1200(圖12)並產生指標表1300(圖13),以儲存儲存元件的開始位置。即,有關於記憶體1200,圖14的儲存元件係被相連地儲存並可以儲存在記憶體1400中的任何位置。在一些例子中,動態儲存控制電路316相連地儲存兩連續儲存元件(如,SE0及SE1、SE2及SE3、等)。然而,動態儲存控制電路316可以儲存儲存元件於記憶體中的任何位置(如,SE0及SE3被相連地儲存,SE0、SE2及SE3被相連地儲存等等)。因此,動態儲存控制電路316以一記憶體佔用區(如,記憶體1400)儲存儲存元件,該佔用區係相對小於對應於靜態張量資料的記憶體1200的記憶體佔用區。例如,動態儲存控制電路316並未儲存及/或保留記憶體只有包含零的儲存元件的空間。例如,儲存元件7並未儲存於記憶體1400中。
圖15例示示範張量工作負載1500。例如,張量工作負載1500包含計算單元存取及/或產生的資料。示範張量工作負載1500具有寬度(W)及高度(H)。在圖15的例示例子中,張量工作負載1500為二維(如,XY平面中的工作負載)。然而,在一些例子中,張量工作負載1500為三維。在一此等例子中,張量工作負載1500具有深度(D)。在圖15的例示例子中,工作負載1500被細分為九區。例如,張量工作負載1500包含示範左上區1502、示範上區1504、示範右上區1506、示範左區1508、示範中心區1510、示範右區1512、示範左下區1514、示範下區1516、及示範右下區1518。
示範區1502、1504、1506、1508、1512、1514、1516、1518為張量工作負載1500的邊界區。張量工作負載1500的邊界區具有邊界寬度(B
W)及邊界高度(B
H)。例如,區1502、1506、1508、1512、1514、1518的寬度為B
W。類似地,示範區1502、1504、1506、1514、1516、1518的高度為B
H。在圖15的例示例子中,張量工作負載1500被填補。例如,資料處置電路308(圖3)產生示範填補張量工作負載1520。示範填補張量工作負載1520包含張量工作負載1500及示範填補區1522。例如,資料處置電路308以B
W及B
H填補張量工作負載1500。因此,示範填補張量工作負載1520具有維度W+2B
W×H+2B
H。
圖16例示示範位址計算架構1600。在一些例子中,位址變換電路320(圖3)根據位址計算架構1600,確定資料點所將傳送的不同計算單元的目標位址。位址計算架構1600包含示範第一多工器1602及示範第二多工器1604。多工器1602、1604選擇三個輸入信號中之一(如,0、1或2)。多工器1602、1604之第一輸入信號(如,0)對應於0的值。第一多工器1602的第二輸入信號(如,1)對應於(W+2B
W)H的值。第一多工器1602的第三輸入信號(如,2)對應於-(W+2B
W)H的值。第二多工器1604的第二輸入信號(如,1)對應於W的值。第二多工器1604的第三輸入信號(如,2)對應於-W的值。變數W、H、B
W、及B
H對應於張量工作負載1500(圖15)的維度。示範位址變換電路320根據該資料點所在的區,而選擇輸入信號。示範位址變換電路320根據示範表18選擇輸入信號。
例如,記憶體位置確定電路318根據上述表5、6,確定資料點在左上區(如,圖15的左上區1502)。因此,位址變換電路320選擇第二信號(如,1)用於多工器1602、1604。
在一些例子中,資料處置電路308確定傳送整個張量工作負載(如,張量工作負載1500)。因此,位址變換電路320選擇對應於中心區的多工器1602、1604的輸入信號。即,位址變換電路320並未執行張量工作負載的位址變換。額外或替代地,示範資料處置電路308確定傳送張量工作負載的邊界區(如,區1502、1504、1506、1508、1512、1514、1516、1518)。在一些例子中,目標計算單元處理位於右下對角的XY平面上的資料。因此,資料處置電路308確定只傳送右下區(如,右下區1508)。示範位址變換電路320根據表18選擇多工器1602、1604的對應於右下區的輸入信號。
在圖16的例示例子中,位址計算架構1600包含示範第一總和方塊1606。例如,位址變換電路320將對應於第一多工器1602的值、對應於第二多工器1604的值、及
X+B
W +(Y+2B
H-1)*(W+2B
W)
相加。示範位址計算架構1600包含示範乘法方塊1608。在示範乘法方塊1608,位址變換電路320將第一總和方塊1606的輸出乘以張量工作負載的深度(D)。示範位址計算架構1600包含示範第二總和方塊1610。在示範第二總和方塊1610中,位址變換電路320將乘法方塊1608的輸出、計算單元偏移(如,在目標計算單元與現行計算單元間之差)、及Z(如,資料點的Z座標)相加,以產生目標位址。
圖17例示由示範第一計算單元1700的示範張量廣播至示範第二計算單元1702。示範第一計算單元1700處理示範第一張量工作負載1704及示範第二計算單元1702處理示範第二張量工作負載1706。示範張量工作負載1704、1706具有9的寬度(如,W=9)、6的高度(如,H=6)、及1的深度(如,D=1)。在圖17的例示例子中,張量工作負載1704、1706為相同尺寸。然而,在一些例子中,張量工作負載1704、1706具有不同維度。示範第一張量工作負載1704包含示範第一邊界區1708及示範第二張量工作負載1706包含示範第二邊界區1710。邊界區1708、1710具有2的邊界寬度(如,B
W=2)及1的邊界高度(如,B
H=1)。在圖17的例示例子中,邊界區1708、1710為相同尺寸。然而,在一些例子中,邊界區1708、1710具有不同維度。在圖17的例示例子中,資料處置電路308(圖3)以邊界寬度及邊界高度填補張量工作負載1704、1706。即,圖17的例示例子包含對應於第一張量工作負載1704的示範第一填補區1712及對應於第二張量工作負載1706的示範第二填補區1714。在一些例子中,填補區1712、1714對應於相鄰計算單元(未示出)的張量工作負載。
在一些例子中,資料處置電路308確定傳送張量工作負載1704的右下區的資料。即,資料處置電路308確定傳送儲存於位址87及88中的資料。即,根據示範表18,示範位址變換電路320(圖3)確定選擇對應於多工器1602、1604(圖16)的第三信號(如,2)的輸入信號。示範位址變換電路320根據示範方程式3,確定位址87的資料(如,X=7、Y=5、Z=0)所將傳送的第二計算單元1702的位址。
方程式3
示範位址變換電路320確定目標位址為0(如,ADR(87)=-(9+2*2)6+(7+2+(5+2*1-1)(9+2*2))-9=0)。因此,第一張量工作負載1704的示範右下區(如,位址87及88)被傳送至第二張量工作負載1706的填補區1714(如,位址0及1)。在一些例子中,第二計算單元1702存取儲存於位址0及1中的複製資料。
在一些例子中,後-處理電路106包含旋轉張量手段。例如,旋轉張量手段可以為旋轉控制電路302所實施。在一些例子中,旋轉控制電路302可以為處理器電路所執行之圖18的方塊1806、1808、圖20的2002的至少之一所實施的機器可執行指令所實施,該處理器電路係可以為圖23的示範處理器電路2312、圖24的示範處理器電路2400、及/或圖25的示範場可程式設計閘陣列(FPGA)電路2500所實施。在其他例子中,旋轉控制電路302係為其他硬體邏輯電路、硬體實施狀態機器、及/或硬體、軟體及/或韌體的任何其他組合所實施。例如,旋轉控制電路302可以為被結構以執行對應操作,而不執行軟體或韌體的至少一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所實施,但其他結構也同樣適用。
在一些例子中,後-處理電路106包含確定位址手段。例如,確定位址手段可以為位址確定電路310所實施。在一些例子中,位址確定電路310可以例如為處理器電路執行之圖20的至少方塊2004、2006、2008所實施的機器可執行指令所實施,該處理器電路可以為圖23的示範處理器電路2312、圖24的示範處理器電路2400、及/或圖25的示範場可程式設計閘陣列(FPGA)電路2500所執行。在其他例子中,位址確定電路310係為其他硬體邏輯電路、硬體實施狀態機器、及/或硬體、軟體及/或韌體的任何其他組合所實施。例如,位址確定電路310可以為被結構以執行對應操作,而不執行軟體或韌體的至少之一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所執行,但其他結構也同樣適用。
在一些例子中,後-處理電路106包含壓縮張量手段。例如,壓縮張量手段可以為壓縮器304所實施。在一些例子中,壓縮器304可以為例如以處理器電路執行的圖18的至少方塊1810所實施的機器可執行指令所實施,該處理器電路可以為圖23的示範處理器電路2312、圖24的示範處理器電路2400、及/或圖25的示範場可程式設計閘陣列(FPGA)電路2500所實施。在其他例子中,壓縮器304為其他硬體邏輯電路、硬體實施狀態機器、及/或任何其他硬體、軟體、及/或韌體的組合所實施。例如,壓縮器304可以為被結構以執行對應操作,而不執行軟體或韌體的至少之一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所執行,但其他結構也同樣適用。
在一些例子中,後-處理電路106包含產生稀疏性圖手段。例如,產生稀疏性圖手段可以為稀疏性圖產生電路312所實施。在一些例子中,稀疏性圖產生電路312可以為例如以處理器電路執行的圖21的至少方塊2102所實施的機器可執行指令所實施,該處理器電路可以為圖23的示範處理器電路2312、圖24的示範處理器電路2400、及/或圖25的示範場可程式設計閘陣列(FPGA)電路2500所實施。在其他例子中,稀疏性圖產生電路312為其他硬體邏輯電路、硬體實施狀態機器、及/或任何其他硬體、軟體、及/或韌體的組合所實施。例如,稀疏性圖產生電路312可以為被結構以執行對應操作,而不執行軟體或韌體的至少之一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所執行,但其他結構也同樣適用。
在一些例子中,後-處理電路106包含產生靜態張量手段。例如,產生靜態張量手段可以為靜態儲存控制電路314所實施。在一些例子中,靜態儲存控制電路314可以為例如以處理器電路執行的圖21的至少方塊2104、2106所實施的機器可執行指令所實施,該處理器電路可以為圖23的示範處理器電路2312、圖24的示範處理器電路2400、及/或圖25的示範場可程式設計閘陣列(FPGA)電路2500所實施。在其他例子中,靜態儲存控制電路314為其他硬體邏輯電路、硬體實施狀態機器、及/或任何其他硬體、軟體、及/或韌體的組合所實施。例如,靜態儲存控制電路314可以為被結構以執行對應操作,而不執行軟體或韌體的至少之一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所執行,但其他結構也同樣適用。
在一些例子中,後-處理電路106包含產生動態張量手段。例如,產生動態張量手段可以為動態儲存控制電路316所實施。在一些例子中,動態儲存控制電路316可以為例如以處理器電路執行的圖21的至少方塊2108、2110所實施的機器可執行指令所實施,該處理器電路可以為圖23的示範處理器電路2312、圖24的示範處理器電路2400、及/或圖25的示範場可程式設計閘陣列(FPGA)電路2500所實施。在其他例子中,動態儲存控制電路316為其他硬體邏輯電路、硬體實施狀態機器、及/或任何其他硬體、軟體、及/或韌體的組合所實施。例如,動態儲存控制電路316可以為被結構以執行對應操作,而不執行軟體或韌體的至少之一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所執行,但其他結構也同樣適用。
在一些例子中,後-處理電路106包含廣播張量手段。例如,廣播張量手段可以為資料處置電路308所實施。在一些例子中,資料處置電路308可以為例如以處理器電路執行的圖18的至少方塊1812、1814、1816,圖22的2202、2208、2210所實施的機器可執行指令所實施,該處理器電路可以為圖23的示範處理器電路2312、圖24的示範處理器電路2400、及/或圖25的示範場可程式設計閘陣列(FPGA)電路2500所實施。在其他例子中,資料處理電路308為其他硬體邏輯電路、硬體實施狀態機器、及/或任何其他硬體、軟體、及/或韌體的組合所實施。例如,資料處置電路308可以為被結構以執行對應操作,而不執行軟體或韌體的至少之一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所執行,但其他結構也同樣適用。
在一些例子中,後-處理電路106包含確定資料點位置手段。例如,確定資料點位置手段可以為記憶體位置確定電路318所實施。在一些例子中,記憶體位置確定電路318可以為例如以處理器電路執行的圖22的至少方塊2204所實施的機器可執行指令所實施,該處理器電路可以為圖23的示範處理器電路2312、圖24的示範處理器電路2400、及/或圖25的示範場可程式設計閘陣列(FPGA)電路2500所實施。在其他例子中,記憶體位置確定電路318為其他硬體邏輯電路、硬體實施狀態機器、及/或任何其他硬體、軟體、及/或韌體的組合所實施。例如,記憶體位置確定電路318可以為被結構以執行對應操作,而不執行軟體或韌體的至少之一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所執行,但其他結構也同樣適用。
在一些例子中,後-處理電路106包含變換位址手段。例如,變換位址手段可以為位址變換電路320所實施。在一些例子中,位址變換電路320可以為例如以處理器電路執行的圖22的至少方塊2206所實施的機器可執行指令所實施,該處理器電路可以為圖23的示範處理器電路2312、圖24的示範處理器電路2400、及/或圖25的示範場可程式設計閘陣列(FPGA)電路2500所實施。在其他例子中,位址變換電路320為其他硬體邏輯電路、硬體實施狀態機器、及/或任何其他硬體、軟體、及/或韌體的組合所實施。例如,位址變換電路320可以為被結構以執行對應操作,而不執行軟體或韌體的至少之一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、特殊應用積體電路(ASIC)、比較器、運算放大器(op-amp)、邏輯電路等)所執行,但其他結構也同樣適用。
雖然實施圖1的後-處理電路106的示範方式係被例示於圖3,但在圖3中所例示的一或更多元件、程序、及/或裝置可以以任何其他方式加以組合、細分、再配置、省略、移除、及/或實施。再者,示範旋轉控制電路302、示範壓縮器304、示範高速暫存記憶體306、示範資料處置電路308、示範位址確定電路310、示範稀疏性圖產生電路312、示範靜態儲存控制電路314、示範動態儲存控制電路316、示範記憶體位置確定電路318、示範位址變換電路320及/或更總結地表示圖3的示範後-處理電路106可以以硬體、軟體、韌體及/或硬體、軟體及/或韌體的任意組合加以實施。因此,例如,對於示範旋轉控制電路302、示範壓縮器304、示範高速暫存記憶體306、示範資料處置電路308、示範位址確定電路310、示範稀疏性圖產生電路312、示範靜態儲存控制電路314、示範動態儲存控制電路316、示範記憶體位置確定電路318、示範位址變換電路320及/或更總結地表示示範後-處理電路106的任一可以以處理器電路、類比電路、數位電路、邏輯電路、可程式處理器、可程式微控制器、圖形處理單元(GPU)、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、可程式邏輯裝置(PLD)、及/或場可程式設計邏輯裝置(FPLD),例如場可程式設計閘陣列(FPGA)所實施。當讀取本專利案的任一設備或系統請求項,以涵蓋純軟體及/或韌體實施方式時,示範旋轉控制電路302、示範壓縮器304、示範高速暫存記憶體306、示範資料處置電路308、示範位址確定電路310、示範稀疏性圖產生電路312、示範靜態儲存控制電路314、示範動態儲存控制電路316、示範記憶體位置確定電路318、及/或示範位址變換電路320的至少之一係在此被表示界定為包含非暫態電腦可讀儲存裝置或儲存器碟片,其係例如為包含該軟體及/或韌體的記憶體、數位多功能光碟(DVD)、雷射光碟(CD)、藍光光碟等。再者,圖1的示範後-處理電路106可以包含一或更多元件、程序、及/或裝置,除了在圖3中所例示者之外或替代它們,及/或可以包含所例示元件、程序及裝置之任何之一或者全部。
示範硬體邏輯電路、機器可讀指令、硬體實施狀態機器、及/或其任何組合以實施圖1及/或3的後-處理電路106的流程代表圖係被顯示於圖18-22。機器可讀指令可以為一或更多可執行程式或可執行程式的部分,用以為處理器電路所執行,例如,如下有關於圖24的討論之示於示範處理器平台2400中的處理器電路2412及/或有關於圖25及/或26的如下討論的示範處理器電路。程式可以實施於儲存於一或更多非暫態電腦可讀儲存媒體的軟體中,儲存媒體係與位於一或更多硬體裝置中處理器電路相關的例如CD、軟碟、硬碟機(HDD)、DVD、藍光光碟、揮發記憶體(如,隨機存取記憶體(RAM)或任何類型等等)、或非揮發記憶體(如,快閃記憶體、HDD等等),但整個程式及/其部分也可以為處理器電路以外的一或更多硬體裝置所執行及/或被實施於韌體或專用硬體中。機器可讀指令可以分配於多重硬體裝置及/或為兩或更多硬體裝置(如,伺服器及客戶硬體裝置)所執行。例如,客戶硬體裝置可以為端點客戶硬體裝置(如,與使用者相關的硬體裝置)或中間客戶硬體裝置(如,無線接取網路(RAN)閘道,其可以促成伺服器與端點客戶硬體裝置間之通訊)所實施。類似地,非暫態電腦可讀儲存媒體可以包含位於一或更多硬體裝置中的一或更多媒體。再者,雖然示範程式係參考圖18-22所例示流程圖加以描述,但也可以替代地使用很多實施示範後-處理電路106的其他方法。例如,方塊的執行順序可以改變,及/或一些所述的方塊可以被改變、移除或組合。額外或替代地,任意或全部的方塊可以為建構以執行對應操作而不執行軟體或韌體的一或更多硬體電路(如,處理器電路、分立及/或整合類比及/或數位電路、FPGA、ASIC、比較器、運算放大器(op-amp)、邏輯電路等)所實施。處理器電路可以被分佈在不同網路位置及/或定位在單一機器中的一或更多硬體裝置(如,單一核心處理器(如,單一核心中央處理單元(CPU))、多核心處理器(如,多核心CPU等))的本地、多數分佈在一或更多伺服器框架的處理器、定位在相同封裝(如,相同積體電路(IC)封裝或在兩或更多分開外殼等中)的CPU及/或FPGA。
於此所述之機器可讀指令可以以壓縮格式、加密格式、片段格式、編譯格式、可執行格式、封裝格式等之一或多者加以儲存。於此所述之機器可讀指令可以被儲存為資料或資料結構(如,作為指令的部分、碼、碼的代表等),其可以為利用以建立、製造及/或生產機器可執行指令。例如,機器可讀指令可以被片段並被儲存在位於網路或網路集合(如,雲端中、邊裝置中等)的相同或不同位置的一或更多儲存裝置及/或計算裝置(如,伺服器)上。機器可讀指令可能需要安裝、修改、調適、更新、組合、補充、組態、解密、解壓縮、解封、分配、重指定、編譯等之一或多者,以使得它們為計算裝置及/或其他機器所直接可讀、可解譯、及/或可執行。例如,機器可讀指令可以被儲存在多重部分,這些可以個別被壓縮、加密及/或儲存在分開計算裝置上,其中這些部分當被解密、解壓縮及/或組合形成一組機器可執行指令,以實施一或更多操作,其可以一起形成如在此所述的程式。
在另一例子中,機器可讀指令可以被儲存於一狀態,其中它們可以被處理器電路所讀取,但需要額外程式館(如,動態鏈接程式館(DLL))、軟體開發組(SDK)、應用程式介面(API)等,以在特定計算裝置或其他裝置上,執行該機器可讀指令。在另一例子中,在機器可讀指令及/或對應程式可以整個或部分被執行之前,機器可讀指令可能需要被組態(如,設定儲存、資料輸入、網路位址記錄等)。因此,如於此所用,機器可讀媒體可能包含機器可讀指令及/或程式,而不管被儲存或在休息或在傳送期間,該機器可讀指令及/或程式的特定格式或狀態。
於此所述之機器可讀指令可以為任何過去、現在或未來指令語言、描述語言、程式語言等所代表。例如,機器可讀指令可以使用以下任一語言加以表示:C、C++、Java、C#、Perl、Python、JavaScrip、超文件標示語言(HTML)、結構查詢語言(SQL)、Swift等。
如上所述,圖18-22的示範操作可以使用儲存在一或更多非暫態電腦及/或機器可讀取媒體上的可執行指令(如,電腦及/或機器可讀指令)加以實施,機器可讀媒體例如光儲存裝置、磁儲存裝置、HDD、快閃記憶體、唯讀記憶體(ROM)、CD、DVD、快取、任何類型的RAM、暫存器、及/或任何其他儲存裝置或儲存碟片,其中資訊被儲存於任何期間(如,延長時間期間、永久、短暫時間、暫時緩衝、及/或資訊的快取)。如於此所用,用語非暫態電腦可讀媒體與非暫態電腦可讀儲存媒體係被表示以界定包含任何類型的電腦可讀儲存裝置及/或儲存碟片,並排除傳遞信號及排除傳輸媒體。
“包括”及“包含”(及其所有形式與時態)係在此被使用作為開放式用語。因此,只要一請求項利用“包括”或“包含”的任何形式(如,包含、包括、包含、包括、具有等)作為前言或在任何類型的請求項引用內,可以了解的是其他元件、用語等也可以被使用,以不落出對應請求項或引用的範圍外。如在此所用,當片語“至少”係被使用作為過渡用語,例如,請求項的前言,其以相同於用語“包含”及“包括”為開放式結束。當用語“及/或”被使用時,例如,以A、B、及/或C的格式表示A、B、C的任意組合或次組,例如(1)A單獨、(2)B單獨、(3)C單獨、(4)A與B、(5)A與C、(6)B與C、或(7)A與B及C。如在此所用,描述結構、組件、用語、物件及/或事項的背景中,片段“A與B的至少之一”係想要表示包含以下之任一的實施方式:(1)至少A、(2)至少B、(3)至少一A及至少一B。類似地,如於此所用,在描述結構、組件、用語、物件及/或事項的背景中,用語“A或B的至少之一”係想要表示以下之任一實施方式(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。如於此所用的描述程序、指令、動作、活動及/或步驟的執行效能的背景中,用語“至少一A與B”係想要表示以下任一實施方式(1)至少一A、(2)至少一B、或(3)至少一A與至少一B。類似地,於此所用的描述程序、指令、動作、活動及/或步驟的實施或執行描述背景,片語“A或B的至少之一”係想要表示以下之任一的實施法,(1)至少一A、(2)至少一B、或(3)至少一A及至少一B。
如於此所用,單數用語(如,“一”、“一”、“第一”、“第二”等並不排除多數。在此所用的用語“一”或“一”物件表示一或更多該物件。用語“一”(或“一”)、“一或更多”、及“至少一”在此係可交換使用。再者,雖然個別列出,但多數手段、元件或方法動作可以以例如相同實體或物件加以實施。另外,雖然個別特性可以包含於不同例子或請求項中,但這些可能被組合,及在不同例子或請求項中的包括並不暗示特性的組合為不可行及/或不利的。
圖18為可以被執行以實施圖1的示範NN加速器102以儲存張量的機器可讀指令的流程代表圖。示範程序1800開始於當示範NN控制電路104(圖1)產生輸出張量(方塊1802)之時。例如,NN控制電路104存取儲存於本地記憶體108(圖1)中的資料。在一些例子中,NN控制電路104實施卷積類神經網路,以產生輸出張量。
示範NN控制電路104產生磚片區段(方塊1804)。例如,NN控制電路104遍歷輸出張量,以產生磚片區段110(圖1)。在一些例子中,NN控制電路104確定NTHW模式,以遍歷輸出張量以產生磚片區段。例如,NN控制電路104選擇NTHW=4、8、或16。圖18的磚片區段產生程序1804的示範實施方式係參考圖19加以詳述。
示範後-處理電路106取得磚片區段。旋轉控制電路302(圖3)確定是否旋轉張量(方塊1806)。例如,旋轉控制電路302確定磚片區段的取向並確定張量的目標取向。例如,張量取向可以為XYZ、XZY、YXZ、YZX、ZXY、或ZYX。在一些例子中,如果現行取向與目標取向相同的話,則旋轉控制電路302確定不旋轉張量。如果示範旋轉控制電路302確定旋轉張量,則旋轉控制電路302旋轉張量(方塊1808)。例如,旋轉控制電路302置換張量的軸,以產生旋轉張量。圖18的張量旋轉程序1808的示範實施方式進一步參考圖20加以詳述。
回到方塊1806,如果示範旋轉控制電路302確定不旋轉張量,則示範壓縮器304(圖3)壓縮張量(方塊1810)。例如,壓縮器304壓縮張量,以靜態格式儲存張量。額外或替代地,壓縮器304壓縮以靜態格式儲存的張量,以動態格式儲存張量。圖18的張量壓縮程序1810的示範實施方式係參考圖21加以詳述。
示範資料處置電路308(圖3)確定是否廣播張量(方塊1812)。例如,資料處置電路308確定是否傳送張量的資料至其他計算單元。如果資料處置電路308確定廣播張量,則資料處置電路308執行張量環廣播(方塊1814)。例如,資料處置電路308確定資料傳送至其他計算單元。資料處置電路308根據該資料在張量工作負載中的位置(即,左上區、上區等)確定資料所予以傳送的目標計算單元的位址。圖18的張量環廣播程序1814的示範實施方式係參考圖22加以詳述。
回到方塊1812,如果示範資料處置電路308確定不廣播張量,則資料處置電路308儲存張量(方塊1816)。例如,資料處置電路308儲存張量於本地記憶體108(圖1)。在一些例子中,張量以動態格式被儲存在本地記憶體108中。
圖19為可以被執行以實施圖1的示範NN控制電路104以產生磚片區段的機器可讀指令的流程代表圖。示範NN控制電路104確定NTHW模式(方塊1902)。例如,NN控制電路104確定NTHW模式為NTHW=4。在一些例子中,NN控制電路104確定NTHW模式。在一些例子中,NTHW模式為預組態值。例如,NTHW模式為在編譯期間確定的組態值、使用者輸入等。
示範NN控制電路104遍歷輸出張量以產生磚片區段(方塊1904)。示範NN控制電路104傳送磚片區段至後-處理電路106(方塊1906)。例如,NN控制電路104根據NTHW模式遍歷輸出張量。例如,如果NTHW模式為NTHW=4,則NN控制電路104如上參考圖7A所述遍歷輸出張量。在一些例子中,磚片區段具有1×4×16的維度。
示範NN控制電路104確定是否產生另一磚片區段(方塊1908)。例如,NN控制電路104確定在張量中的資料是否並未被遍歷。如果NN控制電路104確定產生另一磚片區段,則NN控制電路104回到方塊1904。如果NN控制電路104確定不產生另一磚片區段,則程式1804回到圖18的方塊1806。
圖20為可以被執行以實施圖3的示範旋轉控制電路302以旋轉張量的機器可讀指令的流程代表圖。示範旋轉控制電路302確定目標旋轉(方塊2002)。例如,旋轉控制電路302根據為編譯器所設定組態暫存器,確定旋轉。在一些例子中,編譯器根據後續張量操作,設定組態暫存器。
示範位址確定電路310(圖3)確定張量的初次值(方塊2004)。例如,位址確定電路310確定張量OX、OY、及OZ的初次值。在此所揭露的例子中,張量的初次值對應於張量的維度。示範位址確定電路310根據所述初次值與目標旋轉,確定張量的二次值(方塊2006)。例如,位址確定電路310根據表1確定二次值。
示範位址確定電路310確定目標位址(方塊2008)。例如,位址確定電路310確定張量於目標取向的資料點的目標位址。示範位址確定電路310根據方程式1確定目標位址。即,位址確定電路310根據目標旋轉置換張量的軸。
圖21為機器可讀指令的流程代表圖,其可以被執行以實施圖3的示範壓縮器304,以壓縮張量。示範稀疏性圖產生電路312(圖3)產生稀疏性圖(方塊2102)。例如,稀疏性圖產生電路312產生對應於張量的稀疏性圖(如,表4中所例示的稀疏性圖)。即,稀疏性圖產生電路312確定張量的資料點是否為零。
示範靜態儲存控制電路314(圖3)將張量細分為儲存元件(方塊2104)。例如,靜態儲存控制電路314確定細分該張量所進行的軸。在一些例子中,靜態儲存控制電路314確定如何根據由編譯器所設定的組態,細分張量(如,沿著X、Y或Z軸,產生多少儲存元件等)。例如,靜態儲存控制電路314確定將一張量沿著Z軸細分為兩個儲存元件。
示範靜態儲存控制電路314根據儲存元件與稀疏性圖,執行張量的第一壓縮(方塊2106)。例如,靜態儲存控制電路314根據稀疏性圖,將零由儲存元件移除。即,靜態儲存控制電路314產生靜態壓縮張量(如,儲存於圖12的記憶體1200中的資料)。在此所揭露的例子中,靜態儲存控制電路314並未儲存只包括零的儲存元件。
示範動態儲存控制電路316(圖3)執行靜態壓縮張量的第二壓縮(方塊2108)。例如,動態儲存控制電路316移除在記憶體中的儲存元件的開始位址。在一些例子中,動態儲存控制電路316相連地儲存儲存元件於記憶體中。因此,動態儲存控制電路316產生動態壓縮張量(如,儲存於圖14的示範記憶體1400中的資料)。在一些例子中,動態壓縮張量需要相關於靜態壓縮張量更小的記憶體佔用區。
動態儲存控制電路316產生指標表(方塊2110)。例如,動態儲存控制電路316儲存動態壓縮張量的儲存元件的開始位址於指標表中。例如,動態儲存控制電路316產生圖13的示範指標表1300。示範指標表促成對儲存元件中的資料的存取。
圖22為機器可讀指令的流程代表圖,其可以被執行以實施圖3的示範資料處置電路308,以廣播張量環。示範資料處置電路308確定要廣播的資料點(方塊2202)。例如,資料處置電路308確定要廣播至其他計算單元的資料點的座標(如,X、Y、Z)。
示範記憶體位置確定電路318(圖3)確定資料點的區域(方塊2204)。例如,記憶體位置確定電路318確定資料點在張量工作負載中的區域所在。例如,記憶體位置確定電路318確定資料點是在左上區、上區、右上區、左區、中心區、右區、左下區、下區、或右下區。
示範位址變換電路320(圖3)確定目標計算單元的位址(方塊2206)。例如,位址變換電路320確定目標計算單元的位址,以複製資料點至其中。在一些例子中,位址變換電路320根據圖16的示範位址計算架構1600確定位址。示範資料處置電路308於目標計算單元中複製資料點(方塊2208)。例如,資料處置電路308將資料點發送至在目標計算單元在方塊2206中所決定的位址。
示範資料處置電路308確定是否廣播另一資料點(方塊2210)。如果資料處置電路308確定廣播另一資料點,則資料處置電路308回到方塊2202。如果資料處置電路308確定不廣播另一資料點,則資料處置電路308返回到圖18的方塊1816。
圖23為被架構以執行及/或實例化圖18-22的機器可讀指令及/或操作,以實施圖1及/或3的後-處理電路106的示範處理器平台2300的方塊圖。處理器平台2300可以例如是伺服器、個人電腦、工作站、自學習機器(如,類神經網路)、行動裝置(如,蜂巢式手機、智慧手機、如iPad
TM的平板電腦)、個人數位助理(PDA)、網際網路設施、DVD播放器、CD播放器、數位視訊記錄器、藍光播放器、遊戲機平台、個人視訊記錄器、機上盒、頭戴耳機(如,加強實境(AR)頭戴耳機、虛擬實境(VR)頭戴耳機等)或其他穿戴裝置、或任何其他類型計算裝置。
例示例子的處理器平台2300包含處理器電路2312。例示例子的處理器電路2312為硬體。例如,處理器電路2312可以為來自任何想要系列或製造者的一或更多積體電路、邏輯電路、FPGA微處理器、CPU、GPU、DSP、及/或微控制器。處理器電路2312可以為一或更多半導體為主(如,矽為主)的裝置所實施。在此例子中,處理器電路2312實施示範旋轉控制電路302、示範壓縮器304、示範資料處置電路308、示範位址確定電路310、示範稀疏性圖產生電路312、示範靜態儲存控制電路314、示範動態儲存控制電路316、示範記憶體位置確定電路318及示範位址變換電路320。
處理器電路2312的例示例子包含本地記憶體2313(如,快取、暫存器等)。處理器電路2312的例示例子透過匯流排2318與包含揮發記憶體2314及非揮發記憶體2316的主記憶體相通訊。揮發記憶體2314可以為同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS®動態隨機存取記憶體(RDRAM®)、及/或任何其他類型RAM裝置所實施。非揮發記憶體2316可以為快閃記憶體及/或任何其他想要類型記憶體裝置所實施。對主記憶體2314、2316的例示例子的存取係為記憶體控制器2317所控制。
處理器平台2300的例示例子也包含介面電路2320。介面電路2320可以為依據任何類型的介面標準,例如,乙太介面、通用串列匯流排(USB)介面、藍牙®介面、近場通訊(NFC)介面、PCI介面、及/或PCIe介面的硬體所實施。
在所例示例子中,一或更多輸入裝置2322係被連接至介面電路2320。輸入裝置2322允許使用者將資料及/或命令輸入至處理器電路2312。輸入裝置2322可以例如為音訊感應器、麥克風、攝影機(靜態或視訊)、鍵盤、按鈕、滑鼠、觸控螢幕、觸控板、軌跡球、等點(isopoint)裝置、及/或語音辨識系統所實施。
一或更多輸出裝置2324也被連接至介面電路2320的例示例子中。輸出裝置2324可以例如為顯示裝置(如,發光二極體(LED)、有機發光二極體(OLED)、液晶顯示裝置(LCD)、陰極射線管(CRT)顯示器、面內切換(IPS)顯示器、觸控螢幕等)、觸覺輸出裝置、印表機、及/或喇叭所實施。因此,介面電路2320的例示例子典型包含圖型驅動器卡、圖型驅動晶片、及/或圖型處理器電路,例如,GPU。
介面電路2320的例示例子也包含通訊裝置,例如傳送器、接收器、收發器、數據機、家用閘道器、無線接取點、及/或網路介面,用以透過網路2326促成與外部機器(如,任何類型計算裝置)的資料交換。通訊可以例如藉由乙太連接、數位用戶線(DSL)連接、電話線連接、同軸纜線系統、衛星系統、位置線(line-of-site)無線系統、蜂巢式電話系統、光學連接等等。
處理器平台2300的例示例子也包含一或更多大量儲存裝置2328,以儲存軟體及/或資料。此等大量儲存裝置2328的例子包含磁儲存裝置、光儲存裝置、軟碟機、HDD、CD、藍光碟機、獨立磁碟冗餘陣列(RAID)系統、固態儲存裝置,如,快閃記憶體裝置,及DVD光碟機。
可以為圖18-22的機器可讀指令所實施的機器可執行指令2332可以儲存在大量儲存裝置2328、在揮發記憶體2314、在非揮發記憶體2316、及/或如CD或DVD的可移除非暫態電腦可讀儲存媒體上。
圖24為圖23的處理器電路2312的示範實施方式的方塊圖。在此例子中,圖23的處理器電路2312係為微處理器2400所實施。例如,微處理器2400可以實施例如CPU、DSP、GPU、XPU等之多核心硬體電路。雖然它可以包含任意數量的示範核心2402(如,1核心),但此例子的微處理器2400為包含N核心的多核心半導體裝置。微處理器2400的核心2402可以獨立操作或可以合作以執行機器可讀指令。例如,對應於韌體程式、嵌式軟體程式、或軟體程式的機器碼可以為核心2402之一所執行或者為核心2402之多重核心在同時或不同時執行。在一些例子中,對應於韌體程式、嵌式軟體程式、或軟體程式的機器碼係被細分為執行緒並被核心2402之兩或更多核心所平行執行。軟體程式可以對應於為圖18-22之流程圖所表示的部分或所有機器可讀指令及/或操作。
核心2402可以透過示範匯流排2404通訊。在一些例子中,匯流排2404可以實施通訊匯流排,以實施與核心2402之一或多者相關的通訊。例如,匯流排2404可以實施積體電路間(I2C)匯流排、串列週邊介面(SPI)匯流排、PCI匯流排、或PCIe匯流排之至少之一。額外或替代地,匯流排2404可以實施任何其他類型的計算或電匯流排。核心2402可以透過例示介面電路2406取得來自一或更多外部裝置的資料、指令及/或信號。核心2402可以透過介面電路2406輸出資料、指令、及/或信號給一或更多外部裝置。雖然此例子的核心2402包含示範本地記憶體2420(如,可以分割成L1資料快取與L1指令快取的第一階(L1)快取),但微處理器2400也可以包含示範共享記憶體2410,其可以為核心(如,第二階(L2)快取)所共享,以高速存取資料及/或指令。資料及/或指令可以藉由寫入及/或讀出共享記憶體2410而被轉移(如,共享)。各個核心2402的本地記憶體2420與共享記憶體2410可以為包含多階快取記憶體與主記憶體(如,圖23的主記憶體2314、2316)的儲存裝置的階層的一部分。典型地,在階層中的記憶體的階層愈高,則展現較低存取時間並具有較較低階記憶體為小的儲存容量。在快取階層中的各種階層中之變化可以為快取一致性策略所管理(如,協調)。
各個核心2402可以表示為CPU、DSP、GPU等,或任何其他類型硬體電路。各個核心2402包含控制單元電路2414、算術與邏輯(AL)電路(有時稱為ALU)2416、多數暫存器2418、L1快取2420,及示範匯流排2422。也可以是其他結構。例如,各個核心2402可以包含向量單元電路、單指令多資料(SIMD)單元電路、負載/儲存單元(LSU)電路、分支/跳越單元電路、浮點單元(FPU)電路等。控制單元電路2414包含被結構以控制(如,協調)資料在對應核心2402內的移動的半導體為主電路。AL電路2416包含被結構以對在對應核心2402內的資料執行一或更多數學及/或邏輯運算的半導體為主電路。一些例子的AL電路2416執行整數為主的運算。在其他例子中,AL電路2416同時也執行浮點運算。在其他例子中,AL電路2416可以包含第一AL電路,其執行整數為主運算及第二AL電路執行浮點運算。在一些例子中,AL電路2416可以是算術邏輯單元(ALU)。暫存器2418為半導體為主結構,用以儲存資料及/或指令,其係例如是對應核心2402的AL電路2416所執行一或更多運算的結果。例如,暫存器2418可以包含向量暫存器、SIMD暫存器、通用暫存器、旗標暫存器、區段暫存器、機器特定暫存器、指令指標暫存器、控制暫存器、除錯暫存器、記憶體管理暫存器、機器檢查暫存器等。暫存器2418可以如圖24所示被排列成排。或者,暫存器2418可以被組織為任何其他排列、格式、或結構,其包含被分配於整個核心核心2402上,以縮短存取時間。匯流排2422可以實施I2C匯流排、SPI匯流排、PCI匯流排、或PCIe匯流排之至少之一。
各個核心2402及/或更大致來說,微處理器2400可以包含以上所示與描述者的額外及/或替代結構。例如,可以出現有一或更多時脈電路、一或更多電源、一或更多電源閘、一或更多快取家代理(CHA)、一或更多收斂/共同網目停止(CMS)、一或更多移位器(如,桶移位器)及/或其他電路。微處理器2400為被製造以包含很多電晶體的半導體裝置,該多數電晶體係被互連以實施包含在一或更多封裝內的一或更多積體電路(IC)中的上述結構。處理器電路可以包含及/或配合一或更多加速器。在一些例子中,加速器係為邏輯電路所實施,以執行較通用處理器所可以完成更快及/或更有效的某些工作。加速器的例子包含例如,於此所述之ASIC及FPGA。GPU或其他可程式裝置也可以是加速器。加速器可以是板上處理器電路、在與處理器電路相同晶片封裝上及/或在與處理器電路分開的一或更多封裝上。
圖25為圖23的處理器電路2312的另一示範實施方式的方塊圖。在此例子中,處理器電路2312為FPGA電路2500所實施。FPGA電路2500可以例如被用以執行運算,該運算也可以為執行對應機器可讀指令的圖24的示範微處理器2400所執行。然而,一旦被組態,FPGA電路2500以硬體實例化機器可讀指令,並且,因此,可以經常較執行對應軟體的通用微處理器所執行為快地執行這些運算。
更明確地說,相對於上述圖24的微處理器2400(其係為可以被規劃以執行圖18-22的流程圖所表示的部分或所有機器可指令的通用裝置,但一旦製造,其互連與邏輯電路被固定),圖25的FPGA電路2500的例子包含互連與邏輯電路,其可以在被製造後以不同方式組態及/或互連,以實例化例如由圖18-22的流程圖所表示的部分或所有機器可讀指令。更明確地說,FPGA 2500可以被認為是一陣列邏輯閘、互連及開關。開關可以被規劃以改變邏輯閘如何以互連加以互連在一起,以有效地形成一或更多專用邏輯電路(除非FPGA電路2500被再規劃及直到FPGA電路2500被再規劃為止)。所組態邏輯電路致使邏輯閘以不同方式合作,以對輸入電路所接收的資料執行不同的運算。這些運算可以對應至由圖18-22流程圖所表示的部分或所有軟體。因此,FPGA電路2500可以被建構以有效地實例化圖18-22的流程圖的部分或所有機器可讀指令成為專用邏輯電路,以類似於ASIC以專用方式執行對應於這些軟體指令的運算。因此,FPGA電路2500可以較通用微處理器可以執行者為快地,執行對應於圖18-22的部分或所有機器可讀指令的運算。
在圖25的例子中,FPGA電路2500被建構以被末端使用者以例如Verilog的硬體描述語言(HDL)規劃(及/或再規劃一或更多次)。圖25的FPGA電路2500包含示範輸入/輸出(I/O)電路2502,以取得及/或輸出資料進出示範組態電路2504及/或外部硬體(如,外部硬體電路)2506。例如,組態電路2504可以實施介面電路,其可以取得機器可讀指令,以組態FPGA電路2500或其部分。在一些此等例子中,組態電路2504可以由使用者、一機器等取得機器可讀指令,該機器(如,硬體電路(如,規劃或專用電路),其可以實施人工智慧/機器學習(AI/ML)模型,以產生指令)。在一些例子中,外部硬體2506可以實施圖24的微處理器2400。FPGA電路2500也包含一陣列的示範邏輯閘電路2508、多數示範可組態互連2510、及示範儲存電路2512。邏輯閘電路2508及互連2510為可組態以實例化一或更多操作,其係對應於圖18-22的至少一部分的機器可讀指令及/或其他想要操作。示於圖25的邏輯閘電路2508被成群或成塊製造。各個塊包含半導體為主電結構,其可以被組態為邏輯電路。在一些例子中,電結構包含邏輯閘(如,及閘、或閘、反或閘等),其可以提供用於邏輯電路的基礎建構方塊。電可控制開關(如,電晶體)係被出現在各個邏輯閘電路2508內,以促成電結構及/或邏輯閘的組態,以形成執行想要操作的電路。邏輯閘電路2508可以包含例如查找表(LUT)、暫存器(如,正反器或鎖存器)、多工器等的其他電結構。
互連2510的例示例子為導電路徑、跡線、導孔或類似物,其可以包含電可控制開關(如,電晶體),其狀態可以藉由規劃(如,使用HDL指令語言)加以改變,以啟動或停止在一或更多邏輯閘電路2508間之一或更多連接,以規劃想要邏輯電路。
儲存電路2512的例示例子係被建構以儲存由對應邏輯閘所執行一或更多運算的結果。儲存電路2512可以為暫存器或類似物所實施。在例示例子中,儲存電路2512被分配於邏輯閘電路2508,以促成存取並增加執行速度。
圖25的示範FPGA電路2500也包含示範專用運算電路2514。在此例子中,專用運算電路2514包含特殊用途電路2516,其可能被調用以實施經常使用函數,以避免需要在現場規劃這些函數。此特殊用途電路2516的例子包含記憶體(如,DRAM)控制器電路、PCIe控制器電路、時脈電路、收發器電路、記憶體、及乘法器-累加器電路。也可以出現有其他類型特殊用途電路。在一些例子中,FPGA電路2500也可以包含示範通用可程式電路2518,例如,示範CPU 2520及/或示範DSP 2522。其他通用可程式電路2518可以額外或替代地出現,例如,GPU、XPU等,其可以被規劃以執行其他運算。
雖然圖24及25例示圖23的處理器電路2312的兩示範實施方式,但也可以想出很多其他方式。例如,如上所述,現代FPGA電路可以包含板上CPU,例如,圖25的一或更多示範CPU 2520。因此,圖23的處理器電路2312可以額外地藉由組合圖24的示範微處理器2400與圖25的示範FPGA電路2500加以實施。在一些此等混合例子中,由圖18-22的流程圖所表示的機器可讀指令的第一部分可以為圖24的一或更多核心2402所執行及由圖18-22的流程圖所表示的機器可讀指令的第二部分可以為圖25的FPGA電路2500所執行。
在一些例子中,圖23的處理器電路2312可以在一或更多封裝中。例如,圖24的處理器電路2400及/或圖25的FPGA電路2500可以在一或更多封裝中。在一些例子中,XPU可以為圖23的處理器電路2312所實施,它可以在一或更多封裝中。例如,XPU可以包含在一封裝中之CPU、在另一封裝中的DSP、在再一封裝中的GPU、及在另一封裝中的FPGA。
例示示範軟體分配平台2605,以分配例如圖23的示範電腦可讀指令2332的軟體至第三方的方塊圖係如圖26中所例示。示範軟體分配平台2605可以為能夠儲存及傳送軟體至其他計算裝置的任何電腦伺服器、資料設施、雲端服務等所實施。第三方可以為擁有及/或操作該軟體分配平台的實體的顧客。例如,擁有及/或操作該軟體分配平台的實體可以為例如圖23的示範電腦可讀指令2332的軟體的開發商、販賣者及/或授權人。第三方可以是顧客、使用者、零售商、OEM等,其購買及/或授權軟體,供使用及/或再銷售及/或再授權。在例示例子中,軟體分配平台2605包含一或更多伺服器及一或更多儲存裝置。儲存裝置儲存電腦可讀指令2332,其可以如上所述對應於圖18-22的示範電腦可讀指令。該示範軟體分配平台2605的一或更多伺服器係與網路2610相通訊,該網路可以對應於上述的任一或多數網際網路及/或示範網路2326的任一。在一些例子中,一或更多伺服器反應以請求傳送軟體至請求方,作為商用交易的一部分。軟體的運費、銷售及/或授權可以為軟體分配平台的一或更多伺服器及/或經由第三方付費實體加以處置。伺服器促使購買者及/或授權者由軟體分配平台2605下載電腦可讀指令2332。例如,可能對應於圖18-22的示範電腦可讀指令的軟體可以下載至將要執行電腦可讀指令2332以實施示範後-處理電路106的示範處理器平台2300。在一些例子中,軟體分配平台2605的一或更多伺服器週期地提供、傳送及/或強迫更新軟體(如,圖23的示範電腦可讀指令2332),以確保改良,修補、更新等係被分配並應用至在末端使用者裝置上的軟體。
由前述,將可以了解到已經揭露用於類神經網路加速器的稀疏張量儲存的方法、設備與製造物品。例如,依據在此所述例子的方法、設備、及製造物品,以動態、壓縮格式儲存張量資料。因此,依據在此所述例子的示範方法、設備、及製造物品具有較小記憶體需求並降低與傳送壓縮資料有關的時間與功率消耗(相較於先前類神經網路加速器)。在加速器中不使用通用應用處理器(或減少使用量),以執行張量旋轉的示範方法、設備與製造物品,降低了讀取及寫入資料的計算時間。依據在此所述之例子的示範方法、設備及製造物品改良了功率需求及藉由廣播儲存在張量工作負載的邊界區中的資料,改良在計算單元間共享資料的傳輸時間。因此,所揭露方法、設備與製造物品係有關於對電腦的功能的一或更多改良。
在此揭露用於類神經網路加速器的稀疏張量儲存器的方法、設備、系統及製造物品。其他例子與其組合包含如下:
例子1包含一種設備包含:稀疏性圖產生電路,用以產生對應於張量的稀疏性圖,該稀疏性圖用以指示該張量的資料點是否為零,靜態儲存控制電路,用以將張量細分為一或更多儲存元件,及壓縮器,用以執行該一或更多儲存元件的第一壓縮,以產生一或更多壓縮儲存元件,該第一壓縮用以根據該稀疏性圖,移除該一或更多儲存元件的零點,並執行該一或更多壓縮儲存元件的第二壓縮,該第二壓縮用以相連地儲存該一或更多壓縮儲存元件於記憶體中。
例子2包含例子1的設備,其中該稀疏性圖的尺寸係根據該張量的該資料點的資料尺寸。
例子3包含例子1的設備,更包含動態儲存控制電路,用以產生指標表,該指標表儲存對應於該第二壓縮的該一或更多儲存元件的位址。
例子4包含例子1的設備,更包含:旋轉控制電路,用以根據該張量的初次值、該張量的二次值、定標因數、或資料對齊的至少之一,旋轉該張量。
例子5包含例子1的設備,更包含:資料處置電路,用以將第一計算單元的該張量的工作負載的資料點廣播至至少一第二計算單元,該工作負載具有寬度、高度、及深度。
例子6包含例子5的設備,更包含記憶體位置確定電路,用以確定該資料點在該工作負載中的位置。
例子7包含例子6的設備,其中該位置為左區、左上區、左下區、右區、右上區、右下區、上區、下區或中心區之一。
例子8包含例子6的設備,更包含位址變換電路,用以根據該寬度、該高度、該深度、邊界寬度、邊界高度、該資料點的該位置、及計算單元偏移,確定該資料點在該第二計算單元中的目標位址。
例子9包含一種設備,包含至少一記憶體,指令,及至少一處理器,用以執行該等指令,以產生對應於張量的稀疏性圖,該稀疏性圖用以指示該張量的資料點是否為零,將該張量細分為一或更多儲存元件,執行該一或更多儲存元件的第一壓縮,以產生一或更多壓縮儲存元件,該第一壓縮用以根據該稀疏性圖,移除該一或更多儲存元件的零點,及執行該一或更多壓縮儲存元件的第二壓縮,該第二壓縮用以將該一或更多壓縮儲存元件相連地儲存在記憶體中。
例子10包含例子9的設備,其中該稀疏性圖的尺寸係根據該張量的該資料點的資料尺寸。
例子11包含例子9的設備,其中該至少一處理器係用以執行該等指令,以產生指標表,該指標表儲存對應於該第二壓縮的該一或更多壓縮儲存元件的位址。
例子12包含例子9的設備,其中該至少一處理器係用以執行該等指令,以根據該張量的初次值、該張量的二次值、定標因數、或資料對齊的至少之一,旋轉該張量。
例子13包含例子9的設備,其中該至少一處理器係用以執行該等指令,以廣播第一計算單元的該張量的工作負載的資料點至第二計算單元,該工作負載具有寬度、高度、及深度。
例子14包含例子13的設備,其中該至少一處理器係用以執行該等指令,以確定該資料點在該工作負載中的位置。
例子15包含例子14的設備,其中該位置為左區、左上區、左下區、右區、右上區、右下區、上區、下區、或中心區之一。
例子16包含例子14的設備,其中該至少一處理器係用以執行該等指令,以根據該寬度、該高度、該深度、邊界寬度、邊界高度、該資料點的該位置、及計算單元偏移,確定該資料點在該第二計算單元中的目標位址。
例子17包含至少一非暫態電腦可讀媒體,包含指令,其當被執行時,使得至少一處理器用以至少產生對應於張量的稀疏性圖,該稀疏性圖用以指示該張量的資料點是否為零,將該張量細分為一或更多儲存元件,執行該一或更多儲存元件的第一壓縮,以產生一或更多壓縮儲存元件,該第一壓縮用以根據該稀疏性圖,移除該一或更多儲存元件的零點,並執行該一或更多壓縮儲存元件的第二壓縮,該第二壓縮用以將該一或更多壓縮儲存元件相連地儲存在記憶體中。
例子18包含例子17的至少一非暫態電腦可讀媒體,其中該稀疏性圖的尺寸係根據該張量的該資料點的資料尺寸。
例子19包含例子17的至少一非暫態電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器用以產生指標表,該指標表儲存對應於該第二壓縮的該一或更多壓縮儲存元件的位址。
例子20包含例子17的至少一非暫態電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器用以根據該張量的初次值、該張量的二次值、定標因數、或資料對齊的至少之一,旋轉該張量。
例子21包含例子17的至少一非暫態電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器用以廣播第一計算單元的該張量的工作負載的資料點至至少第二計算單元,該工作負載具有寬度、高度、及深度。
例子22包含例子21的至少一非暫態電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器用以確定該資料點在該工作負載中的位置。
例子23包含例子22的至少一非暫態電腦可讀媒體,其中該位置為左區、左上區、左下區、右區、右上區、右下區、上區、下區、或中心區之一。
例子24包含例子22的至少一非暫態電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器根據該寬度、該高度、該深度、邊界寬度、邊界高度、該資料點的該位置、及計算單元偏移,確定該資料點在該第二計算單元中的目標位址。
例子25包含一種方法,包含:產生對應於張量的稀疏性圖,該稀疏性圖用以指示該張量的資料點是否為零,將該張量細分為一或更多儲存元件,執行該一或更多儲存單元的第一壓縮,以產生一或更多壓縮儲存元件,該第一壓縮用以根據該稀疏性圖,移除該一或更多儲存元件的零點,及執行該一或更多壓縮儲存元件的第二壓縮,該第二壓縮用以將該一或更多壓縮儲存元件相連地儲存於記憶體中。
例子26包含例子25的方法,其中該稀疏性圖的尺寸係根據該張量的該資料點的資料尺寸。
例子27包含例子25的方法,更包含產生指標表,該指標表儲存對應於該第二壓縮的該一或更多壓縮儲存元件的位址。
例子28包含例子25的方法,更包含根據該張量的初次值、該張量的二次值、定標因數、或資料對齊的至少之一,旋轉該張量。
例子29包含例子25的方法,更包含廣播第一計算單元的該張量的工作負載的資料點至至少一第二計算單元,該工作負載具有寬度、高度、及深度。
例子30包含例子29的方法,更包含確定該資料點在該工作負載中的位置。
例子31包含例子30的方法,其中該位置為左區、左上區、左下區、右區、右上區、右下區、上區、下區、或中心區之一。
例子32包含例子30的方法,更包含根據該寬度、該高度、該深度、邊界寬度、邊界高度、該資料點的該位置、及計算單元偏移,確定該資料點在該第二計算單元中的目標位址。
雖然在此已經描述某些示範方法、設備及製造物品,但本專利的涵蓋範圍並不限於此。相反地,本專利涵蓋等效落入本專利申請專利範圍內的所有方法、設備與製造物品。
以下申請專利範圍係在此被併入本案的詳細說明中,各個請求項單獨表示本案的分開實施例。
100:張量儲存系統
102:類神經網路加速器
104:NN控制電路
106:後-處理電路
108:本地記憶體
110:磚片區段
112:磚片區段
200:張量儲存架構
202:張量旋轉級
204:壓縮級
206:環廣播級
208:儲存級
210:輸出張量
212:輸出啟動交易
214:密集儲存
216:稀疏性圖
218:靜態儲存元件
220:指標
222:動態儲存元件
302:旋轉控制電路
304:壓縮器
306:高速暫存記憶體
308:資料處置電路
310:位址確定電路
312:稀疏性圖產生電路
314:靜態儲存控制電路
316:動態儲存控制電路
318:記憶體位置確定電路
320:位址變換電路
400:張量
402:X軸
404:Y軸
406:Z軸
500:記憶體
502:第一ZX平面
504:第二ZX平面
506:第三ZX平面
600:張量
700:張量
702:磚片區段
800:張量
802:第一取向
804:第二取向
900:磚片區段
902:第一引擎
904:第二引擎
906:第三引擎
908:第四引擎
910:第一列
912:第二列
914:第三列
916:第四列
918:第一行
920:第二行
922:第三行
924:第四行
926:第一時鐘週期
928:第二時鐘週期
930:第三時鐘週期
932:第四時鐘週期
934:第一資料點
936:第二資料點
938:第三資料點
940:第四資料點
1000:張量
1002:磚片區段
1100:張量
1200:記憶體
1202:第一列
1204:第二列
1206:第三列
1300:指標表
1302:記憶體字元
1304:位址
1400:記憶體
1402:儲存元件
1500:張量工作負載
1502:左上區
1504:左區
1506:右上區
1508:左區
1510:中心區
1512:右區
1514:左下區
1516:下區
1518:右下區
1520:填補張量工作負載
1522:填補區域
1600:位址計算架構
1602:第一多工器
1604:第二多工器
1606:第一總和方塊
1608:乘法方塊
1610:第二總和方塊
1700:第一計算單元
1702:第二計算單元
1704:第一張量工作負載
1706:第二張量工作負載
1708:第一邊界區
1710:第二邊界區
1712:第一填補區
1714:第二填補區
1800:程序
1802:產生輸出張量
1804:產生磚片區段
1806:旋轉張量
1808:旋轉張量
1810:壓縮張量
1812:廣播張量
1814:執行張量環廣播
1816:儲存張量
1902:確定NTHW模式
1904:遍歷輸出張量以產生磚片區段
1906:傳送磚片區段至後處理器
1908:產生另一磚片區段
2002:確定目標旋轉
2004:確定初次值
2006:根據初次值與旋轉確定第二值
2008:確定位址
2102:產生稀疏性圖
2104:將張量細分為儲存元件
2106:根據儲存元件與稀疏性圖,執行張量的第一壓縮
2108:執行靜態壓縮張量的第二壓縮
2110:產生指標表
2202:確定廣播的資料點
2204:確定資料點的區域
2206:確定目標計算單元
2208:在目標計算單元中複製資料點
2210:廣播另一資料點
2300:處理器平台
2312:處理器電路
2314:揮發記憶體
2316:非揮發記憶體
2318:匯流排
2320:介面電路
2322:輸入裝置
2324:輸出裝置
2326:網路
2328:大量儲存裝置
2332:機器可執行指令
2313:本地記憶體
2400:微處理器
2402:核心
2404:匯流排
2406:介面電路
2410:共享記憶體
2414:控制單元電路
2416:算術與邏輯電路
2418:暫存器
2420:本地記憶體
2422:匯流排
2500:FPGA電路
2502:輸入/輸出電路
2504:組態電路
2506:外部硬體
2508:邏輯閘電路
2510:互連
2512:儲存電路
2514:專用運算電路
2516:特殊用途電路
2518:通用可程式電路
2520:CPU
2522:DSP
2605:軟體分配平台
2610:網路
[圖1]為依據本案教示建構的用於稀疏張量儲存的示範張量儲存系統的示意圖。
[圖2]為依據本案教示建構的示範張量儲存架構。
[圖3]為方塊圖,代表圖1的示範張量儲存系統的示範後-處理電路。
[圖4]例示示範張量。
[圖5]例示儲存於示範記憶體中的示範未壓縮張量資料。
[圖6]例示示範張量。
[圖7A-7C]例示張量的示範NTHW遍歷模式。
[圖8]例示示範張量旋轉。
[圖9A-9B]例示張量的示範多工。
[圖10]例示一示範張量。
[圖11]例示張量的示範儲存元件。
[圖12]例示儲存於示範記憶體中的示範靜態張量資料。
[圖13]例示示範指標表。
[圖14]例示儲存於示範記憶體中的示範動態張量資料。
[圖15]例示示範張量工作負載。
[圖16]例示示範位址計算架構。
[圖17]例示由示範第一計算單元示範張量廣播至示範第二計算單元。
[圖18]為流程圖,代表可以為示範處理器電路所執行的機器可讀指令,以實施圖1的示範類神經網路加速器,以儲存張量。
[圖19]為流程圖,代表可以為示範處理器電路所執行的機器可讀指令,以實施圖1的示範類神經網路控制電路,以產生磚片區段。
[圖20]為流程圖,代表可以為示範處理器電路所執行的機器可讀指令,以實施圖3的示範旋轉控制電路,以旋轉張量。
[圖21]為流程圖,代表可以為示範處理器電路所執行的機器可讀指令,以實施圖3的示範壓縮器,以壓縮張量。
[圖22]為流程圖,代表可以為示範處理器電路所執行的機器可讀指令,以實施圖3的示範資料處置電路,以廣播張量環(halo)。
[圖23]為被建構以執行圖18-22的指令的示範處理平台的方塊圖,以實施圖1的示範張量儲存系統。
[圖24]為圖23的處理器電路的示範實施方式的方塊圖。
[圖25]為圖23的處理器電路的另一示範實施方式的方塊圖。
[圖26]為示範軟體分配平台的方塊圖,用以分配軟體(如,對應於圖18-22的示範電腦可讀指令的軟體)至例如消費者(如,用於授權、銷售及/或使用)、零售商(如,用於銷售、再銷售、授權、及/或再授權)、及/或原始設備製造者(OEM)(如,用於包含予以分配給如零售商及/或直接購買消費者的產品)的客戶裝置。
圖式並未依規格繪出。通常,相同元件符號將在所有圖式及隨附的說明中表示相同或類似部件。
除非特別指出,如“第一”、“第二”、“第三”等的描述用語係在此被使用,而不被賦與或表示有優先性、實體順序、名單中的排列、及/或任何方式的排列的意義,僅只作為標示及/或任何名稱係為了容易了解區分揭露例子中的元件。在一些例子中,雖然描述用語“第一”可以用以表示在詳細說明中的一元件,但相同元件可以在申請專利範圍中被以不同描述用語,如“第二”或“第三”表示。在此等實例中,應了解此等描述符只被使用以有區分地指明這些元件,否則,它們將共用一相同名稱。如於此所用,用語“基本即時”表示認知計算時間、傳輸等的真實世界延遲,但以接近瞬時方式發生。因此,除非特別指明,“基本即時”表示真實時間±1秒。如於此所用,用語“相通訊”及其變化包含直接通訊及/或透過一或更多中介元件的間接通訊,並且並不需要直接實體(即,接線)通訊及/或固定通訊,而是額外包含以週期間隔、排程間隔、非週期間隔、及/或一次事件的選擇通訊。如於此所用,“處理器電路”係被界定為包含(i)一或更多特殊用途電路被建構以執行特殊操作並包含一或更多半導體為基的邏輯裝置(如,為一或更多電晶體所實施的電氣硬體),及(ii)一或更多被以指令規劃的通用半導體為基的電路,以執行特定操作並包含一或更多半導體為基的邏輯裝置(如,為一或更多電晶體所實施的電氣硬體)。處理器電路的例子包含規劃微處理器、可以樣例化指令的場可程式閘陣列(FPGA)、中央處理單元(CPU)、圖形處理器單元(GPU)、數位信號處理器(DSP)、XPU、或微控制器,及例如特殊應用積體電路(ASIC)的積體電路。例如,XPU可以以異質計算系統加以實施,該異質計算系統包含多重類型處理器電路(如,一或更多FPGA、一或更多CPU、一或更多GPU、一或更多DSP等,及/或其組合)及應用程式設計界面(API),其可以指定計算工作給多重類型處理電路中之最適以執行計算工作者。
106:後-處理電路
108:本地記憶體
302:旋轉控制電路
304:壓縮器
306:高速暫存記憶體
308:資料處置電路
310:位址確定電路
312:稀疏性圖產生電路
314:靜態儲存控制電路
316:動態儲存控制電路
318:記憶體位置確定電路
320:位址變換電路
Claims (24)
- 一種設備,包含: 稀疏性圖產生電路,用以產生對應於張量的稀疏性圖,該稀疏性圖用以指示該張量的資料點是否為零; 靜態儲存控制電路,用以將張量細分為一或更多儲存元件;及 壓縮器,用以: 執行該一或更多儲存元件的第一壓縮,以產生一或更多壓縮儲存元件,該第一壓縮用以根據該稀疏性圖,移除該一或更多儲存元件的零點;並 執行該一或更多壓縮儲存元件的第二壓縮,該第二壓縮用以將該一或更多壓縮儲存元件相連地儲存在記憶體中。
- 如請求項1的設備,其中該稀疏性圖的尺寸係根據該張量的該資料點的資料尺寸。
- 如請求項1的設備,更包含動態儲存控制電路,用以產生指標表,該指標表儲存對應於該第二壓縮的該一或更多儲存元件的位址。
- 如請求項1的設備,更包含:旋轉控制電路,用以根據該張量的初次值、該張量的二次值、定標因數、或資料對齊的至少之一,旋轉該張量。
- 如請求項1的設備,更包含:資料處置電路,用以將第一計算單元的該張量的工作負載的資料點廣播至至少一第二計算單元,該工作負載具有寬度、高度、及深度。
- 如請求項1或5之任一項的設備,更包含記憶體位置確定電路,用以確定該資料點在該工作負載中的位置。
- 如請求項6的設備,其中該位置為左區、左上區、左下區、右區、右上區、右下區、上區、下區或中心區之一。
- 如請求項6的設備,更包含位址變換電路,用以根據該寬度、該高度、該深度、邊界寬度、邊界高度、該資料點的該位置、及計算單元偏移,確定該資料點在該第二計算單元中的目標位址。
- 一種設備,包含: 至少一記憶體; 指令,及 至少一處理器,用以執行該等指令,以: 產生對應於張量的稀疏性圖,該稀疏性圖用以指示該張量的資料點是否為零; 將該張量細分為一或更多儲存元件; 執行該一或更多儲存元件的第一壓縮,以產生一或更多壓縮儲存元件,該第一壓縮用以根據該稀疏性圖,移除該一或更多儲存元件的零點;及 執行該一或更多壓縮儲存元件的第二壓縮,該第二壓縮用以將該一或更多壓縮儲存元件相連地儲存在記憶體中。
- 如請求項9的設備,其中該稀疏性圖的尺寸係根據該張量的該資料點的資料尺寸。
- 如請求項9的設備,其中該至少一處理器係用以執行該等指令,以產生指標表,該指標表儲存對應於該第二壓縮的該一或更多壓縮儲存元件的位址。
- 如請求項9的設備,其中該至少一處理器係用以執行該等指令,以根據該張量的初次值、該張量的二次值、定標因數、或資料對齊的至少之一,旋轉該張量。
- 如請求項9的設備,其中該至少一處理器係用以執行該等指令,以廣播第一計算單元的該張量的工作負載的資料點至至少一第二計算單元,該工作負載具有寬度、高度、及深度。
- 如請求項9或13之任一項的設備,其中該至少一處理器係用以執行該等指令,以確定該資料點在該工作負載中的位置。
- 如請求項14的設備,其中該位置為左區、左上區、左下區、右區、右上區、右下區、上區、下區、或中心區之一。
- 如請求項14的設備,其中該至少一處理器係用以執行該等指令,以根據該寬度、該高度、該深度、邊界寬度、邊界高度、該資料點的該位置、及計算單元偏移,確定該資料點在該第二計算單元中的目標位址。
- 一種至少一電腦可讀媒體,包含指令,當該等指令被執行時,使得至少一處理器用以至少: 產生對應於張量的稀疏性圖,該稀疏性圖用以指示該張量的資料點是否為零; 將該張量細分為一或更多儲存元件; 執行該一或更多儲存元件的第一壓縮,以產生一或更多壓縮儲存元件,該第一壓縮用以根據該稀疏性圖,移除該一或更多儲存元件的零點;並 執行該一或更多壓縮儲存元件的第二壓縮,該第二壓縮用以將該一或更多壓縮儲存元件相連地儲存在記憶體中。
- 如請求項17的至少一電腦可讀媒體,其中該稀疏性圖的尺寸係根據該張量的該資料點的資料尺寸。
- 如請求項17的至少一電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器用以產生指標表,該指標表儲存對應於該第二壓縮的該一或更多壓縮儲存元件的位址。
- 如請求項17的至少一電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器用以根據該張量的初次值、該張量的二次值、定標因數、或資料對齊的至少之一,旋轉該張量。
- 如請求項17的至少一電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器用以廣播第一計算單元的該張量的工作負載的資料點至第二計算單元,該工作負載具有寬度、高度、及深度。
- 如請求項17或21之任一項的至少一電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器用以確定該資料點在該工作負載中的位置。
- 如請求項22的至少一電腦可讀媒體,其中該位置為左區、左上區、左下區、右區、右上區、右下區、上區、下區、或中心區之一。
- 如請求項22的至少一電腦可讀媒體,其中當該等指令被執行時,使得該至少一處理器根據該寬度、該高度、該深度、邊界寬度、邊界高度、該資料點的該位置、及計算單元偏移,確定該資料點在該第二計算單元中的目標位址。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/359,217 US11940907B2 (en) | 2021-06-25 | 2021-06-25 | Methods and apparatus for sparse tensor storage for neural network accelerators |
| US17/359,217 | 2021-06-25 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW202301203A true TW202301203A (zh) | 2023-01-01 |
Family
ID=79030931
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111109904A TW202301203A (zh) | 2021-06-25 | 2022-03-17 | 用於類神經網路加速器的稀疏張量儲存的方法與設備 |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US11940907B2 (zh) |
| EP (1) | EP4109763A1 (zh) |
| CN (1) | CN115525579A (zh) |
| TW (1) | TW202301203A (zh) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12353988B2 (en) | 2020-07-09 | 2025-07-08 | Celestial Ai Inc. | Neuromorphic photonics with coherent linear neurons |
| WO2022219233A1 (en) * | 2021-04-12 | 2022-10-20 | Nokia Technologies Oy | A method, an apparatus and a computer program product for neural network compression |
| EP4281906A4 (en) | 2021-06-18 | 2024-07-17 | Celestial AI Inc. | ELECTROPHOTONIC NETWORK FOR MACHINE LEARNING |
| US12271595B2 (en) | 2022-03-18 | 2025-04-08 | Celestial Ai Inc. | Photonic memory fabric for system memory interconnection |
| KR20240155370A (ko) | 2022-03-18 | 2024-10-28 | 셀레스티얼 에이아이 인코포레이티드 | 광 멀티 다이 상호 연결 브리지(omib) |
| US12442999B2 (en) | 2022-03-18 | 2025-10-14 | Celestial Ai Inc. | Optically bridged multicomponent package with extended temperature range |
| CN115034198B (zh) * | 2022-05-16 | 2023-05-12 | 北京百度网讯科技有限公司 | 语言模型中嵌入模块计算优化的方法 |
| US12191257B2 (en) | 2022-07-26 | 2025-01-07 | Celestial Ai Inc. | Electrical bridge package with integrated off-bridge photonic channel interface |
| US12283584B2 (en) | 2022-07-26 | 2025-04-22 | Celestial Ai Inc. | Electrical bridge package with integrated off-bridge photonic channel interface |
| CN115309713B (zh) * | 2022-09-29 | 2022-12-23 | 江西锦路科技开发有限公司 | 交通数据压缩方法、装置、电子设备及存储介质 |
| US12217056B2 (en) * | 2023-01-27 | 2025-02-04 | Celestial Ai Inc. | Load/store unit for a tensor engine and methods for loading or storing a tensor |
| US20250045393A1 (en) * | 2023-07-31 | 2025-02-06 | Palo Alto Networks, Inc. | Binary file malware detection with structure aware machine learning |
| US12332816B1 (en) * | 2024-08-26 | 2025-06-17 | Deepx Co., Ltd. | Dynamic assignment of bus bandwidth for sending tensors to neural processing units |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8762655B2 (en) * | 2010-12-06 | 2014-06-24 | International Business Machines Corporation | Optimizing output vector data generation using a formatted matrix data structure |
| US10360163B2 (en) * | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
| US11321092B1 (en) * | 2017-11-08 | 2022-05-03 | Habana Labs Ltd. | Tensor-based memory access |
| CN108885596A (zh) * | 2017-12-29 | 2018-11-23 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
| US10644721B2 (en) | 2018-06-11 | 2020-05-05 | Tenstorrent Inc. | Processing core data compression and storage system |
| CN111010883B (zh) * | 2018-08-06 | 2022-07-12 | 华为技术有限公司 | 矩阵的处理方法、装置及逻辑电路 |
| US10719323B2 (en) * | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
| US11132423B2 (en) * | 2018-10-31 | 2021-09-28 | Hewlett Packard Enterprise Development Lp | Partition matrices into sub-matrices that include nonzero elements |
| US20200159810A1 (en) * | 2018-11-15 | 2020-05-21 | Hewlett Packard Enterprise Development Lp | Partitioning sparse matrices based on sparse matrix representations for crossbar-based architectures |
| US11671111B2 (en) | 2019-04-17 | 2023-06-06 | Samsung Electronics Co., Ltd. | Hardware channel-parallel data compression/decompression |
| US11462003B2 (en) * | 2020-03-25 | 2022-10-04 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
| US12189710B2 (en) * | 2021-05-25 | 2025-01-07 | Google Llc | Sparse matrix multiplication in hardware |
-
2021
- 2021-06-25 US US17/359,217 patent/US11940907B2/en active Active
-
2022
- 2022-03-17 TW TW111109904A patent/TW202301203A/zh unknown
- 2022-03-25 EP EP22164349.7A patent/EP4109763A1/en active Pending
- 2022-05-23 CN CN202210561623.0A patent/CN115525579A/zh active Pending
-
2023
- 2023-12-14 US US18/539,955 patent/US12430239B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US20210406164A1 (en) | 2021-12-30 |
| US11940907B2 (en) | 2024-03-26 |
| US12430239B2 (en) | 2025-09-30 |
| US20240134786A1 (en) | 2024-04-25 |
| CN115525579A (zh) | 2022-12-27 |
| EP4109763A1 (en) | 2022-12-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TW202301203A (zh) | 用於類神經網路加速器的稀疏張量儲存的方法與設備 | |
| US20220012578A1 (en) | Methods, apparatus, and articles of manufacture to increase utilization of neural network (nn) accelerator circuitry for shallow layers of an nn by reformatting one or more tensors | |
| US12425047B2 (en) | Methods and apparatus to perform weight and activation compression and decompression | |
| US12169643B2 (en) | Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (MAC) operations | |
| CN115526301A (zh) | 在机器学习加速器内加载数据的方法和装置 | |
| CN117642738A (zh) | 加速卷积的方法和装置 | |
| US20230325185A1 (en) | Methods and apparatus to accelerate matrix operations using direct memory access | |
| US20250036462A1 (en) | Methods and apparatus for multilevel balancing of computational tasks | |
| US12541569B2 (en) | Methods and apparatus for performing a machine learning operation using storage element pointers | |
| WO2024124365A1 (en) | Methods and apparatus to perform convert operations using direct memory access | |
| US11862117B2 (en) | Method and apparatus for matched buffer decompression | |
| US20220222204A1 (en) | Methods and apparatus to process web-scale graphs | |
| US20250321676A1 (en) | Methods and apparatus to manage memory movement | |
| US20260039312A1 (en) | Methods and apparatus to perform weight and activation compression and decompression | |
| KR20240124800A (ko) | 스토리지 엘리먼트 포인터들을 사용하여 머신 러닝 연산을 수행하기 위한 방법들 및 장치들 | |
| US20250252040A1 (en) | Methods and apparatus to execute memory access formulas in memory chiplets | |
| US20250005704A1 (en) | Methods and apparatus to animate a splash screen | |
| US20260017247A1 (en) | Methods and apparatus for compression modes in hardware accelerators | |
| WO2023240547A1 (en) | Methods, systems, articles of manufacture and apparatus to perform video analytics | |
| US20250348626A1 (en) | Methods and apparatus for smoothed particle hydrodynamics analysis | |
| US20260037270A1 (en) | Host instructions | |
| US20260037300A1 (en) | Compute tiles | |
| US20260037299A1 (en) | Cluster instructions | |
| CN120129909A (zh) | 在神经网络中执行多对一特征蒸馏的方法和装置 | |
| CN121219691A (zh) | 具有强化学习的矩阵乘法的方法和装置 |