TW202132976A - 使用共享高速暫存記憶體之向量減少 - Google Patents

使用共享高速暫存記憶體之向量減少 Download PDF

Info

Publication number
TW202132976A
TW202132976A TW109143078A TW109143078A TW202132976A TW 202132976 A TW202132976 A TW 202132976A TW 109143078 A TW109143078 A TW 109143078A TW 109143078 A TW109143078 A TW 109143078A TW 202132976 A TW202132976 A TW 202132976A
Authority
TW
Taiwan
Prior art keywords
vector
memory
processor core
shared memory
value
Prior art date
Application number
TW109143078A
Other languages
English (en)
Inventor
湯瑪士 諾里
格魯尚卡 瑞賈曼尼
安德魯 艾佛列特 菲而普斯
馬修 勒沃 赫德
諾曼 保羅 約皮
Original Assignee
美商谷歌有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商谷歌有限責任公司 filed Critical 美商谷歌有限責任公司
Publication of TW202132976A publication Critical patent/TW202132976A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本發明描述用於使用一硬體電路之一共享高速暫存記憶體來執行向量減少之方法、系統及設備,包含電腦可讀媒體,該硬體電路具有與該共享記憶體通信之處理器核心。針對該等處理器核心之各者,基於在該處理器核心處執行之計算產生一各自值向量。該共享記憶體使用該共享記憶體之一直接記憶體存取(DMA)資料路徑自該等處理器核心之各自資源接收該等各自值向量。該共享記憶體使用耦合至該共享記憶體之一運算符單元來對該等各自值向量執行一累加運算。該運算符單元經組態以基於在該運算符單元處編碼之算術運算來累加值。基於使用該等各自值向量執行該累加運算而產生一結果向量。

Description

使用共享高速暫存記憶體之向量減少
本說明書大體上係關於用於執行神經網路計算(neural network computation)之一硬體電路之電路。
神經網路係採用一或多個節點層來針對一經接收輸入產生一輸出(例如,一分類)之機器學習模型。除一輸出層之外,一些神經網路亦包含一或多個隱藏層。各隱藏層之輸出被用作至網路中之一或多個其他層(例如,網路之其他隱藏層或輸出層)之輸入。網路之一些層根據一各自參數集合之當前值自一經接收輸入產生一輸出。一些神經網路可為經組態用於影像處理之迴旋神經網路(convolutional neural network) (CNN)或經組態用於語音及語言處理之遞迴神經網路(RNN)。不同類型之神經網路架構可用於執行與分類或圖案辨識、涉及資料模型化之預測及資訊叢集化有關之多種任務。
一CNN之一神經網路層可具有一相關聯組內核(kernel),該組內核可對應於參數或權重。該相關聯組內核用於透過神經網路層處理輸入(例如,一批次輸入)以產生該層之一對應輸出以用於計算(computing)一神經網路推理。一批次輸入及一組內核可被表示為輸入及權重之一張量,即,一多維陣列。實施一神經網路之一硬體電路包含具有由一位址值識別之位置之記憶體。記憶體位置可對應於一張量之元素,且可使用電路之控制邏輯來遍歷或存取張量元素。例如,控制邏輯可判定或計算一元素之一記憶體位址值以載入或儲存該元素之對應資料值。
本文件描述用於在一大型共享高速暫存記憶體處執行資料累加(data accumulation)及向量減少之技術。特定言之,該等技術用於減少執行一向量減少所需之總體運算(operation)量,該向量減少涉及減少作為在一計算系統(computing system)之各自處理器核心處發生之計算之一結果而產生的值或輸出。例如,系統包含一硬體電路,該硬體電路可具有多個處理器核心以及併有一靜態隨機存取記憶體(SRAM)之記憶體資源之一架構。SRAM之記憶體資源經分配用於在電路之多個各自處理器核心間共享。
在計算系統中發生之計算集可分佈在一或多個硬體電路之各自核心當中以產生各自值向量。共享記憶體使用共享記憶體之一直接記憶體存取(DMA)資料路徑自處理器核心之各自資源接收各自值向量。共享記憶體使用耦合至共享記憶體之一運算符單元(operator unit)來對各自值向量執行一累加運算。運算符單元經組態以基於在運算符單元處編碼之算術運算來累加值。基於該累加運算產生一結果向量。
本說明書中所描述之標的物之一個態樣可體現在一種使用一硬體電路執行之方法中,該硬體電路具有一共享記憶體及與該共享記憶體通信之多個處理器核心。該方法包含:基於在一第一處理器核心處執行之計算產生一第一值向量;藉由該共享記憶體且使用該共享記憶體之一直接記憶體存取(DMA)資料路徑自該第一處理器核心接收該第一值向量;及在該共享記憶體處執行該第一值向量與儲存於該共享記憶體中之一向量之間的一累加運算。使用一運算符單元來執行該累加運算,該運算符單元:i)耦合至該共享記憶體,及ii)經組態以累加多個向量。該方法包含基於該累加運算產生一結果向量。
此等及其他實施方案可各自視情況包含下列特徵之一或多者。例如,在一些實施方案中,自一第二處理器核心接收儲存於該共享記憶體中之該向量,且該方法包含:藉由該第一處理器核心執行一累加至記憶體(accumulate-to-memory)操作以在該共享記憶體之一記憶體位置處累加該第一值向量之各自值;及藉由該第二處理器核心執行一累加至記憶體操作以在該共享記憶體之該記憶體位置處累加一第二值向量之各自值,其中該第二值向量對應於儲存於該共享記憶體中之該向量。在一些情況中,第二處理器設定旗標(例如,一初始向量/值旗標)使得將該第二值向量之該等值寫入作為初始值,而該第一處理器核心設定一不同旗標(例如,一累加旗標)使得將該第一值向量之該等值與該第二值向量之該等值累加。
在一些實施方案中,基於該累加運算產生該結果向量包含:在該第一處理器核心未執行預先累加(pre-accumulating)由在該第一處理器核心處執行之計算產生之乘積之一步驟的情況下產生該結果向量;及在該第二處理器核心未執行預先累加由在該第二處理器核心處執行之計算產生之乘積之一步驟的情況下產生該結果向量。
在一些實施方案中,產生該結果向量包含:作為對該第一值向量執行該累加運算之一結果而產生累加值之一向量;將一激發函數(activation function)應用於累加值之該向量中之各值;及作為將該激發函數應用於累加值之該向量中之各值之一結果而產生該結果向量。該累加可發生在該第一向量之值上,或該累加可涉及該第一向量之值及儲存於共享記憶體中之該向量之該等值的成對累加。
在一些實施方案中,該第一處理器核心之一各自資源係一第一矩陣計算單元,且該方法進一步包含:基於使用該第一處理器核心之該第一矩陣計算單元執行之矩陣乘法來產生對應於該第一值向量之累加值之一第一向量。
在一些實施方案中,該第二處理器核心之一各自資源係一第二矩陣計算單元,且該方法進一步包含:基於使用該第二處理器核心之該第二矩陣計算單元執行之矩陣乘法來產生對應於該第二值向量之累加值之一第二向量。該硬體電路可為經組態以實施具有多個神經網路層之一神經網路之一硬體加速器;且該方法包含基於該結果向量針對該神經網路之一層產生一輸出。
該方法可進一步包含:基於在該第一處理器核心處執行之計算產生該第一值向量;及基於在該第二處理器核心處執行之計算產生該第二值向量。在該第一處理器核心處執行之該等計算及在該第二處理器核心處執行之該等計算可為由一交換性(commutative property)控管之一數學運算之部分。在一些實施方案中,該數學運算係:一浮點乘法運算;一浮點加法運算;一整數加法運算;或一最小-最大(min-max)運算。在一些實施方案中,該數學運算包含一浮點加法運算及一整數加法運算。該第一處理器核心及該第二處理器核心可為相同處理器核心。
在一些實施方案中,該共享記憶體經組態以用作一共享全域記憶體空間,其包含在該硬體電路之兩個或更多個處理器核心之間共享之記憶庫及暫存器。
此及其他態樣之其他實施方案包含經組態以執行編碼於電腦儲存裝置上之方法之動作的對應系統、設備及電腦程式。一或多個電腦之一系統可憑藉安裝於該系統上之在操作時引起該系統執行該等動作之軟體、韌體、硬體或其等之一組合來如此組態。一或多個電腦程式可憑藉具有在藉由一資料處理設備執行時引起該設備執行該等動作的指令而如此組態。
本說明書中所描述之標的物可在特定實施例中實施以實現以下優點之一或多者。
本文件中所描述之技術利用支援一DMA模式之一大型共享高速暫存記憶體之能力,該DMA模式以原子方式減少至共享記憶體位置中之傳入向量資料而非簡單覆寫資料。換言之,多個處理器核心或處理器可能同時執行更新相同共享記憶體位置之減少運算(reduction operation),使得宛如減少運算循序發生般計算所得減少值,即使該等運算涉及與相同記憶體位置相關聯之值。代替性地,若各處理器將簡單覆寫共享記憶體位置,則可無意間丟失由另一處理器寫入之一先前值(例如,對應於一丟失更新問題)。基於一控制迴路,系統可偵測到資料之一「原子」減少且允許以一種或另一種方式覆寫共享記憶體位置中之一值,以引起該記憶體位置保持(或儲存)減少運算之最終結果。在一些情況中,本說明書中所描述之各種技術可擴展至跨一系統存在之其他記憶體類型,包含晶片上記憶體及晶片外記憶體。
一運算符單元經耦合而緊靠共享記憶體以支援用於將向量值累加至一共享記憶體胞元/位置之多種算術運算。算術運算可基於任何減少運算符,諸如浮點原子加法、整數加法、最大值、最小值、最大池化(max pooling)及甚至乘法。經耦合而鄰近於共享記憶體之一運算符單元提供將共享資源及交換數學運算之軟體管理定址整合於一單一記憶體系統中之一優點。
該等技術包含在共享記憶體之一控制單元處實施之一讀取-修改-寫入控制迴路以追蹤未完成的操作,以確保原子性以及視需要暫緩或重新排序寫入訊務而確保不針對陳舊向量值累加向量值。讀取-修改-寫入控制迴路亦提供優於低效率替代途徑之一效能及能量改良,該等低效率替代途徑需要讀取儲存於一第一處理器核心處之向量資料,在相對於第一核心較遠之一計算單元處對經讀取向量值執行算術運算,且接著儲存回/寫回至第一處理器核心。在其中一系統具有一大型向量記憶體之情況中,此等低效率替代途徑可需要將資料跨晶片移動一顯著距離。此等途徑導致處理器核心中之不必要的計算循環消耗及往返於核心之導線上之頻寬。此等低效率亦產生一更深計算排程且不必要地消耗暫存器頻寬。
該等技術包含一累加至記憶體特徵,該特徵部分基於在一處理器核心處產生且結合共享記憶體之DMA路徑使用之一累加旗標。該特徵容許兩個或更多個處理器核心直接在共享記憶體系統中之一共享記憶體位置中累加向量。藉由容許來自多個核心之DMA同時以相同記憶體區段及位址為目標,而無需外部同步或軟體鎖定以調停核心間之操作,該特徵可在一多節點系統中尤其有用。例如,此可有助於將共享記憶體胞元組態為跨多個晶片之一全減少(all-reduce)緩衝器或處理器核心之一分佈式系統。
一些實施方案係關於用於使用一硬體電路之一共享高速暫存記憶體來執行向量減少之方法、系統及設備,包含電腦可讀媒體,該硬體電路具有與該共享記憶體通信之處理器核心。針對該等處理器核心之各者,基於在該處理器核心處執行之計算產生一各自值向量。該共享記憶體使用該共享記憶體之一直接記憶體存取(DMA)資料路徑自該等處理器核心之各自資源接收該等各自值向量。該共享記憶體使用耦合至該共享記憶體之一運算符單元來對該等各自值向量執行一累加運算。該運算符單元經組態以基於在該運算符單元處編碼之算術運算來累加值。基於該累加運算產生一結果向量。
在下文隨附圖式及描述中闡述本說明書中所描述之標的物之一或多個實施方案之細節。自描述、圖式及發明申請專利範圍將明白標的物之其他可能特徵、態樣及優點。
減少運算通常在利用線性代數之計算期間使用,諸如涉及人工神經網路之運算之計算密集型工作負載。例如,在一神經網路之訓練期間,可需要一減少運算以平均化跨一分佈式系統之不同處理節點計算之梯度值。減少運算可諸如針對一全減少運算以一分佈式方式發生,或針對一給定計算在本地發生,諸如一矩陣乘法方塊(tile)求和運算。
效能及功率問題可為在一計算系統處有效率地建立及執行此等運算之重要因素。通常,減少運算需要透過一系統(例如,一分佈式系統)之一記憶體階層將資料拉入至一處理器(或處理器核心)之算術邏輯單元(ALU)中,對所拉取資料執行數學/減少,且接著透過記憶體系統將結果寫回。然而,在一系統中實施此各種步驟在效能及功率兩者方面係昂貴的。另外,在對多個處理器核心可見之一記憶體中,跨核心執行減少運算通常需要同步及/或保留非重疊記憶體區中之資源,此可增加顯著的效能及容量額外耗用以及程式化複雜性。
基於前述內容背景,本說明書描述用於藉由在一大型共享高速暫存記憶體之一或多個記憶體位址位置處累加值向量而執行向量減少之資料處理技術。基於用於寫入(儲存)計算結果之記憶體位置之軟體管理定址而非通常用於硬體管理快取記憶體系統之定址方案來在共享高速暫存記憶體處執行向量減少及累加。共享記憶體包含諸如跨處理器核心之一分佈式系統共享之記憶體胞元之資源。所描述技術包含用於在處理值向量時實施一累加減少步驟(例如,用於向量減少)之一累加至記憶體功能。例如,可跨對不同組輸入執行之矩陣乘法實施累加減少步驟,透過一神經網路之一層處理該等不同組輸入以針對該層產生一輸出。
使用相對於先前設計改良之一硬體電路之一架構來實施資料處理技術(包含共享高速暫存記憶體)。硬體電路可為一專用處理器,諸如一神經網路處理器、一特定應用積體電路(ASIC)或一硬體加速器。硬體電路經組態以實施包含多個神經網路層之一神經網路。本文件中所描述之經改良架構及資料處理技術容許表示硬體加速器之電路實現速度及頻寬之增加以更好地加速計算。
計算可為特定類型之算術運算,諸如浮點乘法、浮點加法或整數加法運算。計算亦可包含於一例示性神經網路模型之操作當中,該等操作經執行以計算一推理或訓練模型。在一些實例中,計算用於透過一CNN或RNN之層處理輸入以產生對應於一神經網路推理之輸出,或用於計算關於CNN或RNN之參數之梯度以在訓練期間更新神經網路之參數。
數學運算係藉由一交換性控管且可涉及原子減少(例如,原子浮點減少)。原子減少被處理為累加或向量減少步驟,其中將值向量直接累加至共享記憶體之一記憶體位置(或儲存於其中之一向量)中,而無需同步提供需要累加之向量之核心之間的活動。換言之,一硬體電路之兩個或更多個核心可以任何任意順序將值累加至一共享記憶體胞元之一中央位址位置中,使得一最終結果向量提供累加之一正確數學結果。在一個實例中,累加涉及由一第一核心提供之一第一向量之值至由一第二核心提供之一第二向量之值的成對累加。
圖1係包含一例示性硬體電路101之一計算系統100之一方塊圖。如上文所提及,硬體電路101可表示一硬體加速器或某一其他專用處理器。在一些情況中,系統100係用於加速與人工深度神經網路(DNN) (諸如RNN或CNN)相關聯之張量或神經網路計算之一例示性計算系統。例如,系統100經組態以在一例示性硬體加速器上實施一CNN,且將資料值傳遞至硬體加速器以產生用於計算一推理之輸出。在一些實施方案中,系統100係一系統單晶片。例如,系統單晶片可包含硬體電路101及在本文件中被描述為包含於系統100中之一些(或全部)其他組件及裝置。
硬體電路101可為經組態以加速一神經網路模型之執行(execution及/或performance)之一硬體加速器。例如,神經網路模型之執行可相對於一例示性通用機器(諸如一中央處理單元(CPU))上之模型之執行加速。類似地,神經網路模型之執行(performance及execution)可相對於另一硬體加速器(諸如一圖形處理單元(GPU),其不具有本說明書中所描述之經改良硬體特徵及技術)上之模型之實施加速。
系統100 (包含電路101)包含一系統記憶體102及一共享記憶體104。系統記憶體102可表示與硬體電路101之一處理器核心105-1、105-2交換資料通信之一高頻寬記憶體(「HBM 102」)或一輸入/輸出(I/O)裝置。資料通信一般可包含將資料值寫入至定位於一特定處理器核心105-1、105-2中之一向量記憶體106、108,或自特定處理器核心之向量記憶體106、108讀取資料。例如,HBM 102可與處理器核心105-1交換資料通信,以將輸入傳遞至核心且接收由核心之一或多個計算資源產生之輸出。
資料值可表示向量元素或向量值之陣列。例如,一第一向量陣列可表示待透過一神經網路層處理之一批次輸入,而一第二向量陣列可表示該層之一組權重。相關地,一第三向量陣列可表示對應於在處理器核心105-1處產生之一輸出之累加值之一向量,而一第四向量陣列可表示激發值之一向量,該等激發值表示在處理器核心105-2處產生之一輸出。
HBM 102可為系統100之動態隨機存取記憶體(DRAM)資產。在一些實施方案中,HBM 102係相對於電路101之一外部或晶片外記憶體,且經組態以與系統100之晶片上向量記憶庫(下文描述)交換資料通信。例如,HBM 102可放置於在表示電路101之一積體電路晶粒外部之一實體位置處。因此,HBM 102可相對於定位於積體電路晶粒內之計算資源遙遠或非本地。替代地,HBM 102或其資源之部分可安置於表示電路101之積體電路晶粒內,使得HBM 102在電路之計算資源本地或與該等計算資源共置。
系統100可包含一或多個處理器核心105-1、105-2。在一些實施方案中,系統100包含多個處理器核心105-n ,其中n係大於或等於1之一整數。在圖1以及下文描述之圖2及圖3之實例中,系統100被展示為包含兩個處理器核心;然而,系統100 (包含本文中所描述之硬體電路101)可具有更多或更少處理器核心。一般而言,一處理器核心105-n 係系統100 (或硬體電路101)之一離散自含型處理/計算單元。
各處理器核心105經組態以獨立地執行一多層神經網路之一或多個層所需之計算(例如,神經網路計算)。可需要計算來處理一機器學習工作負載之資料或執行工作負載之特定任務。在一處理器核心處執行以透過一或多個神經網路層處理輸入的計算可包含一第一組資料值(例如,輸入或激發)與一第二組資料值(例如,權重)之一相乘。例如,計算可包含在一或多個循環內將一輸入或激發值與一權重值相乘及執行許多循環內之乘積之一累加。
第一及第二組資料值中之不同值儲存於硬體電路101之一處理器核心中之一記憶體構造之特定記憶體位置處。在一些實施方案中,第一組資料值中之個別值可對應於一輸入張量之各自元素,而第二組資料值中之個別值可對應於一權重(或參數)張量之各自元素。作為一實例,一序列層中之一神經網路層可處理一組輸入,諸如由該序列層中之另一神經網路層產生之影像像素資料輸入或激發值。
該組輸入或該組激發值可被表示為具有沿著其各自維度之多個元素之一維(1D)或多維張量(例如,2D或3D)。儲存一資料值之記憶體位置之各者可映射至一單維或多維張量之一對應元素,且可使用電路之控制邏輯來遍歷或存取張量元素。例如,控制邏輯可判定或計算映射至一元素之一記憶體位址值以載入或儲存該元素之對應資料值。
硬體電路101具有包含不同記憶體構造之一專用記憶體階層。此等記憶體構造之各者具有相對於其他構造之變化頻寬及延時性質,且亦可在其等在硬體電路101內之實體放置方面變化。例示性記憶體構造包含共享記憶體104、向量記憶體106、108及向量暫存器110、112。一般而言,記憶體構造可操作以儲存待在一神經網路層處處理之資料值(諸如與輸入、激發或增益值有關之向量值)及回應於透過一神經網路層處理輸入或激發而由該層產生之輸出激發。下文參考圖2及圖3更詳細描述輸出激發之產生及儲存以及用於執行此等操作之各種記憶體構造。
圖2係展示如何在硬體電路101處配置共享記憶體104之資源或區段以促進硬體電路之各種組件之間之資料通信的實例之一方塊圖200。如上文所指示,共享記憶體104為系統100之經改良硬體架構及資料處理技術提供一基礎。共享記憶體104係相對於一些其他神經網路處理器晶片之晶片上記憶體之一較大晶片上SRAM。在一些實施方案中,共享記憶體104可被描述為在HBM 102與一對應處理器核心105-1、105-2之一各自向量記憶體106、108之間(例如,邏輯上或實體上在其等之間)。例如,利用共享記憶體104在HBM 102與向量記憶體106、108之間移動資料之一操作將涉及資料遍歷共享記憶體104之一共享資源。
共享記憶體104可表示晶片或電路101上之一共享中央空間。例如,共享記憶體104經組態以用作一共享全域記憶體空間,其包含對應於在可存在於系統100中及/或包含於硬體電路101處之多個處理器核心當中之一或多個處理器核心105-1、105-2之間共享之記憶庫及暫存器的記憶體資源。如下文更詳細描述,共享記憶體104經組態以用作一軟體控制高速暫存區(scratchpad) (例如,類似於一例示性向量)。在一些實施方案中,共享記憶體104之一些(或全部)資源經組態以用作一軟體控制高速暫存區(暫存資源(staging resource))而非一硬體管理快取區。
系統100經組態以將至少兩個程式化介面曝露給一使用者以利用由共享記憶體104提供之資料傳送功能。一第一介面曝露可程式化DMA資料傳送功能及操作,而一第二不同介面曝露可程式化載入/儲存資料傳送功能及操作。此等介面功能之各者可表示下文更詳細描述之共享記憶體104之邏輯屬性。
如上文所提及,系統100之記憶體構造具有變化頻寬及延時性質。例如,共享記憶體104可與HBM 102之DRAM存取相比具有更高頻寬及更低延時,但與對向量記憶體106、108之存取相比具有更低頻寬及更高延時。在一些實例中,共享記憶體104與HBM 102之DRAM資產相比具有一更低資料容量,但與處理器核心之各自向量記憶體相比具有一更高資料容量。一般而言,此等變化頻寬及延時性質表示標準記憶體階層權衡。
系統100 (特定言之共享記憶體104)之記憶體構造亦可在其等在硬體電路101內之實體放置方面變化。共享記憶體104包含諸如可相對於處理器核心105-1、105-2之特定計算資源之放置實體地且邏輯地配置之記憶庫及暫存器的資源。在此內容背景中,共享記憶體104可大體上參考其實體結構及其邏輯結構來特性化。首先將論述共享記憶體104之實體結構,而在下文描述其邏輯結構。
關於其實體結構,共享記憶體104之資源可實體地分佈在對應於硬體電路101之一專用或神經網路處理器晶片上。例如,形成共享記憶體104之資源之不同子集、部分或區段可實體地分佈在電路101之各種位置處,以能夠在系統100處實施不同類型之資料傳送操作及處理技術。在一些實施方案中,共享記憶體104之資源之一個區段可駐留在電路101之一處理器核心內部,而資源之另一區段可駐留在電路101之一處理器核心外部。在圖2之實例中,共享記憶體104之一區段在處理器核心105-1、105-2之各者外部,以實現在HBM 102之記憶體位置與共享記憶體104之記憶體位置之間移動大資料區塊的DMA操作。
再次簡略參考HBM 102,此類型之系統記憶體可為由系統100使用以提供及/或與各自處理器核心之向量記憶體交換高頻寬資料的一外部記憶體結構。在一些實施方案中,HBM 102經組態用於多種直接記憶體存取(DMA)操作,以自電路101之處理器核心中之向量記憶體之記憶體位址位置獲得資料或將資料提供至該等記憶體位址位置。更明確言之,涉及HBM 102與向量記憶體106、108交換資料之DMA操作係藉由共享記憶體104之一例示性控制方案及記憶體資源來實現。
在圖2及圖3 (下文描述)之實例中,共享記憶體104包含一共享記憶體控制單元201 (「控制單元201」)。控制單元201經組態以產生用於控制涉及HBM 102、共享記憶體104、向量記憶體106、108及向量暫存器110、112之各者之記憶體存取操作的控制信號114。
控制單元201實施跨系統100之不同記憶體(例如,HBM 102、共享記憶體104、向量記憶體106、108及向量暫存器110、112)分佈之一控制方案。在一些實施方案中,此控制方案係基於控制單元201與各記憶體之一各自控制單元之間的通信而跨不同記憶體分佈。例如,控制方案可基於由控制單元201提供之控制信號而跨記憶體分佈,該等控制信號藉由此等不同記憶體之各自控制單元在本地處理。資料路徑之共享可用於在HBM 102與處理器核心105-1、105-2之各自向量記憶體之間移動資料。當此發生時,系統100引起啟動一給定記憶體或資料路徑之任何(及全部)所需控制單元以管理需要在適當觸點(touch point)處發生之資料交遞。
控制單元201經組態以執行軟體指令且產生控制信號,該等控制信號引起共享記憶體104之記憶體資源之一第一部分用作一DMA記憶體單元。資源之第一部分可藉由參考處理器核心105-1之共享核心資料路徑204及參考處理器核心105-2之共享記憶體資料路徑224表示。此代表性DMA記憶體單元可操作以基於由控制單元201產生之控制信號來在HBM 102與第一處理器核心105-1及第二處理器核心105-2之各者之間移動資料。
例如,可產生控制信號以執行一DMA操作,以在以下之間移動資料區塊(例如,一向量):a)使用資料路徑202、共享核心資料路徑204或資料路徑206在共享記憶體104與向量記憶體106之記憶體位置之間;及b)使用資料路徑222、共享核心資料路徑224或資料路徑226在共享記憶體104與向量記憶體108之記憶體位置之間。在一些實施方案中,共享記憶體104可被替代地稱為共享CMEM 104。
如本文件中所使用,CMEM大體上對應於提供如資料緩衝器及晶片上SRAM儲存器之有用組態之實體連續記憶體(CMEM)的區塊。如下文更詳細描述,在系統100中,CMEM資源區塊實體地分佈在硬體電路101處,且經配置用於在可組態為一硬體加速器或其他類型之專用處理器之處理器核心之組件之間共享。共享核心資料路徑204及224之各者係例示性節點,其等可指示可發生在共享資料路徑上之一靜態競爭以用於在系統中跨越此等點移動向量資料。
如圖2之實例中所展示,圖1中所展示之硬體電路101及系統100經組態以包含多個載入儲存資料路徑202、206、多個CMEM載入資料路徑208、214、228、234及多個CMEM儲存資料路徑215、235。硬體電路101及系統100亦包含多個共享暫存區塊210、230 (下文描述)。在圖2之實例中,資料路徑202、222之各者可組態為用於回應於執行一DMA操作而路由資料(例如,向量或純量值)之一資料路徑,用於回應於執行一CMEM載入/儲存操作而路由資料之一資料路徑,或兩者。由共享記憶體104支援之DMA操作及資料路徑202、206、222及226可用於參考特定記憶體偏移及步幅參數來在不同記憶體結構之間移動資料。
例如,系統100經組態以使用共享記憶體104來執行一DMA操作,該DMA操作涉及將1百萬位元組之資料自一組記憶體位置移動或複製至另一組記憶體位置且具有偏移0x04。共享記憶體104及系統100可操作以支援執行DMA操作時之各種步幅功能。例如,用於移動1百萬位元組之資料之DMA操作可包含一步幅操作以相對於一基本記憶體位置之基址(address base)或位址值每200千位元組***位址間隔。
在一些實施方案中,步幅操作用於基於一所要讀取序列***位址間隔,稍後將執行該所要讀取序列以在將1百萬位元組之資料移動至其目的地位置之後讀取該資料。例如,可基於一步幅操作來儲存1百萬位元組之資料區塊,該步幅操作對應於將如何讀取或擷取資料用於在一神經網路之不同層處或跨一特定神經網路層之不同組濾波器或權重進行處理。
共享記憶體104之控制單元201亦經組態以引起執行各種載入儲存操作。例如,控制單元201產生控制信號以執行在以下之間移動各種數量之資料(例如,向量或向量值)之載入儲存操作:a)使用資料路徑202、共享核心資料路徑204或資料路徑208在共享記憶體104之記憶體位置與共享暫存區塊210之記憶體位置之間(針對核心105-1處之一載入操作);及b)使用資料路徑222、共享核心資料路徑224或資料路徑228在共享記憶體104之記憶體位置與共享暫存區塊230之記憶體位置之間(針對核心105-2處之載入操作)。
類似地,可產生控制信號以執行在以下之間移動各種數量之資料(例如,向量或向量值)之載入儲存操作:a)使用資料路徑202、共享核心資料路徑204或資料路徑215在共享記憶體104與向量暫存器110之記憶體位置之間(針對核心105-1處之一儲存操作);及b)使用資料路徑222、共享核心資料路徑224或資料路徑235在共享記憶體104與向量暫存器112之記憶體位置之間(針對核心105-2處之儲存操作)。
現在提及共享記憶體104之邏輯結構,如上文所提及,系統100經組態以將至少兩個程式化介面曝露給一使用者以利用由共享記憶體104提供之資料傳送功能。至少一個介面曝露可程式化DMA功能且另一介面曝露可程式化CMEM載入/儲存功能,其中各者可表示共享記憶體104之邏輯屬性。針對載入/儲存目的,共享記憶體104邏輯上曝露為向量記憶體106、108之一平行記憶體。以此方式,各載入儲存資料路徑可操作以提供用於透過記憶體系統(諸如透過各自處理器核心105-1、105-2或電路101之多個核心之向量暫存器)移動資料區塊或一特定筆資料移動的一額外(或平行)資料路徑。例如,可與DMA操作同時針對共享記憶體104之記憶體資源執行載入儲存操作。
更明確言之,可執行一DMA操作以使用DMA資料路徑206在共享記憶體104與向量記憶體106之記憶體位置之間移動一值向量,而與DMA操作同時執行一載入儲存操作,以在共享記憶體104與共享暫存區塊210之記憶體位置之間移動一不同值向量。使用對應於處理器核心105-1之資源之處理器核心105-2的資源,類似同時操作可發生在處理器核心105-2 (或其他核心)中。
相對於DMA操作,使用共享記憶體104之CMEM資源執行之載入/儲存操作可表示共享記憶體104之高效能功能或使用共享記憶體104之一高效能方法。在一些實施方案中,控制單元201經組態以執行軟體指令且產生控制信號,該等控制信號引起共享記憶體104之記憶體資源之一第二部分用作用於執行載入/儲存操作之一軟體控制暫存資源。
資源之第二部分可藉由參考處理器核心105-1之共享暫存區塊210及參考處理器核心105-2之共享暫存區塊230表示。因此,共享暫存區塊210、230之各者可表示由共享記憶體104之記憶體資源之一子集形成之一軟體控制暫存資源(或高速暫存區)。在一些實例中,系統100之軟體控制暫存資源經組態以管理自HBM 102至第一處理器核心105-1或第二處理器核心105-2之各自向量暫存器110或112之向量資料值流。
共享記憶體104及其資源具有可獨有地組態為例如用於在諸如HBM 102或向量記憶體106、108之記憶體構造之間移動資料之一DMA記憶體,而且可組態為用於將資料直接移動至各處理器核心105-1、105-2上之各自向量暫存器110、112中之一載入/儲存記憶體的一性質。共享記憶體104之此等可組態態樣容許藉由在核心上運行之軟體以精細粒度排程其資源及定址。例如,共享記憶體104可為一軟體管理(非硬體管理) SRAM資源,其中一處理器核心之一編譯器特定地管理其記憶體之定址,包含可存在於或可不存在於共享記憶體104之記憶體位址位置處之資料類型。
在一些實施方案中,共享記憶體104之軟體控制暫存資源經組態以作為沿著處理器核心之載入儲存資料路徑之一載入區段的一先進先出(FIFO)記憶體結構(例如,共享暫存區塊210或230),該處理器核心包含用於路由資料以儲存於共享CMEM 203或HBM 102處之CMEM儲存資料路徑215或235。FIFO記憶體結構經組態以在將一組資料值路由至第一處理器核心105-1或第二處理器核心105-2之各自向量暫存器110、112之前,暫時儲存該組值達臨限數目個處理器循環。FIFO記憶體結構用於緩解可能由具有一特定載入延時之一CMEM載入操作導致之暫存器壓力及排程複雜性。
在一些實施方案中,基於一例示性高延時(例如,50個循環) CMEM載入操作來判定時脈循環之臨限數目,該例示性高延時CMEM載入操作可能引起與保留一給定暫存器達整個50個循環相關聯之暫存器壓力及排程複雜性。為抵消或緩解關於暫存器壓力之問題,使用共享記憶體104之資源在硬體電路100處實體地例示一CMEM結果FIFO (「CRF」)。在圖2之實例中,一第一CRF藉由處理器核心105-1之暫存區塊210表示,而一第二CRF藉由暫存區塊230表示。CRF之各者容許將一例示性CMEM載入操作分為至少兩個階段:i) CMEM至CRF階段,其中提供CMEM位址資訊;及ii) CRF至暫存器階段,其中提供向量暫存器目標。
例如,共享暫存區塊210、230之各者經組態以接收資料值(例如,純量或向量值),且暫時儲存資料值達臨限數目個處理器循環。在處理器核心105-1中,資料值沿著將暫存區塊210連接至共享記憶體104之其他記憶體位置之載入資料路徑208 (及共享核心資料路徑204)路由至共享暫存區塊210。在處理器核心105-2中,資料值沿著將暫存區塊230連接至共享記憶體104之其他記憶體位置之載入資料路徑228 (及共享核心資料路徑224)路由至共享暫存區塊230。
共享暫存區塊210經組態以回應於暫時儲存資料值達臨限數目個處理器循環而將資料值提供至處理器核心105-1之向量暫存器110。同樣地,共享暫存區塊230經組態以回應於暫時儲存資料值達臨限數目個處理器循環而將資料值提供至處理器核心105-2之向量暫存器112。
系統100經組態以在相同循環內發出多個CMEM載入指令。例如,系統100可發出使用資料路徑208 (或214)及共享暫存區塊210執行之一CMEM載入指令,且在相同循環內發出使用資料路徑212執行之至向量記憶體106之一載入。在一些實例中,從軟體控制之觀點來看,遍歷資源210與向量暫存器110之間之資料路徑214的一Cmem載入操作及遍歷向量記憶體106與向量暫存器110之間之資料路徑212的一Vmem載入操作可各自在相同循環內發出及執行。在一些實施方案中,相對於一先前設計調適向量暫存器110、112以包含容許向量暫存器110、112接收同時載入操作之額外埠。
例如,向量暫存器112經組態以包含容許暫存器在於處理器核心105-2處執行之同時載入操作期間自向量記憶體108及共享暫存區塊230接收各自向量酬載的額外埠。在一些實例中,載入至向量暫存器110、112之各者之一酬載之一單筆資料涉及基於可在一單一載入操作期間移動至向量暫存器110或向量暫存器112之多達128個資料項的128次離散載入。
共享記憶體104之CMEM載入/儲存功能性可提供相對於先前設計較高之峰值效能,此係因為其不需要透過向量記憶體巨集路由資料。例如,部分歸因於向量暫存器110、112處之額外可用暫存器埠,載入及儲存(沿著資料路徑215、235)可與向量記憶體載入及儲存並行執行。
在一些實施方案中,系統100包含一例示性載入儲存介面,該載入儲存介面將一平行介面提供至共享暫存區塊210、230之各者中,以繞過在透過向量記憶體106、108遍歷資料路徑時可存在之一些(或全部)頻寬限制。此例示性載入儲存介面可有效地提供容許自一例示性工作負載提取額外效能之較高記憶體頻寬。例如,系統100經組態以使用共享記憶體104之資源(例如,軟體控制暫存資源)執行各種載入/儲存操作,其中可執行載入/儲存操作以繞過透過一處理器核心處之向量記憶體移動資料。
例如,硬體電路101之一組件可與共享記憶體104通信,以自共享記憶體104之一記憶庫或暫存器檔案之一單一位址位置讀取資料。在一些實例中,讀取儲存於記憶體中之一單一位址處之資料且可將該單筆資料移動至定位於一處理器核心內部之一暫存器檔案或暫存區塊中。例如,可自共享CMEM 104之一位址位置讀取一單筆資料,透過共享核心資料路徑224移動該資料,且將其移動至處理器核心105-2中之共享暫存區塊230之一位址位置中以進行進一步處理。可執行該操作以繞過透過記憶體系統經由向量記憶體108移動資料,藉此節省核心105-2處之處理器時脈循環及連接至向量記憶體108之資料路徑處之頻寬。
圖3係展示與硬體電路101之一矩陣計算單元通信之向量處理器之實例之一方塊圖300。更明確言之,在一些實施方案中,硬體電路101之一張量處理器核心302-1包含一向量處理單元304 (「向量處理器304」)及耦合至向量處理器304之一矩陣計算單元308。類似地,硬體電路101之另一張量處理器核心302-2包含一向量處理器306及耦合至向量處理器306之一矩陣計算單元310。因此,矩陣計算單元308、310係處理器核心302-1、302-2之各自資源。
一般而言,硬體電路101經組態以執行計算以針對一神經網路層產生一輸出。包含於電路101處之矩陣計算單元308及310之各者經組態以執行計算之一子集以產生用於針對神經網路層產生輸出之累加值。在一些實施方案中,上文所描述之軟體控制暫存資源(例如,暫存區塊210、230)經組態以管理自圖1中所展示之HBM 102至矩陣計算單元308、310之各者之資料流(諸如向量運算元)。在一些情況中,運算元係由HBM 102提供之輸入及權重。可基於使用向量處理器304或306之算術邏輯單元(ALU)執行之資料運算來將運算元結構化為向量陣列。
在圖3之實例中,控制單元201產生用於管理操作以自共享記憶體104、向量記憶體106、108及向量暫存器110、112之記憶體位置擷取(或讀取)多批次輸入及多組權重的控制信號。可透過一神經網路層處理經擷取輸入及權重以基於在矩陣計算單元308、310處執行之計算產生累加值。可在向量處理器304、306處處理累加值以產生對應於神經網路層之一輸出之激發值。
由控制單元201產生之控制信號用於將由向量處理器304、306產生之多組輸出或輸出激發儲存(或寫入)至HBM 102或硬體電路101之其他記憶體位置,以在一或多個其他神經網路層處進行處理。更明確言之,系統100經組態以實施用於執行向量減少之資料處理技術,該等向量減少包含在一大型共享高速暫存記憶體(諸如共享記憶體104)中之一或多個記憶體位址位置處累加值向量。如上文所提及,可基於共享記憶體104之記憶體胞元中之位置之軟體管理定址在共享高速暫存記憶體104處執行向量減少及累加。共享記憶體104之記憶體胞元中之位址位置可用於寫入(儲存)在系統100之不同組件處發生之計算之結果。
系統100包含耦合至(或可耦合至)共享記憶體104之一運算符/累加器單元320 (「運算符320」)。運算符320經組態以基於一或多個算術運算來累加值。可在運算符320處以軟體、韌體、硬體或各者之一組合來程式化或編碼算術運算。運算符320可表示計算邏輯之一緊湊部分,其緊密耦合至共享記憶體104之記憶體胞元以對路由至共享記憶體104之一共享記憶體胞元之向量值執行一累加運算。
在一些實施方案中,運算符320係包含用於實施各自經組態以對具有不同類型數值格式之值執行不同類型數學運算之不同類型之加法器(例如,一正規化加法器)及乘法器的一計算單元。例如,運算符320經組態以執行數學運算,諸如:浮點乘法;浮點加法;整數加法運算;及最小-最大運算。在一些其他實施方案中,運算符320作為共享記憶體104之一硬體特徵包含於系統100處。運算符320之一或多個算術運算或功能亦可在軟體以及硬體中實施。
運算符320可包含用於選擇一特定算術運算或用於在運算符處選擇經組態以執行一特定算術運算之電路的邏輯325。在一些實施方案中,基於值向量中之值之一或多個數值格式(例如,二補數整數及浮點)在共享記憶體104及/或硬體電路101處具現化運算符320。例如,一數值格式對應於用於表示向量之數字或數值之一資料格式。在一些實施方案中,運算符320包含用於一正規化單元、一池化單元或兩者之電路。
如上文所提及,所描述技術包含用於在處理值向量時實施一累加減少步驟(例如,用於向量減少)之一累加至記憶體功能。在圖3之實例中,處理器核心302-1、302-2之各者可產生一各自累加旗標330、335以引起共享記憶體104之控制單元201對一例示性值向量執行一累加至記憶體功能。可使用一DMA操作將值向量移動至共享記憶體104,該DMA操作使用例如資料路徑206或資料路徑226將向量移動至共享記憶體104。
圖4係展示一例示性累加管線400 (「管線400」)之一方塊圖。管線400展示在共享記憶體104之一共享記憶體胞元445中累加值向量之一例示性操作的例示性資料處理步驟。
諸如個別輸入及權重值之向量運算元可被表示為使用一處理器核心之一例示性矩陣單元之一乘法胞元相乘且接著儲存於核心之一向量記憶體中之張量值(402)。在一些實施方案中,向量運算元之輸入對應於一輸入矩陣或輸入張量之分區。例如,可將一輸入張量分割為兩個區段,且可將來自各區段之不同各自維度之輸入值發送至一特定處理器核心用於與一權重值相乘以產生輸出值。下文參考圖5更詳細描述輸入張量以及權重張量及輸出張量。
一最終結果向量450可基於表示使用輸入矩陣/張量之輸入之各者針對一神經網路之一層計算之一輸出的一最終組輸出值。因此,即使可分割輸入張量之資料/輸入值以在不同處理器核心處進行處理,產生一正確的且準確的最終結果向量450實際上仍取決於由各自核心產生之至少兩個不同組輸出值之正確且準確累加。例如,由各自核心產生之不同組輸出值需要加總或累加在一起以產生正確最終結果向量450。
在圖4之實例中,各自處理器核心被指示為核心0 (core_0) (例如,處理器核心302-1)及核心1 (例如,處理器核心302-2)。可回應於由各處理器核心之各自矩陣單元(例如,矩陣308或310)執行之矩陣乘法而產生多個輸出值。在一些實施方案中,輸出值在被發送至共享記憶體104以進行一累加運算之前儲存於執行矩陣乘法之處理器核心之一向量記憶體中。可基於兩個處理器核心彙總指派給其等之其等各自一半計算來獲得最終結果向量450。在一些實施方案中,彙總以獲得一最終結果向量對應於一「預先累加運算」。
累加向量值之先前途徑需要一個核心將其結果移動至另一核心。此等途徑需要額外處理器循環、記憶體資源、計算頻寬及特定軟體控制以在一系統之不同核心之間移動不同組結果值。本說明書之累加減少技術使此等彙總能夠基於可在共享記憶體104中原生地執行之累加功能在共享記憶體系統中發生。
處理器核心之各者可產生一各自累加旗標330、335以引起共享記憶體104之控制單元201對一例示性值向量執行一累加至記憶體功能(404)。可使用如上文所描述之一DMA操作來將在各處理器核心105處產生之值向量移動至共享記憶體104。可經由系統100之一可程式化DMA資料傳送功能來執行用於在共享高速暫存記憶體104之一共享記憶體胞元或位址位置處累加值向量的技術。例如,可操作以將資料移動至共享記憶體104之一記憶體胞元中之任何DMA操作可使用本文件中所描述之累加技術。以此方式,在圖2及圖3之實例中,核心0及核心1之各者皆可將向量值累加至共享記憶體104之一特定共享記憶體胞元之相同位址位置中。在一個實例中,累加涉及由核心0提供之一第一向量之一值與由核心1提供之一第二向量之一對應值的成對累加。
在一些實施方案中,系統100經組態以在共享記憶體104之一載入/儲存使用模式中而非使用共享記憶體之DMA模式來提供一大向量「儲存累加」。例如,多個處理器核心之間之一共享載入/儲存記憶體層可用於實施「儲存累加」功能,此消除處理器核心之間之一些(或全部)同步之需求。在一些實施方案中,用於實施儲存累加功能之多個處理器核心之間的共享載入/儲存記憶體層至少包含上文關於圖2描述之資料路徑212、232。
共享記憶體104及控制單元201使用運算符320來對各自值向量執行累加運算(406)。例如,控制單元201跨對不同組輸入執行之矩陣乘法實施累加減少步驟,透過一神經網路之一層處理該等不同組輸入以針對該層產生一輸出。在一些實施方案中,值向量可為作為上文所描述之矩陣乘法之一結果而產生之累加值之各自向量。
控制單元201經組態以遮蔽一或多個向量元素以啟用或停用特定向量元素之累加,執行控制以管理不同向量之累加,且追蹤未完成的累加運算(408)。
關於遮蔽元素,系統100可包含諸如各自包含一16B (16位元)寬之向量單元(例如,一向量處理器)之計算伺服器或相關聯硬體電路的機器。向量單元可經組態以對16位元寬之資料元素進行操作,但由硬體電路(或伺服器)之一資源產生之值向量可為僅9B寬之向量。在一些實施方案中,系統100對一或多個9元素寬之向量進行操作,其等之各者包含各自16位元之九個資料值。在此例項中,控制單元201可識別在共享記憶體104之一共享記憶體位置中累加之一值向量之資料結構。基於資料結構,控制單元201可判定待在共享位置中累加之值係相對於向量單元之16B寬向量組態之一9B寬向量。
控制單元201可執行一遮蔽功能430以引起運算符320在執行累加或減少時僅將算術運算應用於例如向量中之前九個欄位。例如,基於處理器核心302-1之一向量處理單元304之一組態,可將來自處理器核心302-1之用於將一向量累加至共享記憶體胞元445中之對共享記憶體104之一請求呈現為一16B寬向量。控制單元201經組態以判定所累加之值藉由16B寬向量之後半部分或由16B寬向量之前九個欄位表示之一9B寬向量表示。因此,系統100可操作以識別及選擇或以其他方式控制將把一向量中之哪些特定元素累加至共享記憶體胞元445中。
關於累加控制,控制單元201經組態以執行一讀取-修改-寫入控制435 (「控制435」)以控制及管理共享記憶體系統中之不同值向量之累加。控制435提供優於低效率替代途徑之一效能及能量改良,該等低效率替代途徑需要讀取一第一核心處之資料,在相對於第一核心較遠之一計算單元處對經讀取值執行數學運算,且接著儲存回/寫回至第一核心。
關於追蹤未完成的操作,控制單元201經組態以執行一操作追蹤器440,以追蹤用於在共享記憶體系統中累加不同值向量之未完成的請求及當前(佇列)操作。例如,控制單元201使用操作追蹤器440來追蹤請求將一值向量寫入至共享記憶體之一記憶體位置(諸如共享記憶體胞元445)之各寫入操作。在一些實施方案中,控制單元201基於伴隨來自一處理器核心之一寫入請求之累加旗標330、335來追蹤操作。累加旗標330、335指示待在共享記憶體104之一特定記憶體位置處將值向量寫入作為一初始值或與一現有值累加。
控制單元201將控制信號傳輸至運算符320以引起運算符320執行儲存於特定記憶體位址位置處之當前值與寫入至該共享記憶體位置之值向量之間的一累加運算。在一些實施方案中,來自一處理器核心之用於將一值向量寫入至共享記憶體胞元445之一請求需要至少兩個時脈循環以進行處理。因為處理寫入請求可需要至少兩個時脈循環,所以當在共享記憶體位置處寫入另一向量時,若控制單元201嘗試讀取相同共享記憶體位置處之一值,則可發生一讀取/寫入危險。在此情況中,所讀取之值並非最近之值,此係因為在執行讀取值之前未完全處理寫入操作。
控制單元201使用操作追蹤器440來判定在最後幾個時脈循環內將哪些請求發送至共享記憶體104,且判定儲存於一特定記憶體位置處之值是陳舊的還是全新的。控制單元201可基於最後寫入請求之一時間戳記或基於處理最後寫入請求所需之一時間(例如,兩個或更多個時脈循環)來判定值是陳舊的還是全新的。例如,時間戳記可指示從在共享記憶體104處起始或處理最後請求起,已經過兩個以上時脈循環。若判定值係全新的,則控制單元201將讀取該值。若判定值係陳舊的,則控制單元201將暫緩讀取值,直至已經過所需數目個時脈循環以指示值再次全新以供讀取或累加。
系統100經組態以接收一值(例如,一向量)且將其累加至共享記憶體位置445中之一現有值中,而未丟失儲存於共享記憶體位置中之先前累加(410)。例如,系統100經組態以實施累加運算而無需外部軟體鎖定以緩解可能覆寫先前儲存於一記憶體位置(諸如記憶體胞元445)處之向量累加之競爭狀況。系統100實施累加運算而無需在各自處理器核心處執行本地預先累加運算且無需處理器核心之間之任何預同步。例如,可執行一本地預先累加運算以累加在一給定處理器核心處在本地計算之各自組部分和。
共享記憶體104經組態以原生地支援此功能,此表示此技術之向量減少特徵之一原子態樣。例如,系統100中之多個核心(例如,10個核心)可全部產生不同值向量,且各核心可提交在一共享記憶體位置處累加其等各自向量之一請求。在一些實施方案中,請求包含一累加旗標330、335及一對應核心ID (例如,核心0、核心1、核心N 等)及待累加至記憶體位置中之值。在一些實施方案中,可在系統100之至少兩個處理器核心間分割一大矩陣乘法工作,且使用此累加/向量減少技術來簡化自矩陣乘法產生之部分和或點積之累加。
在一些實施方案中,在一神經網路模型之訓練期間使用用於在一共享記憶體胞元處累加值向量之此等技術。例如,該等技術可用於實施梯度累加之一全減少運算,此減少作為跨處理器核心之一分佈式系統之訓練步驟之部分而計算的梯度。特定言之,基於所揭示之累加減少技術,用於訓練一神經網路模型之此梯度累加可在系統100處原生地實施作為記憶體系統或共享記憶體104之一功能。
圖5繪示包含一輸入張量504、一權重張量506之變動及一輸出張量508之張量或多維矩陣500之實例。在圖5中,張量500之各者包含對應於在一神經網路之一給定層處執行之計算之資料值的元素。計算可包含在一或多個時脈循環內將一輸入/激發張量504與一參數/權重張量506相乘以產生輸出或輸出值。一組輸出中之各輸出值對應於輸出張量508之一各自元素。將一激發張量504與一權重張量506相乘包含:將來自張量504之一元素之一激發與來自張量506之一元素之一權重相乘以產生一(若干)部分和。
在一些實施方案中,系統100之處理器核心對對應於以下之向量進行操作:i)某一多維張量中之一離散元素;ii)包含沿著某一多維張量之相同或不同維度之多個離散元素的一值向量;或iii)各者之一組合。某一多維張量中之離散元素或多個離散元素之各者可取決於張量之維度而使用X,Y座標(2D)或使用X,Y,Z座標(3D)表示。
系統100可計算對應於藉由將一批次輸入與對應權重值相乘而產生之乘積的多個部分和。如上文所提及,系統100可在許多時脈循環內執行乘積(例如,部分和)之一累加。例如,可基於本文件中所描述之技術在共享記憶體104中執行乘積之累加。在一些實施方案中,可寫入一輸入權重乘法作為各權重元素與一輸入量(input volume)之離散輸入(諸如輸入張量504之一列或片)相乘之一乘積和。此列或片可表示一給定維度,諸如輸入張量504之一第一維度510或輸入張量504之一第二不同維度515。
在一些實施方案中,一例示性組計算可用於針對一迴旋神經網路層計算一輸出。CNN層之計算可涉及執行一3D輸入張量504與至少一個3D濾波器(權重張量506)之間之一2D空間迴旋。例如,將一個3D濾波器506在3D輸入張量504上進行迴旋可產生一2D空間平面520或525。計算可涉及計算輸入量之一特定維度之點積和。
例如,空間平面520可包含自沿著維度510之輸入計算之乘積和之輸出值,而空間平面525可包含自沿著維度515之輸入計算之乘積和之輸出值。可使用本文件中所描述之累加減少步驟在共享記憶體104中(例如,在共享記憶體胞元445處)執行產生空間平面520及525之各者中之輸出值之乘積和的計算。
圖6係繪示用於使用一硬體電路之一共享高速暫存記憶體來執行向量減少之一例示性程序600之一流程圖,該硬體電路具有與共享記憶體通信之處理器核心。在一些實施方案中,程序600係用於使用圖1之共享記憶體來加速神經網路計算之一技術之部分。
可使用上文所描述之系統100來實施或執行程序600。程序600之描述可參考系統100之上述計算資源。可藉由程式化韌體或軟體指令來實現程序600之步驟或動作,該等程式化韌體或軟體指令可藉由本文件中所描述之裝置及資源之一或多個處理器執行。在一些實施方案中,程序600之步驟對應於用於使用經組態以實施神經網路之一硬體電路執行計算以針對一神經網路層產生一輸出的一方法。
現在參考程序600,在系統100處產生值向量(602)。例如,基於在處理器核心處執行之計算而針對包含於系統100之一或多個硬體電路處之處理器核心之各者產生一各自值向量。
系統100之一共享記憶體接收各自值向量(604)。例如,共享記憶體104使用共享記憶體104之一直接記憶體存取(DMA)資料路徑自處理器核心之各自資源接收值向量。在一些實施方案中,一向量或值向量係藉由一單一處理器核心(或多個處理器核心之各者)產生,且接著提供至使用值向量執行計算之系統100之一共享記憶體。例如,共享記憶體可自一第一處理器核心獲得一向量,且使用所獲得之向量及一或多個其他向量來執行一減少運算。可已自除第一處理器核心以外的處理器核心接收或獲得一或多個其他向量。
在一些其他實施方案中,系統100經組態以運用一累加運算來實施一直接儲存操作。例如,系統100可產生用於將一或多個值向量直接儲存於共享記憶體104之一共享記憶體位置中之一累加旗標330、335。向量可來自一單一處理器核心或來自多個不同處理器核心。例如,處理器核心105-1或302-2可產生表示一累加旗標之一控制信號且將控制信號傳遞至共享記憶體104之控制單元201。系統100可經組態以將一值向量儲存於向量記憶體106、108中,且接著執行一DMA操作以將值向量自向量記憶體移動至共享記憶體104。
系統100對各自值向量執行一累加運算(606)。更明確言之,當將各自值向量寫入至共享記憶體位置時,共享記憶體104執行一累加運算。例如,系統100引起共享記憶體104使用耦合至共享記憶體104之一運算符320對各自值向量執行一累加運算。系統100可操作以累加相同向量之不同元素(或值)以及對應於不同向量之元素之值。運算符320經組態以基於在運算符單元處編碼之算術運算來累加值。在一些實施方案中,算術運算係由一交換性控管之數學運算。算術運算可涉及原子減少(例如,原子浮點減少)。
例如,原子減少被處理為累加或向量減少步驟,其中將值向量直接累加至共享記憶體之一記憶體位置(諸如一共享胞元)中。在一個實例中,作為一累加運算之部分,系統100將由多個不同核心產生之多個向量累加在一起。在另一實例中,系統100將已儲存於共享記憶體104中(諸如記憶體之一共享胞元中)之一值(例如,一向量)與由一核心產生之一值累加。在另一實例中,系統100將由多個不同核心產生之多個向量與已儲存於共享記憶體104中之一或多個值累加。涉及在一核心處產生之向量及已儲存於共享記憶體中之值之前述實例亦可應用於減少運算以及可使用運算符320實施之其他類型之算術運算。
在一些其他實施方案中,處理器核心302-1、302-2之各者提供需要累加之向量,且將值直接累加至記憶體位置中而未同步處理器核心302-1、302-2之間的活動。類似地,可將值直接累加至記憶體位置中,而處理器核心301-1、302-2之任一者不必執行預先累加可能由在處理器核心之任一者處執行之計算產生之乘積(例如,部分和)的一步驟。換言之,系統100之兩個或更多個核心可以任何任意順序將值向量(包含部分和)累加至記憶體104之一共享記憶體胞元之一位址位置(例如,一中央位址位置)中。系統100係可組態的,使得在一些實施方案中,無需在核心處在本地發生預先累加運算,而在一些其他實施方案中,可在一給定核心處累加部分和之一部分或特定類型之部分和。
系統100基於累加運算產生一結果向量(例如,一最終結果向量) (608)。例如,系統100基於使用一或多個值向量及儲存於共享記憶體中之向量執行累加運算而產生一最終結果向量。在一些實施方案中,系統100產生一結果向量,其中結果向量之個別元素由將一累加運算成對地應用於第一向量之各元素及儲存於共享記憶體中之向量之各對應元素而產生。即使經累加以產生最終結果之各自向量以任何任意順序到達共享記憶體胞元,結果向量仍提供累加之一正確數學結果。
在一些實施方案中,為達成此所要結果,可基於使用控制單元201及運算符320之至少控制邏輯325執行的一控制435 (例如,一讀取-修改-寫入控制迴路)來偵測、優先排序及序列化一或多個DMA操作。例如,控制單元201可偵測傳入向量/向量值集合(包含提供向量之對應核心),且使用運算符320來基於由控制435指定之一給定優先級方案串列化個別累加運算。可視需要使用優先級方案來暫緩或重新排序寫入訊務以確保不針對陳舊向量值累加向量值。
結果向量可為表示一神經網路層之一組輸出之一最終結果向量。例如,神經網路層可為迴旋神經網路層,且輸出可為回應於將各內核(例如,張量506之參數/權重)跨輸入張量504之一特定輸入量進行迴旋而產生之一組激發值。
作為對各自值向量執行累加運算之一結果,系統100可產生累加值之一向量。在一些實施方案中,各自值向量係對應於點積之部分和。例如,再次參考一迴旋神經網路層,藉由使用以下者執行點積運算而處理上文所提及之輸入量之輸入:i)沿著輸入張量504之一給定維度(例如,維度510)之各輸入值;及ii)迴旋層之一參數集合。回應於將權重張量506之至少一個內核與沿著輸入量之給定維度之輸入之一部分進行迴旋,可在共享記憶體104之一記憶體位置處累加對應組之點積或部分和以產生一組累加值。
系統100可將一激發函數應用於累加值之向量中之各值。例如,一神經網路之一層可具有(或可不具有)表示提供一神經網路中之非線性之一非線性函數的一激發函數,諸如ReLU、sigmoid或tanh。系統100回應於將激發函數應用於累加值之向量中之各值而產生結果向量。在一些實施方案中,硬體電路101係經組態以實施包含多個神經網路層之一神經網路之一硬體加速器,且系統100基於結果向量針對神經網路之一層產生一輸出。例如,處理一神經網路層處之一層輸入可涉及該層應用一激發函數以產生一組激發值,該組激發值係神經網路層之一輸出。可透過神經網路之一第二或後續層處理由一第一神經網路層產生之激發。
本說明書中所描述之標的物及功能操作之實施例可在以下中實施:數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中所揭示之結構及其等結構等效物),或其等之一或多者之組合。本說明書中所描述之標的物之實施例可實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以藉由資料處理設備執行或控制資料處理設備之操作的電腦程式指令之一或多個模組。
替代地或另外,可將程式指令編碼於一人工產生之傳播信號(例如,一機器產生之電信號、光學信號或電磁信號)上,該傳播信號經產生以編碼用於傳輸至適合接收器設備之資訊以藉由一資料處理設備執行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
術語「計算系統」涵蓋用於處理資料之所有種類之設備、裝置及機器,包含例如一可程式化處理器、一電腦,或多個處理器或電腦。設備可包含專用邏輯電路,例如一FPGA (場可程式化閘陣列)或一ASIC (特定應用積體電路)。設備除硬體之外亦可包含產生所探討之電腦程式之一執行環境的程式碼,例如構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合的程式碼。
可以任何形式之程式設計語言撰寫一電腦程式(其亦可被稱為或描述為一程式、軟體、一軟體應用程式、一模組、一軟體模組、一指令檔或程式碼),包含編譯或解譯語言或宣告或程序語言,且其可以任何形式部署,包含作為一獨立程式或作為一模組、組件、副常式或適用於一計算環境中之其他單元。
一電腦程式可(但不必)對應於一檔案系統中之一檔案。一程式可儲存於保持其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令檔)之一檔案之一部分中、儲存於專用於所探討之程式之一單一檔案中,或儲存於多個協同檔案(例如,儲存一或多個模組、副程式或程式碼之部分之檔案)中。一電腦程式可經部署以在一個電腦上或在定位於一個地點處或跨多個地點分佈且由一通信網路互連的多個電腦上執行。
本說明書中所描述之程序及邏輯流程可藉由一或多個可程式化電腦執行,該一或多個可程式化電腦執行一或多個電腦程式以藉由對輸入資料進行操作及產生輸出而執行功能。亦可藉由專用邏輯電路(例如,一FPGA (場可程式化閘陣列)、一ASIC (特定應用積體電路))或一GPGPU (通用圖形處理單元)來執行程序及邏輯流程,且設備亦可實施為該專用邏輯電路。
藉由實例,適於執行一電腦程式之電腦包含、可基於通用或專用微處理器或兩者,或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之一些元件係用於執行(perform或execute)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般而言,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或經可操作地耦合以自該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置,或兩者。然而,一電腦不必具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放機、一遊戲主控台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃隨身碟) (此處僅列舉少數)。
適於儲存電腦程式指令及資料之電腦可讀媒體包含全部形式之非揮發性記憶體、媒體及記憶體裝置,包含例如:半導體記憶體裝置,例如,EPROM、EEPROM及快閃記憶體裝置;磁碟,例如,內部硬碟或可移除式磁碟;磁光碟;以及CD ROM及DVD-ROM磁碟。處理器及記憶體可由專用邏輯電路補充或併入於專用邏輯電路中。
為提供與一使用者之互動,本說明書中所描述之標的物之實施例可在具有用於顯示資訊給使用者之一顯示裝置(例如,LCD (液晶顯示器)監視器)以及一鍵盤及一指標裝置(例如,一滑鼠或一軌跡球,使用者可藉由其等提供輸入至電腦)的一電腦上實施。其他種類之裝置亦可用於提供與一使用者之互動;例如,提供至使用者之回饋可為任何形式之感官回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自使用者之輸入可以任何形式接收,包含聲學、語音或觸覺輸入。另外,一電腦可藉由將文件發送至供一使用者使用之一裝置及自該裝置接收文件(例如,藉由回應於自一使用者之用戶端裝置上之一網頁瀏覽器接收之請求而將網頁發送至該網頁瀏覽器)而與使用者互動。
可在一計算系統中實施本說明書中所描述之標的物之實施例,該計算系統包含一後端組件(例如,作為一資料伺服器),或包含一中介軟體組件(例如,一應用程式伺服器),或包含一前端組件(例如,一用戶端電腦,其具有一圖形使用者介面或一網頁瀏覽器,一使用者可透過其等與本說明書中所描述之標的物之一實施方案互動),或一或多個此等後端組件、中介軟體組件或前端組件之任何組合。系統之組件可藉由數位資料通信之任何形式或媒體(例如,一通信網路)互連。通信網路之實例包含一區域網路(「LAN」)及一廣域網路(「WAN」),例如,網際網路。
計算系統可包含用戶端及伺服器。一用戶端及伺服器一般彼此遠離且通常透過一通信網路互動。用戶端及伺服器之關係憑藉在各自電腦上運行且彼此具有一用戶端-伺服器關係之電腦程式產生。
雖然本說明書含有許多具體實施方案細節,但此等細節不應被解釋為限制任何發明或可主張之內容之範疇,而是作為可特定於特定發明之特定實施例之特徵之描述。本說明書中在各別實施例之內容背景中描述之某些特徵亦可在一單一實施例中組合地實施。相反地,在一單一實施例之內容背景中描述之各種特徵亦可單獨地或以任何適合子組合在多項實施例中實施。此外,儘管上文可將特徵描述為以特定組合起作用且甚至最初如此主張,然在一些情況中,來自所主張組合之一或多個特徵可自該組合去除,且所主張組合可關於一子組合或一子組合之變動。
類似地,雖然在圖式中按一特定順序描繪操作,但此不應被理解為要求按所展示之特定順序或循序順序執行此等操作或執行全部所繪示操作以達成所要結果。在某些境況中,多任務處理及並行處理可為有利的。此外,上文所描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中皆需要此分離,且應理解,所描述之程式組件及系統可大體上一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的物之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成所要結果。作為一個實例,在附圖中描繪之程序不一定要求所展示之特定順序或循序順序以達成所要結果。在某些實施方案中,多任務處理及並行處理可為有利的。
100:計算系統/系統 101:硬體電路/電路 102:系統記憶體/高頻寬記憶體(HBM) 104:共享記憶體/共享連續記憶體(CMEM)/共享高速暫存記憶體/記憶體 105-1:第一處理器核心/核心 105-2:第二處理器核心/核心 106:向量記憶體 108:向量記憶體 110:向量暫存器 112:向量暫存器 200:方塊圖 201:共享記憶體控制單元/控制單元 202:資料路徑/載入儲存資料路徑 204:共享核心資料路徑 206:資料路徑/載入儲存資料路徑/直接記憶體存取(DMA)資料路徑 208:共享連續記憶體(CMEM)載入資料路徑/資料路徑/載入資料路徑 210:共享暫存區塊/暫存區塊/資源 212:資料路徑 214:連續記憶體(CMEM)載入資料路徑/資料路徑 215:連續記憶體(CMEM)儲存資料路徑/資料路徑 222:資料路徑 224:共享核心資料路徑 226:資料路徑 228:連續記憶體(CMEM)載入資料路徑/資料路徑/載入資料路徑 230:共享暫存區塊/暫存區塊 232:資料路徑 234:連續記憶體(CMEM)載入資料路徑 235:連續記憶體(CMEM)儲存資料路徑/資料路徑 300:方塊圖 302-1:張量處理器核心/處理器核心 302-2:張量處理器核心/處理器核心 304:向量處理單元/向量處理器 306:向量處理器 308:矩陣計算單元/矩陣 310:矩陣計算單元/矩陣 320:運算符/累加器單元 325:邏輯/控制邏輯 330:累加旗標 335:累加旗標 400:累加管線/管線 402:使用處理器核心之例示性矩陣單元之乘法胞元相乘且接著儲存於核心之向量記憶體中之張量值 404:處理器核心之各者可產生各自累加旗標以引起共享記憶體之控制單元對例示性值向量執行累加至記憶體功能 406:共享記憶體及控制單元使用運算符來對各自值向量執行累加運算 408:控制單元經組態以遮蔽一或多個向量元素以啟用或停用特定向量元素之累加,執行控制以管理不同向量之累加,且追蹤未完成的累加運算 410:系統經組態以接收值且將其累加至共享記憶體位置中之現有值中,而未丟失儲存於共享記憶體位置中之先前累加 430:遮蔽功能 435:讀取-修改-寫入控制/控制 440:操作追蹤器 445:共享記憶體胞元/共享記憶體位置 450:最終結果向量 500:張量/多維矩陣 504:輸入張量/激發張量/張量 506:參數張量/權重張量/張量/3D濾波器 508:輸出張量 510:第一維度 515:第二維度 520:二维(2D)空間平面/空間平面 525:二维(2D)空間平面/空間平面 600:程序 602:在系統處產生值向量 604:系統之共享記憶體接收各自值向量 606:系統對各自值向量執行累加運算 608:系統基於累加運算產生結果向量
圖1係具有包含一例示性共享記憶體之一硬體電路之一計算系統之一方塊圖。
圖2係展示與一硬體電路之一共享記憶體通信之處理器核心之一實例之一方塊圖。
圖3係展示與一硬體電路之一矩陣計算單元通信之向量處理器之一實例之一方塊圖。
圖4係展示一例示性累加管線之一方塊圖。
圖5繪示輸入張量、一權重張量及一輸出張量之實例。
圖6係繪示使用圖1之共享記憶體來執行向量減少之一例示性程序之一流程圖。
在各個圖式中,相同元件符號及名稱指示相同元件。
100:計算系統/系統
101:硬體電路/電路
102:系統記憶體/高頻寬記憶體(HBM)
104:共享記憶體/共享連續記憶體(CMEM)/共享高速暫存記憶體/記憶體
105-1:第一處理器核心/核心
105-2:第二處理器核心/核心
106:向量記憶體
108:向量記憶體
110:向量暫存器
112:向量暫存器

Claims (25)

  1. 一種使用一硬體電路執行之方法,該硬體電路具有一共享記憶體及與該共享記憶體通信之多個處理器核心,該方法包括: 基於在一第一處理器核心處執行之計算產生一第一值向量; 藉由該共享記憶體且使用該共享記憶體之一直接記憶體存取(DMA)資料路徑自該第一處理器核心接收該第一值向量; 在該共享記憶體處執行該第一值向量與儲存於該共享記憶體中之一向量之間的一累加運算, 其中使用一運算符單元來執行該累加運算,該運算符單元: i)耦合至該共享記憶體,及 ii)經組態以累加複數個向量之值;及 基於該累加運算產生一結果向量。
  2. 如請求項1之方法,其中自一第二處理器核心接收儲存於該共享記憶體中之該向量,且該方法包括: 藉由該第一處理器核心執行一累加至記憶體操作以在該共享記憶體之一記憶體位置處累加該第一值向量之各自值;及 藉由該第二處理器核心執行一累加至記憶體操作以在該共享記憶體之該記憶體位置處累加一第二值向量之各自值,其中該第二值向量對應於儲存於該共享記憶體中之該向量。
  3. 如請求項2之方法,其中基於該累加運算產生該結果向量包括: 在該第一處理器核心未執行預先累加由在該第一處理器核心處執行之計算產生之乘積之一步驟的情況下產生該結果向量;及 在該第二處理器核心未執行預先累加由在該第二處理器核心處執行之計算產生之乘積之一步驟的情況下產生該結果向量。
  4. 如請求項1之方法,其中產生該結果向量包括: 作為對該第一值向量執行該累加運算之一結果而產生累加值之一向量; 將一激發函數應用於累加值之該向量中之各值;及 作為將該激發函數應用於累加值之該向量中之各值之一結果而產生該結果向量。
  5. 如請求項2之方法,其中該第一處理器核心之一各自資源係一第一矩陣計算單元,且該方法進一步包括: 基於使用該第一處理器核心之該第一矩陣計算單元執行之矩陣乘法來產生對應於該第一值向量之累加值之一第一向量。
  6. 如請求項5之方法,其中該第二處理器核心之一各自資源係一第二矩陣計算單元,且該方法進一步包括: 基於使用該第二處理器核心之該第二矩陣計算單元執行之矩陣乘法來產生對應於該第二值向量之累加值之一第二向量。
  7. 如請求項1之方法,其中: 該硬體電路係經組態以實施包括複數個神經網路層之一神經網路之一硬體加速器;及 該方法包括基於該結果向量針對該神經網路之一層產生一輸出。
  8. 如請求項2之方法,其進一步包括: 基於在該第一處理器核心處執行之計算產生該第一值向量;及 基於在該第二處理器核心處執行之計算產生該第二值向量; 其中在該第一處理器核心處執行之該等計算及在該第二處理器核心處執行之該等計算係由一交換性控管之一數學運算之部分。
  9. 如請求項8之方法,其中該數學運算係: 一浮點乘法運算; 一浮點加法運算; 一整數加法運算;或 一最小-最大運算。
  10. 如請求項8之方法,其中該數學運算包括一浮點加法運算及一整數加法運算。
  11. 如請求項2之方法,其中該第一處理器核心及該第二處理器核心係相同處理器核心。
  12. 如請求項1之方法,其中該共享記憶體經組態以用作一共享全域記憶體空間,其包括在該硬體電路之兩個或更多個處理器核心之間共享之記憶庫及暫存器。
  13. 一種系統,其包括: 一處理裝置; 一硬體電路,其具有一共享記憶體及與該共享記憶體通信之多個處理器核心;及 一非暫時性機器可讀儲存裝置,其用於儲存可藉由該處理裝置執行以引起執行操作之指令,該等操作包括: 基於在一第一處理器核心處執行之計算產生一第一值向量; 藉由該共享記憶體且使用該共享記憶體之一直接記憶體存取(DMA)資料路徑自該第一處理器核心接收該第一值向量; 在該共享記憶體處執行該第一值向量與儲存於該共享記憶體中之一向量之間的一累加運算, 其中使用一運算符單元來執行該累加運算,該運算符單元: i)耦合至該共享記憶體,及 ii)經組態以累加複數個向量;及 基於使用該第一值向量執行該累加運算而產生一結果向量。
  14. 如請求項13之系統,其中自一第二處理器核心接收儲存於該共享記憶體中之該向量,且該等操作包括: 藉由該第一處理器核心執行一累加至記憶體操作以在該共享記憶體之一記憶體位置處累加該第一值向量之各自值;及 藉由該第二處理器核心執行一累加至記憶體操作以在該共享記憶體之該記憶體位置處累加一第二值向量之各自值,其中該第二值向量對應於儲存於該共享記憶體中之該向量。
  15. 如請求項14之系統,其中基於執行該累加運算而產生該結果向量包括: 在該第一處理器核心未執行預先累加由在該第一處理器核心處執行之計算產生之乘積之一步驟的情況下產生該結果向量;及 在該第二處理器核心未執行預先累加由在該第二處理器核心處執行之計算產生之乘積之一步驟的情況下產生該結果向量。
  16. 如請求項13之系統,其中產生該結果向量包括: 作為對該第一值向量執行該累加運算之一結果而產生累加值之一向量; 將一激發函數應用於累加值之該向量中之各值;及 作為將該激發函數應用於累加值之該向量中之各值之一結果而產生該結果向量。
  17. 如請求項14之系統,其中該第一處理器核心之一各自資源係一第一矩陣計算單元,且該等操作進一步包括: 基於使用該第一處理器核心之該第一矩陣計算單元執行之矩陣乘法來產生對應於該第一值向量之累加值之一第一向量。
  18. 如請求項17之系統,其中該第二處理器核心之一各自資源係一第二矩陣計算單元,且該等操作進一步包括: 基於使用該第二處理器核心之該第二矩陣計算單元執行之矩陣乘法來產生對應於該第二值向量之累加值之一第二向量。
  19. 如請求項13之系統,其中: 該硬體電路係經組態以實施包括複數個神經網路層之一神經網路之一硬體加速器;及 該等操作包括基於該結果向量針對該神經網路之一層產生一輸出。
  20. 如請求項14之系統,其進一步包括: 基於在該第一處理器核心處執行之計算產生該第一值向量;及 基於在該第二處理器核心處執行之計算產生該第二值向量; 其中在該第一處理器核心處執行之該等計算及在該第二處理器核心處執行之該等計算係由一交換性控管之一數學運算之部分。
  21. 如請求項20之系統,其中該數學運算係: 一浮點乘法運算; 一浮點加法運算; 一整數加法運算;或 一最小-最大運算。
  22. 如請求項20之系統,其中該數學運算包括一浮點加法運算及一整數加法運算。
  23. 如請求項14之系統,其中該第一處理器核心及該第二處理器核心係相同處理器核心。
  24. 如請求項13之系統,其中該共享記憶體經組態以用作一共享全域記憶體空間,其包括在該硬體電路之兩個或更多個處理器核心之間共享之記憶庫及暫存器。
  25. 一種非暫時性機器可讀儲存裝置,其用於儲存可藉由一處理裝置執行以引起執行操作之指令,該等操作包括: 基於在一硬體電路之一第一處理器核心處執行之計算產生一第一值向量; 藉由該硬體電路之一共享記憶體且使用該共享記憶體之一直接記憶體存取(DMA)資料路徑自該第一處理器核心接收該第一值向量; 在該共享記憶體處執行該第一值向量與儲存於該共享記憶體中之一向量之間的一累加運算, 其中使用一運算符單元來執行該累加運算,該運算符單元: i)耦合至該共享記憶體,及 ii)經組態以累加複數個向量;及 基於該累加運算產生一結果向量。
TW109143078A 2020-02-26 2020-12-07 使用共享高速暫存記憶體之向量減少 TW202132976A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062981957P 2020-02-26 2020-02-26
US62/981,957 2020-02-26
US17/007,569 US11182159B2 (en) 2020-02-26 2020-08-31 Vector reductions using shared scratchpad memory
US17/007,569 2020-08-31

Publications (1)

Publication Number Publication Date
TW202132976A true TW202132976A (zh) 2021-09-01

Family

ID=77366021

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109143078A TW202132976A (zh) 2020-02-26 2020-12-07 使用共享高速暫存記憶體之向量減少

Country Status (7)

Country Link
US (2) US11182159B2 (zh)
EP (1) EP4004826A1 (zh)
JP (1) JP7495480B2 (zh)
KR (1) KR20220038148A (zh)
CN (2) CN117421047A (zh)
TW (1) TW202132976A (zh)
WO (1) WO2021173201A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111090464B (zh) * 2018-10-23 2023-09-22 华为技术有限公司 一种数据流处理方法及相关设备
KR102620843B1 (ko) * 2021-11-22 2024-01-03 리벨리온 주식회사 재구성가능 온 칩 메모리 뱅크, 재구성가능 온 칩 메모리, 이를 탑재한 시스템 온 칩 및 재구성가능 온 칩 메모리 사용 방법
US20220229723A1 (en) * 2021-12-23 2022-07-21 Intel Corporation Low overhead error correction code
US11630605B1 (en) * 2022-08-10 2023-04-18 Recogni Inc. Methods and systems for processing read-modify-write requests
CN116306855B (zh) * 2023-05-17 2023-09-01 之江实验室 一种基于存算一体***的数据处理方法及装置
CN116821019B (zh) * 2023-08-30 2023-11-14 腾讯科技(深圳)有限公司 数据处理方法、计算机设备及芯片
CN117787366B (zh) * 2024-02-28 2024-05-10 苏州元脑智能科技有限公司 硬件加速器及其调度方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5990904A (en) 1995-08-04 1999-11-23 Microsoft Corporation Method and system for merging pixel fragments in a graphics rendering system
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6005583A (en) 1997-04-30 1999-12-21 Hewlett-Packard Company Precise gradient calculation system and method for a texture mapping system of a computer graphics system
TWI520501B (zh) * 2012-06-07 2016-02-01 威盛電子股份有限公司 記憶體控制器
US8941676B2 (en) 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
CN105849690B (zh) 2014-07-02 2019-03-15 上海兆芯集成电路有限公司 融合乘积-累加运算的处理器与方法
US9836277B2 (en) * 2014-10-01 2017-12-05 Samsung Electronics Co., Ltd. In-memory popcount support for real time analytics
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US10032493B2 (en) * 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
CN104699631B (zh) * 2015-03-26 2018-02-02 中国人民解放军国防科学技术大学 Gpdsp中多层次协同与共享的存储装置和访存方法
US10346350B2 (en) 2015-10-08 2019-07-09 Via Alliance Semiconductor Co., Ltd. Direct execution by an execution unit of a micro-operation loaded into an architectural register file by an architectural instruction of a processor
US10445271B2 (en) 2016-01-04 2019-10-15 Intel Corporation Multi-core communication acceleration using hardware queue device
FR3048526B1 (fr) 2016-03-07 2023-01-06 Kalray Instruction atomique de portee limitee a un niveau de cache intermediaire
NL2016542B1 (en) 2016-04-04 2017-10-10 Fugro N V Spatial data analysis.
US10146738B2 (en) * 2016-12-31 2018-12-04 Intel Corporation Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data
US10489877B2 (en) 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10338919B2 (en) * 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
US10354733B1 (en) 2017-10-17 2019-07-16 Xilinx, Inc. Software-defined memory bandwidth reduction by hierarchical stream buffering for general matrix multiplication in a programmable IC
US10460416B1 (en) 2017-10-17 2019-10-29 Xilinx, Inc. Inline image preprocessing for convolution operations using a matrix multiplier on an integrated circuit
US11620490B2 (en) 2017-10-17 2023-04-04 Xilinx, Inc. Multi-layer neural network processing by a neural network accelerator using host communicated merged weights and a package of per-layer instructions
US20190179635A1 (en) * 2017-12-11 2019-06-13 Futurewei Technologies, Inc. Method and apparatus for tensor and convolution operations
US11138499B2 (en) * 2018-09-28 2021-10-05 Intel Corporation Applications of back-end-of-line (BEOL) capacitors in compute-in-memory (CIM) circuits
US11270197B2 (en) * 2019-03-12 2022-03-08 Nvidia Corp. Efficient neural network accelerator dataflows

Also Published As

Publication number Publication date
WO2021173201A1 (en) 2021-09-02
US20210263739A1 (en) 2021-08-26
CN115136115B (zh) 2023-11-10
US20220156071A1 (en) 2022-05-19
CN117421047A (zh) 2024-01-19
US11934826B2 (en) 2024-03-19
JP7495480B2 (ja) 2024-06-04
KR20220038148A (ko) 2022-03-25
CN115136115A (zh) 2022-09-30
EP4004826A1 (en) 2022-06-01
US11182159B2 (en) 2021-11-23
JP2023506343A (ja) 2023-02-16

Similar Documents

Publication Publication Date Title
TW202132976A (zh) 使用共享高速暫存記憶體之向量減少
CN110582785B (zh) 配置用于执行层描述符列表的具有功率效率的深度神经网络模块
KR102525080B1 (ko) 신경 네트워크 명령어 세트 아키텍처
CN112236784B (zh) 修改机器学习模型以改善局部性
JP2022095817A (ja) ベクトル縮小プロセッサ
JP2020091861A (ja) テンソル計算データフロー加速器半導体回路
Tanomoto et al. A CGRA-based approach for accelerating convolutional neural networks
US20240160909A1 (en) Shared scratchpad memory with parallel load-store
JP7525597B2 (ja) ニューラルネットワーク計算を加速するためのハードウェア回路
Lu et al. Optimization of GPU parallel scheme for simulating ultrafast magnetization dynamics model
TW202109286A (zh) 純函數語言神經網路加速器系統及結構
US20230195836A1 (en) One-dimensional computational unit for an integrated circuit
CN113741977B (zh) 数据操作方法、数据操作装置、数据处理器
JP2024116166A (ja) 共有スクラッチパッドメモリを用いたベクトル縮小
US11249724B1 (en) Processing-memory architectures performing atomic read-modify-write operations in deep learning systems
TW202347145A (zh) 在機器學習硬體加速器處利用資料稀疏性
Wang et al. Optimizing Pointwise Convolutions on Multi-core DSPs
Chen Accelerating SRD Simulation on GPU.