TW202301107A - 神經網路處理輔助指令 - Google Patents
神經網路處理輔助指令 Download PDFInfo
- Publication number
- TW202301107A TW202301107A TW111113373A TW111113373A TW202301107A TW 202301107 A TW202301107 A TW 202301107A TW 111113373 A TW111113373 A TW 111113373A TW 111113373 A TW111113373 A TW 111113373A TW 202301107 A TW202301107 A TW 202301107A
- Authority
- TW
- Taiwan
- Prior art keywords
- function
- processor
- tensor
- dimension
- instruction
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims description 127
- 238000013528 artificial neural network Methods 0.000 title description 81
- 230000006870 function Effects 0.000 claims abstract description 431
- 230000015654 memory Effects 0.000 claims abstract description 103
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 3
- 238000003860 storage Methods 0.000 claims description 69
- 238000004590 computer program Methods 0.000 claims description 21
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 3
- 239000013598 vector Substances 0.000 description 72
- 230000004044 response Effects 0.000 description 55
- 230000004913 activation Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000005192 partition Methods 0.000 description 10
- 230000001419 dependent effect Effects 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000006057 Non-nutritive feed additive Substances 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Electrophonic Musical Instruments (AREA)
- Electrotherapy Devices (AREA)
- Details Of Television Systems (AREA)
- Advance Control (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Multi Processors (AREA)
Abstract
一第一處理器處理經組態以執行複數個函式之一指令。該複數個函式包括用以對一或多個張量進行操作之一或多個函式。判定該複數個函式中待執行之一函式。該第一處理器將與該函式相關之資訊提供至一第二處理器。該第二處理器待執行該函式。該第一處理器及該第二處理器共用記憶體,從而提供記憶體一致性。
Description
一或多個態樣大體上係關於計算環境內之處理,且特定而言,係關於改良此類處理。
為了增強資料及/或計算密集型計算環境中之處理,利用共處理器,諸如人工智慧加速器(亦被稱作神經網路處理器或神經網路加速器)。此類加速器提供大量計算能力,用於執行例如所涉及計算,諸如對矩陣或張量之計算。
作為實例,張量計算用於複雜處理中,包括深度學習,其為機器學習之子集。深度學習或機器學習(人工智慧之態樣)用於各種技術中,包括但不限於工程化、製造、醫療技術、汽車技術、電腦處理等。
為執行包括張量計算之人工智慧工作負載,可使用在通用處理器上執行許多指令之軟體實施,或使用專用硬體實施。在通用處理器上使用許多指令可限制神經網路操作之效能。另外,在程式化專用硬體實施時,可能必須針對每一代硬體而修改及重新編譯程式,從而增加複雜度及驗證成本。
經由提供用於促進計算環境內之處理的電腦程式產品來克服先前技術之缺點且提供額外優點。該電腦程式產品包括一或多個電腦可讀儲存媒體及共同地儲存於該一或多個電腦可讀儲存媒體上以執行方法之程式指令。該方法包括藉由第一處理器處理經組態以執行複數個函式之指令。該複數個函式包括用以對一或多個張量進行操作之函式。判定該複數個函式中待執行之一函式。該第一處理器將與該函式相關之資訊提供至一第二處理器。該第二處理器待執行該函式。該第一處理器及該第二處理器共用記憶體,從而提供記憶體一致性。
使用經組態以用於多個函式之單一指令,其中一或多個函式可由與處理指令之第一處理器共用記憶體的第二處理器執行,不需要昂貴的記憶體釘紮及輸入/輸出操作來與第二處理器通信。
在一個實例中,判定第一處理器抑或第二處理器待執行函式,且基於判定該函式待由第二處理器執行而執行提供。
在一個實例中,判定第一處理器抑或第二處理器待執行函式包括判定由指令指定之函式為非查詢函式抑或查詢函式。基於該函式為查詢函式,該第一處理器待執行該函式,且基於該函式為非查詢函式,該第二處理器待執行該函式。
作為實例,第一處理器對該指令之處理包括該指令之同步執行。
在另一態樣中,判定函式之執行是否已中斷。基於判定函式之執行已中斷,獲得選擇緩衝器中之資訊以恢復函式之執行。
作為實例,判定函式之執行是否已中斷包括檢查繼續旗標,該繼續旗標包括於待在重新執行指令時使用之參數區塊中。另外,在一個實例中,選擇緩衝器指示於待在重新執行指令時使用之參數區塊中。
在一個實例中,一或多個張量呈對第二處理器最佳化之格式。另外,作為實例,提供至第二處理器之資訊包括記憶體位址資訊,該記憶體位址資訊用以獲得待由待執行之函式操作的一或多個張量中之至少一個張量。
作為實例,該指令指定提供與處理待執行之函式相關之資訊的參數區塊。舉例而言,該參數區塊取決於待執行之函式。
在一個態樣中,提供一種用於促進計算環境內之處理的電腦程式產品。該電腦程式產品包括一或多個電腦可讀儲存媒體及共同地儲存於該一或多個電腦可讀儲存媒體上以執行方法之程式指令。該方法包括處理經組態以執行複數個函式之指令。該複數個函式包括用以對一或多個輸入張量進行操作之函式,且一或多個輸入張量具有針對待用以執行複數個函式中之一或多個函式之選擇處理器而最佳化的格式。自複數個函式判定待執行之特定函式,且起始特定函式之執行。
本文中亦描述及主張與一或多個態樣相關之電腦實施方法及系統。另外,本文中亦描述及可能主張與一或多個態樣相關之服務。
經由本文中所描述之技術實現額外特徵及優點。本文中詳細描述其他實施例及態樣且將其視為所主張態樣之一部分。
根據本發明之一或多個態樣,提供一種促進計算環境內之處理的能力。作為實例,提供經組態以實施多個函式之神經網路處理輔助指令,該等函式包括例如一查詢函式及複數個非查詢函式。該等非查詢函式包括例如與張量計算相關之函式。舉例而言,神經網路處理輔助指令為單一指令(例如,硬體/軟體介面處之單一架構化硬體機器指令),該指令為在通用處理器上處理(例如,至少部分地解碼及/或執行)之指令集架構(ISA)之部分。舉例而言,指令由通用處理器上之程式分派,該處理器解碼及起始指令。指令所指定之函式由通用處理器及/或專用處理器執行,諸如經組態以用於某些函式之共處理器,其耦接至通用處理器或為通用處理器之部分。接著,指令在通用處理器上完成。在其他實例中,該指令在一或多個通用處理器或一或多個專用處理器上起始、執行及完成。
在一個實施例中,單一架構化指令例如在主記憶體上操作且例如同步地執行。在一個實例中,主記憶體被專用處理器共用,該專用處理器用以執行一或多個函式,例如一或多個非查詢函式。共用主記憶體之使用消除需要昂貴的記憶體釘紮及/或輸入/輸出(I/O)操作來與專用處理器通信。其提供記憶體一致性,其中通用處理器及專用處理器之快取記憶體保持一致。另外,由於在一個實例中,同步地執行指令,因此在一個實例中,起始指令之處理器在指令執行期間將資訊提供至專用處理器(或另一處理器),該專用處理器正執行由指令指定之函式,但不執行其他工作,除非存在指令中斷或指令完成。
相較於先前技術,神經網路處理輔助指令提供提高的效能,諸如使用許多指令及/或程式化可能需要為其他代重新程式化之專用處理器。相較於例如軟體實施,執行神經網路處理輔助指令使用較少執行循環。使用單一指令以執行多個函式允許例如在多代機器上以高效能重新使用軟體。函式中之每一者經組態為單一指令(例如,單一架構化指令)之部分,從而減少系統資源之使用並降低複雜度且改良系統效能。
參看圖1A描述併有及使用本發明之一或多個態樣的計算環境之一個實施例。作為實例,該計算環境係基於由紐約阿蒙克市之國際商業機器公司(International Business Machines Corporation)供應的z/Architecture
®指令集架構。z/Architecture指令集架構之一個實施例描述於題為「z/Architecture Principles of Operation」之公開案(IBM公開案第SA22-7832-12號,第十三版,2019年9月)中,該公開案特此以全文引用之方式併入本文中。然而,z/Architecture指令集架構僅為一個實例架構;國際商業機器公司及/或其他實體之其他架構及/或其他類型的計算環境可包括及/或使用本發明之一或多個態樣。z/Architecture及IBM為國際商業機器公司在至少一個管轄區中之商標或註冊商標。
參看圖1A,計算環境100包括例如以例如通用計算裝置之形式展示的電腦系統102。電腦系統102可包括但不限於經由一或多個匯流排及/或其他連接而耦接至彼此的一或多個通用處理器或處理單元104 (例如,中央處理單元(CPU))、諸如神經網路處理器105之至少一個專用處理器、記憶體106 (作為實例,亦稱為系統記憶體、主記憶體、主儲存器、中央儲存器或儲存器)及一或多個輸入/輸出(I/O)介面108。舉例而言,處理器104、105及記憶體106經由一或多個匯流排110耦接至I/O介面108,且處理器104、105經由一或多個匯流排111耦接至彼此。
舉例而言,匯流排111為記憶體或快取一致性匯流排,且匯流排110表示例如若干類型之匯流排結構中之任何一或多者,包括使用多種匯流排架構中之任一者的記憶體匯流排或記憶體控制器、周邊匯流排、加速圖形埠及處理器或區域匯流排。作為實例而非限制,此類架構包括工業標準架構(ISA)、微通道架構(MCA)、增強型ISA (EISA)、視訊電子標準協會(VESA)區域匯流排及周邊組件互連(PCI)。
作為實例,一或多個專用處理器(例如,神經網路處理器)可與一或多個通用處理器分離但耦接至該一或多個通用處理器,及/或可嵌入於一或多個通用處理器內。許多變化係可能的。
舉例而言,記憶體106可包括快取記憶體112,諸如共用快取記憶體,該快取記憶體可經由例如一或多個匯流排111耦接至處理器104之本端快取記憶體114及/或神經網路處理器105。另外,記憶體106可包括一或多個程式或應用程式116及至少一個作業系統118。實例作業系統包括由紐約阿蒙克市之國際商業機器公司供應的z/OS
®作業系統。z/OS為國際商業機器公司在至少一個管轄區中之商標或註冊商標。亦可使用由國際商業機器公司及/或其他實體供應的其他作業系統。記憶體106亦可包括一或多個電腦可讀程式指令120,該一或多個電腦可讀程式指令可經組態以進行本發明之態樣之實施例的功能。
此外,在一或多個實施例中,記憶體106包括處理器韌體122。處理器韌體包括例如處理器之微碼或毫碼(Millicode)。其包括例如用於實施較高層級機器碼之硬體層級指令及/或資料結構。在一個實施例中,其包括例如專屬碼,該專屬碼通常作為包括受信任軟體之微碼或毫碼、特定於底層硬體之微碼或毫碼遞送,且控制作業系統對系統硬體之存取。
電腦系統102可經由例如I/O介面108與一或多個外部裝置130通信,該一或多個外部裝置諸如使用者終端機、磁帶機、指標裝置、顯示器及一或多個資料儲存裝置134等。資料儲存裝置134可儲存一或多個程式136、一或多個電腦可讀程式指令138及/或資料等。電腦可讀程式指令可經組態以進行本發明之態樣之實施例的功能。
電腦系統102亦可經由例如I/O介面108與網路介面132通信,該網路介面使得電腦系統102能夠與諸如區域網路(LAN)、通用廣域網路(WAN)及/或公用網路(例如,網際網路)之一或多個網路通信,從而提供與其他計算裝置或系統之通信。
電腦系統102可包括及/或耦接至抽取式/非抽取式、揮發性/非揮發性電腦系統儲存媒體。舉例而言,其可包括及/或耦接至非抽取式非揮發性磁性媒體(通常稱為「硬碟機」)、用於自抽取式非揮發性磁碟(例如,「軟碟」)讀取及寫入至抽取式非揮發性磁碟之磁碟機,及/或用於自諸如CD-ROM、DVD-ROM或其他光學媒體之抽取式非揮發性光碟讀取或寫入至抽取式非揮發性光碟之光碟機。應理解,可結合電腦系統102使用其他硬體及/或軟體組件。實例包括但不限於:微碼或毫碼、裝置驅動程式、冗餘處理單元、外部磁碟機陣列、RAID系統、磁帶機及資料存檔儲存系統等。
電腦系統102可與眾多其他通用或專用計算系統環境或組態一起操作。可能適合與電腦系統102一起使用之熟知計算系統、環境及/或組態之實例包括但不限於:個人電腦(PC)系統、伺服器電腦系統、精簡型用戶端、複雜型用戶端、手持型或膝上型電腦裝置、多處理器系統、基於微處理器之系統、機上盒、可程式化消費型電子裝置、網路PC、小型電腦系統、大型電腦系統及包括以上系統或裝置中之任一者的分散式雲端計算環境,以及其類似者。
在一個實例中,處理器(例如,處理器104及/或處理器105)包括用以執行指令之複數個功能組件(或其子集)。如圖1B中所描繪,此等功能組件包括例如:指令提取組件150,其用以提取待執行之指令;指令解碼單元152,其用以解碼所提取指令且獲得經解碼指令之運算元;一或多個指令執行組件154,其用以執行經解碼指令;記憶體存取組件156,其用以在必要時存取記憶體以執行指令;及寫回組件158,其用以提供所執行指令之結果。該等組件中之一或多者可在指令處理中存取及/或使用一或多個暫存器160。另外,根據本發明之一或多個態樣,該等組件中之一或多者包括用於執行例如神經網路處理輔助指令之神經網路處理輔助處理(或可使用本發明之一或多個態樣的其他處理)的一或多個其他組件之至少一部分或能夠存取該一或多個其他組件,如本文中所描述。舉例而言,一或多個其他組件可包括神經網路處理輔助組件172 (及/或一或多個其他組件)。
根據本發明之一或多個態樣,在通用處理器(例如,處理器104)上起始神經網路處理輔助指令,且取決於函式而在通用處理器及/或專用處理器(例如,神經網路處理器105)上執行由指令指定之函式。該指令接著在通用處理器上完成。在其他實例中,該指令在一或多個通用處理器或一或多個專用處理器上起始、執行及完成。其他變化係可能的。
參看圖2A至圖2B描述與執行神經網路處理輔助指令相關之其他細節。參看圖2A,在一個實例中,藉由諸如通用處理器(例如,處理器104)之處理器獲得且解碼神經網路處理輔助指令(200)。經解碼指令例如在通用處理器210上發佈。判定待執行之函式(220)。在一個實例中,藉由檢查指令之函式碼欄位進行此判定,下文描述該指令之實例。執行函式(230)。
在一個實施例中,為執行該函式,判定是否待在專用處理器(例如,神經網路處理器105)上執行函式(232)。舉例而言,在一個實例中,在通用處理器上執行神經網路處理輔助指令之查詢函式且在專用處理器上執行非查詢函式。然而,其他變化係可能的。若不在專用處理器上執行該函式(例如,其為查詢函式,或在另一實例中,為一或多個選定函式),則在一個實例中,在通用處理器上執行該函式(234)。然而,若待在專用處理器上執行函式(例如,其為非查詢函式,或在另一實例中,為一或多個選定函式),則資訊例如藉由通用處理器提供至專用處理器以供在執行函式時使用,諸如與待用於神經網路計算中之張量資料相關的記憶體位址資訊(236)。專用處理器獲得資訊且執行函式(238)。在函式之執行完成之後,處理返回至通用處理器(240),該通用處理器完成指令(250)。(在其他實例中,指令可在一或多個通用處理器或一或多個專用處理器上起始、執行及完成。其他變化係可能的。)
根據本發明之一或多個態樣,通用處理器及專用處理器共用記憶體,諸如主記憶體,從而提供快取一致性,降低複雜度且改良系統效能。另外,在一或多個態樣中,例如通用處理器對指令之處理包括指令之同步執行,其中作為實例,通用處理器避免執行除與指令相關之工作以外的工作,諸如將例如輸入資料位址之資訊提供至執行函式之專用處理器(或其他處理器)。同步執行基於例如指令之完成或指令之中斷而終止。
根據本發明之一或多個態樣,該指令經組態為可中斷的。因此,參看圖2B,判定指令之先前執行是否已中斷(260)。在一個實例中,此藉由檢查指示符來判定,該指示符諸如提供於由正執行之指令使用之參數區塊中的繼續旗標。若指令之先前執行且因此指定函式被中斷,則在一個實例中,儲存於選擇緩衝器(諸如,繼續狀態緩衝器,其實例描述於本文中)中之資訊用以恢復中斷之操作(262)。
本文中參看圖3A至圖3G描述與神經網路處理輔助指令及由該指令支援之函式相關的額外細節。在本文中對指令及/或指令函式之描述中,指示特定定位、特定欄位及/或特定欄位大小(例如,特定位元組及/或位元)。然而,可提供其他定位、欄位及/或大小。另外,儘管可指定將位元設定為例如一或零之特定值,但此僅為實例。在其他實例中,若設定,則可將位元設定為不同值,諸如相反值或另一值。許多變化係可能的。
在一個實例中,參看圖3A,神經網路處理輔助指令300具有以擴展的操作碼(作業碼)指示暫存器與暫存器操作的RRE格式。如圖3A中所展示,在一個實例中,神經網路處理輔助指令300包括指示神經網路處理輔助操作之操作碼(作業碼)欄位302 (例如,位元0至15)。在一個實例中,保留指令之位元16至31,且其將含有零。
在一個實例中,該指令使用由該指令隱含地指定之複數個通用暫存器。舉例而言,神經網路處理輔助指令300使用隱含的暫存器:通用暫存器0及通用暫存器1,其實例係分別參看圖3B及圖3D進行描述。
參看圖3B,在一個實例中,通用暫存器0包括函式碼欄位及可在指令完成後更新之狀態欄位。作為實例,通用暫存器0包括回應碼欄位310 (例如,位元0至15)、例外旗標欄位312 (例如,位元24至31)及函式碼欄位314 (例如,位元56至63)。另外,在一個實例中,保留通用暫存器0之位元16至23及32至55,且其將含有零。一或多個欄位供由指令執行之特定函式使用。在一個實例中,並非所有欄位皆由所有函式使用。下文描述該等欄位中之每一者:
回應碼(RC) 310:此欄位(例如,位元位置0至15)含有回應碼。當神經網路處理輔助指令之執行以例如一之條件碼完成時,儲存回應碼。當遇到無效輸入條件時,將非零值儲存至回應碼欄位,其指示在執行期間辨識到無效輸入條件之原因,且設定選定條件碼,例如1。在一個實例中,如下定義儲存至回應碼欄位之碼:
回應碼
含義
0001 模型不支援如由參數區塊版本號碼指定之參數區塊的格式。
0002 機器上未定義或安裝指定函式。
0010 不支援指定張量資料佈局格式。
0011 不支援指定張量資料類型。
0012 指定單一張量維度大於最大維度索引大小。
0013 指定張量之大小大於最大張量大小。
0014 指定張量位址未在4K位元組邊界上對準。
0015 函式特定保存區域位址未在4K位元組邊界上對準。
F000-FFFF 函式特定回應碼。針對某些函式定義此等回應碼。
例外旗標(EF) 312:此欄位(例如,位元位置24至31)包括例外旗標。若在指令執行期間偵測到例外條件,則對應例外旗標控制項(例如,位元)將被設定為例如一;否則,控制項保持不變。在第一次調用指令之前,將例外旗標欄位初始化為零。在指令執行期間,保留旗標不變。在一個實例中,如下定義儲存至例外旗標欄位之旗標:
EF
(
位元
)
含義
0 範圍違規。當在輸入張量中偵測到非數值或將非數值儲存至輸出張量時設定此旗標。此旗標例如僅在該指令以例如0之條件碼完成時有效。
1至7 保留。
函式碼(FC) 314:此欄位(例如,位元位置56至63)包括函式碼。為神經網路處理輔助指令指派之函式碼的實例描繪於圖3C中。未指派所有其他函式碼。若指定未指派或未安裝之函式碼,則設定例如0002 hex之回應碼及例如1之選擇條件碼。此欄位在執行期間不會被修改。
如所指示,除通用暫存器0以外,神經網路處理輔助指令亦使用通用暫存器1,其實例描繪於圖3D中。作為實例,24位元定址模式中之位元40至63、31位元定址模式中之位元33至63或64位元定址模式中之位元0至63包括參數區塊位址320。舉例而言,通用暫存器1之內容指定儲存器中之參數區塊的最左位元組之邏輯位址。參數區塊待指明於雙字邊界上;否則,辨識到規格例外。對於所有函式,通用暫存器1之內容不會被修改。
在存取暫存器模式中,作為實例,存取暫存器1指定含有參數區塊、輸入張量、輸出張量及函式特定保存區域之位址空間。
在一個實例中,取決於由待執行之指令指定的函式,參數區塊可具有不同格式。舉例而言,查詢函式具有一種格式之參數區塊,且指令之其他函式具有另一種格式之參數區塊。在另一實例中,所有函式使用相同的參數區塊格式。其他變化亦係可能的。
作為實例,參數區塊及/或參數區塊中之資訊儲存於記憶體、硬體暫存器及/或記憶體及/或暫存器之組合中。其他實例亦係可能的。
參看圖3E描述由諸如NNPA查詢可用函式(QAF)操作之查詢函式的參數區塊之一個實例。如所展示,在一個實例中,NNPA查詢可用函式參數區塊330包括例如:
已安裝函式向量332:參數區塊之此欄位(例如,位元組0至31)包括已安裝函式向量。在一個實例中,已安裝函式向量之位元0至255分別對應於神經網路處理輔助指令之函式碼0至255。當位元為例如一時,安裝對應函式;否則,不安裝函式。
已安裝參數區塊格式向量334:參數區塊之此欄位(例如,位元組32至47)包括已安裝參數區塊格式向量。在一個實例中,已安裝參數區塊格式向量之位元0至127對應於用於神經網路處理輔助指令之非查詢函式的參數區塊格式0至127。當位元為例如一時,安裝對應參數區塊格式;否則,不安裝該參數區塊格式。
已安裝資料類型336:參數區塊之此欄位(例如,位元組48至49)包括已安裝資料類型向量。在一個實例中,已安裝資料類型向量之位元0至15對應於正安裝之資料類型。當位元為例如一時,安裝對應資料類型;否則,不安裝資料類型。實例資料類型包括(額外、更少及/或其他資料類型係可能的):
位元
資料類型
0 NNP資料類型1
1至15 保留
已安裝資料佈局格式338:參數區塊之此欄位(例如,位元組52至55)包括已安裝資料佈局格式向量。在一個實例中,已安裝資料佈局格式向量之位元0至31對應於正安裝之資料佈局格式。當位元為例如一時,安裝對應資料佈局格式;否則,不安裝該資料佈局格式。實例資料佈局格式包括(額外、更少及/或其他資料佈局格式係可能的):
位元
資料佈局格式
0 4D特徵張量
1 4D核心張量
2至31 保留
最大維度索引大小340:參數區塊之此欄位(例如,位元組60至63)包括例如32位元無正負號二進位整數,其指定任何指定張量之指定維度索引大小中的元素之最大數目。在另一實例中,最大維度索引大小指定任何指定張量之指定維度索引大小中的位元組之最大數目。其他實例亦係可能的。
最大張量大小342:參數區塊之此欄位(例如,位元組64至71)包括例如32位元無正負號二進位整數,其指定包括張量格式所需之任何填補位元組的任何指定張量中之位元組的最大數目。在另一實例中,最大張量大小指定包括張量格式所需之任何填補的任何指定張量中之總元素的最大數目。其他實例亦係可能的。
已安裝NNP資料類型1轉換向量344:參數區塊之此欄位(例如,位元組72至73)包括已安裝NNP資料類型1轉換向量。在一個實例中,已安裝NNP資料類型1轉換向量之位元0至15對應於自/至NNP資料類型1格式之已安裝資料類型轉換。當位元為一時,安裝對應轉換;否則,不安裝轉換。可指定額外、更少及/或其他轉換。
位元
資料類型
0 保留
1 BFP微格式
2 BFP短格式
3至15 保留
儘管參看圖3E描述用於查詢函式之參數區塊的一個實例,但可使用用於查詢函式之參數區塊的其他格式,包括NNPA查詢可用函式操作。在一個實例中,該格式可取決於待執行之查詢函式之類型。另外,參數區塊及/或參數區塊之每一欄位可包括額外、更少及/或其他資訊。
除用於查詢函式之參數區塊以外,在一個實例中,亦存在用於非查詢函式之參數區塊格式,諸如神經網路處理輔助指令之非查詢函式。參看圖3F描述由非查詢函式(諸如,神經網路處理輔助指令之非查詢函式)使用之參數區塊的一個實例。
如所展示,在一個實例中,由例如神經網路處理輔助指令之非查詢函式使用的參數區塊350包括例如:
參數區塊版本號碼352:參數區塊之此欄位(例如,位元組0至1)指定參數區塊之版本及大小。在一個實例中,參數區塊版本號碼之位元0至8被保留且將含有零,且參數區塊版本號碼之位元9至15含有指定參數區塊之格式的無正負號二進位整數。查詢函式提供指示可用之參數區塊格式的機制。當模型不支援指定參數區塊之大小或格式時,例如0001 hex之回應碼儲存於通用暫存器0中,且指令藉由設定條件碼(例如,條件碼1)而完成。參數區塊版本號碼係由程式指定且在指令執行期間不會被修改。
模型版本號碼354:參數區塊之此欄位(例如,位元組2)為識別執行指令(例如,特定非查詢函式)之模型的無正負號二進位整數。當繼續旗標(下文所描述)為一時,模型版本號碼可為操作之輸入,以便解譯參數區塊之繼續狀態緩衝器欄位(下文所描述)的內容,以恢復操作。
繼續旗標356:參數區塊之此欄位(例如,位元63)當為一時指示操作部分完成且繼續狀態緩衝器之內容可用以恢復操作。程式將繼續旗標初始化為零且在出於恢復操作之目的而重新執行指令的情況下不修改繼續旗標;否則,結果不可預測。
若在操作開始時設定繼續旗標且參數區塊之內容自初始調用起已改變,則結果不可預測。
函式特定保存區域位址358:參數區塊之此欄位(例如,位元組56至63)包括函式特定保存區域之邏輯位址。在一個實例中,函式特定保存區域位址待在4K位元組邊界上對準;否則,例如0015 hex之回應碼設定於通用暫存器0中且指令以例如1之條件碼完成。位址以當前定址模式為凖。函式特定保存區域之大小取決於函式碼。
當整個函式特定保存區域與指明的程式事件記錄(PER)儲存區域重疊時,在適用時針對函式特定保存區域而辨識PER儲存區更改事件。當僅函式特定保存區域之一部分與指明的PER儲存區域重疊時,會發生以下情況中之哪一種為模型相依的:
* 在適用時針對整個函式特定保存區域而辨識PER儲存區更改事件。
* 在適用時針對所儲存之函式特定保存區域的部分而辨識PER儲存區更改事件。
當整個參數區塊與指明的PER儲存區域重疊時,在適用時針對參數區塊辨識到PER儲存區更改事件。當僅參數區塊之一部分與指明的PER儲存區域重疊時,會發生以下情況中之哪一種為模型相依的:
* 在適用時針對整個參數區塊而辨識PER儲存區更改事件。
* 在適用時針對所儲存之參數區塊的部分而辨識PER儲存區更改事件。
在適用時針對參數區塊而辨識PER零位址偵測事件。在一個實例中,零位址偵測不適用於張量位址或函式特定保存區域位址。
輸出張量描述符(例如,1至2) 360/輸入張量描述符(例如,1至3) 365:參看圖3G描述張量描述符之一個實例。在一個實例中,張量描述符360、365包括:
資料佈局格式382:張量描述符之此欄位(例如,位元組0)指定資料佈局格式。舉例而言,有效資料佈局格式包括(額外、更少及/或其他資料佈局格式係可能的):
格式
描述
對準
(
位元組
)
0 4D特徵張量 4096
1 4D核心張量 4096
2-255 保留 --
若指定不支援或保留的資料佈局格式,則例如0010 hex之回應碼儲存於通用暫存器0中,且指令藉由設定例如1之條件碼而完成。
資料類型384:此欄位(例如,位元組1)指定張量之資料類型。下文描述所支援之資料類型的實例(額外、更少及/或其他資料類型係可能的):
值
資料類型
資料大小
(
位元
)
0 NNP資料類型1 16
1-255 保留 --
若指定不支援或保留的資料類型,則例如0011 hex之回應碼儲存於通用暫存器0中,且指令藉由設定例如1之條件碼而完成。
維度1至4索引大小386:總體而言,維度索引大小一至四指定4D張量之形狀。每一維度索引大小將大於零且小於或等於最大維度索引大小(340,圖3E);否則,例如0012 hex之回應碼儲存於通用暫存器0中且指令藉由設定例如1之條件碼而完成。總張量大小將小於或等於最大張量大小(342,圖3E);否則,例如0013 hex之回應碼儲存於通用暫存器0中且指令藉由設定例如1之條件碼而完成。
在一個實例中,為判定具有NNPA資料類型1之元素的4D特徵張量中的位元組之數目(亦即,總張量大小),使用以下公式:維度索引4*維度索引3*ceil(維度索引2/32)*32*ceil(維度索引1/64)*64*2。
張量位址388:張量描述符之此欄位(例如,位元組24至31)包括張量之最左位元組的邏輯位址。位址以當前定址模式為凖。
若位址在相關聯之資料佈局格式的邊界上未對準,則例如0014 hex之回應碼儲存於通用暫存器0中且指令藉由設定例如1之條件碼而完成。
在存取暫存器模式中,存取暫存器1指定儲存器中含有所有作用中輸入及輸出張量之位址空間。
返回圖3F,在一個實例中,參數區塊350進一步包括可由特定函式使用之函式特定參數1至5 (370),如本文中所描述。
另外,在一個實例中,參數區塊350包括繼續狀態緩衝器欄位375,該欄位包括在此指令之操作待恢復的情況下使用的資料(或資料之定位)。
作為操作之輸入,參數區塊之保留欄位應含有零。當操作結束時,保留欄位可儲存為零或保持不變。
儘管參看圖3F描述用於非查詢函式之參數區塊的一個實例,但可使用用於非查詢函式之參數區塊的其他格式,包括神經網路處理輔助指令之非查詢函式。在一個實例中,該格式可取決於待執行之函式之類型。另外,儘管參看圖3G描述張量描述符之一個實例,但可使用其他格式。另外,可使用輸入及輸出張量之不同格式。其他變化係可能的。
下文描述關於由神經網路處理輔助指令之一個實施例支援之各種函式的其他細節:
函式碼
0
:
NNPA
-
QAF
(
查詢可用函式
)
神經網路處理輔助(NNPA)查詢函式提供指示諸如以下各者之選定資訊的機制:已安裝函式之可用性;已安裝參數區塊格式;已安裝資料類型;已安裝資料佈局格式;最大維度索引大小及最大張量大小。獲得資訊且將其置放於諸如參數區塊(例如,參數區塊330)之選定定位中。當操作結束時,參數區塊之保留欄位可儲存為零或可保持不變。
在執行查詢函式之一個實施例時,諸如通用處理器104之處理器獲得與特定處理器相關之資訊,諸如神經網路處理器(諸如,神經網路處理器105)之特定模型。處理器或機器之特定模型具有某些能力。處理器或機器之另一模型可具有額外、更少及/或不同能力及/或屬於具有額外、更少及/或不同能力之不同代(例如,當代或未來一代)。將所獲得資訊置放於參數區塊(例如,參數區塊330)或可由一或多個應用程式存取及/或供一或多個應用程式使用之其他結構中,該一或多個應用程式可在進一步處理中使用此資訊。在一個實例中,參數區塊及/或參數區塊之資訊維持於記憶體中。在其他實施例中,可在一或多個硬體暫存器中維護參數區塊及/或資訊。作為另一實例,查詢函式可為由作業系統執行之特權操作,其使應用程式設計介面可用以使此資訊可用於應用程式或非特權程式。在又一實例中,查詢函式由諸如神經網路處理器105之專用處理器執行。其他變化係可能的。
資訊係例如藉由執行查詢函式之處理器的韌體獲得。韌體知曉特定處理器(例如,神經網路處理器)之特定模型的屬性。此資訊可儲存於例如控制區塊、暫存器及/或記憶體中及/或以其他方式可由執行查詢函式之處理器存取。
舉例而言,所獲得資訊包括關於特定處理器之至少一或多個資料屬性的模型相依詳細資訊,包括例如特定處理器之選定模型的一或多個已安裝或支援的資料類型、一或多個已安裝或支援的資料佈局格式及/或一或多個已安裝或支援的資料大小。此資訊為模型相依的,此係因為其他模型(例如,先前模型及/或未來模型)可能不支援相同資料屬性,諸如相同資料類型、資料大小及/或資料佈局格式。當查詢函式(例如,NNPA-QAF函式)之執行完成時,作為實例,設定條件碼0。在一個實例中,條件碼1、2及3不適用於查詢函式。下文描述與所獲得資訊相關之其他資訊。
如所指示,在一個實例中,所獲得資訊包括關於例如神經網路處理器之特定模型之一或多個資料屬性的模型相依資訊。資料屬性之一個實例為神經網路處理器之已安裝資料類型。舉例而言,作為實例,神經網路處理器(或其他處理器)之特定模型可支援一或多個資料類型,諸如NNP資料類型1資料類型(亦被稱作神經網路處理資料類型1資料類型)及/或其他資料類型。NNP資料類型1資料類型為16位元浮點格式,其為深度學習訓練及推斷計算提供數個優點,包括例如:保持深度學習網路之準確度;消除簡化捨入模式及處置極端狀況之次正常格式;自動捨入至最接近的算術運算值;及將無窮大且非數字(NaN)之特殊實體組合成一個值(NINF),其由算術運算接受及處置。NINF提供指數溢出及無效運算(諸如,除以零)之較佳預設。此允許許多程式在不隱藏此類錯誤的情況下及在不使用特殊例外處理常式的情況下繼續運行。其他模型相依資料類型亦係可能的。
NNP資料類型1資料類型之格式的一個實例描繪於圖4中。如所描繪,在一個實例中,NNP資料類型1資料可以格式400表示,其包括例如正負號402 (例如,位元0)、指數+31 404(例如,位元1至6)及分數406 (例如,位元7至15)。
下文描繪NNP資料類型1格式之實例性質:
性質
NNP
資料類型
1
格式長度(位元) 16個位元
有偏指數長度(位元) 6個位元
分數長度(位元) 9個位元
精度(p) 10個位元
最大左單位視圖指數(Emax) 32
最小左單位視圖指數(Emin) -31
左單位視圖(LUV)偏差 31
Nmax (1-2
-9) × 2
33≈ 8.6 × 10
9
Nmin (1+2
-9) × 2
-31≈ 4.6 × 10
-10
Dmin ---
其中≈指示值為近似值,Nmax為最大(在量值上)可表示的有限數,且Nmin為最小(在量值上)可表示的數字。
下文描述與NNP資料類型1資料類型相關之其他細節:
有偏指數:上文展示了用以允許指數表達為無正負號數之偏差。有偏指數類似於二進位浮點格式之特性,除了對全零及全一之有偏指數未添加特殊含義,如下文參考NNP資料類型1資料類型之類別所描述。
有效位:NNP資料類型1數之二進位小數點被視為在最左分數位之左方。二進位小數點之左方存在隱含的單位位元,對於正常數,其被視為一,且對於零,其被視為零。左方附加有隱含的單位位元之分數為數字之有效位。
正常NNP資料類型1之值為有效位乘以基數2之無偏指數冪。
非零數之值:下文展示非零數之值:
數字類別
值
正常數 ± 2
e-31× (1.f)
其中e為以十進位展示之有偏指數,且f為二進位的分數。
在一個實施例中,存在三個類別之NNP資料類型1資料,包括數值及相關非數值實體。每一資料項目包括正負號、指數及有效位。指數有偏使得所有有偏指數為非負無正負號數,且最小有偏指數為零。有效位包括在二進位小數點左方之顯式分數及隱式單位位元。正負號位元對於正為零,且對於負為一。
所准許之所有非零有限數具有唯一的NNP資料類型1表示。不存在次正常數,該等數字可允許相同值之多個表示,且不存在次正常算術運算。三個類別包括例如:
資料類別
正負號
有偏指數
單位位元
*
分數
零 ± 0 0 0
正常數 ± 0 1 非0
正常數 ± 非0,並非全一 1 任何者
正常數 ± 全一 - 並非全一
NINF ± 全一 - 全一
其中:-指示不適用,*指示隱含單位位元,NINF並非數字或無窮大。
下文描述關於類別中之每一者的其他細節:
零:零具有零之有偏指數及零分數。隱含的單位位元為零。
正常數:正常數可具有任何值之有偏指數。當有偏指數為0時,分數為非零。當有偏指數為全一時,分數並非全一。其他有偏指數值可具有任何分數值。對於所有正常數,隱含的單位位元為一。
NINF:NINF由全一之有偏指數及全一之分數表示。NINF表示不在NNP資料類型1 (亦即,經設計用於深度學習之16位元浮點,其具有6個指數位元及9個分數位元)中之可表示值之範圍內的值。通常,NINF僅在計算期間傳播使得其在最後保持可見。
儘管在一個實例中支援NNP資料類型1資料類型,但可支援其他特殊及非標準的資料類型以及一或多個標準資料類型,包括但不限於:僅舉幾例,IEEE 754短精度、二進位浮點16位元、IEEE半精度浮點、8位元浮點、4位元整數格式及/或8位元整數格式。此等資料格式對於神經網路處理具有不同品質。作為實例,較小資料類型(例如,較少位元)可被較快地處理且使用較少快取記憶體/記憶體,且較大資料類型在神經網路中提供較高的結果準確度。待支援之資料類型可在查詢參數區塊中(例如,在參數區塊330之已安裝資料類型欄位336中)具有一或多個指派位元。舉例而言,在已安裝資料類型欄位中指示由特定處理器支援之特殊或非標準資料類型,但不指示標準資料類型。在其他實施例中,亦指示一或多個標準資料類型。其他變化係可能的。
在一個特定實例中,為NNP資料類型1資料類型保留已安裝資料類型欄位336之位元0,且當將其設定為例如1時,其指示處理器支援NNP資料類型1。在一個實例中,已安裝資料類型之位元向量經組態以表示多達16個資料類型,其中將一位元指派給每一資料類型。然而,在其他實施例中,位元向量可支援更多或更少資料類型。另外,可組態向量,其中將一或多個位元指派給一資料類型。許多實例係可能的及/或可在向量中支援及/或指示額外、更少及/或其他資料類型。
在一個實例中,查詢函式獲得安裝於模型相依處理器上之資料類型的指示,且藉由例如設定參數區塊330之已安裝資料類型欄位336中之一或多個位元而將指示置放於參數區塊中。另外,在一個實例中,查詢函式獲得已安裝資料佈局格式(另一資料屬性)之指示,且藉由例如設定已安裝資料佈局格式欄位338中之一或多個位元而將資訊置放於參數區塊中。舉例而言,實例資料佈局格式包括4D特徵張量佈局及4D核心張量佈局。在一個實例中,本文中所描述之函式使用4D特徵張量佈局,且在一個實例中,卷積函數使用4D核心張量佈局。此等資料佈局格式以提高執行神經網路處理輔助指令之函式之處理效率的方式配置儲存器中用於張量之資料。舉例而言,為高效地操作,神經網路處理輔助指令使用以特定資料佈局格式提供之輸入張量。儘管提供實例佈局,但可針對本文中所描述之函式及/或其他函式提供額外、更少及/或其他佈局。
特定處理器模型之佈局的使用或可用性由已安裝資料佈局格式(例如,參數區塊330之欄位338)之向量提供。舉例而言,該向量為允許CPU向應用程式傳達支援哪些佈局之已安裝資料佈局格式之位元向量。舉例而言,為4D特徵張量佈局保留位元0,且當將其設定為例如1時,其指示處理器支援4D特徵張量佈局;且為4D核心張量佈局保留位元1,且當將其設定為例如1時,其指示處理器支援4D核心張量佈局。在一個實例中,已安裝資料佈局格式之位元向量經組態以表示多達16個資料佈局,其中將一位元指派給每一資料佈局。然而,在其他實施例中,一位元向量可支援更多或更少資料佈局。另外,可組態向量,其中將一或多個位元指派給資料佈局。許多實例係可能的。下文描述關於4D特徵張量佈局及4D核心張量佈局之其他細節。同樣,現在或在未來可使用其他佈局以最佳化效能。
在一個實例中,神經網路處理輔助指令使用4D張量進行操作,亦即,具有4個維度之張量。此等4D張量係例如以列優先方式自本文中所描述之通用輸入張量獲得,亦即,當以遞增的記憶體位址次序列舉張量元素時,稱為E1之內部維度將首先經由以0開始至E1索引大小-1之E1索引大小值遞增,之後將增加E2維度之索引且重複E1維度之步進。最後增加稱為E4維度之外部維度的索引。
具有較低數目個維度之張量(例如,3D或1D張量)將表示為4D張量,其中該4D張量之一或多個維度超過設定為1之原始張量維度。
本文中描述將具有維度E4、E3、E2、E1之列優先通用4D張量變換成4D特徵張量佈局(在本文中亦被稱作NNPA資料佈局格式0 4D特徵張量):
舉例而言,所得張量可表示為例如64元素向量之4D張量或具有如下維度之5D張量:
通用張量之元素[e4][e3][e2][e1]可映射至所得5D張量之以下元素:
,其中
為向下取整(floor)函數且mod為模數。(換言之:元素(E3 * e2_limit * e1_limit * e4x) + (e2_limit * e3x * 64) + (e2x * 64) + (
* e2_limit * E3 * 64) + (e1x mod 64)),其中e2_limit =
* 32且e1_limit =
* 64。)
所得張量可大於通用張量。在通用張量中不具有對應元素之所得張量之元素稱為填補元素。
考慮64元素向量之NNPA資料佈局格式0 4D特徵張量的元素[fe4][fe1][fe3][fe2][fe0]或其等效表示為元素之5D張量。此元素為填補元素或其在通用4D張量中之對應元素,其中維度E4、E3、E2、E1可藉由以下公式判定:
∙ 若fe2 ≥ E2,則此為E2 (或頁面)填補元素
∙ 否則,若fe1*64+fe0 ≥ E1,則此為E1 (或列)填補元素
∙ 否則,通用4D張量中之對應元素為:
[fe4][fe3][fe2][fe1*64+fe0]
對於基於卷積神經網路之人工智慧模型,特徵張量之4個維度的含義通常可映射至:
∙ E4:N-小批量之大小
∙ E3:H-3D張量/影像之高度
∙ E2:W-3D張量/影像之寬度
∙ E1:C-3D張量之通道或類別
對於基於機器學習或遞回神經網路之人工智慧模型,4D特徵張量之4個維度的含義通常可映射至:
∙ E4:T-時間步驟或模型之數目
∙ E3:保留,通常設定為1
∙ E2:N
mb-小批量大小
∙ E1:L-特徵
NNPA資料佈局格式0提供例如具有4k位元組資料區塊(頁面)之二維資料局部性以及用於所產生張量之外部維度的4k位元組區塊資料對準。
對於輸入張量,填補元素位元組被忽略,且對於輸出張量,填補元素位元組不可預測。填補位元組上之PER儲存區更改不可預測。
具有維度E1、E2、E3及E4之4D特徵張量佈局的輸入資料佈局之一個實例展示於圖5A至圖5C中,且4D特徵張量佈局之實例輸出描繪於圖6A至圖6C中。參看圖5A,展示3D張量500,其具有維度E1、E2及E3。在一個實例中,每一3D張量包括複數個2D張量502。每一2D張量502中之數字描述其元素中之每一者將在記憶體中之位置的記憶體偏移。輸入用以將原始張量(例如,圖5A至圖5C之原始4D張量)之資料佈置在記憶體中,如對應於圖5A至圖5C之圖6A至圖6C中所展示。
在圖6A中,作為實例,記憶體600之單元(例如,記憶體頁面)包括預選數目(例如,32)個列602,其中之每一者由例如e2_page_idx識別;且每一列具有預選數目(例如,64)個元素604,其各自由例如e1_page_idx識別。若一列不包括預選數目個元素,則其被填補(606),被稱作列或E1填補;且若記憶體單元不具有預選數目個列,則其被填補(608),被稱作頁面或E2填補。作為實例,列填補為例如零或其他值,且頁面填補為例如現有值、零或其他值。
在一個實例中,列之輸出元素係基於其對應輸入在E1方向上之元素位置而提供於記憶體中(例如,頁面中)。舉例而言,參看圖5A,所展示之三個矩陣的元素位置0、1及2 (例如,在每一矩陣之同一定位處的元素位置)展示於圖6A之頁面0的列0中,等等。在此實例中,4D張量為小的,且表示4D張量之每一2D張量的所有元素皆適配於一個頁面中。然而,此情形僅為一個實例。2D張量可包括一或多個頁面。若2D張量係基於4D張量之重新格式化而創建,則2D張量之頁面數目係基於4D張量之大小。在一個實例中,一或多個ceil函數用以判定2D張量中之列數目及每一列中之元素數目,其將指示待使用多少頁面。其他變化係可能的。
除4D特徵張量佈局以外,在一個實例中,神經網路處理器亦可支援4D核心張量,其重新配置4D張量之元素以在執行諸如卷積之某些人工智慧(例如,神經網路處理輔助)操作時減小記憶體存取及資料搜集步驟之數目。作為實例,將具有維度E4、E3、E2、E1之列優先通用4D張量變換成NNPA資料佈局格式1 4D核心張量(4D核心張量),如本文中所描述:
所得張量可表示為例如64元素向量之4D張量或具有如下維度之5D張量:
通用張量之元素[e4][e3][e2][e1]可映射至所得5D張量之以下元素:
,其中
係指floor函數且mod為模數。換言之:元素(
* E4 * E3 * e2_limit * 64) + (e4x * E3 * e2_limit * 64) + (e3x * e2_limit * 64) + (e2x * 64) + (e1x mod 64),其中e2_limit =
* 32且e1_limit =
* 64。
所得張量可大於通用張量。在通用張量中不具有對應元素之所得張量之元素稱為填補元素。
考慮64元素向量之NNPA資料佈局格式1 4D特徵張量的元素[fe1][fe4][fe3][fe2][fe0]或其等效表示為元素之5D張量。此元素為填補元素或其在通用4D張量中之對應元素,其中維度E4、E3、E2、E1可藉由以下公式判定:
∙ 若fe2 ≥ E2,則此為E2 (或頁面)填補元素
∙ 否則,若fe1*64+fe0 ≥ E1,則此為E1 (或列)填補元素
∙ 否則,通用4D張量中之對應元素為
[fe4][fe3][fe2][fe1*64+fe0]
對於基於卷積神經網路之人工智慧模型,核心張量之4個維度的含義通常可映射至:
∙ E4:H-3D張量/影像之高度
∙ E3:W-3D張量/影像之寬度
∙ E2:C-3D張量之通道數目
∙ E1:K-核心數目
NNPA資料佈局格式1提供例如4k位元組資料區塊(頁面)內之二維核心平行度以及用於產生張量之外部維度的4k位元組區塊資料對準,以實現高效處理。
對於輸入張量,忽略填補位元組。填補位元組上之PER儲存區更改不可預測。
同樣,儘管實例資料佈局格式包括4D特徵張量佈局及4D核心張量佈局,但處理器(例如,神經網路處理器105)可支援其他資料佈局格式。獲得所支援資料佈局之指示且藉由設定例如欄位338中之一或多個位元而將其置放於查詢參數區塊中。
根據本發明之一或多個態樣,查詢參數區塊亦包括其他資料屬性資訊,其包括例如資料之所支援大小資訊。諸如神經網路處理器之處理器通常具有基於內部緩衝器大小、處理單元、資料匯流排結構、韌體限制等之限制,其可限制張量維度之最大大小及/或張量之總大小。因此,查詢函式提供欄位以向應用程式傳達此等限制。舉例而言,基於執行查詢函式,處理器獲得各種資料大小,諸如最大維度索引大小(例如,65,536個元素)及最大張量大小(例如,8 GB),且將此資訊分別包括於參數區塊(例如,參數區塊330)之欄位340及342中。額外、更少及/或其他大小資訊亦可由處理器(例如,神經網路處理器105)支援,且因此獲得並置放於參數區塊中,例如欄位340、342及/或其他欄位中。在其他實施例中,限制可更小或更大,及/或大小可為其他單位,諸如位元組而非元素、元素而非位元組等。另外,其他實施例允許每一維度具有不同最大大小,而非所有維度具有相同最大值。許多變化係可能的。
根據本發明之一或多個態樣,提供查詢函式,該查詢函式傳達與選定處理器(例如,神經網路處理器105)之特定模型相關的詳細資訊。舉例而言,詳細資訊包括與特定處理器相關之模型相依資訊。(處理器亦可支援標準資料屬性,諸如標準資料類型、標準資料佈局等,該等屬性為隱含的且未必由查詢函式呈現,但在另一實施例中,查詢函式可指示資料屬性之所有或各種選定子集等。)儘管提供實例資訊,但在其他實施例中,可提供其他資訊。針對處理器之不同模型及/或不同處理器可能不同的所獲得資訊用以執行人工智慧及/或其他處理。藉由一或多次執行神經網路處理輔助指令及指定非查詢特定函式來執行用於處理中之特定非查詢函式。
下文描述由神經網路處理輔助指令支援之實例非查詢函式的其他細節(在其他實施例中,可支援額外、更少及/或其他函式):
函式碼
16
:
NNPA
-
ADD
(
加法
)
當指定NNPA-ADD函式時,將由張量描述符1所描述之輸入張量1的每一元素加至由張量描述符2所描述之輸入張量2的對應元素,且將所得總和置放於由輸出張量描述符所描述之輸出張量的對應元素中。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1、輸入張量2及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
17
:
NNPA
-
SUB
(
減法
)
當指定NNPA-SUB函式時,自藉由張量描述符1所描述之輸入張量1的對應元素減去由張量描述符2所描述之輸入張量2的每一元素,且將所得差置放於輸出張量之對應元素中。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1、輸入張量2及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
18
:
NNPA
-
MUL
(
乘法
)
當指定NNPA-MUL函式時,將由張量描述符1所描述之輸入張量1 (乘數)之每一元素與由張量描述符2所描述之輸入張量2 (被乘數)之對應元素的乘積置放於輸出張量之對應元素中。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1、輸入張量2及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
19
:
NNPA
-
DIV
(
除法
)
當指定NNPA-DIV函式時,將由張量描述符1所描述之輸入張量1 (被除數)的每一元素除以由張量描述符2所描述之輸入張量2 (除數)的對應元素,且將商置放於輸出張量之對應元素中。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1、輸入張量2及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
20
:
NNPA
-
MIN
(
最小值
)
當指定NNPA-MIN函式時,將由張量描述符1所描述之輸入張量1的每一元素與由張量描述符2所描述之輸入張量2的對應元素進行比較。將兩個值中之較小值置放於輸出張量描述符之對應元素中。若兩個值相等,則將值置放於輸出張量之對應元素中。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1、輸入張量2及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
21
:
NNPA
-
MAX
(
最大值
)
當指定NNPA-MAX函式時,將由張量描述符1所描述之輸入張量1的每一元素與由張量描述符2所描述之輸入張量2的對應元素進行比較。將兩個值中之較大值置放於輸出張量描述符之對應元素中。若兩個值相同,則將值置放於輸出張量之對應元素中。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1、輸入張量2及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
32
:
NNPA
-
LOG
(
自然對數
)
當指定NNPA-LOG函式時,對於由張量描述符1所描述之輸入張量的每一元素,若彼元素大於零,則由輸出張量描述符所描述之輸出張量中的對應元素為彼元素之自然對數。否則,輸出張量中之對應元素無法用數值表示,且儲存與目標資料類型中之負無窮大相關聯的值。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
33
:
NNPA
-
EXP
(
指數
)
當指定NNPA-EXP函式時,對於由張量描述符1所描述之輸入張量的每一元素,由輸出張量描述符所描述之輸出張量中的對應元素為彼元素之指數。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
49
:
NNPA
-
RELU
(
整流線性單元
)
當指定NNPA-RELU函式時,對於由張量描述符1所描述之輸入張量的每一元素,若彼元素小於或等於零,則由輸出張量描述符所描述之輸出張量中的對應元素為零。否則,輸出張量中之對應元素為輸入張量中之元素與在函式特定參數1中指定之裁剪值中的最小值。
作為實例,函式特定參數1定義RELU操作之裁剪值。舉例而言,裁剪值在函式特定參數1之位元16至31中。裁剪值指定於例如NNPA資料類型1格式中。裁剪值零指示使用最大正值;換言之,不執行裁剪。若指定負值,則辨識到一般運算元資料例外。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符2、輸入張量描述符3及函式特定保存區域位址欄位。在一個實例中,函式特定參數2至5將含有零。
函式碼
50
:
NNPA
-
TANH
當指定NNPA-TANH函式時,對於由張量描述符1所描述之輸入張量的每一元素,由輸出張量描述符所描述之輸出張量中的對應元素值為彼元素之雙曲正切。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
51
:
NNPA
-
SIGMOID
當指定NNPA-SIGMOID函式時,對於由張量描述符1所描述之輸入張量的每一元素,由輸出張量描述符所描述之輸出張量中的對應元素為彼元素之S型。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,輸入張量1及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符2、輸入張量描述符3、函式特定參數1至5及函式特定保存區域位址欄位。
函式碼
52
:
NNPA
-
SOFTMAX
當指定NNPA-SOFTMAX函式時,對於輸入張量1之維度1中的每一向量,計算輸出張量中之對應向量,如下文所描述:
* 計算向量之最大值。
* 計算向量之維度1中的每一元素與上文計算之最大值之間的差之指數的總和。若輸入向量之維度1中的元素及上文計算之最大值兩者為數值且差為非數值,則彼元素之指數的結果強制為零。
* 對於向量中之每一元素,中間商由元素與上文計算之最大值之間的差之指數除以上文計算之總和形成。將可選激活函數應用於此中間商以形成輸出向量中之對應元素。
對於例如維度1中的所有維度4索引大小×維度3索引大小×維度2索引大小個向量,重複此程序。
在一個實例中,NNPA-SOFTMAX函式特定參數1控制激活函數。作為實例,函式特定參數1之ACT欄位(例如,位元28至31)指定激活函數。實例激活函數包括:
ACT
激活函數
0 不執行激活函數
1 LOG
2-15 保留
若為ACT欄位指定保留值,則報告例如F001 hex之回應碼且操作以例如1之條件碼完成。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,若輸入張量之維度3索引大小不等於一,則儲存例如F000 hex之回應碼且指令以例如1之條件碼完成。
在一個實例中,輸入張量1及輸出張量之形狀、資料佈局及資料類型將相同;否則,辨識到一般運算元資料例外。
在一個實例中,忽略輸出張量描述符2、輸入張量描述符2及輸入張量描述符3。在一個實例中,函式特定參數2至5將含有零。
此函式使用8K位元組函式特定保存區域。
在一個實施例中,當獲得維度1中之向量時,取決於指定資料佈局格式,元素在記憶體中可能不連續。若輸入張量1之維度1向量的所有元素含有可在指定資料類型中表示之最大量值負數,則結果可能不太準確。
函式碼
64
:
NNPA
-
BATCHNORM
(
批量正規化
)
當指定NNPA-BATCHNORM函式時,對於輸入1張量之維度1中的每一向量,藉由將向量中之每一元素乘以構成輸入2張量之維度1向量之對應元素來計算輸出張量之維度1中的對應向量。接著將全精度乘積加至構成輸入3張量之維度1向量中的對應元素,且接著捨入至輸出張量之指定資料類型的精度。對於例如維度1中的所有維度4索引大小×維度3索引大小×維度2索引大小個向量,重複此程序。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,以下條件將為真,否則,辨識到一般運算元資料例外:
* 輸入張量1及輸出張量之形狀及資料佈局將相同。
* 輸入張量及輸出張量之資料類型將相同。
* 輸入張量1、2、3及輸出張量之維度1索引大小將相同。
* 輸入張量2及3之維度2、3及4索引大小將為一。
在一個實例中,忽略輸出張量描述符2及函式特定保存區域位址欄位。在一個實例中,函式特定參數2至5將含有零。
函式碼
80
:
NNPA
-
MAXPOOL2D
函式碼
81
:
NNPA
-
AVGPOOL2D
當指定NNPA-MAXPOOL2D或NNPA-AVGPOOL2D函式時,藉由指定操作減少由輸入張量1描述符所描述之輸入張量1以彙總輸入窗口。藉由在維度索引2及3上移動2D滑動窗口來選擇輸入窗口。窗口之摘要為輸出張量中之元素。滑動窗口尺寸由例如函式特定參數4及函式特定參數5描述。當計算鄰近輸出張量元素時滑動窗口在輸入1張量上移動的量稱為步幅。滑動窗口步幅由例如函式特定參數2及函式特定參數3指定。當指定NNPA-MAXPOOL2D操作時,在窗口上執行下文所定義之Max運算。當指定NNPA-AVGPOOL2D操作時,在窗口上執行下文所描述之AVG運算。若指定填補類型為有效(Valid),則將窗口中之所有元素添加至用以計算所得輸出元素之集合。若指定填補類型為相同(Same),則取決於窗口之定位,僅來自窗口之元素之子集可添加至用以計算所得輸出元素之集合。
在一個實例中,CollectElements操作將元素添加至元素之集合且遞增集合中元素之數目。每當窗口開始位置移動時,集合被清空。是否存取執行操作不需要之元素為不可預測的。
Max運算:在一個實例中,藉由將集合中之所有元素彼此進行比較及傳回最大值來計算窗口中之元素的集合中之最大值。
Avg (求平均)運算:在一個實例中,將窗口中之元素的集合之平均值計算為集合中之所有元素的總和除以集合中元素之數目。
在一個實例中,如下分配欄位:
* 集用函式特定參數1控制填補類型。舉例而言,函式特定參數1之位元29至31包括指定填補類型之填補(PAD)欄位。舉例而言,實例類型包括:
填補
填補類型
0 有效
1 相同
2-7 保留
若為填補欄位指定保留值,則報告例如F000 hex之回應碼且操作以例如1之條件碼完成。
在一個實例中,保留函式特定參數1之位元位置0至28,且其將含有零。
* 函式特定參數2含有例如32位元無正負號二進位整數,其指定維度2步幅(D2S),該步幅指定滑動窗口在維度2中移動之元素數目。
* 函式特定參數3含有例如32位元無正負號二進位整數,其指定維度3步幅(D3S),該步幅指定滑動窗口在維度3中移動之元素數目。
* 函式特定參數4含有例如32位元無正負號二進位整數,其指定維度2窗口大小(D2WS),該大小指定滑動窗口含有之維度2中之元素數目。
* 函式特定參數5含有例如32位元無正負號二進位整數,其指定維度3窗口大小(D3WS),該大小指定滑動窗口含有之維度3中之元素數目。
在一個實例中,函式特定參數2至5中之指定值小於或等於最大維度索引大小,且函式特定參數4至5中之指定值大於零;否則,報告例如0012 hex之回應碼且操作以例如1之條件碼完成。
若維度2步幅及維度3步幅兩者均為零且維度2窗口大小或維度3窗口大小大於例如1024,則儲存例如F001 hex之回應碼。若維度2步幅及維度3步幅兩者均大於例如零且維度2窗口大小或維度3窗口大小大於例如64,則儲存例如F002 hex之回應碼。若維度2步幅及維度3步幅兩者均大於例如零且維度2步幅或維度3步幅大於例如30,則儲存例如F003 hex之回應碼。若維度2步幅及維度3步幅兩者均大於例如零且輸入張量維度2索引大小或輸入張量維度3索引大小大於例如1024,則儲存例如F004 hex之回應碼。對於所有以上條件,指令以例如1之條件碼完成。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實例中,以下條件將為真,否則,辨識到一般運算元資料例外:
* 輸入張量及輸出張量之維度4索引大小及維度1索引大小將相同。
* 輸入張量及輸出張量之資料佈局及資料類型將相同。
* 在一個實例中,若維度2步幅及維度3步幅兩者均為零,則以下額外條件將為真:
* 輸入張量維度2索引大小將等於維度2窗口大小。
* 輸入張量之輸入張量維度3索引大小將等於維度3窗口大小。
* 輸出張量之維度2索引大小及維度3索引大小將為一。
* 指定填補將為有效。
* 在一個實例中,若維度2步幅或維度3步幅為非零,則兩個步幅將為非零。
* 在一個實例中,若維度2步幅及維度3步幅兩者均大於零,則以下額外條件將為真:
* 當指定填補為有效時,維度2窗口大小將小於或等於輸入張量之維度2索引大小。
* 當指定填補為有效時,維度3窗口大小將小於或等於輸入張量之維度3索引大小。
* 當指定填補為相同時,將滿足輸入及輸出張量之維度2索引大小與維度3索引大小之間的以下關係(集用相同填補):
其中:
IxDyIS 定義於張量描述符x中之輸入張量x的維度y索引大小。
OxDyIS 定義於張量描述符x中之輸出張量x的維度y索引大小。
D2S 維度2步幅。
D3S 維度3步幅。
* 當指定填補為有效時,將滿足輸入及輸出張量之維度2索引大小與維度3索引大小之間的以下關係(集用有效填補):
其中D2WS為維度2窗口大小且D3WS為維度3窗口大小。
忽略輸出張量描述符2、輸入張量描述符2及3以及函式特定保存區域位址欄位。
函式碼
96
:
NNPA
-
LSTMACT
(
長短期
記憶體啟動
)
當指定NNPA-LSTMACT函式時,由輸入張量1描述符所描述、針對每一維度4索引值而分裂成四個子張量的輸入張量1連同由輸入張量2描述符所描述、針對每一維度4索引值而分裂成四個子張量的輸入張量2以及由輸入張量3描述符所描述之輸入張量3為LSTMACT操作之輸入。在LSTMACT操作結束時,將結果寫入至由輸出張量1描述符所描述之輸出張量1及由輸出張量2描述符所描述之輸出張量2。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼0010 hex或0011 hex分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實施例中,以下條件將為真,否則,辨識到一般運算元資料例外:
* 輸入張量3以及輸出張量1及2之維度4索引大小將等於例如一。
* 輸入張量1及輸入張量2之維度4索引大小將等於例如四。
* 例如所有輸入張量及兩個輸出張量之維度3索引大小將等於例如一。
* 例如所有輸入張量及兩個輸出張量之資料佈局及資料類型將相同。
* 例如所有輸入張量及兩個輸出張量之維度1索引大小將相同。
* 例如所有輸入張量及兩個輸出張量之維度2索引大小將相同。
在一個實例中,忽略函式特定保存區域位址欄位。在一個實例中,函式特定參數1至5將含有零。
函式碼
97
:
NNPA
-
GRUACT
(
閘控遞迴單元啟動
)
當指定NNPA-GRUACT函式時,由輸入張量1描述符所描述、針對每一維度4索引值而分裂成三個子張量的輸入張量1連同由輸入張量2描述符所描述、針對每一維度4索引值而分裂成三個子張量的輸入張量2以及由輸入張量3描述符所描述之輸入張量3為GRUACT操作之輸入。在GRUACT操作結束時,儲存由輸出張量描述符所描述之輸出張量。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實施例中,以下條件將為真,否則,辨識到一般運算元資料例外:
* 輸出張量及輸入張量3之維度4索引大小將等於例如一。
* 輸入張量1及輸入張量2之維度4索引大小將等於例如三。
* 例如所有輸入張量及輸出張量之維度3索引大小將等於例如一。
* 例如所有輸入張量及輸出張量之維度1索引大小將相同。
* 例如所有輸入張量及輸出張量之維度2索引大小將相同。
* 例如所有輸入張量及輸出張量之資料佈局及資料類型將相同。
在一個實例中,忽略輸出張量描述符2及函式特定保存區域位址欄位。在一個實例中,函式特定參數2至5將含有零。
函式碼
112
:
NNPA
-
CONVOLUTION
當指定NNPA-CONVOLUTION函式時,對於由輸出張量1描述符所描述之輸出張量中的每一輸出元素,自藉由輸入張量1描述符所描述之輸入張量1選擇由維度索引3、2及1組成之3維輸入1窗口。自藉由輸入張量2描述符所描述之張量2選擇由維度索引4、3及2組成的相同大小之3維輸入2窗口。將輸入1窗口中之元素乘以輸入2窗口中之對應元素,且將所有乘積加在一起以產生初始總和。將此初始總和加至輸入張量3之對應元素以計算中間總和值。輸出張量之元素為對中間總和執行之指定激活函數的結果。若未指定激活函數,則輸出元素等於中間總和。
若指定填補類型為有效,則窗口中之所有元素用以計算所得初始總和。若指定填補類型為相同,則當計算所得初始總和時,取決於窗口之定位,輸入1窗口之一些元素可能隱含為零。
是否存取執行操作不需要之元素為不可預測的。
在一個實例中,如下分配由卷積函數使用之函式特定參數的欄位:
* NNPA-CONVOLUTION函式特定參數1控制填補類型及激活函數。在一個實例中,函式特定參數1之位元29至31包括指定填補類型之填補欄位。實例類型如下:
填補
填補類型
0 有效
1 相同
2-7 保留
若為填補欄位指定保留值,則報告例如F000 hex之回應碼且操作以例如1之條件碼完成。
另外,在一個實例中,NNPA-CONVOLUTION函式特定參數1之位元24至27包括指定激活函數之激活欄位。實例函數如下:
ACT
激活函數
0 不執行激活函數
1 RELU
2-15 保留
若指定RELU之激活函數,則如下判定所得輸出元素值:若中間總和值小於或等於零,則輸出張量中之對應元素為零;否則,輸出張量中之對應元素為中間總和值與在函式特定參數4中指定之裁剪值中的最小值。
若為ACT欄位指定保留值,則報告例如F001 hex之回應碼且操作以例如1之條件碼完成。
* 函式特定參數2含有例如32位元無正負號二進位整數,其指定維度2 (D2S)步幅,該步幅指定滑動窗口在維度2中移動之元素數目。
* 函式特定參數3含有例如32位元無正負號二進位整數,其指定維度3 (D3S)步幅,該步幅指定滑動窗口在維度3中移動之元素數目。
函式特定參數2至3中之指定值將小於最大維度索引大小;否則,報告例如0012 hex之回應碼且操作以例如1之條件碼完成。
* 函式特定參數4定義可選RELU操作之裁剪值。在一個實例中,裁剪值在函式特定參數4之位元16至31中。
在一個實例中,若ACT欄位為零,則忽略此欄位。若ACT欄位指定RELU,則裁剪值指定於NNP資料類型1格式中。裁剪值零指示使用最大正值;換言之,不執行裁剪。若指定非零,則辨識到一般運算元資料例外。
在一個實例中,若除輸入張量2以外的指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若輸入張量2中之指定資料佈局未指定4D核心張量(例如,資料佈局=1),則回應碼,例如0010 hex設定於通用暫存器0中,且指令以例如1之條件碼完成。在一個實例中,若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則例如0011 hex之回應碼設定於通用暫存器0中且指令以例如1之條件碼完成。
若維度2步幅及維度3步幅兩者均為零且輸入張量2之維度3索引大小或維度4索引大小大於例如448,則儲存例如F002 hex之回應碼。若維度2步幅及維度3步幅兩者均大於零且輸入張量2之維度3索引大小或維度4索引大小大於例如64,則儲存例如F003 hex之回應碼且操作以例如1之條件碼完成。若維度2步幅或維度3步幅大於例如13,則儲存例如F004 hex之回應碼且操作以例如1之條件碼完成。
在一個實例中,以下條件將為真,否則,辨識到一般運算元資料例外:
* 輸入張量1、輸入張量3及輸出張量之資料佈局將相同。
* 所有輸入張量及輸出張量之資料類型將相同。
* 輸入3張量之維度2、維度3及維度4索引大小將為1。
* 輸出張量之維度4索引大小將等於輸入1張量之維度4索引大小。
* 輸出張量之維度1索引大小將等於輸入2張量之維度1索引大小及輸入3張量之維度1索引大小。
* 輸入1張量之維度1索引大小將等於輸入2張量之維度2索引大小。
* 在一個實例中,若維度2步幅及維度3步幅兩者均為零,則以下額外條件將為真:
*輸入1張量維度2索引大小將等於輸入2張量之維度3索引大小。
* 輸入張量之輸入1張量維度3索引大小將等於輸入2張量之維度4索引大小。
* 輸出張量之維度2索引大小及維度3索引大小將為一。
* 指定填補將為有效。
* 若維度2步幅或維度3步幅為非零,則兩個步幅為非零。
* 在一個實例中,若維度2步幅及維度3步幅兩者均大於零,則以下額外條件將為真:
* 當指定填補為有效時,輸入1張量之維度2索引大小將大於或等於輸入張量2之維度3索引大小。
* 當指定填補為有效時,輸入1張量之維度3索引大小將大於或等於輸入2張量之維度4索引大小。
* 在一個實例(卷積相同填補)中,當指定填補為相同時,將滿足輸入1張量及輸出張量之維度2索引大小與維度3索引大小之間的以下關係:
其中:
O1D2IS 輸出張量之維度2索引大小。
O1D3IS 輸出張量之維度3索引大小。
I1D2IS 輸入1張量之維度2索引大小。
I1D3IS 輸入1張量之維度3索引大小。
D2S 維度2步幅。
D3S 維度3步幅。
* 在一個實例(卷積有效填補)中,當指定填補為有效時,將滿足輸入1張量之維度2索引大小及維度3索引大小、輸入2張量及輸出張量之維度3索引大小及維度4索引大小之間的以下關係:
其中:
O1D2IS 輸出張量之維度2索引大小。
O1D3IS 輸出張量之維度3索引大小。
I1D2IS 輸入1張量之維度2索引大小。
I1D3IS 輸入1張量之維度3索引大小。
I2D3IS 輸入2張量之維度3索引大小。
I2D4IS 輸入2張量之維度4索引大小。
D2S 維度2步幅。
D3S 維度3步幅。
在一個實例中,忽略輸出張量描述符2及函式特定保存區域位址欄位。在一個實例中,函式特定參數5將含有零。
函式碼
113
:
NNPA
-
MATMUL
-
OP
(
矩陣乘法運算
)
在一個實例中,當指定NNPA-MATMUL-OP函式時,如下文所描述計算由輸出張量描述符所描述之輸出張量中的每一元素:
* 使用下文所描述之獲得維度1向量(get-dimension-1-vector)操作自藉由輸入張量1描述符所描述之輸入張量1選擇維度1向量(dimension-1-vector)。
* 使用下文所描述之獲得維度2向量(get-dimension-2-vector)操作自藉由輸入張量2描述符所描述之輸入張量2選擇維度2向量(dimension-2-vector)。
* 使用下文所描述之點積運算來計算維度1向量及維度2向量之中間點積。
* 對中間點積及由輸入張量3描述符所描述之輸入張量3之元素執行運算,其中維度索引4及維度索引1值與輸出張量元素相同。所得元素儲存於輸出張量中。藉由函式特定參數1判定且下文描述融合運算。
獲得維度1向量操作:對於指定輸出元素,自輸入1張量選擇維度1向量,其中輸入維度4索引為輸出維度4索引,輸入維度3索引為輸出維度3索引,且輸入維度2索引為輸出維度2索引。
獲得維度2向量操作:對於指定輸出元素,自輸入2張量選擇維度2向量,其中輸入維度4索引為輸出維度4索引,輸入維度3索引為輸出維度3索引,且輸入維度1索引為輸出維度1索引。
點積運算:相同大小及資料類型之兩個向量的中間點積經計算為輸入向量1中之每一元素與輸入向量2之對應元素的乘積之總和。
融合運算:函式特定參數1控制對中間點積及來自輸入張量3之對應元素執行的運算。在一個實例中,NNPA-MATMUL-OP函式特定參數1包括例如位元24至31中之運算欄位。運算欄位指定所執行之運算。如下指示實例運算:
運算
運算類型
0 加法
1 比較點積是否為高的
2 比較點積是否不低
3 比較點積及元素是否相等
4 比較點積及元素是否不相等
5 比較點積是否不高
6 比較點積是否為低的
在一個實例中,對於加法運算類型,將輸入張量3元素加至中間點積。對於比較運算類型,將中間點積與輸入張量3元素進行比較,且若比較為真,則將結果設定為例如值+1;否則,在為輸出張量指定之資料類型中,將其設定為例如值+0。
在一個實例中,保留運算(OPERATION)欄位之所有其他值。若為運算欄位指定保留值,則報告例如F000 hex之回應碼且操作以例如1之條件碼完成。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實施例中,以下條件將為真,否則,辨識到一般運算元資料例外:
* 所有輸入張量及輸出張量之維度4索引大小將相同。
* 所有輸入張量及輸出張量之維度3索引大小將等於一。
* 輸入張量3之維度2索引大小將等於一。
* 輸入張量1及輸出張量之維度2索引大小將相同。
* 輸入張量1之維度1索引大小及輸入張量2之維度2索引大小將相同。
* 輸入張量2、輸入張量3及輸出張量之維度1索引大小將相同。
* 所有輸入張量及輸出張量之資料佈局及資料類型將相同。
在一個實施例中,忽略輸出張量描述符2及函式特定保存區域位址欄位。在一實例中,函式特定參數2至5將含有零。
函式碼
114
:
NNPA
-
MATMUL
-
OP
-
BCAST23
(
矩陣乘法運算
-
廣播
23
)
在一個實例中,當指定NNPA-MATMUL-OP-BCAST23函式時,如下文所描述計算由輸出張量描述符所描述之輸出張量中的每一元素:
* 使用下文所描述之獲得維度1向量操作自藉由輸入張量1描述符所描述之輸入張量1選擇維度1向量。
* 使用下文所描述之獲得維度2向量操作自藉由輸入張量2描述符所描述之輸入張量2選擇維度2向量。
* 使用下文所描述之點積運算來計算維度1向量及維度2向量之點積。
* 將具有與輸出張量元素相同之維度索引1值的由輸入張量3描述符所描述之輸入張量3的元素加至先前計算之點積且儲存於輸出張量中。
獲得維度1向量操作:對於指定輸出元素,自輸入1張量選擇維度1向量,其中輸入維度4索引為輸出維度4索引,輸入維度3索引為輸出維度3索引,且輸入維度2索引為輸出維度2索引。
獲得維度2向量操作:對於指定輸出元素,自輸入2張量選擇維度2向量,其中輸入維度4索引為一,輸入維度3索引為輸出維度3索引,且輸入維度1索引為輸出維度1索引。
點積運算:相同大小及資料類型之兩個向量的中間乘積經計算為輸入向量1中之每一元素與輸入向量2之對應元素的乘積之總和。
在一個實例中,若指定張量描述符中之任一者中的指定資料佈局未指定4D特徵張量(例如,資料佈局=0)或若任何指定張量描述符中之資料類型未指定NNP資料類型1 (例如,資料類型=0),則回應碼,例如0010 hex或0011 hex,分別設定於通用暫存器0中,且指令以例如1之條件碼完成。
在一個實施例中,以下條件將為真,否則,辨識到一般運算元資料例外:
* 輸入張量1及輸出張量之維度4索引大小將相同。
* 輸入張量2及輸入張量3之維度4索引大小將等於一。
* 所有輸入張量及輸出張量之維度3索引大小將等於一。
* 輸入張量3之維度2索引大小將等於一。
* 輸入張量1及輸出張量之維度2索引大小將相同。
* 輸入張量1之維度1索引大小及輸入張量2之維度2索引大小將相同。
* 輸入張量2、輸入張量3及輸出張量之維度1索引大小將相同。
* 所有輸入張量及輸出張量之資料佈局及資料類型將相同。
在一個實施例中,忽略輸出張量描述符2及函式特定保存區域位址欄位。在一個實例中,函式特定參數1至5將含有零。
對於神經網路處理輔助指令,在一個實施例中,若輸出張量與任何輸入張量或參數區塊重疊,則結果不可預測。
作為實例,當嘗試執行神經網路處理輔助指令且未在例如雙字邊界上指明參數區塊時,辨識到規格例外。
當嘗試執行神經網路處理輔助指令且存在例如張量描述符不一致時,辨識到一般運算元資料例外。
神經網路處理輔助指令之所得條件碼包括例如:0-正常完成;1-設定回應碼;2--;3-CPU判定之處理資料量。
在一個實施例中,神經網路處理輔助指令之執行優先順序包括例如:
1.至7. 優先順序與一般狀況之程式中斷條件之優先順序相同的例外。
8.A 由於指定未指派或未安裝函式碼之條件碼1。
8.B 由於未在雙字邊界上指明參數區塊之規格例外。
9. 存取參數區塊之存取例外。
10. 由於模型不支援參數區塊之指定格式的條件碼1。
11.A 由於不支援指定張量資料佈局之條件碼1。
11.B 由於張量描述符之間的不同資料佈局之一般運算元資料例外。
12.A 由於除包括於以上條項8.A、10及11.A以及以下12.B.1中之彼等條件以外的條件的條件碼1。
12.B.1 由於NNPA-RELU及NNPA-CONVOLUTION之無效輸出張量資料類型的條件碼1。
12.B.2 NNPA-RELU函式特定參數1及NNPA-CONVOLUTION函式特定參數4之無效值的一般運算元資料例外。
13.A 存取輸出張量之存取例外。
13.B 存取輸入張量之存取例外。
13.C 存取函式特定保存區域之存取例外。
14. 條件碼0。
如本文中所描述,單一指令(例如,神經網路處理輔助指令)經組態以執行複數個函式,包括一查詢函式及複數個非查詢函式。每一非查詢函式可對大量資料進行操作,且因此可中斷該函式並因此中斷該指令。若被中斷,則設定諸如繼續旗標之指示符,且在重新執行指令時使用諸如繼續狀態緩衝器之選擇定位內的資訊,以繼續處理函式。
另外,在一個實施例中,藉由專用處理器(例如,神經網路處理器105;或其他處理器)執行非查詢函式,該專用處理器與例如起始指定待執行函式之指令的通用處理器(或其他處理器)共用記憶體。在一個實例中,通用處理器在指令執行期間將諸如輸入張量之位址的資訊提供至專用處理器,以使得專用處理器能夠執行函式(例如,張量計算)。在執行指令,包括執行函式期間,通用處理器繼續將資訊提供至專用處理器,但不執行其他工作(亦即,在一個實例中,指令執行同步)直至中斷或完成指令。
本發明之一或多個態樣不可避免地與電腦技術相關且促進電腦內之處理,從而改良其效能。經組態以執行各種函式之單一架構化機器指令的使用藉由降低複雜度、減少資源使用及提高處理速度來改良計算環境內之效能。另外,藉由使用經組態以用於多個函式之單一指令,例如單一架構化指令,其中一或多個函式係由與分派指令之處理器共用記憶體的另一處理器執行,不需要昂貴的記憶體釘紮及輸入/輸出操作來與另一處理器通信。
參看圖7A及圖7B描述促進計算環境內之處理的一個實施例之其他細節,此係因為該計算環境與本發明之一或多個態樣相關。
參看圖7A,第一處理器處理經組態以執行複數個函式之指令(700)。作為實例,複數個函式包括用以對一或多個張量進行操作之函式(702)。判定複數個函式中待執行之函式(704)。第一處理器將與函式相關之資訊提供至第二處理器,該函式待由第二處理器執行(708)。第一處理器及第二處理器共用記憶體,從而提供記憶體一致性(710)。
使用經組態以用於多個函式之單一指令,其中一或多個函式可由與處理指令之第一處理器共用記憶體的第二處理器執行,不需要昂貴的記憶體釘紮及輸入/輸出操作來與第二處理器通信。
在一個實例中,判定第一處理器抑或第二處理器待執行函式(712),且基於判定第二處理器待執行函式而執行提供(713)。
在一個實例中,判定第一處理器抑或第二處理器待執行函式包括判定由指令指定之函式為非查詢函式抑或查詢函式(714)。基於該函式為查詢函式,該第一處理器待執行該函式(716),且基於該函式為非查詢函式,該第二處理器待執行該函式(718)。
作為實例,第一處理器對該指令之處理包括該指令之同步執行(720)。
在另一態樣中,參看圖7B,判定函式之執行是否已中斷(730)。基於判定函式之執行已中斷,獲得選擇緩衝器中之資訊以恢復函式之執行(732)。
作為實例,判定函式之執行是否已中斷包括檢查繼續旗標,該繼續旗標包括於待在重新執行指令時使用之參數區塊中(734)。另外,在一個實例中,選擇緩衝器指示於待在重新執行指令時使用之參數區塊中(736)。
在一個實例中,一或多個張量呈對第二處理器最佳化之格式(738)。另外,作為實例,提供至第二處理器之資訊包括記憶體位址資訊,該記憶體位址資訊用以獲得待由待執行之函式操作的一或多個張量中之至少一個張量(740)。
作為實例,該指令指定提供與處理待執行之函式相關之資訊的參數區塊(742)。舉例而言,該參數區塊取決於待執行之函式(744)。
其他變化及實施例係可能的。
本發明之態樣可由許多類型之計算環境使用。參看圖8A描述併有及使用本發明之一或多個態樣的計算環境之另一實例。作為實例,圖8A之計算環境係基於由紐約阿蒙克市之國際商業機器公司供應之z/Architecture®指令集架構。然而,z/Architecture指令集架構僅為一個實例架構。同樣,計算環境可基於其他架構,包括但不限於Intel
®x86架構、國際商業機器公司之其他架構及/或其他公司之架構。Intel為因特爾公司(Intel Corporation)或其子公司在美國及其他國家中之商標或註冊商標。
在一個實例中,計算環境10包括中央電子複合體(CEC) 11。中央電子複合體11包括複數個組件,諸如記憶體12 (亦稱為系統記憶體、主記憶體、主儲存器、中央儲存器、儲存器),該記憶體耦接至一或多個處理器,諸如一或多個通用處理器(亦稱為中央處理單元(CPU) 13)及一或多個專用處理器(例如,神經網路處理器31),且耦接至輸入/輸出(I/O)子系統14。
作為實例,一或多個專用處理器可與一或多個通用處理器分離及/或至少一個專用處理器可嵌入於至少一個通用處理器內。其他變化亦係可能的。
I/O子系統14可為中央電子複合體之部分或與其分離。其導引主儲存器12與耦接至中央電子複合體之輸入/輸出控制單元15及輸入/輸出(I/O)裝置16之間的資訊流。
可使用許多類型之I/O裝置。一個特定類型為資料儲存裝置17。資料儲存裝置17可儲存一或多個程式18、一或多個電腦可讀程式指令19,及/或資料等。電腦可讀程式指令可經組態以進行本發明之態樣之實施例的功能。
中央電子複合體11可包括及/或耦接至抽取式/非抽取式、揮發性/非揮發性電腦系統儲存媒體。舉例而言,其可包括及/或耦接至非抽取式非揮發性磁性媒體(通常稱為「硬碟機」)、用於自抽取式非揮發性磁碟(例如,「軟碟」)讀取及寫入至抽取式非揮發性磁碟之磁碟機,及/或用於自諸如CD-ROM、DVD-ROM或其他光學媒體之抽取式非揮發性光碟讀取或寫入至抽取式非揮發性光碟之光碟機。應理解,可結合中央電子複合體11使用其他硬體及/或軟體組件。實例包括但不限於:微碼或毫碼、裝置驅動程式、冗餘處理單元、外部磁碟機陣列、RAID系統、磁帶機及資料存檔儲存系統等。
另外,中央電子複合體11可與眾多其他通用或專用計算系統環境或組態一起操作。可適合與中央電子複合體11一起使用之熟知計算系統、環境及/或組態之實例包括但不限於:個人電腦(PC)系統、伺服器電腦系統、精簡型用戶端、複雜型用戶端、手持型或膝上型電腦裝置、多處理器系統、基於微處理器之系統、機上盒、可程式化消費型電子裝置、網路PC、小型電腦系統、大型電腦系統及包括以上系統或裝置中之任一者的分散式雲端計算環境,以及其類似者。
在一或多個實施例中,中央電子複合體11提供邏輯分割及/或虛擬化支援。在一個實施例中,如圖8B中所展示,記憶體12包括例如一或多個邏輯分割區20、管理邏輯分割區之超管理器21,及處理器韌體22。超管理器21之一個實例為由紐約阿蒙克市之國際商業機器公司供應的處理器資源/系統管理器(PR/SM™)。PR/SM為國際商業機器公司在至少一個管轄區中之商標或註冊商標。
每一邏輯分割區20能夠充當單獨的系統。亦即,每一邏輯分割區可獨立地進行重設、運行客體作業系統23 (諸如,由紐約阿蒙克市之國際商業機器公司供應的z/OS
®作業系統)或其他控制碼24 (諸如,耦接設施控制碼(CFCC)),且用不同程式25操作。在邏輯分割區中運行之作業系統或應用程式呈現為能夠存取完整的系統,但實際上,僅其一部分可用。儘管供應z/OS作業系統作為實例,但可根據本發明之一或多個態樣使用由國際商業機器公司及/或其他公司供應之其他作業系統。
記憶體12耦接至例如CPU 13 (圖8A),其為可分配至邏輯分割區之實體處理器資源。舉例而言,邏輯分割區20可包括一或多個邏輯處理器,其中之每一者表示可動態地分配至邏輯分割區之實體處理器資源13中的全部或一部分。
在又一實施例中,中央電子複合體提供虛擬機支援(具有或不具有邏輯分割支援)。如圖8C中所展示,中央電子複合體11之記憶體12包括例如一或多個虛擬機26、管理虛擬機之諸如超管理器27的虛擬機管理器,及處理器韌體28。超管理器27之一個實例為由紐約阿蒙克市之國際商業機器公司供應的z/VM
®超管理器。超管理器有時被稱作主機。z/VM為國際商業機器公司在至少一個管轄區中之商標或註冊商標。
中央電子複合體之虛擬機支援提供操作大量虛擬機26之能力,該等虛擬機各自能夠用不同程式29操作且運行客體作業系統30,諸如Linux
®作業系統。每一虛擬機26能夠充當單獨的系統。亦即,每一虛擬機可獨立地進行重設,運行客體作業系統,且用不同程式操作。在虛擬機中運行之作業系統或應用程式呈現為能夠存取完整的系統,但實際上,僅其一部分可用。儘管供應z/VM及Linux作為實例,但可根據本發明之一或多個態樣使用其他虛擬機管理器及/或作業系統。註冊商標Linux
®係依照來自Linux基金會(Linux Foundation)的轉授權而使用,該基金會為該商標在全球範圍內的所有者Linus Torvalds的獨家被授權人。
參看圖9A描述併有及使用本發明之一或多個態樣的計算環境之另一實施例。在此實例中,計算環境36包括例如原生中央處理單元(CPU) 37、記憶體38及一或多個輸入/輸出裝置及/或介面39,前述各者經由例如一或多個匯流排40及/或其他連接而彼此耦接。作為實例,計算環境36可包括:由紐約阿蒙克市之國際商業機器公司供應的PowerPC
®處理器;由加州帕洛阿爾托市(Palo Alto, California)之惠普公司(Hewlett Packard Co.)供應的具有Intel
®Itanium
®II處理器之HP Superdome;及/或基於由國際商業機器公司、惠普公司、因特爾公司、甲骨文公司(Oracle)及/或其他公司供應之架構的其他機器。PowerPC為國際商業機器公司在至少一個管轄區中之商標或註冊商標。Itanium為因特爾公司或其子公司在美國及其他國家中之商標或註冊商標。
原生中央處理單元37包括一或多個原生暫存器41,諸如在環境內之處理期間使用的一或多個通用暫存器及/或一或多個專用暫存器。此等暫存器包括表示環境在任何特定時間點之狀態的資訊。
此外,原生中央處理單元37執行儲存於記憶體38中之指令及程式碼。在一個特定實例中,中央處理單元執行儲存於記憶體38中之仿真器程式碼42。此程式碼使得在一個架構中組態之計算環境能夠仿真另一架構。舉例而言,仿真器程式碼42允許基於除z/Architecture指令集架構以外之架構的機器(諸如,PowerPC處理器、HP Superdome伺服器或其他者)仿真z/Architecture指令集架構且執行基於z/Architecture指令集架構開發之軟體及指令。
參看圖9B描述與仿真器程式碼42相關之其他細節。儲存於記憶體38中之客體指令43包含經開發以在除原生CPU 37之架構以外之架構中執行的軟體指令(例如,與機器指令相關)。舉例而言,客體指令43可能已經設計以在基於z/Architecture指令集架構之處理器上執行,但替代地,在可為例如Intel Itanium II處理器之原生CPU 37上仿真。在一個實例中,仿真器程式碼42包括指令提取常式44,以自記憶體38獲得一或多個客體指令43且視情況為所獲得之指令提供本端緩衝。其亦包括指令轉譯常式45以判定已獲得之客體指令之類型且將客體指令轉譯成一或多個對應的原生指令46。此轉譯包括例如識別待由客體指令執行之功能及選取原生指令以執行彼功能。
另外,仿真器程式碼42包括仿真控制常式47以使得執行原生指令。仿真控制常式47可使原生CPU 37執行仿真一或多個先前獲得之客體指令之原生指令的常式且在此執行完結時,將控制傳回至指令提取常式以仿真獲得下一客體指令或一組客體指令。原生指令46之執行可包括將資料自記憶體38載入至暫存器中;將資料自暫存器儲存回至記憶體;或執行某一類型之算術或邏輯運算,如由轉譯常式判定。
每一常式例如實施於軟體中,該軟體儲存於記憶體中且藉由原生中央處理單元37執行。在其他實例中,一或多個常式或操作實施於韌體、硬體、軟體或其某一組合中。可使用原生CPU之暫存器41或藉由使用記憶體38中之定位來仿真所仿真處理器之暫存器。在實施例中,客體指令43、原生指令46及仿真器程式碼42可駐留於同一記憶體中或可分配於不同記憶體裝置當中。
根據本發明之一或多個態樣,可仿真之指令包括本文中所描述之神經網路輔助處理指令。另外,根據本發明之一或多個態樣,可仿真其他指令及/或神經網路處理之一或多個態樣。
上文所描述之計算環境僅為可使用之計算環境的實例。可使用其他環境,包括但不限於未經分割之環境、經分割之環境、雲端環境及/或仿真環境;實施例不限於任何一種環境。儘管本文中描述計算環境之各種實例,但本發明之一或多個態樣可與許多類型之環境一起使用。本文中所提供之計算環境僅為實例。
每一計算環境能夠經組態以包括本發明之一或多個態樣。
一或多個態樣可係關於雲端計算。
應理解,儘管本公開包括關於雲端計算之詳細描述,但本文中所敍述之教示的實施不限於雲端計算環境。確切而言,本發明之實施例能夠結合現在已知或稍後開發之任何其他類型之計算環境來實施。
雲端計算為用於使得能夠對可組態計算資源(例如,網路、網路頻寬、伺服器、處理、記憶體、儲存器、應用程式、虛擬機及服務)之共用集區進行便利之按需網路存取的服務遞送之模型,該等可組態計算資源可藉由最少的管理工作或與服務提供者之互動而快速地佈建及釋放。此雲端模型可包括至少五個特性、至少三個服務模型及至少四個部署模型。
特性如下:
隨選自助服務:雲端消費者可在需要時自動單方面地佈建計算能力,諸如伺服器時間及網路儲存,而無需與服務提供者之人為互動。
廣泛網路存取:可經由網路獲得能力且經由標準機制存取能力,該等標準機制藉由異質精簡型或複雜型用戶端平台(例如,行動電話、膝上型電腦及PDA)促進使用。
資源集用:提供者之計算資源經集用以使用多租戶模型為多個消費者服務,其中根據需求動態地指派及重新指派不同的實體及虛擬資源。存在一種位置獨立感,此係因為消費者通常無法控制或瞭解所提供資源之確切位置,但可能夠在較高抽象層級(例如,國家、州或資料中心)指定定位。
快速彈性:可快速且彈性地佈建能力(在一些狀況下,自動地)以迅速地擴展,且可快速地釋放能力以迅速地縮減。對於消費者而言,可用於佈建之能力常常看起來為無限的且可在任何時間以任何數量來購買。
量測服務:雲端系統藉由在適於服務類型(例如,儲存、處理、頻寬及作用中使用者帳戶)之某一抽象層級處充分利用計量能力而自動控制及最佳化資源使用。可監視、控制及報告資源使用情況,從而為所利用服務之提供者及消費者兩者提供透明度。
服務模型如下:
軟體即服務(SaaS):提供給消費者之能力係使用在雲端基礎架構上運行之提供者之應用程式。可經由諸如網頁瀏覽器(例如,基於網頁之電子郵件)之精簡型用戶端介面自各種用戶端裝置存取應用程式。消費者並不管理或控制包括網路、伺服器、作業系統、儲存器或甚至個別應用程式能力之底層雲端基礎架構,其中可能的例外為有限的使用者特定應用程式組態設定。
平台即服務(PaaS):提供給消費者之能力係將使用由提供者所支援之程式設計語言及工具創建的消費者創建或獲取之應用程式部署至雲端基礎架構上。消費者並不管理或控制包括網路、伺服器、作業系統及/或儲存器之底層雲端基礎架構,但控制所部署之應用程式及可能的代管環境組態之應用程式。
基礎架構即服務(IaaS):提供給消費者之能力係佈建處理、儲存、網路及其他基礎計算資源,其中消費者能夠部署及運行可包括作業系統及應用程式之任意軟體。消費者並不管理或控制底層雲端基礎架構,但控制作業系統、儲存器、所部署應用程式,及可能有限地控制選定網路連接組件(例如,主機防火牆)。
部署模型如下:
私有雲端:僅針對組織操作雲端基礎架構。私有雲端可由組織或第三方來管理且可存在本端部署(on-premise)或遠端部署(off-premise)。
社群雲端:雲端基礎架構由若干組織共用且支援具有共同關注事項(例如,任務、安全要求、策略及合規性考量)的特定社群。社群雲端可由組織或第三方來管理且可存在本端部署或遠端部署。
公用雲端:雲端基礎架構可用於公眾或大型工業集團且由出售雲端服務之組織所擁有。
混合雲端:雲端基礎架構為兩個或多於兩個雲端(私有、社群或公用)之組合物,該等雲端仍為唯一的實體,但藉由實現資料及應用程式可攜性之標準化或專屬技術系結在一起(例如,用於在雲端之間實現負載平衡的雲端爆發)。
雲端計算環境面向服務,集中於無狀態、低耦合、模組化及/或語義互操作性。雲端計算之核心在於包括互連節點之網路的基礎架構。
現參看圖10,描繪說明性雲端計算環境50。如所展示,雲端計算環境50包括一或多個雲端計算節點52,雲端消費者所使用的諸如個人數位助理(PDA)或蜂巢式電話54A、桌上型電腦54B、膝上型電腦54C及/或汽車電腦系統54N的本端計算裝置可與該一或多個雲端計算節點通信。節點52可彼此通信。可在一或多個網路(諸如,如上文所描述之私有、社群、公用或混合雲端或其組合)中將該等節點實體地或虛擬地分組(未圖示)。此情形允許雲端計算環境50供應基礎架構、平台及/或軟體作為服務,針對該等服務,雲端消費者不需要在本端計算裝置上維護資源。應理解,圖10中所展示之計算裝置54A至54N之類型意欲僅為說明性的,且計算節點52及雲端計算環境50可經由任何類型之網路及/或網路可定址連接(例如,使用網頁瀏覽器)與任何類型之電腦化裝置通信。
現參看圖11,展示由雲端計算環境50 (圖10)提供之功能抽象層之集合。事先應理解,圖11中所展示之組件、層及功能意欲僅為說明性的且本發明之實施例不限於此。如所描繪,提供以下層及對應功能:
硬體及軟體層60包括硬體及軟體組件。硬體組件之實例包括:大型電腦61;基於精簡指令集電腦(IRSC)架構之伺服器62;伺服器63;刀鋒伺服器64;儲存裝置65;以及網路及網路連接組件66。在一些實施例中,軟體組件包括網路應用程式伺服器軟體67及資料庫軟體68。
虛擬化層70提供抽象層,可自該抽象層提供虛擬實體之以下實例:虛擬伺服器71;虛擬儲存器72;虛擬網路73,包括虛擬私有網路;虛擬應用程式及作業系統74;以及虛擬用戶端75。
在一個實例中,管理層80可提供下文所描述之功能。資源佈建81提供計算資源及用以執行雲端計算環境內之任務之其他資源的動態採購。當在雲端計算環境內利用資源時,計量及定價82提供成本追蹤,以及對此等資源之消耗的帳務處理或發票開立。在一個實例中,此等資源可包括應用程式軟體授權。安全性為雲端消費者及任務提供身分驗證,以及為資料及其他資源提供保護。使用者入口網站83為消費者及系統管理員提供對雲端計算環境之存取。服務等級管理84提供雲端計算資源分配及管理使得滿足所需服務等級。服務等級協議(SLA)規劃及履行85提供雲端計算資源之預先配置及採購,針對雲端計算資源之未來要求係根據SLA來預期。
工作負載層90提供功能性之實例,可針對該功能性利用雲端計算環境。可自此層提供之工作負載及功能的實例包括:地圖測繪及導航91;軟體開發及生命週期管理92;虛擬教室教育遞送93;資料分析處理94;異動處理95;及神經網路處理輔助處理96。
本發明之態樣可為在任何可能之技術細節整合層級處的系統、方法及/或電腦程式產品。該電腦程式產品可包括一(或多個)電腦可讀儲存媒體,其上具有電腦可讀程式指令以使處理器進行本發明之態樣。
電腦可讀儲存媒體可為有形裝置,其可持留及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可為例如但不限於電子儲存裝置、磁性儲存裝置、光學儲存裝置、電磁儲存裝置、半導體儲存裝置或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例的非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)、記憶棒、軟性磁碟、機械編碼裝置(諸如,上面記錄有指令之凹槽中的打孔卡或凸起結構)及前述各者之任何合適組合。如本文中所使用,不應將電腦可讀儲存媒體本身解釋為暫時性信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纖纜線傳遞之光脈衝),或經由電線傳輸之電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別計算/處理裝置或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存裝置。網路可包含銅傳輸纜線、光學傳輸光纖、無線傳輸、路由器、防火牆、交換機、閘道電腦及/或邊緣伺服器。每一計算/處理裝置中之網路配接器卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以供儲存於各別計算/處理裝置內之電腦可讀儲存媒體中。
用於進行本發明之操作的電腦可讀程式指令可為以一或多種程式設計語言之任何組合編寫的組譯器指令、指令集架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料、用於積體電路系統之組態資料,或原始程式碼或目標碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及諸如「C」程式設計語言或類似程式設計語言之程序性程式設計語言。電腦可讀程式指令可完全在使用者電腦上執行、部分地在使用者電腦上執行、作為獨立套裝軟體執行、部分地在使用者電腦上執行且部分地在遠端電腦上執行,或完全在遠端電腦或伺服器上執行。在後一種情境中,遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者電腦,或可連接至外部電腦(例如,使用網際網路服務提供者經由網際網路)。在一些實施例中,包括例如可程式化邏輯電路系統、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA)之電子電路系統可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路系統而執行電腦可讀程式指令,以便執行本發明之態樣。
本文中參考根據本發明之實施例的方法、設備(系統)及電腦程式產品之流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖中的每一區塊以及流程圖說明及/或方塊圖中之區塊的組合。
可將此等電腦可讀程式指令提供至電腦之處理器或其他可程式化資料處理設備以產生機器,使得經由電腦之處理器或其他可程式化資料處理設備執行的指令創建用於實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作的構件。此等電腦可讀程式指令亦可儲存於電腦可讀儲存媒體中,該等電腦可讀程式指令可指導電腦、可程式化資料處理設備及/或其他裝置以特定方式發揮作用,使得儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之態樣的指令。
電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理設備或其他裝置上,以使一系列操作步驟在該電腦、其他可程式化設備或其他裝置上執行以產生電腦實施程序,使得在該電腦、其他可程式化設備或其他裝置上執行之指令實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施的架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示指令之模組、區段或部分,其包含用於實施指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中所提及之功能可能不以諸圖中所提及之次序發生。舉例而言,取決於所涉及之功能性,依次展示之兩個區塊實際上作為一個步驟實現,同時、實質上同時、以部分或完全時間重疊之方式執行,或該等區塊有時可能以相反次序執行。亦應注意,方塊圖及/或流程圖說明中之每一區塊及方塊圖及/或流程圖說明中之區塊的組合可由執行指定功能或動作或進行專用硬體與電腦指令之組合的基於專用硬體之系統來實施。
除上述情形之外,亦可藉由供應對消費者環境之管理之服務提供者來提供、供應、部署、管理、服務(等)一或多個態樣。舉例而言,服務提供者可創建、維護、支援(等)電腦程式碼及/或執行用於一或多個消費者之一或多個態樣的電腦基礎架構。作為回報,服務提供者可根據訂用及/或收費協議接收來自消費者之付款(作為實例)。另外或替代地,服務提供者可接收來自向一或多個第三方出售廣告內容之付款。
在一個態樣中,可部署一應用程式用於執行一或多個實施例。作為一個實例,應用程式之部署包含提供可操作以執行一或多個實施例之電腦基礎架構。
作為另一態樣,可部署計算基礎架構,包含將電腦可讀程式碼整合至計算系統中,其中程式碼結合計算系統能夠執行一或多個實施例。
作為又一態樣,可提供一種用於整合計算基礎架構之程序,包含將電腦可讀程式碼整合至電腦系統中。電腦系統包含電腦可讀媒體,其中電腦媒體包含一或多個實施例。程式碼結合電腦系統能夠執行一或多個實施例。
儘管上文描述各種實施例,但此等實施例僅為實例。舉例而言,其他架構之計算環境可用以併有及/或使用一或多個態樣。另外,可使用不同指令或操作。另外,可使用不同類型之暫存器及/或不同暫存器。另外,可支援其他資料格式、資料佈局及/或資料大小。在一或多個實施例中,可使用一或多個通用處理器、一或多個專用處理器或通用處理器與專用處理器之組合。許多變化係可能的。
本文中描述各種態樣。另外,在不脫離本發明之態樣之精神的情況下,許多變化係可能的。應注意,除非不一致,否則本文中所描述之每一態樣或特徵及其變體可與任何其他態樣或特徵組合。
另外,其他類型之計算環境可為有益的且可加以使用。作為實例,可使用適合於儲存及/或執行程式碼之資料處理系統,其包括直接或經由系統匯流排間接地耦接至記憶體元件之至少兩個處理器。記憶體元件包括例如在實際執行程式碼期間使用之本端記憶體、大容量儲存器,及提供至少某一程式碼之臨時儲存以便減少在執行期間必須自大容量儲存器擷取程式碼之次數的快取記憶體。
輸入/輸出或I/O裝置(包括但不限於鍵盤、顯示器、指標裝置、DASD、磁帶、CD、DVD、隨身碟(thumb drive)及其他記憶體媒體等)可直接或經由介入之I/O控制器耦接至系統。網路配接器亦可耦接至系統以使得資料處理系統能夠經由介入之私有網路或公用網路耦接至其他資料處理系統或遠端印表機或儲存裝置。數據機、纜線數據機及乙太網路卡僅為幾種可用類型之網路配接器。
本文中所使用之術語係僅出於描述特定實施例之目的且並不意欲為限制性的。如本文中所使用,除非上下文另外清楚地指示,否則單數形式「一(a/an)」及「該」意欲亦包括複數形式。應進一步理解,術語「包含(comprises及/或comprising)」在用於本說明書中時指定所陳述特徵、整數、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組之存在或添加。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若存在)意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述之目的呈現一或多個實施例之描述,但其不意欲為窮盡性的或限於所揭示之形式。對於一般熟習此項技術者而言,許多修改及變化將為顯而易見的。選取及描述實施例以便最佳地解釋各種態樣及實際應用,且使得一般熟習此項技術者能夠理解具有如適於所預期之特定用途之各種修改的各種實施例。
10:計算環境
11:中央電子複合體(CEC)
12:記憶體
13:中央處理單元(CPU)/實體處理器資源
14:輸入/輸出(I/O)子系統
15:輸入/輸出控制單元
16:輸入/輸出(I/O)裝置
17:資料儲存裝置
18:程式
19:電腦可讀程式指令
20:邏輯分割區
21:超管理器
22:處理器韌體
23:客體作業系統
24:控制碼
25:程式
26:虛擬機
27:超管理器
28:處理器韌體
29:程式
30:客體作業系統
31:神經網路處理器
36:計算環境
37:原生中央處理單元(CPU)
38:記憶體
39:輸入/輸出裝置及/或介面
40:匯流排
41:原生暫存器
42:仿真器程式碼
43:客體指令
44:指令提取常式
45:指令轉譯常式
46:原生指令
47:仿真控制常式
50:雲端計算環境
52:雲端計算節點
54A:個人數位助理(PDA)或蜂巢式電話/計算裝置
54B:桌上型電腦/計算裝置
54C:膝上型電腦/計算裝置
54N:汽車電腦系統/計算裝置
60:硬體及軟體層
61:大型電腦
62:基於精簡指令集電腦(IRSC)架構之伺服器
63:伺服器
64:刀鋒伺服器
65:儲存裝置
66:網路及網路連接組件
67:網路應用程式伺服器軟體
68:資料庫軟體
70:虛擬化層
71:虛擬伺服器
72:虛擬儲存器
73:虛擬網路
74:虛擬應用程式及作業系統
75:虛擬用戶端
80:管理層
81:資源佈建
82:計量及定價
83:使用者入口網站
84:服務等級管理
85:服務等級協議(SLA)規劃及履行
90:工作負載層
91:地圖測繪及導航
92:軟體開發及生命週期管理
93:虛擬教室教育遞送
94:資料分析處理
95:異動處理
96:神經網路處理輔助處理
100:計算環境
102:電腦系統
104:通用處理器或處理單元
105:神經網路處理器
106:記憶體
108:輸入/輸出(I/O)介面
110:匯流排
111:匯流排
112:快取記憶體
114:本端快取記憶體
116:程式或應用程式
118:作業系統
120:電腦可讀程式指令
122:處理器韌體
130:外部裝置
132:網路介面
134:資料儲存裝置
136:程式
138:電腦可讀程式指令
150:指令提取組件
152:指令解碼單元
154:指令執行組件
156:記憶體存取組件
158:寫回組件
160:暫存器
172:神經網路處理輔助組件
200:步驟
210:步驟
220:步驟
230:步驟
232:步驟
234:步驟
236:步驟
238:步驟
240:步驟
250:步驟
260:步驟
262:步驟
300:神經網路處理輔助指令
302:操作碼(作業碼)欄位
310:回應碼欄位/回應碼
312:例外旗標欄位/例外旗標(EF)
314:函式碼欄位/函式碼(FC)
320:參數區塊
330:NNPA查詢可用函式參數區塊
332:已安裝函式向量
334:已安裝參數區塊格式向量
336:已安裝資料類型/已安裝資料類型欄位
338:已安裝資料佈局格式/已安裝資料佈局格式欄位
340:最大維度索引大小/欄位
342:最大張量大小/欄位
344:已安裝NNP資料類型1轉換向量
350:參數區塊
352:參數區塊版本號碼
354:模型版本號碼
356:繼續旗標
358:函式特定保存區域位址
360:輸出張量描述符
365:輸入張量描述符
370:函式特定參數
375:繼續狀態緩衝器欄位
382:資料佈局格式
384:資料類型
386:維度1至4索引大小
388:張量位址
400:格式
402:正負號
404:指數+31
406:分數
500:3D張量
502:2D張量
600:記憶體
602:列
604:元素
606:填補
608:填補
700:步驟
702:步驟
704:步驟
708:步驟
710:步驟
712:步驟
713:步驟
714:步驟
716:步驟
718:步驟
720:步驟
730:步驟
732:步驟
734:步驟
736:步驟
738:步驟
740:步驟
742:步驟
744:步驟
E1:內部維度
E2:維度
E3:維度
E4:外部維度
在本說明書完結時在申請專利範圍中作為實例特別地指出且清楚地主張一或多個態樣。一或多個態樣之前述內容以及物件、特徵及優點自結合隨附圖式進行之以下詳細描述顯而易見,在隨附圖式中:
圖1A描繪併有及使用本發明之一或多個態樣的計算環境之一個實例;
圖1B描繪根據本發明之一或多個態樣的圖1A之處理器的其他細節;
圖2A描繪根據本發明之一或多個態樣的與執行神經網路處理輔助指令相關之處理的一個實例;
圖2B描繪根據本發明之一或多個態樣的與神經網路處理輔助指令之執行相關聯的中斷處理之一個實例;
圖3A描繪根據本發明之一或多個態樣的神經網路處理輔助指令之格式的一個實例;
圖3B描繪根據本發明之一或多個態樣的由神經網路處理輔助指令使用之通用暫存器的一個實例;
圖3C描繪根據本發明之一或多個態樣的由神經網路處理輔助指令支援之函式碼的實例;
圖3D描繪根據本發明之一或多個態樣的由神經網路處理輔助指令使用之另一通用暫存器的一個實例;
圖3E描繪根據本發明之一或多個態樣的由神經網路處理輔助指令之查詢函式使用的參數區塊之一個實例;
圖3F描繪根據本發明之一或多個態樣的由神經網路處理輔助指令之一或多個非查詢函式使用的參數區塊之一個實例;
圖3G描繪根據本發明之一或多個態樣的由神經網路處理輔助指令使用之張量描述符的一個實例;
圖4描繪根據本發明之一或多個態樣的神經網路處理(NNP)資料類型1資料類型之格式的一個實例;
圖5A至圖5C描繪根據本發明之一或多個態樣的由神經網路處理輔助指令使用之輸入資料佈局的實例;
圖6A至圖6C描繪根據本發明之一或多個態樣的對應於圖5A至圖5C之輸入資料佈局的實例輸出;
圖7A至圖7B描繪根據本發明之一或多個態樣的促進計算環境內之處理的一個實例;
圖8A描繪併有及使用本發明之一或多個態樣的計算環境之另一實例;
圖8B描繪根據本發明之一或多個態樣的圖8A之記憶體的其他細節之一個實例;
圖8C描繪根據本發明之一或多個態樣的圖8A之記憶體的其他細節之另一實例;
圖9A描繪併有及使用本發明之一或多個態樣的計算環境之又一實例;
圖9B描繪根據本發明之一或多個態樣的圖9A之記憶體的其他細節;
圖10描繪根據本發明之一或多個態樣的雲端計算環境之一個實施例;及
圖11描繪根據本發明之一或多個態樣的抽象模型層之一個實例。
200:步驟
210:步驟
220:步驟
230:步驟
232:步驟
234:步驟
236:步驟
238:步驟
240:步驟
250:步驟
Claims (21)
- 一種用於促進一計算環境內之處理的電腦程式產品,該電腦程式產品包含: 一或多個電腦可讀儲存媒體及共同地儲存於該一或多個電腦可讀儲存媒體上以執行一方法之程式指令,該方法包含: 藉由一第一處理器處理經組態以執行複數個函式之一指令,該複數個函式包括用以對一或多個張量進行操作之函式; 判定該複數個函式中待執行之一函式;及 藉由該第一處理器將與該函式相關之資訊提供至一第二處理器,該函式待由該第二處理器執行,且其中該第一處理器及該第二處理器共用記憶體,從而提供記憶體一致性。
- 如請求項1之電腦程式產品,其中該方法進一步包含判定該第一處理器抑或該第二處理器待執行該函式,且其中該提供係基於判定該函式待由該第二處理器執行而執行。
- 如請求項2之電腦程式產品,其中該判定該第一處理器抑或該第二處理器待執行該函式包含判定由該指令指定之該函式為一非查詢函式抑或一查詢函式,其中基於該函式為一查詢函式,該第一處理器待執行該函式,且基於該函式為一非查詢函式,該第二處理器待執行該函式。
- 如請求項1之電腦程式產品,其中該第一處理器對該指令之該處理包括該指令之同步執行。
- 如請求項1之電腦程式產品,其中該方法進一步包含: 判定該函式之執行是否已中斷;及 基於判定該函式之執行已中斷,獲得一選擇緩衝器中之資訊以恢復該函式之執行。
- 如請求項5之電腦程式產品,其中該判定該函式之執行是否已中斷包含檢查一繼續旗標,該繼續旗標包括於待在重新執行該指令時使用之一參數區塊中。
- 如請求項5之電腦程式產品,其中該選擇緩衝器指示於待在重新執行該指令時使用之一參數區塊中。
- 如請求項1之電腦程式產品,其中該一或多個張量呈對該第二處理器最佳化之一格式。
- 如請求項1之電腦程式產品,其中提供至該第二處理器之該資訊包含記憶體位址資訊,該記憶體位址資訊用以獲得待由待執行之該函式操作的該一或多個張量中之至少一個張量。
- 如請求項1之電腦程式產品,其中該指令指定提供與處理待執行之該函式相關之資訊的一參數區塊,該參數區塊取決於待執行之該函式。
- 一種用於促進一計算環境內之處理的電腦系統,該電腦系統包含: 一記憶體;及 至少一個處理器,其與該記憶體通信,其中該電腦系統經組態以執行一方法,該方法包含: 藉由一第一處理器處理經組態以執行複數個函式之一指令,該複數個函式包括用以對一或多個張量進行操作之函式; 判定該複數個函式中待執行之一函式;及 藉由該第一處理器將與該函式相關之資訊提供至一第二處理器,該函式待由該第二處理器執行,其中該第一處理器及該第二處理器共用記憶體,從而提供記憶體一致性。
- 如請求項11之電腦系統,其中該方法進一步包含判定該第一處理器抑或該第二處理器待執行該函式,且其中該提供係基於判定該函式待由該第二處理器執行而執行。
- 如請求項12之電腦系統,其中該判定該第一處理器抑或該第二處理器待執行該函式包含判定由該指令指定之該函式為一非查詢函式抑或一查詢函式,其中基於該函式為一查詢函式,該第一處理器待執行該函式,且基於該函式為一非查詢函式,該第二處理器待執行該函式。
- 如請求項11之電腦系統,其中該方法進一步包含: 判定該函式之執行是否已中斷;及 基於判定該函式之執行已中斷,獲得一選擇緩衝器中之資訊以恢復該函式之執行。
- 如請求項11之電腦系統,其中該第一處理器對該指令之該處理包括該指令之同步執行。
- 一種促進一計算環境內之處理的電腦實施方法,該電腦實施方法包含: 藉由一第一處理器處理經組態以執行複數個函式之一指令,該複數個函式包括用以對一或多個張量進行操作之函式; 判定該複數個函式中待執行之一函式;及 基於判定該函式待由該第二處理器執行,藉由該第一處理器將與該函式相關之資訊提供至一第二處理器,其中該第一處理器及該第二處理器共用記憶體,從而提供記憶體一致性。
- 如請求項16之電腦實施方法,其進一步包含判定該第一處理器抑或該第二處理器待執行該函式,且其中該提供係基於判定該函式待由該第二處理器執行而執行。
- 如請求項17之電腦實施方法,其中該判定該第一處理器抑或該第二處理器待執行該函式包含判定由該指令指定之該函式為一非查詢函式抑或一查詢函式,其中基於該函式為一查詢函式,該第一處理器待執行該函式,且基於該函式為一非查詢函式,該第二處理器待執行該函式。
- 如請求項16之電腦實施方法,其進一步包含: 判定該函式之執行是否已中斷;及 基於判定該函式之執行已中斷,獲得一選擇緩衝器中之資訊以恢復該函式之執行。
- 如請求項16之電腦實施方法,其中該第一處理器對該指令之該處理包括該指令之同步執行。
- 一種用於促進一計算環境內之處理的電腦程式產品,該電腦程式產品包含: 一或多個電腦可讀儲存媒體及共同地儲存於該一或多個電腦可讀儲存媒體上以執行一方法之程式指令,該方法包含: 處理經組態以執行複數個函式之一指令,該複數個函式包括用以對一或多個輸入張量進行操作之函式,該一或多個輸入張量具有對一選擇處理器最佳化之一格式,該選擇處理器待用以執行該複數個函式中之一或多個函式; 自該複數個函式判定待執行之一特定函式;及 起始該特定函式之執行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/350,393 US11669331B2 (en) | 2021-06-17 | 2021-06-17 | Neural network processing assist instruction |
US17/350,393 | 2021-06-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202301107A true TW202301107A (zh) | 2023-01-01 |
TWI807767B TWI807767B (zh) | 2023-07-01 |
Family
ID=82321359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111113373A TWI807767B (zh) | 2021-06-17 | 2022-04-08 | 神經網路處理輔助指令 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11669331B2 (zh) |
EP (1) | EP4356242A1 (zh) |
JP (1) | JP2024522435A (zh) |
KR (1) | KR20230160935A (zh) |
CN (1) | CN117396845A (zh) |
AU (1) | AU2022293984A1 (zh) |
CA (1) | CA3213333A1 (zh) |
TW (1) | TWI807767B (zh) |
WO (1) | WO2022263282A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831337B (zh) * | 2019-04-19 | 2022-11-29 | 安徽寒武纪信息科技有限公司 | 数据同步方法及装置以及相关产品 |
Family Cites Families (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761105A (en) | 1995-09-26 | 1998-06-02 | Advanced Micro Devices, Inc. | Reservation station including addressable constant store for a floating point processing unit |
US8291003B2 (en) | 2008-09-09 | 2012-10-16 | International Business Machines Corporation | Supporting multiple formats in a floating point processor |
US8957903B2 (en) * | 2010-12-20 | 2015-02-17 | International Business Machines Corporation | Run-time allocation of functions to a hardware accelerator |
US10656945B2 (en) * | 2012-06-15 | 2020-05-19 | International Business Machines Corporation | Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction |
US9286130B2 (en) | 2012-08-27 | 2016-03-15 | International Business Machines Corporation | Optimizing virtual machine deployment time by temporarily allocating more processing resources during the initial deployment time of the virtual machine |
US10623386B1 (en) | 2012-09-26 | 2020-04-14 | Pure Storage, Inc. | Secret sharing data protection in a storage system |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US8873750B2 (en) * | 2013-03-14 | 2014-10-28 | International Business Machines Corporation | Instruction for performing a pseudorandom number generate operation |
US9785565B2 (en) * | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US10061824B2 (en) | 2015-01-30 | 2018-08-28 | Splunk Inc. | Cell-based table manipulation of event data |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10460230B2 (en) | 2015-06-04 | 2019-10-29 | Samsung Electronics Co., Ltd. | Reducing computations in a neural network |
US10728169B1 (en) | 2015-06-26 | 2020-07-28 | Amazon Technologies, Inc. | Instance upgrade migration |
US9710401B2 (en) | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
US9940101B2 (en) | 2015-08-25 | 2018-04-10 | Samsung Electronics Co., Ltd. | Tininess prediction and handler engine for smooth handling of numeric underflow |
US9720714B2 (en) * | 2015-08-26 | 2017-08-01 | International Business Machines Corporation | Accelerator functionality management in a coherent computing system |
US10726328B2 (en) | 2015-10-09 | 2020-07-28 | Altera Corporation | Method and apparatus for designing and implementing a convolution neural net accelerator |
US10353860B2 (en) | 2015-10-08 | 2019-07-16 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with neural processing units dynamically configurable to process multiple data sizes |
US9921986B2 (en) * | 2015-10-27 | 2018-03-20 | International Business Machines Corporation | Suspend and resume in a time shared coprocessor |
US9569277B1 (en) | 2016-01-29 | 2017-02-14 | International Business Machines Corporation | Rebalancing virtual resources for virtual machines based on multiple resource capacities |
US10778707B1 (en) | 2016-05-12 | 2020-09-15 | Amazon Technologies, Inc. | Outlier detection for streaming data using locality sensitive hashing |
US10891538B2 (en) | 2016-08-11 | 2021-01-12 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US10810484B2 (en) | 2016-08-12 | 2020-10-20 | Xilinx, Inc. | Hardware accelerator for compressed GRU on FPGA |
US10802992B2 (en) | 2016-08-12 | 2020-10-13 | Xilinx Technology Beijing Limited | Combining CPU and special accelerator for implementing an artificial neural network |
US9959498B1 (en) | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10120680B2 (en) | 2016-12-30 | 2018-11-06 | Intel Corporation | Systems, apparatuses, and methods for arithmetic recurrence |
ES2930550T3 (es) | 2017-04-07 | 2022-12-16 | Intel Corp | Métodos y aparatos para canalización de ejecución de red de aprendizaje profundo en plataforma multiprocesador |
WO2018193353A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
CN107704922B (zh) | 2017-04-19 | 2020-12-08 | 赛灵思公司 | 人工神经网络处理装置 |
US20180322386A1 (en) | 2017-05-05 | 2018-11-08 | Intel Corporation | Fine-grain compute communication execution for deep learning frameworks |
US10338925B2 (en) | 2017-05-24 | 2019-07-02 | Microsoft Technology Licensing, Llc | Tensor register files |
US11216437B2 (en) | 2017-08-14 | 2022-01-04 | Sisense Ltd. | System and method for representing query elements in an artificial neural network |
US20190050724A1 (en) | 2017-08-14 | 2019-02-14 | Sisense Ltd. | System and method for generating training sets for neural networks |
US10558599B2 (en) | 2017-09-12 | 2020-02-11 | Nxp Usa, Inc. | Method and apparatus for loading a matrix into an accelerator |
CN109543826A (zh) | 2017-09-21 | 2019-03-29 | 杭州海康威视数字技术股份有限公司 | 一种基于深度神经网络的激活量量化方法及装置 |
KR102610820B1 (ko) | 2017-09-27 | 2023-12-06 | 삼성전자주식회사 | 뉴럴 네트워크 시스템 및 뉴럴 네트워크 시스템의 동작방법 |
GB2568087B (en) | 2017-11-03 | 2022-07-20 | Imagination Tech Ltd | Activation functions for deep neural networks |
US11373088B2 (en) | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
WO2019140067A1 (en) | 2018-01-10 | 2019-07-18 | LynJohnston, LLC | Compact injector systems and methods |
US10832137B2 (en) | 2018-01-30 | 2020-11-10 | D5Ai Llc | Merging multiple nodal networks |
US10346198B1 (en) * | 2018-02-12 | 2019-07-09 | Avodah Labs, Inc. | Data processing architecture for improved data flow |
JP7349438B2 (ja) | 2018-02-16 | 2023-09-22 | 三星電子株式会社 | ニューラル・ネットワーク・アクセラレータ |
US10552199B2 (en) | 2018-02-26 | 2020-02-04 | Nutanix, Inc. | System and method for binary throttling for live migration of virtual machines |
US20200074293A1 (en) | 2018-08-29 | 2020-03-05 | DinoplusAI Holdings Limited | Computing Device for Multiple Activation Functions in Neural Networks |
US10705842B2 (en) * | 2018-04-02 | 2020-07-07 | Intel Corporation | Hardware accelerators and methods for high-performance authenticated encryption |
US10587284B2 (en) * | 2018-04-09 | 2020-03-10 | International Business Machines Corporation | Multi-mode compression acceleration |
US20190332925A1 (en) * | 2018-04-30 | 2019-10-31 | International Business Machines Corporation | Neural hardware accelerator for parallel and distributed tensor computations |
US20190340499A1 (en) | 2018-05-04 | 2019-11-07 | Microsoft Technology Licensing, Llc | Quantization for dnn accelerators |
US10656913B2 (en) | 2018-06-05 | 2020-05-19 | International Business Machines Corporation | Enhanced low precision binary floating-point formatting |
US10832139B2 (en) | 2018-06-22 | 2020-11-10 | Moffett Technologies Co. Limited | Neural network acceleration and embedding compression systems and methods with activation sparsification |
US10620951B2 (en) | 2018-06-22 | 2020-04-14 | Intel Corporation | Matrix multiplication acceleration of sparse matrices using column folding and squeezing |
US10908906B2 (en) | 2018-06-29 | 2021-02-02 | Intel Corporation | Apparatus and method for a tensor permutation engine |
CN109146072B (zh) | 2018-08-01 | 2021-03-23 | 上海天数智芯半导体有限公司 | 基于卷积神经网络加速器的数据重用方法 |
US10885277B2 (en) | 2018-08-02 | 2021-01-05 | Google Llc | On-device neural networks for natural language understanding |
US10970076B2 (en) | 2018-09-14 | 2021-04-06 | Intel Corporation | Systems and methods for performing instructions specifying ternary tile logic operations |
US10817042B2 (en) | 2018-09-27 | 2020-10-27 | Intel Corporation | Power savings for neural network architecture with zero activations during inference |
US11676003B2 (en) | 2018-12-18 | 2023-06-13 | Microsoft Technology Licensing, Llc | Training neural network accelerators using mixed precision data formats |
US10699465B1 (en) | 2018-12-28 | 2020-06-30 | Intel Corporation | Cluster of scalar engines to accelerate intersection in leaf node |
US20200218985A1 (en) | 2019-01-03 | 2020-07-09 | Alibaba Group Holding Limited | System and method for synthetic-model-based benchmarking of ai hardware |
US11645358B2 (en) | 2019-01-29 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Generation of executable files corresponding to neural network models |
US10630312B1 (en) * | 2019-01-31 | 2020-04-21 | International Business Machines Corporation | General-purpose processor instruction to perform compression/decompression operations |
US20200264876A1 (en) | 2019-02-14 | 2020-08-20 | Microsoft Technology Licensing, Llc | Adjusting activation compression for neural network training |
US11429555B2 (en) | 2019-02-26 | 2022-08-30 | Apple Inc. | Coprocessors with bypass optimization, variable grid architecture, and fused vector operations |
US10673460B1 (en) * | 2019-02-27 | 2020-06-02 | International Business Machines Corporation | Spilling temporary results for accommodation of memory boundaries |
AU2020241262A1 (en) | 2019-03-15 | 2021-11-04 | Intel Corporation | Sparse optimizations for a matrix accelerator architecture |
US11442700B2 (en) | 2019-03-29 | 2022-09-13 | Stmicroelectronics S.R.L. | Hardware accelerator method, system and device |
US10789402B1 (en) | 2019-05-01 | 2020-09-29 | Xilinx, Inc. | Compiler and hardware abstraction layer architecture for a neural network accelerator |
US11366771B2 (en) | 2019-05-02 | 2022-06-21 | EMC IP Holding Company LLC | Host device with multi-path layer configured for detection and resolution of initiator-related conditions |
US11790250B2 (en) | 2019-05-09 | 2023-10-17 | Intel Corporation | Using computational cost and instantaneous load analysis for intelligent deployment of neural networks on multiple hardware executors |
CN110197260B (zh) | 2019-06-06 | 2020-10-02 | 百度在线网络技术(北京)有限公司 | 一种数据处理方法及装置 |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
TWI701612B (zh) | 2019-06-19 | 2020-08-11 | 創鑫智慧股份有限公司 | 用於神經網路中激勵函數的電路系統及其處理方法 |
US11568238B2 (en) | 2019-06-28 | 2023-01-31 | Amazon Technologies, Inc. | Dynamic processing element array expansion |
US11907827B2 (en) | 2019-06-28 | 2024-02-20 | Intel Corporation | Schedule-aware tensor distribution module |
CN114341888A (zh) | 2019-07-03 | 2022-04-12 | 华夏芯(北京)通用处理器技术有限公司 | 用于操作加速器电路的指令 |
US11630770B2 (en) | 2019-07-11 | 2023-04-18 | Meta Platforms Technologies, Llc | Systems and methods for reading and writing sparse data in a neural network accelerator |
US11567555B2 (en) | 2019-08-30 | 2023-01-31 | Intel Corporation | Software assisted power management |
US11727267B2 (en) | 2019-08-30 | 2023-08-15 | Intel Corporation | Artificial neural network with trainable activation functions and fractional derivative values |
US11797188B2 (en) | 2019-12-12 | 2023-10-24 | Sk Hynix Nand Product Solutions Corp. | Solid state drive with multiplexed internal channel access during program data transfers |
-
2021
- 2021-06-17 US US17/350,393 patent/US11669331B2/en active Active
-
2022
- 2022-04-08 TW TW111113373A patent/TWI807767B/zh active
- 2022-06-09 WO PCT/EP2022/065677 patent/WO2022263282A1/en active Application Filing
- 2022-06-09 JP JP2023564226A patent/JP2024522435A/ja active Pending
- 2022-06-09 AU AU2022293984A patent/AU2022293984A1/en active Pending
- 2022-06-09 CN CN202280038395.7A patent/CN117396845A/zh active Pending
- 2022-06-09 CA CA3213333A patent/CA3213333A1/en active Pending
- 2022-06-09 KR KR1020237037676A patent/KR20230160935A/ko unknown
- 2022-06-09 EP EP22735345.5A patent/EP4356242A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2024522435A (ja) | 2024-06-21 |
CN117396845A (zh) | 2024-01-12 |
WO2022263282A1 (en) | 2022-12-22 |
KR20230160935A (ko) | 2023-11-24 |
US20220405101A1 (en) | 2022-12-22 |
US11669331B2 (en) | 2023-06-06 |
TWI807767B (zh) | 2023-07-01 |
EP4356242A1 (en) | 2024-04-24 |
CA3213333A1 (en) | 2022-12-22 |
AU2022293984A1 (en) | 2023-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI840790B (zh) | 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 | |
TWI833205B (zh) | 用於遞歸神經網路中使用之串連輸入/輸出張量 | |
US12008395B2 (en) | Program event recording storage alteration processing for a neural network accelerator instruction | |
TWI807767B (zh) | 神經網路處理輔助指令 | |
TWI804285B (zh) | 查詢模型相依資訊之指令 | |
TWI813258B (zh) | 重新格式化張量以提供子張量 | |
TWI840785B (zh) | 用於在指令執行期間偵測之無效值之例外摘要 | |
TWI818518B (zh) | 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 | |
TWI832214B (zh) | 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 | |
TW202303420A (zh) | 遞歸神經網路單元啟動以執行一單一引動中之複數個運算 | |
TW202303394A (zh) | 在資料轉換期間之無效機器特定資料類型之偵測 |