TWI678617B - 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 - Google Patents
用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 Download PDFInfo
- Publication number
- TWI678617B TWI678617B TW107108831A TW107108831A TWI678617B TW I678617 B TWI678617 B TW I678617B TW 107108831 A TW107108831 A TW 107108831A TW 107108831 A TW107108831 A TW 107108831A TW I678617 B TWI678617 B TW I678617B
- Authority
- TW
- Taiwan
- Prior art keywords
- dimension
- value
- address
- partial address
- address displacement
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000006073 displacement reaction Methods 0.000 claims description 179
- 230000004044 response Effects 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- 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
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Complex Calculations (AREA)
Abstract
本發明揭示包含用於存取一N維張量之一設備之方法、系統及設備,該設備針對N維張量之每一維度包含儲存至少基於維度之一初始值、維度之一步進值及維度之一迴圈之一反覆次數的維度之一部分位址位移值的一部分位址位移值元素。該設備包含一硬體加法器及一處理器。處理器獲得用以存取N維張量之一特定元素之一指令。N維張量具有跨越N個維度中之每一者而配置之多個元素,其中N係等於或大於1之一整數。處理器使用部分位址位移值元素及硬體加法器判定特定元素之一位址且輸出指示所判定位址之資料以用於存取特定元素。
Description
此說明書一般而言係關於使用具有硬體加法器之一特殊用途計算單元執行機器學習計算。
神經網路係採用一或多個模型層來針對一所接收輸入產生一輸出(例如,一分類)之機器學習模型。除一外層之外,某些神經網路亦包含一或多個隱藏層。每一隱藏層之輸出用作至網路中之下一層(亦即,網路之下一隱藏層或輸出層)之輸入。根據一各別參數集之當前值,網路之每一層依據一所接收輸入產生一輸出。
某些神經網路包含一或多個捲積神經網路層。每一捲積神經網路層具有一相關聯核心集。核心可表示為權重輸入之一矩陣結構。每一捲積層使用該等核心來處理至該層之輸入。至該層之一輸入集亦可表示為一矩陣結構。
此說明書闡述與存取使用一或多個硬體加法器判定張量元素之記憶體位址之一N維張量有關之技術。
一般而言,此說明書中所闡述之標的物之一個創新態樣可體現於用
於存取一N維張量之一設備中。該設備可針對該N維張量之每一維度包含儲存至少基於該維度之一初始值、該維度之一步進值及該維度之一迴圈之一反覆次數的該維度之一部分位址位移值的一部分位址位移值元素。該設備亦可包含一或多個硬體加法器及一或多個處理器。該一或多個處理器可經組態以獲得用以存取該N維張量之一特定元素之一指令。該N維張量可具有跨越該N個維度中之每一者配置之多個元素。N可係等於或大於1之一整數。該(等)處理器可使用該等部分位址位移值元素及該一或多個硬體加法器中之一或多者判定該特定元素之一位址且輸出指示該所判定位址之資料以用於存取該N維張量之該特定元素。
此等及其他實施方案可各自視情況包含以下特徵中之一或多者。在某些態樣中,該設備可針對每一維度包含儲存該維度之該初始值之一初始值元素及儲存該維度之步進值之一步進值元素。每一部分位址位移值元素、每一初始值元素及每一步進值元素可包含一暫存器。
在某些態樣中,判定該特定元素之該位址可包含使用該一或多個硬體加法器判定每一維度之該等部分位址位移值之一總和。該一或多個處理器可經組態以針對每一維度在該維度之一嵌套迴圈之每一反覆之後藉由使該步進值與該維度之一先前位址位移值相加而判定該維度之該部分位址位移值。
該設備可針對每一維度包含儲存該維度之一限制值之一限制值元素。該一或多個處理器可針對每一維度判定一維度之該所判定部分位址位移值是否等於該維度之該限制值。回應於判定與一第一嵌套迴圈對應之一第一維度之該所判定部分位址位移值等於該第一維度之該限制值,該一或多個處理器可將該第一維度之該部分位址位移值重設至該第一維度之該初
始值且針對與其中嵌套有該第一嵌套迴圈之一第二嵌套迴圈對應之一第二維度且使用該一或多個硬體加法器來將該第二維度之該部分位址位移值更新為等於該第二維度之該步進值與該第二維度之該部分位址位移值之一總和。在某些態樣中,每一維度之該步進值係基於該等維度中之一或多者中之一元素數目的一預定值。
此說明書中所闡述之標的物可在特定實施例中經實施以便實現以下優點中之一或多者。使用暫存器來追蹤記憶體位址值允許一程式藉助一個指令使深度嵌套迴圈反覆。可藉由基於儲存於該等暫存器中之該等值而應用簡單加法來迅速地判定記憶體位址值。一特殊用途計算單元可包含計算該等位址之加法器。藉由使用加法器而非算術邏輯單元(ALU)、乘法器或其他複雜電路,電路之大小可減小及電路之製作成本可降低。使用硬體加法器判定記憶體位址值允許處理器處之計算循環數目減小,且增加處理器頻寬以用於其他計算任務。可藉助經減小數目個指令來遍歷張量。一個二維暫存器架構允許同時追蹤各自具有不同維度之多維張量。
此態樣及其他態樣之其他實施方案包含經組態以執行編碼於電腦儲存裝置上之方法之動作之對應系統、方法及電腦程式。一或多個電腦之一系統可藉助於安裝於在操作中致使系統執行該等動作之系統上之軟體、韌體、硬體或其一組合而如此組態。一或多個電腦程式可藉助於具有在由資料處理設備執行時致使設備執行該等動作之指令而如此組態。
在附圖及以下說明中陳述此說明書中所闡述之標的物之一或多個實施方案之細節。標的物之其他可能特徵、態樣及優點將依據說明、圖式及申請專利範圍而變得顯而易見。
100‧‧‧計算系統
102‧‧‧處理單元
104‧‧‧輸入/儲存媒體
106‧‧‧張量遍歷單元
112‧‧‧指令
114‧‧‧資料
116‧‧‧輸出
122‧‧‧張量位址值元素
124‧‧‧硬體加法器單元
200‧‧‧張量位址值元素
202‧‧‧初始值元素
202a‧‧‧列
202b‧‧‧列
204‧‧‧步進值元素
204a‧‧‧列
204b‧‧‧列
206‧‧‧結束值元素
206a‧‧‧列
206b‧‧‧列
208‧‧‧部分位址位移值元素/部分位址值元素
208a‧‧‧列
208b‧‧‧列
212‧‧‧程式
225‧‧‧程式
300‧‧‧程式
302‧‧‧步驟
304‧‧‧步驟
306‧‧‧步驟
V1,1‧‧‧初始值元素/元素
V1,2‧‧‧初始值元素/元素
X1,1‧‧‧步進值元素
X1,2‧‧‧步進值元素
Y1,1‧‧‧結束值元素/元素
Y1,2‧‧‧結束值元素/元素
Z1,1‧‧‧部分位址位移值元素/元素
Z1,2‧‧‧部分位址位移值元素/元素
圖1係一實例性計算系統之一方塊圖。
圖2A至圖2H圖解說明一實例性張量遍歷單元。
圖3係圖解說明用於判定一個多維張量變數之一位址之一實例性程序之一流程圖。
在各個圖式中,相似元件符號及名稱指示相似元件。
一般而言,當一軟體演算法處理一N維張量時,可使用一嵌套迴圈。每一迴圈可負責遍歷該N維張量之一各別維度。一個多維張量可係一矩陣或一個多維矩陣。舉例而言,一2維張量係一矩陣,而一3維張量係由多個二維矩陣構成之一個三維矩陣。該N維張量之每一維度可包含一或多個元素,其中每一元素可儲存一各別資料值。舉例而言,一張量可係一程式中之一變數,其中該變數可具有三個維度。該第一維度可具有三百個元素之一長度,該第二維度可具有一千個元素之一長度,且該第三維度可具有二十個元素之一長度。當然,每一維度中之其他數目個元素係可能的。
在一嵌套迴圈中遍歷張量可包含一元素之一記憶體位址值之一計算以載入或儲存該元素之對應資料值。一for迴圈係一嵌套迴圈之一實例,其中由三個迴圈索引變數(例如,i、j及k)追蹤之三個迴圈可經嵌套以遍歷經過一個三維張量。在一神經網路中,一元素之一值可用於與張量相關聯之一或多個點積計算中。舉例而言,可使該元素之該值與一對應參數或權重相乘。可使用經嵌套for迴圈依序遍歷該張量之該等元素以存取該元素且使用該元素之該值執行一或多個計算。繼續三維張量實例,一外for迴圈可用於遍歷由變數i追蹤之迴圈,一中間for迴圈可用於遍歷由變數j追蹤之迴圈,且一內for迴圈可用於遍歷由變數k追蹤之迴圈。在此實例中,所
存取之第一元素可係(i=0,j=0,k=0),第二元素可係(i=0,j=0,k=1),依此類推。如下文所闡述,一張量遍歷單元可用於使用嵌套迴圈依序判定每一元素之記憶體位址,使得一處理單元可存取該元素之該值且使用該元素之該值來執行一或多個計算。亦可使用嵌套for迴圈類似地存取權重或參數之值。張量遍歷單元亦可用於判定在該等計算中使用之該等權重或參數及/或該等計算之輸出之位址,該等輸出可用作至神經網路之一隱藏層之輸入。
在某些情形中,一處理器可需要執行一迴圈界限條件,諸如用一外迴圈索引變數設定一內迴圈之一迴圈界限。舉例而言,在判定是否退出一嵌套迴圈之最內迴圈時,程式可比較最內迴圈之迴圈索引變數之當前值與嵌套迴圈之最外迴圈之迴圈索引變數之當前值。
此等任務可需要顯著數目個指令,諸如分支指令及整數算術指令。當每一迴圈界限係小的且迴圈數目係大的時,計算可花費總體執行時間之一顯著部分,且使總體效能嚴重降級。一處理器之一硬體張量遍歷單元可藉由減少在遍歷一張量時需要處理器處理之維度數目而增加處理器之計算頻寬。
圖1展示用於遍歷一張量之一實例性計算系統100之一方塊圖。一般而言,計算系統100處理一輸入104以產生一輸出116。計算系統100可經組態以執行線性代數計算。輸入104可係可由計算系統100處理之任何適合資料。計算系統100包含一處理單元102、一儲存媒體104及一張量遍歷單元106。
一般而言,當處理單元102執行用於存取一張量之一特定元素之一指令時,張量遍歷單元106判定該張量之該特定元素之位址,使得處理單元
102可存取儲存媒體104以讀取表示該特定元素之該值之資料114。舉例而言,一程式可包含一嵌套迴圈且處理單元102可執行用以根據與該嵌套迴圈相關聯之當前索引變數值在該嵌套迴圈內存取一個二維陣列變數之一元素之一指令。基於與該嵌套迴圈相關聯之該等當前索引變數值,張量遍歷單元106可判定該二維陣列變數之一第一元素之表示自一記憶體位址之一位移之一位址位移值。處理單元102可然後使用該位址位移值且自該儲存媒體存取該二維陣列變數之該特定元素。
處理單元102經組態以處理用於在計算系統100內之執行之指令,包含儲存於儲存媒體104中之指令112或儲存於另一儲存裝置中之其他指令。處理單元102可包含一或多個處理器。儲存媒體104將資訊儲存於計算系統100內。在某些實施方案中,儲存媒體104係一或若干揮發性記憶體單元。在某些其他實施方案中,儲存媒體104係一或若干非揮發性記憶體單元。儲存媒體104亦可係另一形式之電腦可讀媒體,諸如一軟碟裝置、一硬碟裝置、一光碟裝置或一磁帶裝置、一快閃記憶體或其他類似固態記憶體裝置或一裝置(包含在一儲存區域網路或其他組態中之裝置)陣列。該等指令在由處理單元102執行時致使處理單元102執行一或多個任務。
張量遍歷單元106可實施為一特殊應用積體電路。張量遍歷單元106可經組態以判定與一或多個張量相關聯之一狀態。該狀態可包含迴圈界限值、當前迴圈索引變數值、用於判定一記憶體位址值之部分位址位移值及/或用於處置分支迴圈界限之程式計數器值。
張量遍歷單元106將張量索引轉化成記憶體位址。舉例而言,張量遍歷單元106可將一N維張量索引集轉化成一個一維位址空間。該張量遍歷
單元可藉由使一張量元素之記憶體位址成為該元素之維度索引之一組合(例如,一線性組合)而執行此等轉化。
張量遍歷單元106可高效地且以編程方式產生參照一張量元素序列之一位址序列。該位址序列對應於將藉由一軟體遍歷例程中之一迴圈嵌套存取之該張量元素序列。在該遍歷期間存取之該元素序列在記憶體中可或可並非係實體上連續的。圖2B至圖2H中所圖解說明且下文所闡述之實例提供該元素序列在記憶體中如何並非係實體上連續之一實例。
張量遍歷單元106包含張量位址值元素122及一硬體加法器單元124。張量位址值元素122中之每一者可係一儲存元素,舉例而言一暫存器或任何其他適合儲存電路。在某些實施方案中,張量位址值元素122可實體上或邏輯上配置成不同群組,如下文參考圖2A至圖2H更詳細地闡述。在某些實施方案中,張量位址值元素122之一群組可實體上或邏輯上配置成一個多維陣列。舉例而言,張量位址值元素122之每一群組可實體上或邏輯上配置成一個二維陣列。
硬體加法器單元124可包含一或多個硬體加法器。每一加法器可包含經組態以執行加法運算之數位電路。舉例而言,如下文所闡述,該一或多個加法器可使部分位址位移值相加以判定一張量之一元素之一總位址位移值。由於硬體加法器需要比算術邏輯單元(ALU)及硬體乘法器少之電路組件,因此硬體加法器單元124之電路之大小(及因此張量遍歷單元106之大小)可小於包含ALU及/或乘法器之一張量遍歷單元。另外,製作具有硬體加法器之一張量遍歷單元之成本可小於製作具有ALU及/或乘法器之一張量遍歷單元之成本。在某些實施方案中,硬體加法器單元124僅包含加法器且不包含其他數學或邏輯電路。
圖2A展示一張量遍歷單元之張量位址值元素200之一實例性集。張量位址值元素200可對應於張量遍歷單元106之張量位址值元素122。張量位址值元素200包含初始值元素202之一群組、步進值元素204之一群組、結束值元素206之一群組及部分位址位移值元素208之一群組。
初始值元素202可實體上或邏輯上配置為具有M列及N行之一2-D陣列,其中M及N係大於或等於1之整數。初始值元素202可儲存用於判定一張量元素之一記憶體位址的部分位址位移之初始值。在某些實施方案中,初始值元素202之每一列可表示一張量之初始值。舉例而言,若一程式定義兩個陣列變數V1及V2,則張量遍歷單元可指派列202a及202b分別儲存陣列變數V1及V2之初始值。在某些實施方案中,初始值元素202之每一行可表示針對與一張量相關聯之嵌套迴圈索引變數值之初始值。舉例而言,若該程式定義具有用於存取變數V1之三個迴圈之一嵌套迴圈,其中該嵌套迴圈之每一迴圈由嵌套迴圈索引變數i、j及k加索引,則張量遍歷單元可指派初始值元素V1,1、V1,2及V1,3分別儲存嵌套迴圈索引變數i、j及k之初始值。下文參考圖2B至圖2H更詳細地闡述初始值元素202。
步進值元素204可實體上或邏輯上配置為具有與初始值元素202相同之維度之一2-D陣列,其中步進值元素204中之每一元素具有在初始值元素202中之一對應元素。步進值元素204可儲存用於判定一張量元素之一記憶體位址的部分位址位移之步進值。在某些實施方案中,步進值元素204之每一列可表示一張量之步進值。舉例而言,若一程式定義兩個陣列變數V1及V2,則張量遍歷單元可指派列204a及204b分別儲存陣列變數V1及V2之步進值。在某些實施方案中,步進值元素204之每一行可表示針對與一張量相關聯之嵌套迴圈索引變數值之步進值。舉例而言,若該程式定
義具有用於存取變數V1之三個迴圈之一嵌套迴圈,其中該嵌套迴圈之每一迴圈由嵌套迴圈索引變數i、j及k加索引,則張量遍歷單元可指派步進值元素X1,1、X1,2及X1,3分別儲存嵌套迴圈索引變數i、j及k之步進值。下文參考圖2B至圖2H更詳細地闡述步進值元素204。
結束值元素206可實體上或邏輯上配置為具有與初始值元素202相同之維度之一2-D陣列,其中結束值元素206中之每一元素具有在初始值元素202中之一對應元素。結束值元素206可儲存用於判定一張量元素之一記憶體位址的部分位址位移之結束值。在某些實施方案中,結束值元素206之每一列可表示一張量之結束值。舉例而言,若一程式定義兩個陣列變數V1及V2,則張量遍歷單元可指派列206a及206b分別儲存陣列變數V1及V2之結束值。在某些實施方案中,結束值元素206之每一行可表示針對與一張量相關聯之嵌套迴圈索引變數值之結束值。舉例而言,若該程式定義具有用於存取變數V1之三個迴圈之一嵌套迴圈,其中該嵌套迴圈之每一迴圈由嵌套迴圈索引變數i、j及k加索引,則張量遍歷單元可指派結束值元素Y1,1、Y1,2及Y1,3分別儲存嵌套迴圈索引變數i、j及k之結束值。下文參考圖2B至圖2H更詳細地闡述結束值元素206。
部分位址位移值元素208可實體上或邏輯上配置為具有與初始值元素202相同之維度之一2-D陣列,其中部分位址位移值元素208中之每一元素具有在初始值元素202中之一對應元素。部分位址位移值元素208可儲存用於判定一張量元素之一記憶體位址之部分位址位移值。在某些實施方案中,部分位址位移值元素208之每一列可表示一張量之部分位址位移值。舉例而言,若一程式定義兩個陣列變數V1及V2,則張量遍歷單元可指派列208a及208b分別儲存陣列變數V1及V2之部分位址位移值。在某些實施
方案中,部分位址位移值元素208之每一行可表示針對與一張量相關聯之嵌套迴圈索引變數值之部分位址位移值。舉例而言,若該程式定義具有用於存取變數V1之三個迴圈之一嵌套迴圈,其中該嵌套迴圈之每一迴圈由嵌套迴圈索引變數i、j及k加索引,則張量遍歷單元可指派部分位址位移值元素Z1,1、Z1,2及Z1,3分別儲存嵌套迴圈索引變數i、j及k之部分位址位移值。下文參考圖2B至圖2H更詳細地闡述部分位址位移值元素208。
圖2B至圖2H展示一張量遍歷單元可如何使用張量位址值元素200來處理一張量(包含判定該張量之張量元素之記憶體位址值)之一實例。參考圖2B,一程式212可儲存於儲存媒體104或可由處理單元102執行之另一儲存媒體中。程式212規定具有一第一維度3、一第二維度2及一第三維度2之一字符陣列變數V1。程式212規定用於遍歷變數V1之一嵌套for迴圈,其中該for迴圈在由一嵌套迴圈索引變數i追蹤之一外迴圈中遍歷V1之該第一維度;在由一嵌套迴圈索引變數j追蹤之一中間迴圈中遍歷V1之該第二維度;且在由一嵌套迴圈索引變數k追蹤之一內迴圈中遍歷V1之該第三維度。儘管本文中所闡述之圖2B至圖2H之所圖解說明實例包含三個維度,但可以一類似方式判定具有不同數目個維度(例如,2、5、8或某一其他數目個維度)之張量之記憶體位址值。舉例而言,可遍歷具有八個維度之一張量且可使用一深度為8之迴圈嵌套判定該等張量元素之該等記憶體位址。
在某些實施方案中,可在一程式之開始處將張量位址值元素200初始化。舉例而言,一處理器可執行將張量位址值元素200初始化之一指令「InitializeElements」。該指令可係可由一處理器執行之一指令集之一硬體指令。在某些實施方案中,在初始化之後,將張量位址值元素200中之
每一元素設定至一預定值。在某些實施方案中,該處理器可針對張量位址值元素之每一群組執行一單獨指令,例如,針對初始值元素202執行一個指令,針對步進值元素執行一個指令等等。每一單獨指令可將其群組之每一元素設定至彼元素之一預定值。
在此實例中,將每一初始值元素202設定至零之一值。一維度之初始值係該維度之部分位址位移值針對遍歷該維度之for迴圈之一第一反覆而設定至的一值。因此,在此實例中,每一維度之部分位址位移值將針對該維度之for迴圈之第一反覆設定至零之一值。
步進值元素可儲存用於判定一張量元素之一記憶體位址的部分位址位移之步進值。一維度之步進值係在遍歷該維度之for迴圈之每一反覆之後與該維度之部分位址位移值相加之一值。在此實例中,內嵌套迴圈索引變數k具有一步進值1,中間嵌套迴圈索引變數j具有一步進值6,且外嵌套迴圈索引變數i具有一步進值2。
在某些實施方案中,處理器、一使用者或編譯用於遍歷一張量之一程式之一編譯器基於該張量之維度中之一或多者中之一元素數目而判定每一維度之步進值及/或結束值。在一項實例中,每一維度之步進值及/或結束值取決於張量之記憶體佈局。針對一個二維張量,記憶體佈局可(舉例而言)遵循列為主或行為主次序。以此方式,針對每一張量元素而計算之記憶體位址不同於針對每一其他張量元素之記憶體位址。在某些實施方案中,判定記憶體位址使得在遍歷期間所存取之元素序列在記憶體中係實體上連續的。在此實例中,第一張量元素可儲存於具有一第一位址之一第一記憶體位置處,第二張量元素可儲存於直接緊挨著該第一記憶體位置之一第二記憶體位置處,第三張量元素可儲存於直接緊挨著該第二記憶體位置
之一第三記憶體位置處,依此類推。在某些實施方案中,判定記憶體位址使得在遍歷期間所存取之元素序列在記憶體中並非係實體上連續的。在此實例中,第二張量元素可不直接緊挨著第一張量元素而儲存。
結束值元素可儲存維度之結束值。一維度之結束值表示部分位址位移值經重設至該維度之初始值之一值。另外,當一第一迴圈之部分位址位移值等於該第一迴圈之結束值時,使其中嵌套有該第一迴圈之一第二迴圈之步進值與該第二迴圈之部分位址位移值相加。在此實例中,內嵌套迴圈索引變數i具有一結束值2,中間嵌套迴圈索引變數i具有一步進值12,且外嵌套迴圈索引變數k具有一結束值6。因此,當內嵌套迴圈索引變數i之部分位址位移值達到一值2時,處理器可將內嵌套迴圈索引變數i之部分位址位移值重設至零且使中間嵌套迴圈索引變數j之步進值(6)與中間嵌套迴圈索引變數j之部分位址位移值相加。若此係由中間嵌套迴圈索引變數j追蹤之迴圈之第一反覆,則中間嵌套迴圈索引變數j之部分位址位移值將係6(0+6)。
部分位址位移值元素208儲存維度之部分位址位移值。在此實例中,處理器將部分位址位移值設定至零。該等部分位址位移值用於判定一張量元素之一記憶體位址位移。在某些實施方案中,一特定變數之一特定張量元素之記憶體位址基於張量元素之一預規定基底位址與張量元素之維度之部分位址位移值的一總和,如方程式225中所展示。對於變數V1,一特定張量元素之記憶體位址等於張量元素之基底位址與列208a(頂部列)中之部分位址位移值之總和。因此,對於與變數V1之每一維度之第一元素對應之張量元素(i=0,j=0,k=0),記憶體位址等於基底位址加零,此乃因部分位址位移值全部係零。
可使用圖1之硬體加法器單元124判定張量元素之記憶體位址。舉例而言,一特定變數(例如,變數V1)之至一加法器之輸入可係基底位址及變數之列(例如,變數V1之列208a)中之每一部分位址位移值元素之值。輸出係變數之記憶體位址。
圖2C圖解說明根據程式212存取元素V1[0][0][0]。舉例而言,處理器可執行定位與所存取元素對應之一記憶體位址之一指令「LocateTensor」。在某些實施方案中,該指令可包含一基底記憶體位址。舉例而言,該指令「LocateTensor」可包含係變數V1之第一元素之元素V1[0][0][0]之一記憶體位址。在某些實施方案中,該指令可包含與將存取之一張量對應之一列編號。舉例而言,該指令「LocateTensor」可包含與變數V1對應之一列編號。在此處,列編號係1。
在某些實施方案中,包含張量遍歷單元之一計算系統可包含向張量遍歷單元查詢記憶體位址值之一有限狀態機(FSM)。舉例而言,該FSM可向處理器查詢記憶體位址值,而非處理器執行關於圖2B至圖2H所闡述之指令(諸如「LocateTensor」及「IterateTensor」指令)。該FSM可反覆地遍歷嵌套迴圈且在遍歷該等迴圈時使部分位址位移值反覆,如下文參考處理器所闡述。處理器可然後自硬體計數器或自FSM接收所判定記憶體位址值,此乃因所判定記憶體位址值經判定。
在某些實施方案中,回應於到接收指令,一硬體加法器單元(例如,圖1之硬體加法器單元124)藉由計算儲存於部分位址位移值元素208之列1(列208a)中之部分位址位移值元素208中之每一者中之值之一總和而判定一記憶體位址位移。在此處,硬體加法器單元判定儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和。處理器可然後藉由以下方式存取元素
V1[0][0][0]:使基底記憶體位址與所判定記憶體位址位移(亦即,在此實例中為0)相加以判定一記憶體位址;及基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。在另一實例中,硬體加法器可藉由判定基底記憶體位址與儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和而判定元素V1[0][0][0]之記憶體位址。處理器可然後基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。
圖2D圖解說明根據程式212存取元素V1[0][0][1]。舉例而言,在程式已完成內迴圈之第一反覆之後,處理器可執行在程式進入內迴圈之第二反覆時(亦即,i=0,j=0,k=1)更新部分位址位移值之一指令「IterateTensor」。在某些實施方案中,張量遍歷單元藉由使與內迴圈(由內嵌套迴圈索引變數i追蹤之迴圈)對應的維度之部分位址位移值元素208遞增與內迴圈對應的維度之步進值而更新部分位址位移值。在此實例中,使用硬體加法器單元使儲存於部分位址位移值元素Z1,1中之部分位址位移值遞增儲存於步進值元素X1,1中之步進值。針對內迴圈儲存之所得經更新部分位址位移值係儲存於Z1,1中之先前值與儲存於X1,1中之值之總和,亦即,0+1=1。
在某些實施方案中,張量遍歷單元比較儲存於元素Z1,1中之經更新部分位移位址值與內迴圈之儲存於元素Y1,1中之結束值。若儲存於Z1,1中之經更新部分位移位址值等於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可將儲存於元素Z1,1中之部分位移位址值之值重設至內迴圈之儲存於元素V1,1中之初始值。另外,張量遍歷單元可使儲存於元素Z1,2中之與中間迴圈對應的維度之部分位址位移值遞增中間迴圈之儲存於X1,2中之步進值,如下文更詳細地闡述。
若儲存於元素Z1,1中之經更新部分位移位址值小於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可保持內迴圈之儲存於元素Z1,1中之經更新部分位址位移值。在此實例中,內迴圈之經更新部分位址位移值(1)小於內迴圈之結束值(2)。因此,張量遍歷單元在不使中間迴圈之部分位址位移值遞增之情況下保持內迴圈之儲存於部分位址位移元素Z1,1中之經更新部分位址位移值。
處理器可然後藉由以下方式存取元素V1[0][0][1]:執行指令「LocateTensor」以定位與V1[0][0][1]對應之記憶體位址。回應於接收到該指令,硬體加法器單元藉由計算儲存於部分位址位移值元素208之列1(列208a)中之部分位址位移值元素208中之每一者中之值之一總和而判定一記憶體位址位移。在此處,硬體加法器單元判定儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和。處理器可然後藉由以下方式存取元素V1[0][0][1]:使基底記憶體位址與所判定記憶體位址位移(亦即,在此實例中為1)相加以判定一記憶體位址;及基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。在另一實例中,硬體加法器可藉由判定基底記憶體位址與儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和而判定元素V1[0][0][1]之記憶體位址。處理器可然後基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。
圖2E圖解說明根據程式212存取元素V1[0][1][0]。舉例而言,在程式已完成內迴圈之第二反覆之後,處理器可執行在程式進入中間迴圈之第二反覆時(亦即,i=0,j=1,k=0)更新部分位址位移值之一指令「IterateTensor」。在某些實施方案中,張量遍歷單元藉由使與內迴圈(由內嵌套迴圈索引變數i追蹤之迴圈)對應的維度之部分位址位移值元素
208遞增與內迴圈對應的維度之步進值而更新部分位址位移值。在此實例中,使用硬體加法器單元使儲存於部分位址位移值元素Z1,1中之部分位址位移值遞增儲存於步進值元素X1,1中之步進值。針對內迴圈儲存之所得經更新部分位址位移值係儲存於Z1,1中之先前值與儲存於X1,1中之值之總和,亦即,1+1=2。
在某些實施方案中,張量遍歷單元比較儲存於元素Z1,1中之經更新部分位移位址值與內迴圈之儲存於元素Y1,1中之結束值。若儲存於Z1,1中之經更新部分位移位址值等於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可將儲存於元素Z1,1中之部分位移位址值之值重設至內迴圈之儲存於元素V1,1中之初始值。另外,張量遍歷單元可使儲存於元素Z1,2中之與中間迴圈對應的維度之部分位址位移值遞增中間迴圈之儲存於X1,2中之步進值。
若儲存於元素Z1,1中之經更新部分位移位址值小於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可保持內迴圈之儲存於元素Z1,1中之經更新部分位址位移值。在此實例中,內迴圈之經更新部分位址位移值(2)等於內迴圈之結束值(2)。因此,張量遍歷單元將儲存於元素Z1,1中之部分位移位址值重設至儲存於元素V1,1中之初始值。另外,張量遍歷單元使中間迴圈之儲存於元素Z1,2中之部分位址位移值遞增中間迴圈之儲存於X1,2中之步進值。在此實例中,中間迴圈之經更新部分位址位移值係6(0+6)。
在某些實施方案中,張量遍歷單元回應於判定更新中間迴圈之部分位移位址值而比較中間迴圈之儲存於元素Z1,2中之經更新部分位移位址值與中間迴圈之儲存於元素Y1,2中之結束值。若中間迴圈值之儲存於Z1,2中
之經更新部分位移位址等於中間迴圈之儲存於元素Y1,2中之結束值,則張量遍歷單元可將儲存於元素Z1,2中之部分位移位址值之值重設至中間迴圈之儲存於元素V1,2中之初始值。另外,張量遍歷單元可使儲存於元素Z1,3中之與外迴圈對應的維度之部分位址位移值遞增外迴圈之儲存於X1,3中之步進值,如下文所闡述。
若中間迴圈之儲存於元素Z1,2中之經更新部分位移位址值小於中間迴圈之儲存於元素Y1,2中之結束值,則張量遍歷單元可保持中間迴圈之儲存於元素Z1,2中之經更新部分位址位移值。在此實例中,中間迴圈之經更新部分位址位移值(6)小於內迴圈之結束值(12)。因此,張量遍歷單元在不使外迴圈之部分位址位移值遞增之情況下保持中間迴圈之儲存於部分位址位移元素Z1,2中之經更新部分位址位移值。
處理器可然後藉由以下方式存取元素V1[0][1][0]:執行指令「LocateTensor」以定位與V1[0][1][0]對應之記憶體位址。回應於接收到該指令,硬體加法器單元藉由計算儲存於部分位址位移值元素208之列1(列208a)中之部分位址位移值元素208中之每一者中之值之一總和而判定一記憶體位址位移。在此處,硬體加法器單元判定儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和。處理器可然後藉由以下方式存取元素V1[0][1][0]:使基底記憶體位址與所判定記憶體位址位移(亦即,在此實例中為6)相加以判定一記憶體位址;及基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。在另一實例中,硬體加法器可藉由判定基底記憶體位址與儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和而判定元素V1[0][1][0]之記憶體位址。處理器可然後基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。
圖2F圖解說明根據程式212存取元素V1[0][1][1]。舉例而言,在程式已完成內迴圈之第一反覆以進行中間迴圈之第二反覆之後,處理器可執行在程式進入內迴圈之第二反覆以進行中間迴圈之第二反覆時(亦即,i=0,j=1,k=1)更新部分位址位移值之一指令「IterateTensor」。在某些實施方案中,張量遍歷單元藉由使與內迴圈(由內嵌套迴圈索引變數i追蹤之迴圈)對應的維度之部分位址位移值元素208遞增與內迴圈對應的維度之步進值而更新部分位址位移值。在此實例中,使用硬體加法器單元使儲存於部分位址位移值元素Z1,1中之部分位址位移值遞增儲存於步進值元素X1,1中之步進值。針對內迴圈儲存之所得經更新部分位址位移值係儲存於Z1,1中之先前值與儲存於X1,1中之值之總和,亦即,0+1=1。
在某些實施方案中,張量遍歷單元比較儲存於元素Z1,1中之經更新部分位移位址值與內迴圈之儲存於元素Y1,1中之結束值。若儲存於Z1,1中之經更新部分位移位址值等於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可將儲存於元素Z1,1中之部分位移位址值之值重設至內迴圈之儲存於元素V1,1中之初始值。另外,張量遍歷單元可使儲存於元素Z1,2中之與中間迴圈對應的維度之部分位址位移值遞增中間迴圈之儲存於X1,2中之步進值。
若儲存於元素Z1,1中之經更新部分位移位址值小於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可保持內迴圈之儲存於元素Z1,1中之經更新部分位址位移值。在此實例中,內迴圈之經更新部分位址位移值(1)小於內迴圈之結束值(2)。因此,張量遍歷單元在不使中間迴圈之部分位址位移值遞增之情況下保持內迴圈之儲存於部分位址位移元素Z1,1中之經更新部分位址位移值。
處理器可然後藉由以下方式而存取元素V1[0][1][1]:執行指令「LocateTensor」以定位與V1[0][1][1]對應之記憶體位址。回應於接收到該指令,硬體加法器單元藉由計算儲存於部分位址位移值元素208之列1(列208a)中之部分位址位移值元素208中之每一者中之值之一總和而判定一記憶體位址位移。在此處,硬體加法器單元判定儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和。處理器可然後藉由以下方式存取元素V1[0][1][1]:使基底記憶體位址與所判定記憶體位址位移(亦即,在此實例中為7)相加以判定一記憶體位址;及基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。在另一實例中,硬體加法器可藉由判定基底記憶體位址與儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和而判定元素V1[0][1][1]之記憶體位址。處理器可然後基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。
圖2G圖解說明根據程式212存取元素V1[1][0][0]。舉例而言,在程式已完成內迴圈之第二反覆以進行中間迴圈之第二反覆之後,處理器可執行在程式進入外迴圈之第二反覆時(亦即,i=1,j=0,k=0)更新部分位址位移值之一指令「IterateTensor」。在某些實施方案中,張量遍歷單元藉由使與內迴圈(由內嵌套迴圈索引變數i追蹤之迴圈)對應的維度之部分位址位移值元素208遞增與內迴圈對應的維度之步進值而更新部分位址位移值。在此實例中,使用硬體加法器單元使儲存於部分位址位移值元素Z1,1中之部分位址位移值遞增儲存於步進值元素X1,1中之步進值。針對內迴圈儲存之所得經更新部分位址位移值係儲存於Z1,1中之先前值與儲存於X1,1中之值之總和,亦即,1+1=2。
在某些實施方案中,張量遍歷單元比較儲存於元素Z1,1中之經更新部
分位移位址值與內迴圈之儲存於元素Y1,1中之結束值。若儲存於Z1,1中之經更新部分位移位址值等於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可將儲存於元素Z1,1中之部分位移位址值之值重設至內迴圈之儲存於元素V1,1中之初始值。另外,張量遍歷單元可使儲存於元素Z1,2中之與中間迴圈對應的維度之部分位址位移值遞增中間迴圈之儲存於X1,2中之步進值。
若儲存於元素Z1,1中之經更新部分位移位址值小於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可保持內迴圈之儲存於元素Z1,1中之經更新部分位址位移值。在此實例中,內迴圈之經更新部分位址位移值(2)等於內迴圈之結束值(2)。因此,張量遍歷單元將儲存於元素Z1,1中之部分位移位址值重設至儲存於元素V1,1中之初始值。另外,張量遍歷單元使中間迴圈之儲存於元素Z1,2中之部分位址位移值遞增中間迴圈之儲存於X1,2中之步進值。在此實例中,中間迴圈之經更新部分位址位移值係12(6+6)。
在某些實施方案中,張量遍歷單元回應於判定更新中間迴圈之部分位移位址值而比較中間迴圈之儲存於元素Z1,2中之經更新部分位移位址值與中間迴圈之儲存於元素Y1,2中之結束值。若中間迴圈值之儲存於Z1,2中之經更新部分位移位址等於中間迴圈之儲存於元素Y1,2中之結束值,則張量遍歷單元可將儲存於元素Z1,2中之部分位移位址值之值重設至中間迴圈之儲存於元素V1,2中之初始值。另外,張量遍歷單元可使儲存於元素Z1,3中之與外迴圈對應的維度之部分位址位移值遞增外迴圈之儲存於X1,3中之步進值。
若中間迴圈之儲存於元素Z1,2中之經更新部分位移位址值小於中間迴
圈之儲存於元素Y1,2中之結束值,則張量遍歷單元可保持中間迴圈之儲存於元素Z1,2中之經更新部分位址位移值。在此實例中,中間迴圈之經更新部分位址位移值(12)等於中間迴圈之結束值(12)。因此,張量遍歷單元將儲存於元素Z1,2中之部分位移位址值重設至儲存於元素V1,2中之初始值。另外,張量遍歷單元使外迴圈之儲存於元素Z1,3中之部分位址位移值遞增外迴圈之儲存於X1,3中之步進值。在此實例中,外迴圈之經更新部分位址位移值係2(0+2)。
處理器可然後藉由以下方式存取元素V1[1][0][0]:執行指令「LocateTensor」以定位與V1[1][0][0]對應之記憶體位址。回應於接收到該指令,硬體加法器單元藉由計算儲存於部分位址位移值元素208之列1(列208a)中之部分位址位移值元素208中之每一者中之值之一總和而判定一記憶體位址位移。在此處,硬體加法器單元判定儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和。處理器可然後藉由以下方式存取元素V1[1][0][0]:使基底記憶體位址與所判定記憶體位址位移(亦即,在此實例中為2)相加以判定一記憶體位址;及基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。在另一實例中,硬體加法器可藉由判定基底記憶體位址與儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和而判定元素V1[1][0][0]之記憶體位址。處理器可然後基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。
圖2H圖解說明根據程式212存取元素V1[1][0][1]。舉例而言,在程式已完成內迴圈之第一反覆以進行外迴圈之第二反覆之後,處理器可執行在程式進入內迴圈之第二反覆以進行外迴圈之第二反覆時(亦即,i=1,j=0,k=1)更新部分位址位移值之一指令「IterateTensor」。在某些實施
方案中,張量遍歷單元藉由使與內迴圈(由內嵌套迴圈索引變數i追蹤之迴圈)對應的維度之部分位址位移值元素208遞增與內迴圈對應的維度之步進值而更新部分位址位移值。在此實例中,使用硬體加法器單元使儲存於部分位址位移值元素Z1,1中之部分位址位移值遞增儲存於步進值元素X1,1中之步進值。針對內迴圈儲存之所得經更新部分位址位移值係儲存於Z1,1中之先前值與儲存於X1,1中之值之總和,亦即,0+1=1。
在某些實施方案中,張量遍歷單元比較儲存於元素Z1,1中之經更新部分位移位址值與內迴圈之儲存於元素Y1,1中之結束值。若儲存於Z1,1中之經更新部分位移位址值等於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可將儲存於元素Z1,1中之部分位移位址值之值重設至內迴圈之儲存於元素V1,1中之初始值。另外,張量遍歷單元可使儲存於元素Z1,2中之與中間迴圈對應的維度之部分位址位移值遞增中間迴圈之儲存於X1,2中之步進值。
若儲存於元素Z1,1中之經更新部分位移位址值小於內迴圈之儲存於元素Y1,1中之結束值,則張量遍歷單元可保持內迴圈之儲存於元素Z1,1中之經更新部分位址位移值。在此實例中,內迴圈之經更新部分位址位移值(1)小於內迴圈之結束值(2)。因此,張量遍歷單元在不使中間迴圈之部分位址位移值遞增之情況下保持內迴圈之儲存於部分位址位移元素Z1,1中之經更新部分位址位移值。
處理器可然後藉由以下方式存取元素V1[1][0][1]:執行指令「LocateTensor」以定位與V1[1][0][1]對應之記憶體位址。回應於接收到該指令,硬體加法器單元藉由計算儲存於部分位址位移值元素208之列1(列208a)中之部分位址位移值元素208中之每一者中之值之一總和而判定
一記憶體位址位移。在此處,硬體加法器單元判定儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和。處理器可然後藉由以下方式存取元素V1[1][0][1]:使基底記憶體位址與所判定記憶體位址位移(亦即,在此實例中為3)相加以判定一記憶體位址;及基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。在另一實例中,硬體加法器可藉由判定基底記憶體位址與儲存於元素Z1,1、Z1,2及Z1,3中之值之一總和而判定元素V1[1][0][1]之記憶體位址。處理器可然後基於該所判定記憶體位址而存取儲存媒體中之所儲存資料。
張量遍歷單元可繼續針對嵌套迴圈之剩餘反覆判定記憶體位址從而以一類似方式存取剩餘張量元素。表1在下文展示使用圖2A至圖2H中所圖解說明之步進值得出的張量元素之記憶體位址位移值。
圖3係圖解說明用於判定一個多維張量變數之一位址之一實例性程序
300之一流程圖。程序300可由一或多個電腦之一系統(例如,圖1之計算系統100)執行。該系統包含具有張量位址值元素之一張量遍歷單元,該等張量位址值元素包含初始值元素、步進值元素、結束值元素及部分位址位移元素。該張量遍歷單元亦包含具有一或多個硬體加法器之一硬體加法器單元。
該系統獲得用以存取一N維張量之一特定元素之一指令(302)。該N維張量可包含跨越該N個維度中之每一者配置之多個元素,其中N係等於或大於1之一整數。舉例而言,該系統可包含執行用於存取一張量之一特定元素之一指令的一處理單元(例如,處理單元102)。
在某些實施方案中,該指令可表示用於處理包含一第一迴圈、一第二迴圈及一第三迴圈之一嵌套迴圈之一指令。該第一迴圈可係嵌套在該第二迴圈內之一內迴圈且該第二迴圈可係嵌套在該第三迴圈內之一中間迴圈。可使用一第一索引變數使該第一迴圈反覆。類似地,可使用一第二索引變數使該第二迴圈反覆且可使用一第三索引變數使該第三迴圈反覆。舉例而言,一程式可儲存於可由該處理單元執行之一儲存媒體中。該程式可規定具有一第一維度2、一第二維度2及一第三維度3之一字符陣列變數V1(或另一類型之陣列)。該程式可規定用於遍歷變數V1之一嵌套for迴圈。該for迴圈可在由一嵌套迴圈索引變數i追蹤之一外迴圈中遍歷V1之第三維度。該for迴圈亦可在由一嵌套迴圈索引變數j追蹤之一中間迴圈中遍歷V1之第二維度且在由嵌套迴圈索引變數k追蹤之一內迴圈中遍歷第一維度。
該系統使用一或多個硬體加法器及部分位址位移元素判定該特定元素之一位址(304)。在某些實施方案中,該特定元素之該位址可係自N維張量之另一元素位移之一位址。舉例而言,該特定元素之該位址可係自N維
張量之另一元素之一基底記憶體位址位移之一位址。針對一或多個張量索引元素中之每一張量索引元素,該系統可藉由以下方式判定記憶體位址:使用(若干)硬體加法器使部分位址位移元素之當前值與基底記憶體位址相加在一起。部分位址位移元素之當前值基於迴圈之當前反覆。
在某些實施方案中,在判定張量之元素中之任一者之位址位移之前,系統可設定儲存於張量位址值元素中之值。舉例而言,一處理器可執行將張量位址值元素初始化之一指令「InitializeElements」。
針對內迴圈之每一反覆,系統可使用內迴圈之步進值更新內迴圈之部分位址位移值。在內迴圈之第一反覆以進行中間迴圈及外迴圈之第一反覆之前(亦即,i=0,j=0,k=0),內迴圈之部分位址位移值可設定至內迴圈之初始值。
在內迴圈之每一反覆之後,系統可將內迴圈之部分位址位移值更新至內迴圈之先前部分位址位移值與內迴圈之步進值之總和。系統可然後比較內迴圈之經更新部分位址位移值與內迴圈之結束值。若內迴圈之經更新部分位址位移值小於內迴圈之結束值,則系統可在不修改其他部分位址位移值中之任一者之情況下維持其部分位址位移值元素中之內迴圈之經更新部分位址位移值至少直至內迴圈之下一反覆為止。
若此經更新部分位址位移值等於內迴圈之結束值,則系統可將部分位址位移值重設至內迴圈之初始值且使用內迴圈之步進值使中間迴圈之部分位址位移值遞增。舉例而言,系統可將中間迴圈之部分位址位移值更新至中間迴圈之先前部分位址位移值與中間迴圈之步進值之總和。系統可然後比較中間迴圈之經更新部分位址位移值與中間迴圈之結束值。若中間迴圈之經更新部分位址位移值小於內迴圈之結束值,則系統可在不修改其他
部分位址位移值中之任一者之情況下維持其部分位址位移值元素中之中間迴圈之經更新部分位址位移值至少直至中間迴圈之下一反覆為止。
若此經更新部分位址位移值等於中間迴圈之結束值,則系統可將部分位址位移值重設至中間迴圈之初始值且使用外迴圈之步進值使外迴圈之部分位址位移值遞增。舉例而言,系統可將外迴圈之部分位址位移值更新至外迴圈之先前部分位址位移值與外迴圈之步進值之總和。系統可然後比較外迴圈之經更新部分位址位移值與外迴圈之結束值。
若外迴圈之經更新部分位址位移值小於外迴圈之結束值,則系統可維持其部分位址位移值元素中之外迴圈之經更新部分位址位移值。若此經更新部分位址位移值等於外迴圈之結束值,則系統可在已存取張量之每一元素時將每一迴圈之部分位址位移值重設至其各別初始值。
系統輸出指示所判定位址之資料以用於存取N維張量之特定元素(306)。舉例而言,張量遍歷單元可基於當前部分位址位移值與基底記憶體位址之一總和而輸出所判定位址。系統之處理單元可使用一記憶體位址位移值存取儲存媒體中之一N維度陣列變數之一特定元素。
此說明書中所闡述之標的物及功能性操作之實施例可實施於包含此說明書中所揭示之結構及其結構等效物之數位電子電路、有形地體現之電腦軟體或韌體、電腦硬體中或者實施於其中之一或多者之組合中。此說明書中所闡述之標的物之實施例可實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以供資料處理設備執行或用以控制資料處理設備之操作之電腦程式指令之一或多個模組。另一選擇係或另外,程式指令可編碼於一人工產生之所傳播信號(例如,一機器產生之電、光學或電磁信號)上,該人工產生之所傳播信號經產生以編碼用於傳輸至適合接收器設
備以由一資料處理設備執行之資訊。電腦儲存媒體可係一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串行存取記憶體裝置或者其中之一或多者之一組合。
此說明書中所闡述之程序及邏輯流程可由一或多個可編程電腦執行,該一或多個可編程電腦執行一或多個電腦程式以藉由對輸入資料進行操作且產生輸出來執行功能。該等程序及邏輯流程亦可由特殊用途邏輯電路(例如,一FPGA(場可程式化閘陣列)、一ASIC(特殊應用積體電路)或一GPGPU(一般用途圖形處理單元))執行,且設備亦可實施為該特殊用途邏輯電路。
適合用於執行一電腦程式之電腦包含(藉由實例方式,可基於)一般用途微處理器或特殊用途微處理器或兩者,或者任一其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般而言,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)或以操作方式耦合以自該等大容量儲存裝置接收資料或向其傳送資料或既接收又傳送資料。然而,一電腦不需要具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如僅舉幾例,一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲控制台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃磁碟機)。
適合用於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,包含(藉由實例方式):半導體記憶
體裝置,例如EPROM、EEPROM及快閃記憶體裝置;磁碟,例如內部硬碟或可移除磁碟;磁光盤;及CDROM及DVD-ROM磁碟。處理器及記憶體可由特殊用途邏輯電路補充或併入特殊用途邏輯電路中。
雖然此說明書含有諸多具體實施細節,但此等細節不應解釋為對任何發明或可主張之內容之範疇之限制,而是應解釋為可係特定發明之特定實施例特有之特徵之說明。在單獨實施例之內容脈絡中於此說明書中闡述之特定特徵亦可以組合方式實施於一單個實施例中。相反地,在一單個實施例之內容脈絡中闡述之各種特徵亦可單獨地或以任何適合子組合方式實施於多個實施例中。此外,雖然上文可將特徵闡述為以某些組合起作用且甚至最初主張如此,但來自一所主張組合之一或多個特徵在某些情形中可自該組合去除,且該所主張組合可針對於一子組合或一子組合之變化形式。
類似地,儘管在圖式中以一特定次序繪示操作,但不應將此理解為需要以所展示之特定次序或以按順序次序執行此類操作,或執行所有所圖解說明操作以達成合意結果。在特定情況中,多任務及並行處理可係有利的。此外,不應將在上文所闡述之實施例中之各種系統模組及組件之分離理解為在所有實施例中需要此分離,且應理解,通常可將所闡述之程式組件及系統一起整合於一單個軟體產品中或封裝至多個軟體產品中。
已闡述標的物之特定實施例。其他實施例在所附申請專利範圍之範疇內。舉例而言,申請專利範圍中所引用之動作可以一不同次序來執行且仍達成合意結果。作為一項實例,附圖中所繪示之程序未必需要所展示之特定次序或順序次序來達成合意結果。在特定實施方案中,多任務及並行處理可係有利的。
Claims (20)
- 一種用於處理用於存取一N維張量之一指令之設備,該設備包括:針對該N維張量之每一維度,儲存該維度之一部分位址位移值的一部分位址位移值元素,每一維度之該部分位址位移值元素係至少基於該維度之一初始值、該維度之一步進值及該維度之一迴圈之一反覆次數,其中每一部分位址位移值元素包括硬體儲存電路;一或多個硬體加法器;及一或多個硬體處理器,其經組態以執行由該一或多個硬體處理器可執行之一指令集之一或多個指令,其中該一或多個指令之執行致使該一或多個硬體處理器執行下述操作,其包含:獲得用以存取該N維張量之一特定元素之一指令,其中該N維張量具有跨越該N個維度中之每一者而配置之多個元素,且其中N係等於或大於2之一整數;針對該N維張量之每一維度,自該維度之該部分位址位移值元素獲得該維度之一當前部分位址位移值;使用該等部分位址位移值元素及該一或多個硬體加法器中之一或多者判定該特定元素之一記憶體位址,其包含使用該一或多個硬體加法器判定該等所獲得當前部分位址位移值之一總和,該特定元素之該所判定記憶體位址係不同於在該特定元素之該所判定記憶體位址處所儲存之該特定元素之一值;輸出指示該所判定記憶體位址之資料以用於存取該N維張量之該特定元素;及藉由使用該一或多個硬體加法器將該至少一維度之該步進值加至該至少一維度之該當前部分位址位移值而更新該等維度之至少一者之該部分位址位移值。
- 如請求項1之設備,其進一步針對每一維度包括:一初始值元素,其儲存該維度之該初始值;及一步進值元素,其儲存該維度之該步進值。
- 如請求項2之設備,其中每一部分位址位移值元素、每一初始值元素及每一步進值元素包括一硬體暫存器。
- 如請求項1之設備,其中該一或多個硬體處理器進一步經組態以:針對每一維度在該維度之一嵌套迴圈之每一反覆之後藉由使該步進值與該維度之一先前部分位址位移值相加而判定該維度之該部分位址位移值。
- 如請求項4之設備,其進一步針對每一維度包括儲存該維度之一限制值之一限制值元素,其中該一或多個硬體處理器進一步經組態以:針對每一維度判定該維度之該所判定部分位址位移值是否等於該維度之該限制值;及回應於判定與一第一嵌套迴圈對應之一第一維度之該所判定部分位址位移值等於該第一維度之該限制值:將該第一維度之該部分位址位移值重設至該第一維度之該初始值;及針對與其中嵌套有該第一嵌套迴圈之一第二嵌套迴圈對應之一第二維度且使用該一或多個硬體加法器來將該第二維度之該部分位址位移值更新為等於該第二維度之該步進值與該第二維度之該部分位址位移值之一總和。
- 如請求項1之設備,其中每一維度之該步進值係基於該等維度中之一或多者中之一元素數目的一預定值。
- 如請求項1之設備,其中:該一或多個硬體處理器基於該等維度之該等迴圈而以一順序判定該N維張量之每一元素之一各別記憶體位址;且該一或多個硬體處理器藉由下述操作而在該維度之該迴圈之一反覆之後更新每一維度之該部分位址位移值:將該維度之該步進值加至該維度之一當前部分位址值;及判定該維度之該所更新部分位址位移值是否等於該維度之一結束值;當該維度之該所更新部分位址位移值等於該維度之該結束值時,將該維度之該部分位址位移值更新為等於該維度之該初始值;及當該維度之該所更新部分位址位移值不等於該維度之該結束值時,將該維度之該所更新部分位址位移值儲存至該維度之該所更新部分位址位移值元素中。
- 一種用於存取N維張量之系統,其包括:一或多個處理單元,其經組態以對一N維張量執行線性代數運算,其中該N維張量具有跨越該N個維度中之每一者而配置之多個元素,且其中N係等於或大於2之一整數;針對該N個維度中之每一維度,儲存該維度之一部分位址位移值的一部分位址位移值元素,每一維度之該部分位址位移值元素係至少基於該維度之一初始值、該維度之一步進值及該維度之一迴圈之一反覆次數,其中每一部分位址位移值元素包括硬體儲存電路;電路,其包含:一或多個硬體加法器,及一或多個硬體處理器,其經組態以:獲得用以存取該N維張量之一特定元素之一指令;針對該N維張量之每一維度,自該維度之該部分位址位移值元素獲得該維度之一當前部分位址位移值;使用該等部分位址位移值元素及該一或多個硬體加法器中之一或多者判定該特定元素之一記憶體位址,其包含使用該一或多個硬體加法器判定該等所獲得當前部分位址位移值之一總和,該特定元素之該所判定記憶體位址係不同於在該特定元素之該所判定記憶體位址處所儲存之該特定元素之一值;輸出指示該所判定記憶體位址之資料以用於存取該N維張量之該特定元素;及藉由使用該一或多個硬體加法器將該至少一維度之該步進值加至該至少一維度之該當前部分位址位移值而更新該等維度之至少一者之該部分位址位移值。
- 如請求項8之系統,其進一步針對每一維度包括:一初始值元素,其儲存該維度之該初始值;及一步進值元素,其儲存該維度之該步進值。
- 如請求項9之系統,其中每一部分位址位移值元素、每一初始值元素及每一步進值元素包括一硬體暫存器。
- 如請求項8之系統,其中該一或多個硬體處理器進一步經組態以:針對每一維度在該維度之一嵌套迴圈之每一反覆之後藉由使該步進值與該維度之一先前部分位址位移值相加而判定該維度之該部分位址位移值。
- 如請求項11之系統,其進一步針對每一維度包括儲存該維度之一限制值之一限制值元素,其中該一或多個硬體處理器進一步經組態以:針對每一維度判定該維度之該所判定部分位址位移值是否等於該維度之該限制值;及回應於判定與一第一嵌套迴圈對應之一第一維度之該所判定部分位址位移值等於該第一維度之該限制值:將該第一維度之該部分位址位移值重設至該第一維度之該初始值;及針對與其中嵌套有該第一嵌套迴圈之一第二嵌套迴圈對應之一第二維度且使用該一或多個硬體加法器來將該第二維度之該部分位址位移值更新為等於該第二維度之該步進值與該第二維度之該部分位址位移值之一總和。
- 如請求項8之系統,其中每一維度之該步進值係基於該等維度中之一或多者中之一元素數目的一預定值。
- 如請求項9之系統,其中:該一或多個硬體處理器基於該等維度之該等迴圈而以一順序判定該N維張量之每一元素之一各別記憶體位址;且該一或多個硬體處理器藉由下述操作而在該維度之該迴圈之一反覆之後更新每一維度之該部分位址位移值:將該維度之該步進值加至該維度之一當前部分位址值;及判定該維度之該所更新部分位址位移值是否等於該維度之一結束值;當該維度之該所更新部分位址位移值等於該維度之該結束值時,將該維度之該部分位址位移值更新為等於該維度之該初始值;及當該維度之該所更新部分位址位移值不等於該維度之該結束值時,將該維度之該所更新部分位址位移值儲存至該維度之該所更新部分位址位移值元素中。
- 一種電腦實施之方法,其包括:藉由一或多個硬體處理器獲得用以存取一N維張量之一特定元素之一指令,其中該N維張量具有跨越該N個維度中之每一者而配置之多個元素,且其中N係等於或大於2之一整數,且其中每一部分位址位移值元素包括硬體儲存電路;藉由一或多個硬體處理器且使用儲存於各別部分位址位移元素中之部分位址位移值及一或多個硬體加法器判定該特定元素之一記憶體位址,其中部分位址位移值包含每一維度之一部分位址位移值,且其中一維度之該部分位址位移值至少基於該維度之一初始值、該維度之一步進值及該維度之一迴圈之一反覆次數,該判定包括:針對該N維張量之每一維度,自該維度之該部分位址位移值元素獲得該維度之一當前部分位址位移值;及使用該一或多個硬體加法器判定該等所獲得當前部分位址位移值之一總和,該特定元素之該所判定記憶體位址係不同於在該特定元素之該所判定記憶體位址處所儲存之該特定元素之一值;藉由一或多個硬體處理器輸出指示該所判定記憶體位址之資料以用於存取該N維張量之該特定元素;及藉由使用該一或多個硬體加法器將該至少一維度之該步進值加至該至少一維度之該當前部分位址位移值而更新該等維度之至少一者之該部分位址位移值。
- 如請求項15之方法,其中:每一維度之該初始值儲存於該維度之一初始值元素中;且該維度之該步進值儲存於該維度之一步進值元素中。
- 如請求項16之方法,其中每一部分位址位移值元素、每一初始值元素及每一步進值元素包括一硬體暫存器。
- 如請求項15之方法,其進一步包括:針對每一維度在該維度之一嵌套迴圈之每一反覆之後藉由使該步進值與該維度之一先前位址位移值相加而判定該維度之該部分位址位移值。
- 如請求項18之方法,其進一步包括:針對每一維度判定該維度之該所判定部分位址位移值是否等於該維度之一限制值;及回應於判定與一第一嵌套迴圈對應之一第一維度之該所判定部分位址位移值等於該第一維度之該限制值:將該第一維度之該部分位址位移值重設至該第一維度之該初始值;及針對與其中嵌套有該第一嵌套迴圈之一第二嵌套迴圈對應之一第二維度且使用該一或多個硬體加法器來將該第二維度之該部分位址位移值更新為等於該第二維度之該步進值與該第二維度之該部分位址位移值之一總和。
- 如請求項15之方法,其中:該一或多個硬體處理器基於該等維度之該等迴圈而以一順序判定該N維張量之每一元素之一各別記憶體位址;且該一或多個硬體處理器藉由下述操作而在該維度之該迴圈之一反覆之後更新每一維度之該部分位址位移值:將該維度之該步進值加至該維度之一當前部分位址值;及判定該維度之該所更新部分位址位移值是否等於該維度之一結束值;當該維度之該所更新部分位址位移值等於該維度之該結束值時,將該維度之該部分位址位移值更新為等於該維度之該初始值;及當該維度之該所更新部分位址位移值不等於該維度之該結束值時,將該維度之該所更新部分位址位移值儲存至該維度之該所更新部分位址位移值元素中。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/603,061 US9946539B1 (en) | 2017-05-23 | 2017-05-23 | Accessing data in multi-dimensional tensors using adders |
US15/603,061 | 2017-05-23 | ||
PCT/US2018/019691 WO2018217258A1 (en) | 2017-05-23 | 2018-02-26 | Accessing data in multi-dimensional tensors using adders |
WOPCT/US18/19691 | 2018-02-26 | ||
??PCT/US18/19691 | 2018-02-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201901437A TW201901437A (zh) | 2019-01-01 |
TWI678617B true TWI678617B (zh) | 2019-12-01 |
Family
ID=61872606
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108141896A TWI740274B (zh) | 2017-05-23 | 2018-03-15 | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 |
TW107108831A TWI678617B (zh) | 2017-05-23 | 2018-03-15 | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108141896A TWI740274B (zh) | 2017-05-23 | 2018-03-15 | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9946539B1 (zh) |
TW (2) | TWI740274B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10534607B2 (en) * | 2017-05-23 | 2020-01-14 | Google Llc | Accessing data in multi-dimensional tensors using adders |
GB2567038B (en) * | 2017-07-31 | 2019-09-25 | Google Llc | Accessing prologue and epilogue data |
US10108538B1 (en) * | 2017-07-31 | 2018-10-23 | Google Llc | Accessing prologue and epilogue data |
US11321092B1 (en) * | 2017-11-08 | 2022-05-03 | Habana Labs Ltd. | Tensor-based memory access |
CN111160517B (zh) * | 2018-11-07 | 2024-02-06 | 杭州海康威视数字技术股份有限公司 | 一种深度神经网络的卷积层量化方法及装置 |
US11354564B2 (en) * | 2019-06-27 | 2022-06-07 | Intel Corporation | Tuning of loop orders in blocked dense basic linear algebra subroutines |
CN110796649B (zh) * | 2019-10-29 | 2022-08-30 | 北京市商汤科技开发有限公司 | 目标检测方法及装置、电子设备和存储介质 |
US11314674B2 (en) * | 2020-02-14 | 2022-04-26 | Google Llc | Direct memory access architecture with multi-level multi-striding |
CN113836049B (zh) * | 2021-09-17 | 2023-08-08 | 海飞科(南京)信息技术有限公司 | 存储器访问方法和电子装置 |
CN114489798B (zh) * | 2022-01-25 | 2024-04-05 | 海飞科(南京)信息技术有限公司 | 用于确定张量元素的越界状态的方法和电子装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694311B1 (en) * | 1999-01-25 | 2004-02-17 | International Business Machines Corporation | Method and apparatus for fast query approximation using adaptive query vector projection |
US20040034754A1 (en) * | 2002-08-19 | 2004-02-19 | Schreiber Robert S. | Method and system for memory management optimization |
US20080250227A1 (en) * | 2007-04-04 | 2008-10-09 | Linderman Michael D | General Purpose Multiprocessor Programming Apparatus And Method |
US9141916B1 (en) * | 2012-06-29 | 2015-09-22 | Google Inc. | Using embedding functions with a deep network |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0486684A1 (en) | 1990-05-22 | 1992-05-27 | International Business Machines Corporation | Virtual neurocomputer architectures for neural networks |
US5958048A (en) * | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
US6219784B1 (en) | 1997-11-17 | 2001-04-17 | Advanced Micro Devices, Inc. | Processor with N adders for parallel target addresses calculation |
JP3551353B2 (ja) * | 1998-10-02 | 2004-08-04 | 株式会社日立製作所 | データ再配置方法 |
US6507835B1 (en) | 2000-02-17 | 2003-01-14 | International Business Machines Corporation | Generating grouping queries using tensor representations |
US7249242B2 (en) * | 2002-10-28 | 2007-07-24 | Nvidia Corporation | Input pipeline registers for a node in an adaptive computing engine |
US7225439B2 (en) * | 2003-03-21 | 2007-05-29 | Sun Microsystems, Inc. | Combining write-barriers within an inner loop with fixed step |
US8443169B2 (en) | 2005-03-28 | 2013-05-14 | Gerald George Pechanek | Interconnection network connecting operation-configurable nodes according to one or more levels of adjacency in multiple dimensions of communication in a multi-processor and a neural processor |
US8572590B2 (en) * | 2008-09-17 | 2013-10-29 | Reservoir Labs, Inc. | Methods and apparatus for joint parallelism and locality optimization in source code compilation |
US20100153100A1 (en) * | 2008-12-11 | 2010-06-17 | Electronics And Telecommunications Research Institute | Address generator for searching algebraic codebook |
-
2017
- 2017-05-23 US US15/603,061 patent/US9946539B1/en active Active
-
2018
- 2018-03-15 TW TW108141896A patent/TWI740274B/zh active
- 2018-03-15 TW TW107108831A patent/TWI678617B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694311B1 (en) * | 1999-01-25 | 2004-02-17 | International Business Machines Corporation | Method and apparatus for fast query approximation using adaptive query vector projection |
US20040034754A1 (en) * | 2002-08-19 | 2004-02-19 | Schreiber Robert S. | Method and system for memory management optimization |
US20080250227A1 (en) * | 2007-04-04 | 2008-10-09 | Linderman Michael D | General Purpose Multiprocessor Programming Apparatus And Method |
US9141916B1 (en) * | 2012-06-29 | 2015-09-22 | Google Inc. | Using embedding functions with a deep network |
Also Published As
Publication number | Publication date |
---|---|
US9946539B1 (en) | 2018-04-17 |
TW201901437A (zh) | 2019-01-01 |
TW202024921A (zh) | 2020-07-01 |
TWI740274B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI678617B (zh) | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 | |
JP7433356B2 (ja) | 加算器を使用した多次元テンソルにおけるデータへのアクセス | |
CN109324827B (zh) | 用于处理用于访问数据的指令的装置、方法和*** | |
JP7279226B2 (ja) | 代替ループ限界値 | |
TWI635390B (zh) | 存取多維張量中之資料 | |
GB2567038B (en) | Accessing prologue and epilogue data |