TW202127326A - 用於加速神經網路計算的硬體電路 - Google Patents
用於加速神經網路計算的硬體電路 Download PDFInfo
- Publication number
- TW202127326A TW202127326A TW109144706A TW109144706A TW202127326A TW 202127326 A TW202127326 A TW 202127326A TW 109144706 A TW109144706 A TW 109144706A TW 109144706 A TW109144706 A TW 109144706A TW 202127326 A TW202127326 A TW 202127326A
- Authority
- TW
- Taiwan
- Prior art keywords
- calculation
- neural network
- block
- network layer
- super
- Prior art date
Links
Images
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/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; CALCULATING OR 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; CALCULATING OR 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Memory System (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Abstract
本發明描述用於經組態以實施一神經網路之一硬體電路之方法、系統及設備,包含電腦可讀媒體。該電路包含多個超方塊(super tiles)。各超方塊包含用於儲存至一神經網路層之輸入及該層之權重的一統一記憶體。各超方塊包含多個計算方塊。各計算方塊執行用於執行計算以針對該神經網路層產生一輸出之一計算執行緒。各超方塊包含耦合至該統一記憶體及各計算方塊之仲裁邏輯。該仲裁邏輯經組態以:將儲存於該統一記憶體中之輸入傳遞至該等計算方塊;將儲存於該統一記憶體中之權重傳遞至該等計算方塊;及將基於在該等計算方塊處使用該層之該等輸入及該等權重執行之計算而針對該層產生的該輸出傳遞至該統一記憶體。
Description
本說明書大體上係關於用於執行神經網路計算之一硬體加速器之電路。
神經網路係採用一或多個節點層來針對一經接收輸入產生一輸出(例如,一分類)之機器學習模型。除一輸出層之外,一些神經網路亦包含一或多個隱藏層。各隱藏層之輸出被用作至網路中之一或多個其他層(例如,網路之其他隱藏層或輸出層)之輸入。網路之一些層根據一各自參數集合之當前值自一經接收輸入產生一輸出。一些神經網路係迴旋神經網路(convolutional neural network) (CNN) (例如,用於影像處理)或遞迴神經網路(RNN) (例如,用於語音及語言處理)。
CNN及RNN係包含各自組之迴旋或遞迴神經網路層之神經網路。一神經網路層可具有一相關聯組內核,該組內核可對應於用於透過該層處理輸入以產生該層之一對應輸出以用於計算一神經網路推理的參數或權重。內核可被表示為權重之一張量,即,一多維陣列。作為一實例,一序列層中之一神經網路層可處理一組輸入,諸如由該序列層中之另一神經網路層產生之影像像素資料輸入或激發值(activation value)。該組輸入或該組激發值亦可被表示為一張量。
本文件描述一種可在經組態以加速一例示性神經網路模型之計算(諸如一人工神經網路之一層之計算)之一硬體加速器中使用的經改良硬體電路。電路架構包含多個超方塊(super tile),其中各超方塊經組態以基於自該超方塊之一統一記憶體獲得之資料來執行多個計算執行緒。該統一記憶體提供可在該等計算執行緒之各者之間高效地共用之一記憶體建構,使得可在超方塊處同時執行該等計算執行緒之各者之計算。
在一些實施方案中,所描述硬體電路及處理技術可在一例示性計算系統中使用,諸如一小規模或大規模分佈式系統,其包含用於執行一例示性機器學習工作負載之推理(或訓練)計算之多個專用處理器(例如,硬體加速器)的電路。本文中所描述之電路架構可整合於多個專用處理器之各者中以增強處理器執行用於執行各種類型之機器學習模型之任務之計算的速度及效率。
本說明書中所描述之標的物之一個態樣可體現在一種用於一硬體加速器之電路中,該硬體加速器經組態以實施包含多個神經網路層之一神經網路且執行計算以針對一神經網路層產生一輸出。該電路包含:多個超方塊,該多個超方塊之各超方塊包含:一統一記憶體,其經組態以儲存至該神經網路層之輸入及該神經網路層之多個權重;多個計算方塊,其中各計算方塊經組態以執行用於執行該等計算以產生該輸出之一計算執行緒;及一仲裁邏輯單元(unit),其耦合至該統一記憶體及該多個計算方塊之各者。該仲裁邏輯單元經組態以:將儲存於該統一記憶體中之該等輸入之一或多者傳遞至該等計算方塊之各者;將儲存於該統一記憶體中之一各自組權重傳遞至該等計算方塊之各者;及將基於在該等計算方塊之各者處使用該等輸入之一或多者及該各自組權重執行之計算而針對該神經網路層產生的該輸出傳遞至該統一記憶體。
此等及其他實施方案可各自視情況包含下列特徵之一或多者。例如,在一些實施方案中,該電路包含用於各超方塊之一各自控制器,該各自控制器經組態以產生一或多個控制信號,該一或多個控制信號用於:將至該神經網路層之該等輸入之各者儲存於該統一記憶體之一對應位置中,該等對應位置之各者係藉由一各自位址識別;將該神經網路層之該多個權重之各權重儲存於該統一記憶體之一對應位置中,該等對應位置之各者係藉由一各自位址識別;及引起該仲裁邏輯將一或多個輸入傳遞至一特定計算方塊之一計算胞元(cell)且將一各自組權重傳遞至該特定計算方塊。
在一些實施方案中,該控制器經組態以:將該特定計算方塊之該各自組權重儲存於在該特定計算方塊本地之該特定計算方塊之一各自暫存器檔案中。在一些實施方案中,該控制器經組態以:判定該統一記憶體中之一位址分割以用於儲存待傳遞至一超方塊之一對應計算方塊之各自批次輸入,其中將各位址分割指派給該超方塊之一各自計算方塊。
在一些實施方案中,一位址分割中之一各自位址對應於形成一輸入特徵樣本之一批次輸入中之一輸入;該輸入特徵樣本包含多組輸入特徵;且該等組輸入特徵對應於影像或音訊資料串流。在一些實施方案中,該仲裁邏輯單元經組態以:針對一第一位址分割自由該位址分割中之位址識別之記憶體位置獲得一第一批次輸入;及將該第一批次輸入傳遞至一第一計算方塊之胞元,其中該第一計算方塊經指派以基於該統一記憶體中之該經判定位址分割來接收該第一批次輸入中之各輸入。
在一些實施方案中,針對各個各自超方塊:該多個計算方塊之各計算方塊經組態以在該計算方塊處並行執行兩個或更多個計算執行緒;且各計算方塊執行一計算執行緒以執行至該神經網路層之一或多個輸入與該神經網路層之一權重之間之乘法而針對該神經網路層產生一部分輸出。
在一些實施方案中,針對各個各自超方塊:該多個計算方塊之各計算方塊經組態以回應於在該計算方塊處並行執行該兩個或更多個計算執行緒而執行該等計算之一部分以針對該神經網路層產生該輸出;且回應於執行該等計算之該部分,產生用於針對該神經網路層產生該輸出之一或多個部分輸出。
在一些實施方案中,該電路經組態以針對一超方塊中之該多個計算方塊之各個各自計算方塊:在該計算方塊處並行執行兩個或更多個計算執行緒。且針對該多個超方塊之各個各自超方塊:該電路經組態以並行執行指派給各計算方塊之兩個或更多個執行緒以針對該神經網路層產生該輸出。在一些實施方案中,使用該計算執行緒執行之一第一部分之操作對應於用於遍歷一第一多維張量之一或多個維度之一第一組張量運算(tensor operation);且該第一多維張量係包含對應於儲存於該統一記憶體中之該等輸入之資料元素的一輸入張量。
在一些實施方案中,使用該計算執行緒執行之一第二部分之操作對應於用於遍歷不同於該第一多維張量之一第二多維張量之一或多個維度的一第二組張量運算;且該第二多維張量係包含對應於儲存於該統一記憶體中之該多個權重之資料元素的一權重張量。
本說明書中所描述之標的物之一個態樣可體現在一種用於使用經組態以實施包含多個神經網路層之一神經網路之一硬體加速器的一電路來執行計算,以針對該神經網路之一神經網路層產生一輸出的方法中。該方法包含:在多個超方塊之一超方塊處接收至該神經網路層之輸入及該神經網路層之多個權重;及將至該神經網路層之該等輸入及該神經網路層之該多個權重儲存於該超方塊之一統一記憶體中。該方法亦包含使用該超方塊之一仲裁邏輯單元將儲存於該統一記憶體中之該等輸入之一或多者傳遞至該超方塊中之多個計算方塊之各計算方塊,其中該仲裁邏輯單元耦合至該統一記憶體及該多個計算方塊之各計算方塊;及使用該超方塊之該仲裁邏輯單元將儲存於該統一記憶體中之一各自組權重傳遞至該等計算方塊之各者。該方法包含在該超方塊中之該等計算方塊之各者處執行一計算執行緒以執行該等計算而針對該神經網路層產生該輸出;及基於在該等計算方塊之各者處使用該等輸入之一或多者及該各自組權重執行之計算而針對該神經網路層產生該輸出。
此等及其他實施方案可各自視情況包含下列特徵之一或多者。例如,在一些實施方案中,該方法包含:使用該仲裁邏輯單元將針對該神經網路層產生之該輸出傳遞至該統一記憶體;及使用該超方塊之一各自控制器將針對該神經網路層產生之該輸出傳遞至該電路處之另一超方塊。
在一些實施方案中,該方法包含:藉由該超方塊之該各自控制器產生控制信號;基於該等控制信號將至該神經網路層之該等輸入之各者儲存於該統一記憶體之一對應位置中,該等對應位置之各者係藉由一各自位址識別;基於該等控制信號將該神經網路層之該多個權重之各權重儲存於該統一記憶體之一對應位置中,該等對應位置之各者係藉由一各自位址識別;及基於該等控制信號引起該仲裁邏輯將一或多個輸入傳遞至一特定計算方塊之一計算胞元且將一各自組權重傳遞至該特定計算方塊。
在一些實施方案中,該方法包含針對各個各自超方塊:在該多個計算方塊之各計算方塊處並行執行兩個或更多個計算執行緒之各計算執行緒;且其中各計算方塊執行一計算執行緒以執行至該神經網路層之一或多個輸入與該神經網路層之一權重之間之乘法而針對該神經網路層產生一部分輸出。
本說明書中所描述之標的物之一個態樣可體現在一種系統單晶片(SoC)中。該SoC包含:用於一硬體加速器之一電路,該硬體加速器經組態以實施包括複數個神經網路層之一神經網路且執行計算以針對一神經網路層產生一輸出;一主機控制器,其經組態以存取在用於該硬體加速器之該電路外部之記憶體,其中該記憶體經組態以儲存用於該神經網路層處之處理之資料;及一主機介面,其經組態以在用於該硬體加速器之該電路與該主機控制器之間交換資料通信。
該SoC包含安置於該電路中之多個超方塊。該多個超方塊之各超方塊包含:一統一記憶體,其經組態以儲存至該神經網路層之輸入及該神經網路層之多個權重。該等輸入及該多個權重對應於儲存於可由該主機控制器存取之該記憶體中之該資料。各超方塊包含多個計算方塊,其中各計算方塊經組態以執行用於執行該等計算以產生該輸出之一計算執行緒。各超方塊包含耦合至該統一記憶體及該複數個計算方塊之各計算方塊之一仲裁邏輯單元。
該仲裁邏輯單元經組態以:將儲存於該統一記憶體中之該等輸入之一或多者傳遞至該等計算方塊之各者;將儲存於該統一記憶體中之一各自組權重傳遞至該等計算方塊之各者;及將基於在該等計算方塊之各者處使用該等輸入之一或多者及該各自組權重執行之計算而針對該神經網路層產生的該輸出傳遞至該統一記憶體。
此及其他態樣之其他實施方案包含經組態以執行編碼於電腦儲存裝置上之方法之動作的對應系統、設備及電腦程式。一或多個電腦之一系統可憑藉安裝於該系統上之在操作時引起該系統執行該等動作之軟體、韌體、硬體或其等之一組合來如此組態。一或多個電腦程式可憑藉具有在藉由資料處理設備執行時引起該設備執行該等動作之指令來如此組態。
本說明書中所描述之標的物可在特定實施例中實施以實現以下優點之一或多者。本說明書中所描述之電路架構及資料處理技術可整合於一例示性分佈式系統中以減少透過一神經網路(諸如一迴旋神經網路或遞迴神經網路)之一層處理一組輸入所需之處理時間。
相對於用於執行神經網路計算之先前電路設計,電路架構及資料處理技術提供用於最佳化跨方塊並行化計算之方式的途徑(approach)之不同組合。例如,所描述技術容許針對在計算之間具有顯著資料重用之使用案例(諸如當跨一濾波器之不同維度重用激發且跨一批次中之多個激發重用參數時)最佳化跨方塊並行化計算之方式。
該等技術可用於實施提供一或多個超方塊之一電路架構及軟體堆疊,該一或多個超方塊容許超方塊內之多個同時計算執行緒。該架構容許包含判定是否廣播及/或截割(slice)參數(權重)及激發兩者之處理技術。此判定可不同於不同類型之工作負載,以便最佳化併有該架構之一例示性硬體加速器之效能。
最佳化可與硬體電路之一計算單元中之乘法累加胞元之利用率聯繫在一起。可參考用於基於經改良電路架構跨超方塊分割一張量之維度(例如,跨4個超方塊跨一張量之一Z維度進行分割,或跨2個超方塊分割一張量之X、Y維度)之不同途徑來評估利用率。例如,使用本文件中所描述之技術,可使用多種途徑來跨方塊並行化計算,使得電路之乘法累加胞元可達成高於一先前電路設計中之胞元之一利用率的一臨限利用率(例如,70%)。
在下文隨附圖式及描述中闡述本說明書中所描述之標的物之一或多個實施方案之細節。自描述、圖式及發明申請專利範圍將明白標的物之其他可能特徵、態樣及優點。
本說明書描述一種經改良硬體電路以及可使用經改良硬體電路之架構實施之資料處理技術。硬體電路可為專用處理器,諸如一神經網路處理器、一特定應用積體電路或硬體加速器。
硬體電路包含多個超方塊。各超方塊包含用於儲存至一神經網路層之輸入及該層之權重的一統一記憶體。各超方塊經組態以基於自超方塊之一統一記憶體獲得之資料及經由耦合至超方塊之各者之一通信匯流排在超方塊處接收之指令來執行多個計算執行緒。在一些實施方案中,各超方塊包含多個計算方塊,其中各計算方塊經組態以執行一或多個計算執行緒。在一些情況中,各計算方塊經組態以執行一個計算執行緒,使得超方塊可並行執行多個計算執行緒。在其他情況中,各計算方塊可經組態以執行多個計算執行緒,使得超方塊並行執行多個計算執行緒之各者。計算執行緒用於執行計算以針對一神經網路層產生一輸出。
各超方塊包含耦合至統一記憶體及各計算方塊或可在超方塊處執行之各計算執行緒的一仲裁邏輯單元。仲裁邏輯單元經組態以將儲存於統一記憶體中之輸入及權重傳遞至計算方塊。仲裁邏輯單元亦經組態以將針對層產生之輸出傳遞至經指派以接收輸出之一超方塊之統一記憶體或經指派以接收輸出之一部分之一或多個超方塊之各者。
在一些實施方案中,在一超方塊處基於在該超方塊之計算方塊處使用由仲裁邏輯單元傳遞至計算方塊之層之輸入及權重執行之計算來產生神經網路層之一輸出。在其他實施方案中,可跨多個超方塊劃分一神經網路之一或多個層,例如可跨多個超方塊並行化該層,使得各超方塊執行針對該層之處理之部分。在此等實施方案中,跨多個超方塊產生神經網路層之一輸出作為在一起形成神經網路層之輸出的各自組輸出值(例如,激發值向量)。
圖1係包含用於一硬體加速器之一例示性電路之一計算系統100之一方塊圖。在一些情況中,系統100係用於加速與人工深度神經網路(DNN) (諸如RNN或CNN)相關聯之張量或神經網路計算之一例示性計算系統。例如,系統100經組態以在一硬體電路101 (諸如一專用硬體電路)上實施一例示性人工神經網路(例如,一CNN)。在一些實施方案中,系統100係一系統單晶片。例如,系統單晶片可包含硬體電路101及在本文件中描述為包含於系統100中之一些(或全部)其他組件及裝置。
硬體電路101可為經組態以加速一神經網路模型之執行(execution及/或performance)之一硬體加速器。例如,神經網路模型之執行可相對於一例示性通用機器(諸如一中央處理單元(CPU))上之模型之執行加速。類似地,神經網路模型之執行(performance及execution)可相對於在於不具有與本說明書中所描述之技術相關聯之經改良硬體特徵及軟體功能之另一硬體加速器(例如,一圖形處理單元(GPU))上實施模型時加速。
系統100 (包含例示性電路101)可包含一或多個超方塊102。在一些實施方案中,系統100包含多個超方塊102。在圖1 (及下文描述之圖2)之實例中,系統100被展示為包含四個超方塊102,然而,系統100以及本文中所描述之硬體電路101可包含更多或更少超方塊。如下文更詳細描述,一超方塊102係系統100 (或硬體電路101)之一離散自給自足計算單元。在一些實施方案中,各超方塊102經組態以獨立地執行一多層神經網路之一或多個層所需之計算(例如,神經網路計算)。
可需要計算以處理一機器學習工作負載之資料或執行工作負載之特定任務。在一些實施方案中,在一超方塊102內針對一或多個神經網路層執行之一計算程序可包含儲存於一輸入張量之各自元素處之資料值(例如,輸入或激發)與儲存於一參數張量之各自元素處之資料值(例如,權重)之一相乘。例如,計算可包含在一或多個循環內將一輸入或激發值與一權重值相乘及執行許多循環內之一乘積之一累加。
各超方塊102大體上包含一各自控制器104、一各自之一統一記憶體106、一各自之多個計算方塊(或執行緒) 108及一各自仲裁邏輯單元110 (「仲裁邏輯110」)。
控制器104經組態以產生用於控制發生在一超方塊102內之操作之控制信號114。例如,控制信號114可用於:a)將至一神經網路層之經接收輸入之各者儲存於統一記憶體106之一對應位置中;及b)將一神經網路層之經接收權重之各者儲存於統一記憶體106之一對應位置中。儲存一各自輸入或權重之對應記憶體位置之各者係藉由一各自位址識別。
控制器104包含一直接記憶體存取(DMA)模組105,DMA模組105包含一DMA操作(「DMAOp」)控制105a及一DMAOp張量遍歷單元(tensor traversal unit;TTU) 105b。DMAOp控制105a表示控制邏輯,其可藉由控制器104使用以:i)管理將用於計算之資料寫入/儲存至統一記憶體106之記憶體位置;及ii)管理自統一記憶體106之記憶體位置讀取/獲得用於計算之資料。例如,藉由控制器104執行DMAOp控制105a以管理將在超方塊102處接收之一輸入張量之輸入寫入至統一記憶體106之記憶體位置,及將在超方塊102處接收之一權重張量之權重寫入至統一記憶體106之記憶體位置。
DMAOp控制105a可操作以管理用於藉由DMAOp TTU 105b執行之遍歷操作。在一些實施方案中,藉由DMAOp TTU 105b基於經由通信匯流排124 (下文描述)接收之入站/出站DMAOp指令來產生一特定輸入或激發將被寫入或從中讀取一特定輸入或激發之統一記憶體106之一位置或位址。例如,可藉由DMAOp控制105a處理DMAOp指令以管理由DMAOp TTU 105b執行之遍歷操作,以產生用於儲存經由通信匯流排124接收之輸入及權重之統一記憶體106之位置或位址。
在一些情況中,可同時執行入站DMAOp及出站DMAOp。一例示性出站DMAOp可包含超方塊102將一經產生層輸出之激發值提供至系統100之一相鄰超方塊102。在入站及出站DMAOp之同時執行期間,可透過由控制器104管理之同步旗標控制方案來管理記憶體位置存取之任何所需同步或仲裁。在一些實施方案中,控制器104可操作以結合仲裁邏輯110來管理同步旗標控制方案。
由控制器104產生之控制信號114亦可用於:a)引起讀取仲裁邏輯110a將自統一記憶體106獲得之一或多個輸入傳遞至一特定計算方塊108n之一算術胞元152 (下文描述);及b)引起讀取仲裁邏輯110a將自統一記憶體106獲得之一各自組權重傳遞至特定計算方塊108n。在一些實施方案中,仲裁邏輯110經由一輸入匯流排112將輸入及權重傳遞至一計算方塊108n。
如圖1之實例中所展示,仲裁邏輯110可經由一各自輸入匯流排112及一各自輸出匯流排113耦合至超方塊102之各計算方塊108n。仲裁邏輯110經組態以自統一記憶體106之記憶體位置擷取(或讀取)多批次輸入。仲裁邏輯110亦經組態以將由各計算方塊108提供之多組輸出或輸出激發儲存(或寫入)至統一記憶體106之記憶體位置。
在一些實例中,統一記憶體106可被描述為一窄記憶體結構,其可操作以儲存待在一神經網路層處處理之輸入、激發或增益值及回應於透過一神經網路層處理輸入或激發而藉由該層產生之輸出激發。更詳細描述輸出激發之產生及儲存。各超方塊102之統一記憶體106可採用提供定址仲裁及靈活性之一記憶體階層以容許以任何順序遍歷一多維陣列,同時亦避免某些記憶體操作(諸如單循環讀取及寫入操作)之記憶庫衝突。在一些實施方案中,統一記憶體106包含多個記憶庫(例如,多個獨立仲裁之記憶庫),且仲裁邏輯110經組態以仲裁對統一記憶體106中之各記憶庫之各記憶體位置之讀取存取及寫入存取。
由仲裁邏輯110傳遞之各批次輸入可對應於一特定計算方塊108n,使得經由將特定計算方塊108n耦合至仲裁邏輯110之各自輸入匯流排112將該批次輸入提供至特定計算方塊108n。例如,仲裁邏輯110經組態以將一第一批次輸入中之各輸入載入至(load unto)將仲裁邏輯110耦合至超方塊處之一第一計算方塊108n之一第一輸入匯流排112。仲裁邏輯110亦經組態以將一第二不同批次輸入中之各輸入載入至將仲裁邏輯110耦合至超方塊102處之一第二不同計算方塊108n之一第二不同輸入匯流排112。替代地,在一些情況中,多批次輸入之各者可對應於相同計算方塊108n且載入於相同計算方塊108n處。
仲裁邏輯110係統一記憶體106之一邏輯單元或結構。例如,仲裁邏輯110可為在一共用記憶體系統(例如,統一記憶體106)中用於針對各記憶體循環決定將容許哪一控制裝置(例如,DMAOp控制105a或TensorOp控制132)存取統一記憶體106之共用記憶體資源的一專用記憶體仲裁器。例如,在超方塊102處,不同指令類型之DMAOp控制105a及TensorOp控制132可組態為請求記憶體存取之獨立控制執行緒,其中需要藉由仲裁邏輯110仲裁請求。
如本文中所描述,各超方塊102經組態以執行k
個計算執行緒,其中k
係等於或大於1之一整數。在一些實施方案中,k
個計算執行緒之各者係在一各自超方塊102處執行之軟體建構,其中可藉由超方塊102之一各自計算方塊108n管理或執行k
個計算執行緒之部分。一超方塊102可為表示其中多個TensorOp管線(或執行緒)並行(即,同時)執行之一獨立計算單元的一超純量方塊或一超向量方塊。例如,一參數或變數kNumberComputeThreads
可表示一超純量方塊102或一超向量方塊102中之平行TensorOp管線之數目。一超純量方塊102可為對純量輸入值操作之一例示性超方塊102,而一超向量方塊102可為對輸入值之向量操作之一例示性超方塊102。
在一超方塊102中,各計算執行緒可對應於一單一計算方塊,其中一計算方塊執行一單一計算執行緒。替代地,各計算方塊可經組態以執行多個計算執行緒。在一些實施方案中,計算方塊108n之組可實體上或邏輯上配置於系統100之各自超方塊102中。例如,在系統100 (或硬體電路101)中,用於一各自超方塊102之該等組計算方塊108n可配置於硬體或軟體中。在一些實施方案中,當用於一各自超方塊102之計算方塊108n配置於軟體中時,超方塊102可經組態以執行n
個計算方塊108,其中n
係等於或大於1之一整數。在此等實施方案中,n
個計算方塊108n之各者可經組態以執行k
個計算執行緒。
由控制器104產生之控制信號114亦可用於:a)引起寫入仲裁邏輯110b將一經產生層輸出之激發傳遞至統一記憶體106用於儲存於記憶體106中;及b)引起超方塊102將經產生層輸出之激發值提供至一相鄰超方塊。
系統100包含經由一主機介面122耦合至超方塊102之各者之一外部主機/控制器120。在一些實施方案中,主機介面122耦合於主機控制器120與可包含於一系統單晶片中之用於一硬體加速器之一電路(例如,硬體電路101)之間。主機介面122經組態以在主機控制器120與用於硬體加速器之電路之間交換資料通信。在一些實施方案中,主機控制器120經組態以存取在用於硬體加速器之電路外部之記憶體(例如,外部記憶體)。外部記憶體經組態以儲存用於在電路處實施之一神經網路處之處理的資料。例如,資料可為待藉由神經網路之一或多個層處理之輸入及權重。
主機介面122自外部主機/控制器120接收指令及資料值,且將一各自組指令及資料值提供至超方塊102之各者。在一些實例中,資料值可自可由主機控制器120存取之外部記憶體獲得且接著經由主機介面122傳遞至超方塊102。主機介面122可操作以使用可由超方塊102之各者存取之一例示性通信匯流排來將指令及資料值傳遞至超方塊。在一些實施方案中,系統100之一指令集架構經組態使得超方塊102之各者可接收一各自單一指令。該單一指令可包含用於一工作負載或一工作負載中之任務組之資料值(例如,輸入及權重)、特定資料欄位及操作參數。
一般而言,透過一通信匯流排124 (例如,一指令或環狀匯流排)將指令及資料值提供至系統100中之一或多個裝置。在一些情況中,超方塊102經由耦合系統100中之兩個或更多個超方塊之一例示性通信匯流排124來接收用於一機器學習任務之資料及指令。例如,通信匯流排124經組態以透過一匯流排資料路徑提供通信耦合,該匯流排資料路徑以一例示性環狀形式(ring format)經由主機介面122將系統100之超方塊102連接至主機控制器120。在圖2之實例中描繪環狀形式。
在一些實施方案中,在一初始時間藉由一超方塊102中之各自控制器104之各者自主機介面122接收一或多個指令,且在一稍後時間將其儲存於各自控制器104之一例示性指令記憶體中以藉由控制器104執行。資料可包含輸入、激發、增益值或各者之組合。在一些實例中,在超方塊102處接收資料以在一神經網路層處進行處理而針對該神經網路層產生一輸出。在此等實例中,在神經網路層處處理資料以產生層輸出包含:產生多個部分輸出(例如,累加或預激發值)。
計算方塊108n之各者包含一各自張量模組130,各自張量模組130包含一張量運算(「TensorOp」)控制132及一TensorOp TTU 134。各自張量模組130之各者可提供類似於由控制器104之DMAOp模組105提供之功能性或與該功能性有關的功能性。例如,TensorOp控制132可表示控制邏輯,其藉由控制器104或計算方塊108n使用以:i)管理用於自儲存輸入之統一記憶體106之對應記憶體位置讀取/存取指派給一輸入張量之一特定元素之一輸入值的操作;及ii)管理在回應於在計算方塊108n處執行之一或多個計算執行緒而產生一輸出值(或部分輸出)之後,使該輸出值相關聯於或將其指派給一輸出張量之一特定元素。
可藉由控制器104或一計算方塊108n之一計算執行緒來執行TensorOp控制130以管理用於藉由TensorOp TTU 134執行之遍歷操作。例如,TensorOp TTU 134可操作以執行用於存取沿著一N
維或多維張量(例如,一2D輸入張量、一3D權重張量或一4D輸出張量)之特定維度之元素集的指令。一例示性N
維張量可具有跨N
個維度之各者配置之多個元素,其中N
係等於或大於1之一整數。
TensorOp TTU 134判定沿著張量(例如,一2D權重張量)之特定維度之元素集中之各元素的位址,使得計算方塊108n (或計算執行緒)可存取儲存用於張量之資料之對應記憶體或暫存器檔案,以讀取表示沿著特定維度之元素之值的資料。在一些實施方案中,與TensorOp TTU 134相關聯之程式碼可包含一或多個巢套迴圈,且TensorOp TTU 134可執行一指令以根據巢套迴圈之當前索引變數值存取巢套迴圈內之二維陣列/張量變數之一元素。基於巢套迴圈之當前索引變數值,TensorOp TTU 134可判定表示自二維陣列變數之一第一元素之一偏移的一偏移值。例如,特定元素之位址可為自一N
維張量之另一元素偏移之一位址。
計算方塊108n之各者包含含有多個本地暫存器檔案142之一寬記憶體建構140。在一些實施方案中,控制器104經組態以將用於一特定計算方塊108n之一組權重儲存於特定計算方塊108n之一各自暫存器檔案中,其中特定暫存器檔案142在特定計算方塊108n本地。例如,控制器104經組態以回應於將層之該組權重自統一記憶體106傳遞至特定計算方塊108n而將該組權重之個別權重儲存於一本地暫存器檔案142之特定記憶體位置中。
計算方塊108n之各者包含經組態以使用對應於傳遞至計算方塊108n之輸入及權重值之運算元來執行算術運算(諸如加法及乘法)之一各自計算單元150。計算單元150之各者可包含多個算術胞元152。各算術胞元152可為經組態以使用輸入及權重來執行算術運算(例如,乘法)之一乘法累加胞元。例如,由計算單元150執行之算術運算大體上包含將自統一記憶體106獲得之輸入或激發與參數相乘以產生累加值集。可自包含多個本地暫存器檔案142之計算方塊108n之寬記憶體建構140獲得用於計算之參數。
計算方塊108n之各者包含一暫存器陣列160及一非線性單元170 (「NLU 170」)。暫存器陣列160包含多個個別移位暫存器162。各移位暫存器162可為一管線式移位暫存器162。陣列160之管線式移位暫存器162用於使層之輸出值(例如,累加值或部分和)移位至一非線性單元170 (「NLU 170」)。NLU 170將一非線性激發函數應用於輸出值以針對該層產生一組輸出激發。NLU 170與寫入仲裁邏輯110b互動以將一經產生層輸出之輸出激發傳遞至統一記憶體106用於儲存於記憶體106中。例如,可經由一輸出激發匯流排113將輸出激發自NLU 170提供至寫入仲裁邏輯110b。
在一些實施方案中,NLU 170可操作以基於自計算方塊108n或藉由控制器104提供至NLU 170之一控制信號來將多個部分和或累加值彙總為一最終線性輸出(例如,一值向量)。
圖2係展示用於一硬體加速器之一電路之例示性計算方塊架構之一方塊圖。圖2之實例中之方塊圖包含一第一方塊架構200及第二不同方塊架構210。第一方塊架構200表示一專用硬體電路之一例示性先前電路設計之一方塊架構,而第二方塊架構210表示基於本文件中所描述之技術之一經改良硬體電路之一新穎方塊架構。
新穎方塊架構210包含多個超方塊102。針對內容背景,使用個別計算方塊202及計算執行緒204執行神經網路計算之一些先前途徑在可跨架構並行化計算之方式方面受限制。與此等先前途徑相反,新穎方塊架構210包含多個超方塊102,且容許在一超方塊102之計算方塊108n內及跨多個超方塊102之並行化選項。例如,各超方塊102經組態以執行多個計算執行緒214,其中可在超方塊102處同時執行多個執行緒之各者。在一些情況中,相對於在一神經網路之一層處處理輸入時可能需要兩個或更多個計算執行緒之串列執行的先前途徑,多個執行緒之同時執行減少或減輕處理延時。
在超方塊102處執行之多個計算執行緒214之各者可基於自超方塊102之統一記憶體106獲得之資料、在超方塊102處接收之指令、由控制器104產生之控制信號114,或各者之組合。在一些實施方案中,在各超方塊處執行之多個計算執行緒對應於一或多個張量運算。在圖2之實例中,各超方塊102被展示為執行四個分離張量運算,然而,各超方塊102可經組態以執行更多或更少張量運算。
在一些實施方案中,針對與使用具有X、Y維度之一2D輸入張量之一神經網路層相關聯的一例示性計算,外部/主機控制器120可操作以執行一輸入分割演算法以跨超方塊102 (例如,新穎方塊架構210)之一柵格(grid)分佈輸出X、Y。外部/主機控制器120可操作以針對各超方塊102分配各自統一記憶體106之各者中空間用於儲存輸入激發、光暈像素及輸出激發。在影像處理工作負載之內容背景中,光暈像素對應於在兩個或更多個計算方塊108n之間共用之輸入。例如,可在其中共用一影像之邊緣之輸入之迴旋中使用對應於光暈像素之一組輸入。
在圖2之實例中,一第一分割演算法220包含可用於表達由一超方塊102完成之淨(總)工作之一迴圈巢套。分割演算法220及迴圈巢套可藉由用超方塊102處之不同計算方塊108n之一各自TensorOp TTU 134執行的程式碼之一部分表示。例如,可藉由各TensorOp TTU 134跨多個計算方塊108n執行分割演算法220之變動以遍歷沿著一例示性3D輸入張量(x, y, zin)之不同維度之特定元素,以將3D輸入張量與一2D權重(濾波器)張量(kx, ky)進行迴旋而產生一1D輸出張量(zout)。此在下文參考圖3更詳細描述。
圖3繪示一例示性張量300 (例如,一3D輸入張量)及用於處理對應於張量300之元素之資料的一第二分割演算法310。基於上文所描述之新穎方塊架構210,本文件中所描述之經改良硬體電路101提供可在於一超方塊102中或跨不同超方塊102執行之TensorOp執行緒304及306之kNumberComputeThreads
間劃分工作(諸如任務及計算)的多種途徑及方式。
例如,用於在計算方塊108n之各者間劃分工作之途徑之不同組合可包含:a)將張量300之X、Y維度之一第一組元素分配至一第一超方塊102之一第一計算方塊108n;及b)將張量300之X、Y維度或張量300之其他維度之一第二組元素分配至第一超方塊102之一第二不同計算方塊108n。
途徑之不同組合亦可用於在多個超方塊102之各者及各超方塊102處之各自多個計算方塊108n間劃分工作。例如,途徑之一個組合可包含:i)將張量300之X、Y維度之不同組元素分配至一第一超方塊102之至少兩個計算方塊108n;及ii)將張量300之X、Y維度之不同組元素分配至一第二不同超方塊102之一或多個計算方塊108n。
假使其中分配至一超方塊102之X、Y維度之元素較大(例如,超過一計算方塊108n中之SRAM之一臨限大小),則多個計算執行緒可在經分配X、Y維度之進一步2D子分割上工作。在一些實施方案中,針對影像處理工作負載,可在無需跨一超方塊102中之一或多個計算執行緒顯式交換光暈像素302的情況下處理2D子分割之資料。在一些實施方案中,一超方塊102中之一或多個計算執行緒所需之輸入像素在被傳遞至一對應計算執行緒之前,最初駐留在超方塊102之統一記憶體106中。
如上文所論述,相對於用於執行神經網路計算之先前電路設計,本文件中所描述之電路架構及資料處理技術提供用於最佳化跨方塊並行化計算之方式之不同途徑(或途徑組合)。在一些情況中,相對於用於跨經改良電路架構之超方塊102分割兩個或更多個張量之維度的不同選項,最佳化可與一計算單元150中之乘法累加胞元152之利用率聯繫在一起。作為一實例,一些一般選項可包含跨4個超方塊分割一輸入張量之一Zin維度,或跨2個超方塊分割一2D張量之X、Y維度。
例如,多種途徑可用於跨方塊並行化計算,使得計算單元150之乘法累加胞元152可達成高於一先前電路設計中之相關胞元之一利用率的一臨限利用率(例如,70%)。在一些情況中,多種不同途徑之各者之較高臨限利用率可高於先前設計之利用率,即使先前設計對於可跨其電路架構並行化計算之方式具有有限選項。
由一或多個超方塊102提供之途徑容許在一超方塊102內之不同計算方塊108n之間進一步劃分且藉由該等不同計算方塊108n操作指派給超方塊102之一輸入張量之一部分(例如,一些或全部),在一超方塊102內之不同計算方塊108n之間進一步劃分且藉由該等不同計算方塊108n操作指派給超方塊102之一參數張量之一部分(例如,一些或全部),或兩者。類似地,該途徑容許跨兩個或更多個超方塊102劃分一神經網路層處之處理,例如,可跨多個超方塊102並行化該層,使得各超方塊執行該層之處理之部分。例如,可跨全部(或一些)超方塊102分割整個層。一般而言,可使用此途徑之經改良電路架構獲得用於並行化之多個選項。
因此,可使用不同途徑來分配工作及分割張量300之元素及維度,使得超方塊102與各超方塊102之計算執行緒之不同組合可用於遍歷沿著一N
維張量300之不同維度之特定元素,以將張量300與一N
維權重(濾波器)張量進行迴旋(或執行其他操作)以產生一N
維輸出張量。因此,可在一單一超方塊102中基於由超方塊102中之各自TensorOp TTU 134處理之記憶體位址值來遍歷可自統一記憶體106及寬記憶體建構140存取之一或多個N
維張量。
系統100經組態以判定一給定超方塊102之多個計算執行緒之各計算執行緒間的一位址分割。可基於用於分配工作及分割在系統100處處理之張量之元素及維度的一特定途徑來判定位址分割。在一些實施方案中,DMAOp控制105a可操作以判定待透過一神經網路層處理之一批次輸入中之各自輸入之一分割中的一位址映射。例如,各自批次輸入可與輸入張量300之不同元素相關聯,且各位址分割可指派給一特定計算方塊108n或待在計算方塊108n處執行之計算執行緒。
圖4繪示包含一或多個超方塊之一指令集架構之例示性指令的一表400。
如上文所描述,系統100之一指令集架構可經組態使得超方塊102之各者接收一各自單一指令(或多個指令)。單一或多個指令之各者可包含用於一工作負載或一工作負載中之任務組之資料值(例如,輸入及權重)、特定資料欄位及操作參數。因此,經由通信匯流排124提供至一超方塊102之一或多個指令之各者可包含多個參數或資料欄位。資料欄位之各者可與一特定操作相關聯。在一些情況中,可將指令中之資料欄位之一或多個位元設定為一特定二進位值,以引起在一單一計算方塊108或多個計算方塊108處發生一特定操作。
現參考表400,待在一特定計算方塊108n之一計算執行緒處執行之一例示性張量運算(「TensorOp」)之一資料欄位指示目標執行緒之TensorOp管線(402)。在一些實施方案中,基於在超方塊102處接收之指令,可同時將多個資料欄位多播至計算方塊108n之各者用於在計算方塊108n處執行一各自計算執行緒。
一例示性DMA操作(「NarrowToWide DMA」)之一資料欄位指示將接收自統一記憶體106擷取之資料之一目標執行緒之寬記憶體建構140 (404)。在一些實施方案中,可在超方塊102處執行DMA操作以將表示一神經網路層之一各自組權重之資料自統一記憶體106(例如,窄記憶體)移動至寬記憶體建構140之一本地暫存器檔案140。例如,將該組權重移動至目標計算執行緒之寬記憶體建構140之本地暫存器檔案142。在一些實施方案中,由目標計算執行緒執行之一例示性操作可包含TensorOp TTU 134自本地暫存器檔案142獲得權重值,將權重值傳遞至計算方塊108n外之一胞元152,及胞元152使用權重值作為經執行以針對神經網路層產生一輸出之神經網路計算的一運算元。
另一DMA操作(「RingBusConsumer DMA」)之一資料欄位指示將接收包含於提供至超方塊102之一指令中(或與其包含在一起)之一資料部分的一目標執行緒之寬記憶體建構140 (406)。在一些實施方案中,此DMA操作之資料欄位可對應於自通信匯流排124 (例如,一環狀匯流排)獲得之指令中的一特定位元映射(bitmap)欄位。一般而言,一位元映射可具有依據位元定義之一特定寬度。
例如,一指令之一標頭(例如,一位元映射)可基於標頭之位元映射欄位之個別位元的一(若干)值向一接收超方塊102指示超方塊102需要如何消耗與標頭相關聯之資料之部分。一超方塊102需要以其消耗資料之部分之特定方式可為一指令子類型(或一指令之一子類型)。在一些實施方案中,一接收超方塊102之一各自控制器104檢查一指令(例如,一單一指令)之標頭位元映射,且判定指令之一子類型指示待藉由超方塊102之一寬記憶體建構140接收資料之部分。例如,指令子類型可指示將接收與資料之部分相關聯之一各自組權重的一目標執行緒之本地暫存器檔案142。
另一例示性操作(「LoadCoefficientTables」)之一資料欄位指示用於載入包含於提供至超方塊102之一指令中(或與其包含在一起)之係數表的一超方塊102之記憶體(408)。此載入操作之資料欄位可對應於指令中之不同於上文所描述之RingBusConsumer DMA操作之位元映射欄位的一特定位元映射欄位。在一些實施方案中,係數表藉由一超方塊102之目標執行緒之各者使用以針對一例示性機器學習工作負載執行神經網路計算。在一些情況中,可跨與各計算執行緒相關聯之各自寬記憶體建構140儲存係數表。在其他情況中,係數表可儲存於可由k個計算執行緒之各者存取之超方塊102之一些其他專用記憶體中。
一同步旗標操作(「SyncFlag」)之一資料欄位指示一目標執行緒之同步旗標(410)。在一些實施方案中,僅針對跨兩個或更多個超方塊102複製之同步旗標設定一指令中之一例示性同步旗標操作的資料欄位。一超方塊102處之一同步觀察者操作(「SyncWatcher」)之一資料欄位係一布林(Boolean)欄位,其指示是否a)等待對應於其自身之(若干)計算執行緒之SyncFlag且忽視「SyncFlag」複製指令之指令中之「thread_id」欄位;或b)等待對應於「SyncFlag」複製指令中之「thread_id」欄位之SyncFlag (412)。一例示性方塊分隔(tile fence)操作「TileFence」之一資料欄位可包含一「reset_sync_flag_thread_ids」資料欄位及一「wait_idle_thread_ids」資料欄位(414)。此等資料欄位指定是否重設或等待方塊分隔操作所連接至之對應計算執行緒中之同步旗標。
圖5係繪示用於加速神經網路計算之一例示性程序500之一流程圖。可使用上文所描述之系統100來實施或執行程序500。程序500之描述可參考系統100之上述計算資源。在一些實施方案中,藉由經程式化韌體或軟體指令來實現程序500之步驟或動作,該等經程式化韌體或軟體指令可藉由本文件中所描述之裝置及資源之一或多個處理器執行。
現參考程序500,系統100之一例示性超方塊102接收至一神經網路層之輸入及該層之權重(502)。例如,超方塊102可經由通信匯流排124接收輸入及權重。除接收輸入及權重之外,超方塊亦可接收用於執行一神經網路層之神經網路計算以針對該層產生一輸出的一或多個指令。超方塊之控制器將輸入及權重儲存於超方塊之一統一記憶體中(504)。例如,控制器104基於經由通信匯流排124接收之指令將輸入及權重儲存於統一記憶體106中。
超方塊之仲裁邏輯單元將儲存於統一記憶體中之輸入之一或多者傳遞至超方塊中之多個計算方塊之各計算方塊(506)。仲裁邏輯單元110耦合至統一記憶體106及多個計算方塊108之各計算方塊108n。在一些實施方案中,控制器104經組態以判定統一記憶體106中之一位址分割用於儲存待傳遞至一超方塊102之一對應計算方塊108n之各自批次輸入。例如,統一記憶體106之各位址分割可指派給超方塊之一各自計算方塊108n。
仲裁邏輯單元經組態以:針對一第一位址分割自由該位址分割中之位址識別之記憶體位置獲得一第一批次輸入;及將第一批次輸入傳遞至一第一計算方塊108n之胞元152,其中第一計算方塊108n經指派以基於統一記憶體中之經判定位址分割來接收第一批次輸入中之各輸入。在一些實例中,一位址分割中之一組位址可用於形成一輸入特徵樣本之一批次輸入。輸入特徵樣本可包含多組輸入特徵,其中該等組輸入特徵對應於影像或音訊資料串流。
仲裁邏輯單元將儲存於統一記憶體中之一各自組權重傳遞至計算方塊之各者(508)。超方塊102在超方塊中之計算方塊之各者處執行多個計算執行緒以執行計算而針對神經網路層產生一輸出(510)。超方塊102基於在計算方塊之各者處使用輸入之一或多者及各自組權重執行之計算來針對神經網路層產生輸出(512)。在一些實施方案中,神經網路層係一迴旋神經網路之一嵌入層,且由神經網路層產生之輸出係包含一嵌入特徵向量之一嵌入輸出。
本說明書中所描述之標的物及功能操作之實施例可在以下中實施:數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中所揭示之結構及其等結構等效物),或其等之一或多者之組合。本說明書中所描述之標的物之實施例可實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以藉由資料處理設備執行或控制資料處理設備之操作的電腦程式指令之一或多個模組。
替代地或另外,可將程式指令編碼於一人工產生之傳播信號(例如,一機器產生之電信號、光學信號或電磁信號)上,該傳播信號經產生以編碼用於傳輸至適合接收器設備之資訊用於藉由一資料處理設備執行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
術語「計算系統」涵蓋用於處理資料之所有種類之設備、裝置及機器,包含例如一可程式化處理器、一電腦或多個處理器或電腦。設備可包含專用邏輯電路,例如一FPGA (場可程式化閘陣列)或一ASIC (特定應用積體電路)。設備除硬體之外亦可包含產生所探討之電腦程式之一執行環境的程式碼,例如構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合的程式碼。
可以任何形式之程式設計語言撰寫一電腦程式(其亦可被稱為或描述為一程式、軟體、一軟體應用程式、一模組、一軟體模組、一指令檔或程式碼),包含編譯或解譯語言或宣告或程序語言,且其可以任何形式部署,包含作為一獨立程式或作為一模組、組件、副常式或適用於一計算環境中之其他單元。
一電腦程式可(但不必)對應於一檔案系統中之一檔案。一程式可儲存於保持其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令檔)之一檔案之一部分中、儲存於專用於所探討之程式之一單一檔案中,或儲存於多個協同檔案(例如,儲存一或多個模組、副程式或程式碼之部分的檔案)中。一電腦程式可經部署以在一個電腦上或在定位於一個地點處或跨多個地點分佈且由一通信網路互連之多個電腦上執行。
本說明書中所描述之程序及邏輯流程可藉由一或多個可程式化電腦執行,該一或多個可程式化電腦執行一或多個電腦程式以藉由對輸入資料操作且產生輸出而執行功能。亦可藉由專用邏輯電路(例如,一FPGA (場可程式化閘陣列)、一ASIC (特定應用積體電路))或一GPGPU (通用圖形處理單元)來執行程序及邏輯流程,且設備亦可實施為該專用邏輯電路。
適於執行一電腦程式之電腦包含、例如可基於通用或專用微處理器或兩者或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之一些元件係用於執行(perform或execute)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般而言,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或可操作地耦合以自該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置,或兩者。然而,一電腦不必具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放機、一遊戲主控台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃隨身碟) (此處僅列舉一些)。
適於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,包含例如:半導體記憶體裝置,例如,EPROM、EEPROM及快閃記憶體裝置;磁碟,例如,內部硬碟或可移除式磁碟;磁光碟;以及CD ROM及DVD-ROM磁碟。處理器及記憶體可由專用邏輯電路增補或併入於專用邏輯電路中。
為提供與一使用者之互動,本說明書中所描述之標的物之實施例可在具有用於顯示資訊給使用者之一顯示裝置(例如,LCD (液晶顯示器)監視器)以及一鍵盤及一指標裝置(例如,一滑鼠或一軌跡球,使用者可藉由其等提供輸入至電腦)之一電腦上實施。其他種類之裝置亦可用於提供與一使用者之互動;例如,提供至使用者之回饋可為任何形式之感官回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自使用者之輸入可以任何形式接收,包含聲學、語音或觸覺輸入。另外,一電腦可藉由將文件發送至供一使用者使用之一裝置及自該裝置接收文件(例如,藉由回應於自一使用者之用戶端裝置上之一網路瀏覽器接收之請求而將網頁發送至該網路瀏覽器)而與使用者互動。
可在一計算系統中實施本說明書中所描述之標的物之實施例,該計算系統包含一後端組件(例如,作為一資料伺服器),或包含一中介軟體組件(例如,一應用程式伺服器),或包含一前端組件(例如,一用戶端電腦,其具有一圖形使用者介面或一網路瀏覽器,一使用者可透過其等與本說明書中所描述之標的物之一實施方案互動),或一或多個此等後端組件、中介軟體組件或前端組件之任何組合。系統之組件可藉由數位資料通信之任何形式或媒體(例如,一通信網路)互連。通信網路之實例包含一區域網路(「LAN」)及一廣域網路(「WAN」),例如,網際網路。
計算系統可包含用戶端及伺服器。一用戶端及伺服器一般彼此遠離且通常透過一通信網路互動。用戶端及伺服器之關係憑藉在各自電腦上運行且彼此具有一用戶端-伺服器關係之電腦程式產生。
雖然本說明書含有許多具體實施方案細節,但此等不應被解釋為限制任何發明或可主張之內容之範疇,而是作為可特定於特定發明之特定實施例之特徵之描述。本說明書中在各別實施例之內容背景中所描述之某些特徵亦可在一單一實施例中組合地實施。相反地,在一單一實施例之內容背景中所描述之各種特徵亦可單獨地或以任何適合子組合在多項實施例中實施。此外,儘管上文可將特徵描述為以特定組合起作用且甚至最初如此主張,然在一些情況中,來自一所主張組合之一或多個特徵可自組合中去除,且所主張組合可關於一子組合或一子組合之變動。
類似地,雖然在圖式中按一特定順序描繪操作,但此不應被理解為要求按所展示之特定順序或循序順序執行此等操作或執行全部所繪示操作以達成所要結果。在某些境況中,多任務處理及並行處理可為有利的。此外,上文所描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中皆需要此分離,且應理解,所描述之程式組件及系統可大體上一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的物之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成所要結果。作為一個實例,在附圖中描繪之程序不一定要求所展示之特定順序或循序順序來達成所要結果。在某些實施方案中,多任務處理及並行處理可為有利的。
100:計算系統
101:硬體電路
102:超方塊/超純量方塊/超向量方塊
104:控制器
105:直接記憶體存取(DMA)模組/DMA操作(DMAOp)模組
105a:DMA操作(DMAOp)控制
105b:DMA操作(DMAOp)張量遍歷單元(TTU)
106:統一記憶體
108:計算方塊
108n:計算方塊
110:仲裁邏輯單元/仲裁邏輯
110a:讀取仲裁邏輯
110b:寫入仲裁邏輯
112:輸入匯流排
113:輸出匯流排/輸出激發匯流排
114:控制信號
120:主機控制器/外部控制器
122:主機介面
124:通信匯流排
130:張量模組
132:張量運算(TensorOp)控制
134:張量運算(TensorOp)張量遍歷單元(TTU)
140:寬記憶體建構
142:本地暫存器檔案
150:計算單元
152:算術胞元/乘法累加胞元
160:暫存器陣列
162:移位暫存器
170:非線性單元(NLU)
200:第一方塊架構
202:計算方塊
204:計算執行緒
210:第二方塊架構/新穎方塊架構
214:計算執行緒
220:第一分割演算法
300:張量
302:光暈像素
304:張量運算(TensorOp)執行緒
306:張量運算(TensorOp)執行緒
310:第二分割演算法
400:表
402:目標執行緒之張量運算(TensorOp)管線
404:將接收自統一記憶體擷取之資料之目標執行緒之寬記憶體建構
406:將接收包含於提供至超方塊之指令中(或與其包含在一起)之資料部分的目標執行緒之寬記憶體建構
408:用於載入包含於提供至超方塊之指令中(或與其包含在一起)之係數表的超方塊之記憶體
410:目標執行緒之同步旗標
412:是否a)等待對應於其自身之(若干)計算執行緒之SyncFlag且忽視「SyncFlag」複製指令之指令中之「thread_id」欄位;或b)等待對應於「SyncFlag」複製指令中之「thread_id」欄位之SyncFlag
414:「reset_sync_flag_thread_ids」資料欄位及「wait_idle_thread_ids」資料欄位
500:程序
502:系統之例示性超方塊接收至神經網路層之輸入及該層之權重
504:超方塊之控制器將輸入及權重儲存於超方塊之統一記憶體中
506:超方塊之仲裁邏輯單元將儲存於統一記憶體中之輸入之一或多者傳遞至超方塊中之多個計算方塊之各計算方塊
508:仲裁邏輯單元將儲存於統一記憶體中之各自組權重傳遞至計算方塊之各者
510:超方塊在超方塊中之計算方塊之各者處執行多個計算執行緒以執行計算而針對神經網路層產生輸出
512:超方塊基於在計算進方塊之各者處使用輸入之一或多者及各自組權重執行之計算來針對神經網路層產生輸出
圖1係包含用於一硬體加速器之一例示性電路之一計算系統之一方塊圖。
圖2係用於一硬體加速器之一電路之一例示性計算方塊架構之一方塊圖。
圖3繪示一例示性張量及用於處理對應於張量之元素之資料的程式碼。
圖4繪示包含一或多個超方塊之一指令集架構之例示性指令的一表。
圖5係繪示用於加速神經網路計算之一例示性程序之一流程圖。
在各個圖式中,相同元件符號及名稱指示相同元件。
100:計算系統
101:硬體電路
102:超方塊/超純量方塊/超向量方塊
104:控制器
105:直接記憶體存取(DMA)模組/DMA操作(DMAOp)模組
105a:DMA操作(DMAOp)控制
105b:DMA操作(DMAOp)張量遍歷單元(TTU)
106:統一記憶體
108:計算方塊
108n:計算方塊
110:仲裁邏輯單元/仲裁邏輯
110a:讀取仲裁邏輯
110b:寫入仲裁邏輯
112:輸入匯流排
113:輸出匯流排/輸出激發匯流排
114:控制信號
120:外部控制器/外部控制器
122:主機介面
124:通信匯流排
130:張量模組
132:張量運算(TensorOp)控制
134:張量運算(TensorOp)張量遍歷單元(TTU)
140:寬記憶體建構
142:本地暫存器檔案
150:計算單元
152:算術胞元/乘法累加胞元
160:暫存器陣列
162:移位暫存器
170:非線性單元(NLU)
Claims (24)
- 一種用於一硬體加速器之電路,該硬體加速器經組態以實施包括複數個神經網路層之一神經網路且執行計算以針對一神經網路層產生一輸出,該電路包括: 複數個超方塊,該複數個超方塊之各超方塊包括: 一統一記憶體,其經組態以儲存至該神經網路層之輸入及該神經網路層之複數個權重; 複數個計算方塊,其中各計算方塊經組態以執行用於執行該等計算以產生該輸出之一計算執行緒;及 一仲裁邏輯單元,其耦合至該統一記憶體及該複數個計算方塊之各計算方塊,其中該仲裁邏輯單元經組態以: 將儲存於該統一記憶體中之該等輸入之一或多者傳遞至該等計算方塊之各者; 將儲存於該統一記憶體中之一各自組權重傳遞至該等計算方塊之各者;及 將基於在該等計算方塊之各者處使用該等輸入之一或多者及該各自組權重執行之計算而針對該神經網路層產生的該輸出傳遞至該統一記憶體。
- 如請求項1之電路,其包括用於各超方塊之一各自控制器,該各自控制器經組態以產生一或多個控制信號,該一或多個控制信號用於: 將至該神經網路層之該等輸入之各者儲存於該統一記憶體之一對應位置中,該等對應位置之各者係藉由一各自位址識別; 將該神經網路層之該複數個權重之各權重儲存於該統一記憶體之一對應位置中,該等對應位置之各者係藉由一各自位址識別;及 引起該仲裁邏輯將一或多個輸入傳遞至一特定計算方塊之一計算胞元且將一各自組權重傳遞至該特定計算方塊。
- 如請求項2之電路,其中該控制器經組態以: 將該特定計算方塊之該各自組權重儲存於在該特定計算方塊本地之該特定計算方塊之一各自暫存器檔案中。
- 如請求項3之電路,其中該控制器經組態以: 判定該統一記憶體中之一位址分割用於儲存待傳遞至一超方塊之一對應計算方塊之各自批次輸入,其中各位址分割指派給該超方塊之一各自計算方塊。
- 如請求項4之電路,其中: 一位址分割中之一各自位址對應於形成一輸入特徵樣本之一批次輸入中之一輸入; 該輸入特徵樣本包括多組輸入特徵;及 該等組輸入特徵對應於影像或音訊資料串流。
- 如請求項4或5之電路,其中該仲裁邏輯單元經組態以: 針對一第一位址分割自由該位址分割中之位址識別之記憶體位置獲得一第一批次輸入;及 將該第一批次輸入傳遞至一第一計算方塊之胞元,其中該第一計算方塊經指派以基於該統一記憶體中之該經判定位址分割來接收該第一批次輸入中之各輸入。
- 如任何前述請求項之電路,其中針對各個各自超方塊: 該複數個計算方塊之各計算方塊經組態以在該計算方塊處並行執行兩個或更多個計算執行緒;及 各計算方塊執行一計算執行緒以執行至該神經網路層之一或多個輸入與該神經網路層之一權重之間之乘法而針對該神經網路層產生一部分輸出。
- 如請求項7之電路,其中針對各個各自超方塊: 該複數個計算方塊之各計算方塊經組態以回應於在該計算方塊處並行執行該兩個或更多個計算執行緒而執行該等計算之一部分以針對該神經網路層產生該輸出;及 回應於執行該等計算之該部分,產生用於針對該神經網路層產生該輸出之一或多個部分輸出。
- 如請求項1或8之電路,其中該電路經組態以: 針對一超方塊中之該複數個計算方塊之各個各自計算方塊: 在該計算方塊處並行執行兩個或更多個計算執行緒;及 針對該複數個超方塊之各個各自超方塊: 並行執行指派給各計算方塊之兩個或更多個計算執行緒以針對該神經網路層產生該輸出。
- 如請求項1或6之電路,其中: 使用該計算執行緒執行之一第一部分之操作對應於用於遍歷一第一多維張量之一或多個維度之一第一組張量運算;及 該第一多維張量係包括對應於儲存於該統一記憶體中之該等輸入之資料元素的一輸入張量。
- 如請求項10之電路,其中: 使用該計算執行緒執行之一第二部分之操作對應於用於遍歷不同於該第一多維張量之一第二多維張量之一或多個維度的一第二組張量運算;及 該第二多維張量係包括對應於儲存於該統一記憶體中之該複數個權重之資料元素的一權重張量。
- 一種用於使用經組態以實施包括複數個神經網路層之一神經網路之一硬體加速器之一電路來執行計算以針對該神經網路之一神經網路層產生一輸出的方法,該方法包括: 在複數個超方塊之一超方塊處接收至該神經網路層之輸入及該神經網路層之複數個權重; 將至該神經網路層之該等輸入及該神經網路層之該複數個權重儲存於該超方塊之一統一記憶體中; 使用該超方塊之一仲裁邏輯單元將儲存於該統一記憶體中之該等輸入之一或多者傳遞至該超方塊中之複數個計算方塊之各計算方塊,其中該仲裁邏輯單元耦合至該統一記憶體及該複數個計算方塊之各計算方塊; 使用該超方塊之該仲裁邏輯單元將儲存於該統一記憶體中之一各自組權重傳遞至該等計算方塊之各者; 在該超方塊中之該等計算方塊之各者處執行一計算執行緒以執行該等計算而針對該神經網路層產生該輸出;及 基於在該等計算方塊之各者處使用該等輸入之一或多者及該各自組權重執行之計算而針對該神經網路層產生該輸出。
- 如請求項12之方法,其包括: 使用該仲裁邏輯單元將針對該神經網路層產生之該輸出傳遞至該統一記憶體;及 使用該超方塊之一各自控制器將針對該神經網路層產生之該輸出傳遞至該電路處之另一超方塊。
- 如請求項13之方法,其包括: 藉由該超方塊之該各自控制器產生控制信號; 基於該等控制信號將至該神經網路層之該等輸入之各者儲存於該統一記憶體之一對應位置中,該等對應位置之各者係藉由一各自位址識別; 基於該等控制信號將該神經網路層之該複數個權重之各權重儲存於該統一記憶體之一對應位置中,該等對應位置之各者係藉由一各自位址識別;及 基於該等控制信號引起該仲裁邏輯將一或多個輸入傳遞至一特定計算方塊之一計算胞元且將一各自組權重傳遞至該特定計算方塊。
- 如請求項14之方法,其包括: 基於該等控制信號將該特定計算方塊之該各自組權重儲存於在該特定計算方塊本地之該特定計算方塊之一各自暫存器檔案中。
- 如請求項15之方法,其包括: 藉由該控制器判定該統一記憶體中之一位址分割用於儲存待傳遞至一超方塊之一對應計算方塊之各自批次輸入,其中各位址分割指派給該超方塊之一各自計算方塊。
- 如請求項16之方法,其中: 一位址分割中之一各自位址對應於形成一輸入特徵樣本之一批次輸入中之一輸入; 該輸入特徵樣本包括多組輸入特徵;及 該等組輸入特徵對應於影像或音訊資料串流。
- 如請求項16或17之方法,其包括針對一第一位址分割: 藉由該仲裁邏輯單元自由該位址分割中之位址識別之記憶體位置獲得一第一批次輸入;及 將該第一批次輸入傳遞至一第一計算方塊之胞元,其中該第一計算方塊經指派以基於該統一記憶體中之該經判定位址分割來接收該第一批次輸入中之各輸入。
- 如請求項12或18之方法,其包括針對各個各自超方塊: 在該複數個計算方塊之各計算方塊處並行執行兩個或更多個計算執行緒;及 其中各計算方塊執行一計算執行緒以執行至該神經網路層之一或多個輸入與該神經網路層之一權重之間之乘法而針對該神經網路層產生一部分輸出。
- 如請求項19之方法,其包括: 針對各個各自超方塊: 回應於在該複數個計算方塊之各計算方塊處並行執行該兩個或更多個計算執行緒而在該計算方塊處執行該等計算之一部分以針對該神經網路層產生該輸出;及 回應於執行該等計算之該部分,產生用於針對該神經網路層產生該輸出之一或多個部分輸出。
- 如請求項12或20之方法,其包括: 針對一超方塊中之該複數個計算方塊之各個各自計算方塊: 在該計算方塊處並行執行兩個或更多個計算執行緒;及 針對該複數個超方塊之各個各自超方塊: 並行執行指派給各計算方塊之兩個或更多個計算執行緒以針對該神經網路層產生該輸出。
- 如請求項12或21之方法,其中: 使用該計算執行緒執行之一第一部分之操作對應於用於遍歷一第一多維張量之一或多個維度之一第一組張量運算;及 該第一多維張量係包括對應於儲存於該統一記憶體中之該等輸入之資料元素的一輸入張量。
- 如請求項22之方法,其中: 使用該計算執行緒執行之一第二部分之操作對應於用於遍歷不同於該第一多維張量之一第二多維張量之一或多個維度之一第二組張量運算;且 該第二多維張量係包括對應於儲存於該統一記憶體中之該複數個權重之資料元素的一權重張量。
- 一種系統單晶片(SoC),其包括: 一電路,其用於一硬體加速器,該硬體加速器經組態以實施包括複數個神經網路層之一神經網路且執行計算以針對一神經網路層產生一輸出; 一主機控制器,其經組態以存取在用於該硬體加速器之該電路外部之記憶體,其中該記憶體經組態以儲存用於該神經網路層處之處理之資料; 一主機介面,其經組態以在用於該硬體加速器之該電路與該主機控制器之間交換資料通信;及 複數個超方塊,其等安置於該電路中,該複數個超方塊之各超方塊包括: 一統一記憶體,其經組態以儲存至該神經網路層之輸入及該神經網路層之複數個權重,其中該等輸入及該複數個權重對應於儲存於可由該主機控制器存取之該記憶體中之該資料; 複數個計算方塊,其中各計算方塊經組態以執行用於執行該等計算以產生該輸出之計算執行緒;及 一仲裁邏輯單元,其耦合至該統一記憶體及該複數個計算方塊之各計算方塊,其中該仲裁邏輯單元經組態以: 將儲存於該統一記憶體中之該等輸入之一或多者傳遞至該等計算方塊之各者; 將儲存於該統一記憶體中之一各自組權重傳遞至該等計算方塊之各者;及 將基於在該等計算方塊之各者處使用該等輸入之一或多者及該各自組權重執行之計算而針對該神經網路層產生的該輸出傳遞至該統一記憶體。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/US19/67648 | 2019-12-19 | ||
PCT/US2019/067648 WO2021126225A1 (en) | 2019-12-19 | 2019-12-19 | Hardware circuit for accelerating neural network computations |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202127326A true TW202127326A (zh) | 2021-07-16 |
Family
ID=69187951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109144706A TW202127326A (zh) | 2019-12-19 | 2020-12-17 | 用於加速神經網路計算的硬體電路 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20210326683A1 (zh) |
EP (1) | EP4014122A1 (zh) |
JP (1) | JP2023508812A (zh) |
KR (1) | KR20220045026A (zh) |
CN (1) | CN114402337A (zh) |
TW (1) | TW202127326A (zh) |
WO (1) | WO2021126225A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210357748A1 (en) * | 2020-05-14 | 2021-11-18 | Samsung Electronics Co., Ltd. | Hierarchical weight preprocessing for neural network accelerator |
US11726746B1 (en) * | 2022-09-14 | 2023-08-15 | Moffett International Co., Limited | Vector operation acceleration with convolution computation unit |
WO2024065860A1 (en) * | 2022-10-01 | 2024-04-04 | Intel Corporation | Hardware support for n-dimensional matrix load and store instructions |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10891538B2 (en) * | 2016-08-11 | 2021-01-12 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US11436483B2 (en) * | 2018-01-17 | 2022-09-06 | Mediatek Inc. | Neural network engine with tile-based execution |
-
2019
- 2019-12-19 KR KR1020227008209A patent/KR20220045026A/ko unknown
- 2019-12-19 CN CN201980100413.8A patent/CN114402337A/zh active Pending
- 2019-12-19 JP JP2022517255A patent/JP2023508812A/ja active Pending
- 2019-12-19 WO PCT/US2019/067648 patent/WO2021126225A1/en unknown
- 2019-12-19 US US16/973,087 patent/US20210326683A1/en active Pending
- 2019-12-19 EP EP19842493.9A patent/EP4014122A1/en active Pending
-
2020
- 2020-12-17 TW TW109144706A patent/TW202127326A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2021126225A1 (en) | 2021-06-24 |
JP2023508812A (ja) | 2023-03-06 |
CN114402337A (zh) | 2022-04-26 |
EP4014122A1 (en) | 2022-06-22 |
KR20220045026A (ko) | 2022-04-12 |
US20210326683A1 (en) | 2021-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7158543B2 (ja) | ニューラルネットワーク命令セットアーキテクチャ | |
JP7451483B2 (ja) | ニューラルネットワーク計算タイル | |
CN108694694B (zh) | 用于使得能够进行可扩展分布式机器学习的抽象库 | |
TW202127326A (zh) | 用於加速神經網路計算的硬體電路 | |
US8400458B2 (en) | Method and system for blocking data on a GPU | |
US20190279038A1 (en) | Data flow graph node parallel update for machine learning | |
TW202132976A (zh) | 使用共享高速暫存記憶體之向量減少 | |
TW202125341A (zh) | 使用神經網路加速器處理順序輸入 | |
CN101021831A (zh) | 面向科学计算的64位流处理器芯片体系结构 | |
US11709783B1 (en) | Tensor data distribution using grid direct-memory access (DMA) controller | |
CN111886593A (zh) | 数据处理系统和数据处理方法 | |
KR20220116050A (ko) | 병렬 로드-저장을 이용하는 공유 스크래치패드 메모리 | |
EP3971787A1 (en) | Spatial tiling of compute arrays with shared control | |
US11704562B1 (en) | Architecture for virtual instructions | |
Borges | AlexNet deep neural network on a many core platform | |
US11977499B2 (en) | Streaming transfers and ordering model | |
US20230289398A1 (en) | Efficient Matrix Multiply and Add with a Group of Warps | |
CN118159986A (zh) | 基于硬件加速器优化组卷积的神经网络模型 | |
KR20240063137A (ko) | 하드웨어 가속기 최적화형 그룹 컨볼루션 기반 신경망 모델 | |
Kim et al. | Trinity: In-Database Near-Data Machine Learning Acceleration Platform for Advanced Data Analytics | |
TW202347145A (zh) | 在機器學習硬體加速器處利用資料稀疏性 | |
WO2023183015A1 (en) | Streaming transfers and ordering model |