TW202303420A - 遞歸神經網路單元啟動以執行一單一引動中之複數個運算 - Google Patents
遞歸神經網路單元啟動以執行一單一引動中之複數個運算 Download PDFInfo
- Publication number
- TW202303420A TW202303420A TW111114942A TW111114942A TW202303420A TW 202303420 A TW202303420 A TW 202303420A TW 111114942 A TW111114942 A TW 111114942A TW 111114942 A TW111114942 A TW 111114942A TW 202303420 A TW202303420 A TW 202303420A
- Authority
- TW
- Taiwan
- Prior art keywords
- tensor
- input
- dimension
- operations
- data
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 119
- 230000000306 recurrent effect Effects 0.000 title claims abstract description 48
- 230000020411 cell activation Effects 0.000 title abstract description 32
- 230000006403 short-term memory Effects 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 303
- 238000012545 processing Methods 0.000 claims description 130
- 230000015654 memory Effects 0.000 claims description 96
- 230000004913 activation Effects 0.000 claims description 69
- 238000003860 storage Methods 0.000 claims description 66
- 238000000034 method Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 3
- 239000013598 vector Substances 0.000 description 72
- 230000004044 response Effects 0.000 description 55
- 238000001994 activation Methods 0.000 description 53
- 239000000047 product Substances 0.000 description 23
- 239000011159 matrix material Substances 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 230000001419 dependent effect Effects 0.000 description 10
- 238000005192 partition Methods 0.000 description 10
- 238000013473 artificial intelligence Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 239000006057 Non-nutritive feed additive Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000001627 detrimental effect Effects 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
- 238000013507 mapping 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
- 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
- 230000008521 reorganization Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 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
- 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
- 238000007405 data analysis Methods 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000001537 neural effect Effects 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
- 239000004065 semiconductor Substances 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
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Mathematical Optimization (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
- Medicines Containing Material From Animals Or Micro-Organisms (AREA)
- Feedback Control In General (AREA)
- Machine Translation (AREA)
Abstract
實行執行一遞歸神經網路單元啟動之一指令。該實行包括執行該遞歸神經網路單元啟動之複數個運算以提供該遞歸神經網路單元啟動的一結果。該複數個運算係在該指令之一單一引動中執行。該遞歸神經網路單元啟動係例如一長短期記憶體單元啟動或一經閘控遞歸單位單元啟動。
Description
一或多個態樣大體上係關於促進運算環境內之處理,且詳言之,係關於改良此類處理。
為了增強資料及/或運算密集型運算環境中之處理,利用共處理器,諸如人工智慧加速器(亦被稱作神經網路處理器或神經網路加速器)。此類加速器提供大量運算能力,用於執行例如所涉及運算,諸如對矩陣或張量之運算。
作為一實例,張量運算用於複雜處理,包括深度學習,其為機器學習之子集。深度學習或機器學習(人工智慧之態樣)用於各種技術中,包括但不限於工程化、製造、醫療技術、汽車技術、電腦處理等。
張量及張量運算使得大量資料及/或詳細資料能夠輸入至深度學習處理。然而,加速器受往返加速器之資料頻寬限制。先前,為了致力於解決此限制,在加速器處採用資料位置及資料重新使用。對張量及/或使用此類張量之處理的使用中之進步將改良使用機器學習之技術,包括電腦處理。
經由提供用於促進運算環境內之處理的電腦程式產品來克服先前技術之缺點且提供額外優點。該電腦程式產品包括一或多個電腦可讀儲存媒體及共同地儲存於該一或多個電腦可讀儲存媒體上以執行一方法之程式指令。該方法包括實行執行一遞歸神經網路單元啟動之一指令。該實行包括執行該遞歸神經網路單元啟動之複數個運算以提供該遞歸神經網路單元啟動的一結果。該複數個運算係在該指令之一單一引動中執行。
使用指令之單一引動來執行複數個運算降低了複雜度,縮減了系統資源之使用且提高了系統效能。
在一個實例中,該複數個運算包括一或多個S型函式及一或多個正切函式。在一個實例中,該複數個運算包括張量元素式加法及張量元素式乘法運算。
作為一實例,該複數個運算包括一或多個S型函式、一或多個正切函式、一或多個張量元素式加法運算及一或多個張量元素式乘法運算。
在一個實例中,至該指令之一或多個輸入包括一或多個串連張量。串連張量可直接由執行於例如執行遞歸神經網路之單元啟動之加速器上的指令使用。可在一個運算中存取串連張量,從而節省處理時間且增加處理速度。此外,存在待管理之較少張量指標,且在加速器的引動之間縮減張量資料之複製或重組,由此提高處理速度。
在一個實例中,作為一實例,該結果係一輸出張量,且該輸出張量係至該指令之另一引動之一輸入。
作為實例,該遞歸神經網路單元啟動包括一長短期記憶體單元啟動或一經閘控遞歸單位單元啟動。
在一個實例中,執行該遞歸神經網路單元啟動之該複數個運算係由一加速器執行且產生中間運算資料。作為一實例,將該中間運算資料儲存於該加速器中。
在一個實例中,執行該複數個運算包括對空間上密切之輸入資料執行該複數個運算。
本文中亦描述且主張與一或多個態樣相關之電腦實施方法及系統。此外,本文中亦描述且可能主張與一或多個態樣相關之服務。
經由本文中所描述之技術實現額外特徵及優點。本文中詳細描述其他實施例及態樣且將其視為所主張態樣之部分。
根據本發明之一或多個態樣,提供創建用於諸如長短期記憶體(LSTM)架構及/或經閘控遞歸單元(GRU)架構上之遞歸神經網路等遞歸神經網路中的選定資料佈局格式之張量的能力。作為一實例,選定資料佈局格式包括在例如長短期記憶體單元啟動及/或經閘控遞歸單位單元啟動中使用之串連輸入及/或輸出格式。
長短期記憶體為人工遞歸神經網路架構,其通常包括例如記住狀態之單元以及控制進入及離開單元之資訊流的複數個閘極。該等閘極包括例如一輸入閘極、一輸出閘極及一遺忘閘極。經閘控遞歸單元為另一遞歸神經網路架構。其類似於長短期記憶體架構,但可具有較少參數且不具有輸出閘極。每一網路使用時步,其中對於每一時步,對產生輸出之輸入執行運算。一個時步之輸出可為至下一時步之輸入。對於每一時步,多個啟動(例如,S型、雙曲正切)及其他運算(例如,加法、乘法)應用於隱藏狀態(H)、輸入及單元(c)狀態。雖然此等小步驟中之每一者(例如,啟動、運算)可在處理器上在本端有效地執行,但歸因於例如加速器的起動時間,針對此等步驟中之每一者調用加速器對於遞歸神經網路及/或系統之總效能而言可為不利的。因此,根據本發明之一或多個態樣,個別啟動及運算(例如,用於時步)經組合且作為指令之單一引動之部分而執行。此顯著地增加處理速度且提供效率,此係因為例如存在僅一個引動;中間運算資料可儲存於加速器中而非經寫回至記憶體;單指令多資料(SIMD)寬度及加速器之管線化屬性可用於以每運算更少循環並行地進行更多運算;並且較高精度可用於中間結果,由此針對LSTM/GRU運算而產生增強的準確度及較高穩定性。
此外,在一或多個態樣中,單一指令使用選定資料佈局格式,由此提供空間上密切之輸入及/或輸出資料、減少位址轉譯請求且提高處理速度。選定資料佈局格式例如使諸如遞歸神經網路之單元啟動等運算能夠有效地鏈接而無需通用處理器來針對單元啟動的每一時步檢測/重新配置資料。
根據本發明之一或多個態樣,選定資料佈局格式之一個實例為串連輸入格式。為了提供此格式,在一個實例中,由例如遞歸神經網路單元使用之權重張量經變換為選擇維度之經重新格式化權重張量(例如,2D經重新格式化張量),其例如以線性方式串連以形成較大串連張量。此使得例如啟動及對所得串連張量執行的單元啟動的其他運算能夠在一個單一指令引動上執行,該單一指令引動在例如加速器上執行。所得串連張量係由例如加速器上之指令直接使用之選定輸入格式,該加速器正在遞歸神經網路上執行單元啟動。
根據本發明之一或多個態樣,選定資料佈局格式之另一實例為串連輸出格式,諸如2D輸出張量。格式經選擇以使得例如對於每一時步,輸出張量可作為可饋送至例如運算之下一時步的記憶體相鄰子張量來存取。時步在記憶體中保持鄰近以返回由時步組成之最終結果作為一個記憶體鄰近張量。
本發明之一或多個態樣包括重新格式化張量以提供表示原始張量之選擇維度的經重新格式化張量(例如,2D張量) (其亦可被稱為子張量)。此最佳化處理,包括但不限於記憶體位址運算、加載/儲存運算及/或預提取。作為一實例,張量經重新格式化,以使得經重新格式化張量在記憶體單元(例如,記憶體頁面)之邊界上開始,且原始張量的資訊經重新配置以適配於選擇維度(例如,2D)之經重新格式化張量(亦稱為圖塊)內。經重新格式化張量具有可易於運算之位址,且可經區塊加載及/或儲存(例如,加載/儲存在一個運算中),由此有效地使用經重新格式化張量。
用以使用根據本發明之一或多個態樣而提供之串連輸入/輸出資料格式及/或用以組合遞歸神經網路單元啟動之多個運算(例如,啟動及/或其他運算)的指令之一個實例為神經網路處理輔助指令,其係經組態以執行多個函式之單一指令(例如,在硬體/軟體介面處之單一架構化硬體機器指令)。函式中之每一者經組態為單個指令(例如,單一架構化指令)之部分,由此減少系統資源之使用且降低複雜度並且改良系統效能。
該指令可為由諸如通用處理器等處理器上之程式分派的通用處理器指令集架構(ISA)之部分。其可由通用處理器執行及/或指令之一或多個函式可由專用處理器執行,諸如經組態以用於某些函式的共處理器或加速器,其耦接至通用處理器或為通用處理器之部分。其他變化亦為可能的。
參考圖1A描述併有且使用本發明之一或多個態樣的運算環境之一個實施例。作為一實例,運算環境係基於由紐約阿蒙克市(Armonk,New York)之國際商業機器公司(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。處理器韌體包括例如處理器之微碼或毫碼。其包括例如用於實施較高層級機器碼之硬體層級指令及/或資料結構。在一個實施例中,其包括例如專屬碼,該專屬碼通常作為包括受信任軟體之微碼或毫碼、特定於底層硬體之微碼或毫碼而遞送,且控制對系統硬體的作業系統存取。
電腦系統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。此外,根據本發明之一或多個態樣,該等組件中之一或多者可包括一或多個其他組件的至少一部分或可存取該一或多個其他組件,該一或多個其他組件用於提供串連輸入及/或輸出資料格式、用於組合單元啟動函式之多個運算、用於張量處理(包括但不限於創建及/或使用經重新格式化張量)及/或用於例如神經網路處理輔助指令之神經網路處理輔助處理(或可使用本發明之一或多個態樣的其他處理),如本文中所描述。一或多個其他組件可包括例如一或多個組合/串連組件170、張量組件171及/或神經網路處理輔助組件172 (及/或一或多個其他組件)。
根據本發明之一或多個態樣,藉由提供改良之資料格式以供諸如專用處理器(例如,神經網路處理器105)等處理器使用而促進運算環境內的處理。舉例而言,提供串連輸入資料格式佈局,其中諸如複數個2D張量等選擇維度之複數個張量經串連以創建串連張量。類似地,在一個實例中,提供串連輸出資料格式,其中多個輸出張量經串連。參考圖2A至圖2D描述關於串連輸入/輸出資料佈局格式之其他細節。在圖式中,t係指時步,Nmb係指批次大小,s係指大小且l係輸入特徵之長度。
參考圖2A,描繪串連張量輸入(在本文中亦被稱作結果張量) 200之一個實例。在此實例中,串連(例如,線性地)具有大小s之多個2D張量202以創建具有大小4s之較大串連張量200。在一個實例中,串連張量200包括已乘以特徵輸入X (Xi)之複數個(例如,四個)串連權重張量(例如,W
f、W
i、
、W
o)。舉例而言,如圖2B中所展示,特徵輸入X (210)乘以212串連權重張量214,從而提供中間結果(例如,結果張量),參考圖2C,該中間結果與偏差張量220相加以產生結果,該結果例如為串連輸入張量200。作為實例,在神經網路中,特徵係表示觀察到之內容(例如,語句、特定圖像等中之下一字),權重係可學習參數,且偏差係偏移。在一個實例中,乘法及加法經執行為神經網路處理輔助指令之神經網路處理輔助-矩陣乘法運算-廣播23 (例如,NNPA-MATMUL-OP-BCAST23)運算,其實例在下文描述。
在一個實例中,圖2B之每一權重張量係經提供以促進張量之處理的經重新格式化之2D張量。權重張量獨立地變換成2D經重新格式化張量,其經串連以提供較大張量。根據本發明之態樣,所得張量係藉由執行遞歸神經網路之單元啟動的加速器(例如,處理器105)上之指令(例如,神經網路處理輔助指令)直接使用的輸入格式。其允許跨加速器上所執行的一個單一指令中之時步而執行單元啟動之矩陣乘法。根據本發明之一態樣,每一經重新格式化之2D張量在記憶體單元之邊界(例如,記憶體頁面邊界)上開始,且原始張量的資訊在經重新格式化張量中重新配置。經重新格式化張量之維度中的張量之維度向上捨入至彼維度中之下一完整圖塊(例如,提供填補以創建固定大小張量,例如2D張量)。舉例而言,如本文中所描述,提供列填補216及/或頁面填補218以創建固定大小張量。此允許存取記憶體單元邊界(例如,頁面邊界)上之每一張量且促進任何2D張量之位址的運算。藉由在記憶體單元邊界上提供對準,減少位址轉譯請求且增加資料傳送速率。此外,在一個實例中,可經由一次存取加速器記憶體中之一個記憶體單元(例如,頁面)的直接記憶體存取(DMA)類運算而加載每一2D張量。此顯著增加頻寬。
類似地,在一個實例中,偏差張量220係包括複數個偏差張量222之串連偏差張量。每一偏差張量具有選擇固定大小,且因此提供列填補224及/或頁面填補226,如本文中所描述。
除了串連輸入張量以外,根據本發明之一或多個態樣,亦提供串連輸出張量,其實例描繪於圖2D中。如圖2D中所展示,對於每一輸入,串連輸出張量250包括串連至內部單元狀態(c)張量270之隱藏狀態(h)張量260。在一個實例中,每一張量260、270係選擇維度(例如,2D)及選擇大小之經重新格式化張量。為了提供選擇大小之張量,提供列填補280及/或頁面填補282,如本文中所描述。串連輸出張量係例如串連2D之經重新格式化輸出張量。串連輸出張量可作為可饋送至運算之下一時步的記憶體相鄰子張量而存取,而作為實例,所有時步在記憶體中保持鄰近以返回由所有時步組成之最終結果作為一個記憶體鄰近張量。如同輸入張量,經重新格式化張量之維度中的張量之維度向上捨入至彼維度中之下一完整圖塊(例如,提供填補以創建固定大小張量,例如2D張量)。
參考圖3A描述根據本發明之一或多個態樣的與2D張量相關之其他細節。如所展示,2D張量300在記憶體邊界上開始且使用複數個記憶體單元,諸如複數個4K頁面(例如,2D張量中編號之頁面0至11)。每一頁面包括預選數目個列(例如,32) 302,且每一列包括預選數目個元素,例如64個元素。若一列具有比預選數目個元素少之資料,則用例如預先指定值,諸如零或空格等,來填補304該列。此外,若不存在足夠資料來提供預選數目個列,則提供額外填補306 (例如,不可預測之資料、現有資料、任何值等)以添加額外經填補列,如圖3A中所展示。
2D張量之架構化資料格式提供可易於運算之位址及記憶體式鄰近張量單元,此允許減少多個及複雜位址運算的額外負荷。此輔助硬體支援之區塊加載/儲存操作及預提取引擎,由此顯著增加至加速器(例如,神經網路處理器105)之有效資料頻寬(例如,2x至5x)。
參考圖3B至圖3C描述根據本發明之態樣的與創建2D張量相關之其他細節。在一個實例中,處理基於本文中所描述之4D特徵資料佈局而創建張量(例如,2D、3D、4D及/或其他張量)。作為一實例,此處理由諸如通用處理器104等處理器執行。作為實例,此處理能夠產生2D、3D或4D張量,但不限於此類實例。
參考圖3B,在一個實例中,將e2_limit設定(352)為等於ceil (E2/32)*32,由此指示正創建之2D張量具有例如32列且E2係指維度2索引大小。此外,將e1_limit設定(354)為等於ceil (E1/64)*64,由此指示正創建之2D張量具有例如每列64個元素且E1係指維度1索引大小。將索引e4x初始化為零356。
在初始化之後,判定e4x是否小於E4 (358),E4係指維度4索引大小。若e4x不小於E4,則處理結束360;否則,處理繼續將索引e3x初始化為零362。判定e3x是否小於E3 (364),E3係指維度3索引大小。若e3x不小於E3,則處理重複,其中將e4x遞增例如1 (366),且處理繼續至358。然而,若e3x小於E3,則將索引e2x初始化為零368。判定e2x是否小於e2_limit (370)。若e2x不小於e2_limit,則處理反復,其中將e3x遞增例如1 (372),且處理繼續至364。若e2x小於e2_limit,則將索引e1x初始化為零374。
參考圖3C,判定e1x是否小於e1_limit (376)。若e1x不小於e1_limit,則處理反復,其中將e2x遞增例如1 (e2x = e2x + 1) 378,且處理繼續至370 (圖3B)。若e1x小於e1_limit,則將arr_pos (例如,列中之位置)設定為等於(E3 * e2_limit * e1_limit * e4x) + (e2_limit * e3x * 64) + (e2x * 64) + (
* e2_limit * E3 * 64) + (e1x mod 64),其中
為ceil函式382。
判定e2x是否大於或等於E2 (384)。若e2x小於E2,則進一步判定e1x是否大於或等於E1 (386)。若e1x小於E1,則將值設定為等於input_array [e4x] [e3x] [e2x] [e1x] (388);且若e1x大於或等於E1,則值=E1pad 390 (填補該列)。此外,若e2x大於或等於E2 (384),則值=E2pad 392 (將經填補之額外列加至2D張量)。在設定值之後,輸出張量[arr_pos]=值。此外,將索引e1x遞增例如1 (e1x = e1x + 1) 394,且處理繼續至396。
作為另一實例,可基於本文中所描述之4D_核心佈局而創建張量。為了創建2D、3D、4D及/或其他張量,使用圖3B至圖3C之處理,例外之處在於382替換為kern_pos = (
* E4 * E3 * e2_limit * 64) + (e4x * E3 * e2_limit * 64) + (e3x * e2_limit * 64) + (e2x * 64) + (e1x mod 64),且394替換為輸出張量[kern_pos]=值。
所創建之張量(例如,自原始張量之重新格式化創建的經重新格式化張量)可由一或多個指令使用。舉例而言,位址資訊(例如,作為實例,4D張量或2D張量之開始)、張量之維度等自通用處理器轉遞至專用處理器(例如,神經網路105)以供用於以正確格式(例如,在記憶體頁面的正確定位中)加載/儲存資料且用於使用資料(例如,在張量運算中)。在其他實施例中,通用處理器使用所創建之經重新格式化張量。其他變化係可能的。
根據一或多個態樣,多個經重新格式化張量經串連以提供串連輸入及/或輸出張量。在一個實例中,將一或多個串連輸入張量輸入至產生一或多個串連輸出張量之遞歸神經網路單元啟動,諸如長短期記憶體單元啟動或經閘控遞歸單位單元啟動。參考圖4A至圖4B描述關於實例單元啟動之其他細節。
作為一實例,參考圖4A,將第一輸入張量400a (例如,輸入張量1)及第二輸入張量400b (例如,輸入張量2)輸入至長短期記憶體單元啟動401。舉例而言,第一輸入張量400a及第二輸入張量400b係串連張量(例如,結果張量),其各自分別包括例如四個個別張量400a1至400a4及400b1至400b4之串連,其中之每一者輸入至長短期記憶體單元啟動401的加法運算。作為一實例,將輸入張量400a1、400b1輸入至加法運算402a;將輸入張量400a2、400b2輸入至加法運算402b;將輸入張量400a3、400b3輸入至加法運算402c;並且將輸入張量400a4、400b4輸入至加法運算402d。每一加法運算例如等效於NNPA-ADD運算,其實例描述於本文中。將加法運算402a之輸出輸入至S型啟動404a;將加法運算402b之輸出輸入至S型啟動404b;將加法運算402c的輸出輸入至正切啟動406;並且將加法運算402d之輸出輸入至S型啟動404c。S型啟動404a、404b及404c以及正切啟動406分別等效於例如NNPA-SIGMOID函式及NNPA-TANH函式,其實例在本文中描述。將S型啟動404b及正切啟動406之輸出輸入至乘法運算408,其等效於例如NNPA-MUL函式,其實例在本文中描述。
將S型啟動404a及乘法運算408之輸出連同第三輸入張量400c (例如,輸入張量3)一起輸入至組合運算410。在此實例中,輸入張量400c並非串連張量,且為來自前一時步之輸出。舉例而言,輸入張量400c係串連輸出張量之單元狀態部分。組合運算410為例如融合乘加(FMA)運算,其等效於例如NNPA-BATCHNORM函式,其實例描述於本文中。(在其他實例中,可使用個別運算而非組合運算。)在運算410中,將來自S型啟動404a及輸入張量400c之輸出相乘以提供中間結果。將中間結果與乘法運算408之輸出相加以提供另一中間結果。將另一中間結果(例如,組合運算410之結果)輸入至正切啟動412,其等效於例如NNPA-TANH函式,其實例在本文中描述。將正切函式412之輸出及S型函式404c之輸出輸入至乘法運算414,其等效於例如NNPA-MUL函式,其實例在本文中描述。NNPA-MUL 414之輸出係輸出張量420a (例如,輸出張量1)。此外,在一個實例中,組合運算410之輸出係輸出張量420b (例如,輸出張量2)。作為一實例,輸出張量420a及420b係諸如參考圖2D描述之串連輸出張量。
參考圖4B,描述經閘控遞歸單位單元啟動之實例。在一個實例中,將第一輸入張量450a (例如,輸入張量1)及第二輸入張量450b (例如,輸入張量2)輸入至經閘控遞歸單位單元啟動451。舉例而言,第一輸入張量450a及第二輸入張量450b係串連張量(例如,結果張量),其各自分別包括例如三個個別張量450a1至450a3及450b1至450b3之串連,其中之每一者輸入至經閘控遞歸單位單元啟動451的運算。作為一實例,將輸入張量450a1、450b1輸入至加法運算452a;並且將輸入張量450a2、450b2輸入至加法運算452b。每一加法運算例如等效於NNPA-ADD運算,其實例描述於本文中。將加法運算452a之輸出輸入至S型啟動454a;並且將加法運算452b之輸出輸入至S型啟動454b。S型啟動454a及454b等效於例如NNPA-SIGMOID函式,其實例描述於本文中。將S型啟動454a及454b之輸出分別輸入至乘法運算456a及456b,其等效於例如NNPA-MUL函式,其實例在本文中描述。至乘法運算456a之另一輸入係輸入張量450c。在此實例中,輸入張量450c並非串連張量,且為來自前一時步之輸出。舉例而言,輸入張量450c係串連輸出張量之單元狀態部分。此外,至乘法運算456b之另一輸入係輸入張量450b3。
在一個實例中,亦將S型函式454a之輸出連同數值1一起輸入至減法運算458。減法運算之一個實例為NNPA-SUB函式,其實例在本文中描述。
將乘法運算456b及輸入張量450a3之輸出輸入至加法運算460,其例如等效於NNPA-ADD函式,其實例在本文中描述。將加法運算460之輸出輸入至正切啟動462,其等效於例如NNPA-TANH函式,其實例在本文中描述。將減法運算458及正切啟動462之輸出輸入至乘法運算464,其等效於例如NNPA-MUL函式,其實例在本文中描述。將乘法運算464之輸出及乘法運算456a之輸出輸入至加法運算466,其等效於例如NNPA-ADD函式,其實例在本文中描述。加法運算466之輸出係輸出張量468。作為一實例,輸出張量468係串連輸出張量,諸如參考圖2D所描述。
如上文所描述,多個啟動(例如,S型、正切)及其他運算(例如,加法、減法及/或乘法)經組合且作為一個單元啟動之部分而執行,該單元啟動係基於引動單一指令(例如,神經網路處理輔助指令)而執行(例如,在加速器上,諸如神經網路處理器105)。實施單一指令以組合個別啟動與其他運算。此歸因於例如乘法運算與加法運算之組合而提供較高準確度,而不會損失中間結果之精度。此外,可藉由以較高精度在加速器中節省中間運算來達成較高數值準確度。另外,根據本發明之一或多個態樣,啟動及單元啟動之其他運算與用以創建串連輸入張量的矩陣乘法分離,由此降低單一運算之複雜度且允許針對其他遞歸神經網路重新使用基本區塊。亦即,遞歸神經網路(例如,在長短期記憶體架構或經閘控遞歸單元架構上)依賴於輸入特徵(例如,圖2B之X)與不同權重張量(例如,圖2B之未串連、未經重新格式化權重張量)之間的若干矩陣乘法,接著為關於所產生中間結果之若干啟動函式(例如,圖4A至圖4B之S型、正切)。通常,分開地對獨立張量緩衝器執行矩陣乘法及啟動函式,其使得若干獨立指令運算遞歸神經網路時步,且可需要在彼等個別指令之間複製/重組資料,由此顯著降低效能。若需要對加速器運算之間的通用處理器之資料操縱,則例如晶片上加速器(例如,神經網路處理器105)之優點顯著減少。此係歸因於用以起動加速器之較低頻寬、所需序列化及設定時間。因此,根據本發明之一或多個態樣,提供資料佈局格式(例如,經重新格式化之串連張量),其由執行遞歸神經網路之單元啟動的加速器上之指令直接使用。
此外,根據一或多個態樣,選擇資料佈局格式,其中基於運算使得加速器運算能夠鏈接而無需通用處理器檢測/重新配置資料之時步的單元啟動而產生串連輸出張量。此外,指令提供空間上密切之輸入及輸出源以減少位址轉譯。藉由在記憶體中鄰近地定位資料,需要較少位址轉譯。此促成加速器(例如,神經網路處理器105)內之處理速度的總體增大,且促成較高精度之增大。
參考圖5A至圖5B描述總體鏈接運算之一個實例。在圖5A至圖5B中,Nmb係批次大小,t係時步,s係大小,且l係特徵之長度。在此實例中,使用鏈接之單元啟動係長短期記憶體單元啟動500,其實例在本文中參考圖4A進行描述。然而,在其他實例中,其可為其他單元啟動,包括但不限於經閘控遞歸單位單元啟動,其實例在本文中參考圖4B進行描述,及/或其他單元啟動。
參考圖5A,單元啟動500之輸出包括歷史(h)張量502及單元狀態(c)張量504,其用於提供串連輸出張量510。隨後將串連輸出張量輸入至單元啟動500之下一時步(亦即,鏈接)。舉例而言,將串連張量510之歷史張量510a輸入至矩陣乘法運算520,並且將串連張量510之單元狀態張量510b輸入至組合運算530 (例如,融合乘加運算,諸如NNPA-BATCHNORM)。在其他實例中,可使用個別運算而非組合運算。
在一個實例中,在矩陣乘法運算520中,歷史張量510a與串連權重矩陣540相乘以提供中間結果,該中間結果與串連偏差張量550 (圖5B)相加以提供串連張量(例如,輸入張量2),該串連張量輸入至單元啟動500。此外,在一個實例中,另一串連張量(例如,輸入張量1)亦輸入至單元啟動500。如本文中所描述且參考圖5B進一步描述,輸入張量1係藉由串連複數個權重張量560以提供串連權重張量562來創建。使用例如矩陣乘法廣播運算564 (例如,NNPA-MATMUL-OP-BCAST23)來將串連權重張量562與特徵輸入566相乘以提供中間結果,該中間結果係使用例如矩陣乘法廣播運算564與串連偏差張量570相加以提供所得輸入張量1。如本文中所描述,串連偏差張量570係自複數個偏差張量572創建。
串連權重張量562、串連偏差張量570及/或串連輸出張量510 (圖5A)係例如根據本發明之一或多個態樣的經重新格式化張量。如本文中所描述,經重新格式化張量在記憶體邊界(例如,頁面邊界)上開始,且包括填補以完成選定大小之張量。舉例而言,若張量將包括選定數目個列(例如,32列)且經重新格式化張量具有更少列,則添加經填補列,直至張量包括選定數目個列為止。另外及/或替代地,在一個實例中,每一列將包括選定數目個元素(例如,64個元素),且若一列具有少於該列可包括之元素,則將填補加至該列,直至該列包括選定數目個元素為止。
選擇串連張量(例如,串連張量之個別張量)之層作為至單元啟動的輸入。舉例而言,參考圖5A,選擇輸入張量1之個別輸入張量525以輸入至特定運算。其他實例係可能的。
根據本發明之一或多個態樣,提供一種單一架構化指令,其支援實現經重新格式化張量及/或串連張量之創建及/或使用的資料佈局格式,及/或組合藉由指令之單一引動執行的單元啟動中之啟動及運算。此指令之一個實例係神經網路處理輔助指令。在一個實例中,指令在通用處理器(例如,處理器104)上起始且由指令指定之函式取決於該函式而在通用處理器及/或專用處理器(例如,神經網路處理器105)上執行。舉例而言,在一個實例中,在通用處理器上執行神經網路處理輔助指令之查詢函式且在專用處理器上執行非查詢函式。然而,其他變化係可能的。若該函式待在專用處理器上執行(例如,其為非查詢函式,或在另一實例中為一或多個選定函式),則資訊例如藉由通用處理器提供至專用處理器以用於執行該函式,諸如與待用於神經網路運算中之張量資料相關的記憶體位址資訊。專用處理器獲得資訊且執行函式。在完成執行函式之後,處理返回至通用處理器,該通用處理器完成指令。在其他實例中,該指令在一或多個通用處理器或一或多個專用處理器上起始、執行及完成。其他變化係可能的。
在一個實例中,參考圖6A,神經網路處理輔助指令600具有以擴展作業碼(opcode)表示暫存器及暫存器運算之RRE格式。如圖6A中所展示,在一個實例中,神經網路處理輔助指令600包括指示神經網路處理輔助運算之作業碼(opcode)欄位602 (例如,位元0至15)。在一個實例中,指令之位元16至31被保留且將含有零。在本文中對指令及/或指令函式之描述中,指示特定位置、特定欄位及/或特定欄位大小(例如,特定位元組及/或位元)。然而,可提供其他位置、欄位及/或大小。此外,儘管可指定將位元設定為例如一或零之特定值,但此僅為實例。在其他實例中,若設定,則可將位元設定為不同值,諸如相反值或另一值。許多變化係可能的。
在一個實例中,該指令使用由該指令隱含地指定之複數個通用暫存器。舉例而言,神經網路處理輔助指令600使用隱含暫存器:通用暫存器0及通用暫存器1,其實例分別參考圖6B及圖6D進行描述。
參考圖6B,在一個實例中,通用暫存器0包括函式碼欄位及可在指令完成後更新之狀態欄位。作為一實例,通用暫存器0包括回應碼欄位610 (例如,位元0至15)、異常旗標欄位612 (例如,位元24至31)及函式碼欄位614 (例如,位元56至63)。此外,在一個實例中,通用暫存器0之位元16至23及32至55被保留且將含有零。一或多個欄位供由指令執行的特定函式使用。在一個實例中,並非所有欄位皆由所有函式使用。在下文描述欄位中之每一者:
回應碼(RC) 610:此欄位(例如,位元位置0至15)含有回應碼。當神經網路處理輔助指令之執行以例如一之條件碼完成時,儲存回應碼。當遇到無效輸入條件時,將非零值儲存至回應碼欄位,其指示在執行期間辨識到無效輸入條件之原因,且設定選定條件碼,例如1。在一個實例中,如下定義儲存至回應碼欄位之程式碼:
回應碼
含義
0001 模型不支援如由參數區塊版本號碼指定之參數區塊的格式。
0002 機器上未定義或安裝指定函式。
0010 不支援指定張量資料佈局格式。
0011 不支援指定張量資料類型。
0012 指定單一張量維度大於最大維度索引大小。
0013 指定張量之大小大於最大張量大小。
0014 指定張量位址未在4K位元組邊界上對準。
0015 函式特定保存區域位址未在4K位元組邊界上對準。
F000-FFFF 函式特定回應碼。針對某些函式定義此等回應碼。
異常旗標(EF) 612:此欄位(例如,位元位置24至31)包括異常旗標。若在指令執行期間偵測到異常條件,則對應異常旗標控制項(例如,位元)將被設定為例如一;否則,控制項保持不變。在第一次引動指令之前,將異常旗標欄位初始化為零。所保留之旗標在指令執行期間不變。在一個實例中,如下定義儲存至異常旗標欄位之旗標:
EF
(
位元
)
含義
0 範圍違規。當在輸入張量中偵測到非數值或非數值被儲存至輸出張量時,設定此旗標。此旗標例如僅在該指令運用例如0之條件碼完成時係有效的。
1-7 保留。
函式碼(FC) 614:此欄位(例如,位元位置56至63)包括函式碼。為神經網路處理輔助指令指派之函式碼的實例描繪於圖6C中。未指派所有其他函式碼。若指定未指派或未安裝之函式碼,則設定例如0002 hex之回應碼及例如1之選擇條件碼。此欄位在執行期間不會被修改。
如所指示,除通用暫存器0以外,神經網路處理輔助指令亦使用通用暫存器1,其實例描繪於圖6D中。作為實例,24位元定址模式中之位元40至63、31位元定址模式中之位元33至63或64位元定址模式中之位元0至63包括參數區塊620之位址。舉例而言,通用暫存器1之內容指定儲存器中之參數區塊的最左位元組之邏輯位址。參數區塊待指定於雙字邊界上;否則,辨識到規格異常。對於所有函式,通用暫存器1之內容不會被修改。
在存取暫存器模式中,作為一實例,存取暫存器1指定含有參數區塊、輸入張量、輸出張量及函式特定保存區域之位址空間。
在一個實例中,取決於由待執行的指令指定的函式,參數區塊可具有不同格式。舉例而言,查詢函式具有一個格式之參數區塊,且指令之其他函式具有另一格式的參數區塊。在另一實例中,所有函式皆使用相同參數區塊格式。其他變化亦為可能的。
參考圖6E描述由諸如NNPA查詢可用函式(QAF)運算等查詢函式使用的參數區塊之一個實例。如所展示,在一個實例中,NNPA查詢可用函式參數區塊630包括例如:
已安裝函式向量632:參數區塊之此欄位(例如,位元組0至31)包括已安裝函式向量。在一個實例中,已安裝函式向量之位元0至255分別對應於神經網路處理輔助指令之函式碼0至255。當位元為例如一時,安裝對應函式;否則,不安裝函式。
已安裝參數區塊格式向量634:參數區塊之此欄位(例如,位元組32至47)包括已安裝參數區塊格式向量。在一個實例中,已安裝參數區塊格式向量之位元0至127對應於用於神經網路處理輔助指令之非查詢函式的參數區塊格式0至127。當位元為例如一時,安裝對應參數區塊格式;否則,不安裝參數區塊格式。
已安裝資料類型636:參數區塊之此欄位(例如,位元組48至49)包括已安裝資料類型向量。在一個實例中,已安裝資料類型向量之位元0至15對應於正安裝之資料類型。當位元為例如一時,安裝對應資料類型;否則,不安裝資料類型。實例資料類型包括(額外、更少及/或其他資料類型係可能的):
位元
資料類型
0 NNP資料類型1
1-15 保留
已安裝資料佈局格式638:參數區塊之此欄位(例如,位元組52至55)包括已安裝資料佈局格式向量。在一個實例中,已安裝資料佈局格式向量之位元0至31對應於正安裝之資料佈局格式。當位元為例如一時,安裝對應資料佈局格式;否則,不安裝資料佈局格式。實例資料佈局格式包括(額外、更少及/或其他資料類型係可能的):
位元
資料佈局格式
0 4D特徵張量
1 4D核心張量
2-31 保留
最大維度索引大小640:參數區塊之此欄位(例如,位元組60至63)包括例如32位元不帶正負號二進位整數,其指定任何指定張量之指定維度索引大小中的最大數目個元素。在另一實例中,最大維度索引大小指定任何指定張量之指定維度索引大小中的最大數目個位元組。其他實例亦為可能的。
最大張量大小642:參數區塊之此欄位(例如,位元組64至71)包括例如32位元不帶正負號二進位整數,其指定包括張量格式所需之任何填補位元組的任何指定張量中之最大數目個位元組。在另一實例中,最大張量大小指定包括張量格式所需之任何填補的任何指定張量中之最大數目個總元素。其他實例亦為可能的。
已安裝NNP資料類型1轉換向量644:參數區塊之此欄位(例如,位元組72至73)包括已安裝NNP資料類型1轉換向量。在一個實例中,已安裝NNP資料類型1轉換向量之位元0至15對應於自/至NNP資料類型1格式之已安裝資料類型轉換。當位元為壹時,安裝對應轉換;否則,不安裝轉換。可指定額外、更少及/或其他轉換。
位元 資料類型
0 保留
1 BFP微格式
2 BFP短格式
3-15 保留
儘管參考圖6E描述用於查詢函式之參數區塊的一個實例,但可使用用於查詢函式之參數區塊的其他格式,包括NNPA查詢可用函式運算。在一個實例中,該格式可取決於待執行的查詢函式之類型。此外,參數區塊及/或參數區塊之每一欄位可包括額外、更少及/或其他資訊。
除用於查詢函式之參數區塊以外,在一個實例中,亦存在用於諸如神經網路處理輔助指令的非查詢函式等非查詢函式之參數區塊格式。參考圖6F描述由諸如神經網路處理輔助指令之非查詢函式等非查詢函式使用之參數區塊的一個實例。
如所展示,在一個實例中,由例如神經網路處理輔助指令之非查詢函式使用的參數區塊650包括例如:
參數區塊版本號碼652:參數區塊之此欄位(例如,位元組0至1)指定參數區塊之版本及大小。在一個實例中,參數區塊版本號碼之位元0至8被保留且將含有零,且參數區塊版本號碼之位元9至15含有指定參數區塊之格式的不帶正負號二進位整數。查詢函式提供指示可用之參數區塊格式的機制。當模型不支援指定參數區塊之大小或格式時,例如0001 hex之回應碼儲存於通用暫存器0中,且指令藉由設定例如條件碼1之條件碼而完成。參數區塊版本號碼係由程式指定且在指令執行期間不會被修改。
模型版本號碼654:參數區塊之此欄位(例如,位元組2)係識別執行指令(例如,特定非查詢函式)之模型的不帶正負號二進位整數。當接續旗標(下文所描述)為壹時,模型版本號碼可為運算之輸入,以便解譯參數區塊之接續狀態緩衝器欄位(下文所描述)的內容,以恢復運算。
接續旗標656:參數區塊之此欄位(例如,位元63)當例如為壹時指示運算部分地完成且接續狀態緩衝器之內容可用以恢復運算。程式將接續旗標初始化為零且在出於恢復運算之目的而重新執行指令的情況下不修改接續旗標;否則,結果不可預測。
若在運算開始時設定接續旗標且參數區塊之內容自初始引動起已改變,則結果不可預測。
函式特定保存區域位址658:參數區塊之此欄位(例如,位元組56至63)包括函式特定保存區域之邏輯位址。在一個實例中,函式特定保存區域位址待在4K位元組邊界上對準;否則,例如0015 hex之回應碼設定於通用暫存器0中且指令以例如1之條件碼完成。該位址以當前定址模式為凖。函式特定保存區域之大小取決於函式碼。
當整個函式特定保存區域與程式事件記錄(PER)儲存區域標識重疊時,在適當時針對函式特定保存區域而辨識PER儲存區更改事件。當函式特定保存區域之僅一部分與PER儲存區域標識重疊時,會發生以下哪一種情況為模型相依的:
* 在適當時針對整個函式特定保存區域而辨識PER儲存區更改事件。
* 在適當時針對所儲存之函式特定保存區域的部分而辨識PER儲存區更改事件。
當整個參數區塊與PER儲存區域標識重疊時,適當時針對參數區塊而辨識PER儲存區更改事件。當參數區塊之僅一部分與PER儲存區域標識重疊時,會發生以下哪一種情況為模型相依的:
* 在適當時針對整個參數區塊而辨識PER儲存區更改事件。
* 在適當時針對所儲存之參數區塊的部分而辨識PER儲存區更改事件。
在適當時針對參數區塊而辨識PER零位址偵測事件。在一個實例中,零位址偵測不適用於張量位址或函式特定保存區域位址。
輸出張量描述符(例如,1至2) 660/輸入張量描述符(例如,1至3) 665:參考圖6G描述張量描述符之一個實例。在一個實例中,張量描述符660、665包括:
資料佈局格式682:張量描述符之此欄位(例如,位元組0)指定資料佈局格式。舉例而言,有效資料佈局格式包括(額外、更少及/或其他資料佈局格式係可能的):
格式
描述
對準
(
位元組
)
0 4D特徵張量 4096
1 4D核心張量 4096
2-255 保留 --
若指定不支援的或保留的資料佈局格式,則例如0010 hex之回應碼儲存於通用暫存器0中,且指令藉由設定例如1之條件碼而完成。
資料類型684:此欄位(例如,位元組1)指定張量之資料類型。下文描述所支援之資料類型的實例(額外、更少及/或其他資料類型係可能的):
值
資料類型
資料大小
(
位元
)
0 NNP資料類型1 16
1-255 保留 --
若指定不支援的或保留的資料類型,則例如0011 hex之回應碼儲存於通用暫存器0中,且指令藉由設定例如1之條件碼而完成。
維度1至4索引大小686:總體而言,維度索引大小一至四(例如,E4、E3、E2、E1)指定4D張量之形狀。每一維度索引大小將大於零且小於或等於最大維度索引大小(640,圖6E);否則,例如0012 hex之回應碼儲存於通用暫存器0中且指令藉由設定例如1之條件碼而完成。總張量大小將小於或等於最大張量大小(642,圖6E);否則,例如0013 hex之回應碼儲存於通用暫存器0中且指令藉由設定例如1之條件碼而完成。
在一個實例中,為了判定具有NNPA資料類型1之元素的4D特徵張量中之位元組的數目(亦即,總張量大小),使用以下公式:維度索引4*維度索引3*ceil (維度索引2/32)*32*ceil (維度索引1/64)*64*2。
張量位址688:張量描述符之此欄位(例如,位元組24至31)包括張量之最左位元組的邏輯位址。該位址以當前定址模式為凖。
若位址在相關聯資料佈局格式之邊界上未對準,則例如0014 hex之回應碼儲存於通用暫存器0中且指令藉由設定例如1之條件碼而完成。
在存取暫存器模式中,存取暫存器1指定儲存器中含有所有作用中輸入及輸出張量之位址空間。
返回圖6F,在一個實例中,參數區塊650進一步包括可由特定函式使用之函式特定參數1至5 (670),如本文中所描述。
此外,在一個實例中,參數區塊650包括接續狀態緩衝器欄位675,該欄位包括在此指令之運算待恢復的情況下待使用之資料(或資料之位置)。
作為運算之輸入,參數區塊之保留欄位應含有零。當運算結束時,保留欄位可儲存為零或保持不變。
儘管參考圖6F描述用於非查詢函式之參數區塊的一個實例,但可使用用於非查詢函式之參數區塊的其他格式,該非查詢函式包括神經網路處理輔助指令之非查詢函式。在一個實例中,該格式可取決於待執行的函式之類型。此外,儘管參考圖6G描述張量描述符之一個實例,但亦可使用其他格式。此外,可使用用於輸入及輸出張量之不同格式。其他變化係可能的。
下文描述關於由神經網路處理輔助指令之一個實施例支援之各種函式的其他細節。可支援額外、更少及/或其他函式。
函式碼
0
:
NNPA
-
QAF
(
查詢可用函式
)
神經網路處理輔助(NNPA)查詢函式提供用以指示諸如以下各者之選定資訊的機制:已安裝函式之可用性;已安裝參數區塊格式;已安裝資料類型;已安裝資料佈局格式;最大維度索引大小及最大張量大小。獲得資訊且將其置放於諸如參數區塊(例如,參數區塊630)等選定位置中。當運算結束時,參數區塊之保留欄位可儲存為零或可保持不變。
在執行查詢函式之一個實施例時,諸如通用處理器104等處理器獲得與選定處理器之特定模型相關的資訊,例如諸如神經網路處理器105等神經網路處理器之特定模型。處理器或機器之特定模型具有某些能力。處理器或機器之另一模型可具有額外、更少及/或不同能力及/或屬於具有額外、更少及/或不同能力之不同代(例如,當代或未來一代)。將所獲得資訊置放於參數區塊(例如,參數區塊630)或可由一或多個應用程式存取及/或供一或多個應用程式使用之其他結構中,該一或多個應用程式可在進一步處理中使用此資訊。在一個實例中,參數區塊及/或參數區塊之資訊維持於記憶體中。在其他實施例中,參數區塊及/或資訊可維持在一或多個硬體暫存器中。作為另一實例,查詢函式可為由作業系統執行的特權運算,其使應用程式設計介面可用以使此資訊可用於應用程式或非特權程式。在又另一實例中,該查詢函式係由諸如神經網路處理器105等專用處理器執行。其他變化係可能的。
資訊係例如藉由執行查詢函式之處理器的韌體獲得。韌體知曉特定處理器(例如,神經網路處理器)之特定模型的屬性。此資訊可儲存於例如控制區塊、暫存器及/或記憶體中及/或以其他方式可由執行查詢函式之處理器存取。
舉例而言,所獲得資訊包括關於特定處理器之至少一或多個資料屬性的模型相依詳細資訊,包括例如特定處理器之選定模型的一或多個已安裝或支援的資料類型、一或多個已安裝或支援的資料佈局格式及/或一或多個已安裝或支援的資料大小。此資訊為模型相依的,此係因為其他模型(例如,先前模型及/或未來模型)可能不支援相同資料屬性,諸如相同資料類型、資料大小及/或資料佈局格式。當查詢函式(例如,NNPA-QAF函式)之執行完成時,作為一實例,設定條件碼0。在一個實例中,條件碼1、2及3不適用於查詢函式。下文描述與所獲得資訊相關之其他資訊。
如所指示,在一個實例中,所獲得資訊包括關於例如神經網路處理器之特定模型之一或多個資料屬性的模型相依資訊。資料屬性之一個實例為神經網路處理器之已安裝資料類型。舉例而言,作為實例,神經網路處理器(或其他處理器)之特定模型可支援一或多個資料類型,諸如NNP資料類型1資料類型(亦被稱作神經網路處理資料類型1資料類型)及/或其他資料類型。NNP資料類型1資料類型為16位元浮點格式,其向深度學習訓練及推斷運算提供數個優點,包括例如:保持深度學習網路之準確度;消除簡化捨入模式及處置極端狀況之次正常格式;自動捨入至最接近的算術運算值;以及將無窮大且非數字(NaN)之特殊實體組合成一個值(NINF),其由算術運算接受及處置。NINF提供指數溢出及無效運算(諸如,除以零)之較佳預設。此允許許多程式在不隱藏此類錯誤之情況下及在不使用特殊化異常處理常式之情況下繼續執行。其他模型相依資料類型亦為可能的。
NNP資料類型1資料類型之格式的一個實例描繪於圖7中。如所描繪,在一個實例中,NNP資料類型1資料可以格式700表示,該格式包括例如正負號702 (例如,位元0)、指數+31 704 (例如,位元1至6)及分數706 (例如,位元7至15)。
下文描繪NNP資料類型1格式之實例屬性:
屬性
NNP
資料類型
1
格式長度(位元) 16個位元
有偏指數長度(位元) 6個位元
分數長度(位元) 9個位元
精度(p) 10個位元
最大左單位視圖指數(Emax) 32
最小左單位視圖指數(Emin) -31
左單位視圖(LUV)偏差 31
Nmax (1-2
-9) x 2
33≈ 8.6 x 10
9
Nmin (1+2
-9) x 2
-31≈ 4.6 x 10
-10
Dmin ---
其中≈指示值為近似值,Nmax為最大(在量值上)可表示之有限數,且Nmin為最小(在量值上)可表示之數字。
下文描述與NNP資料類型1資料類型相關之其他細節:
有偏指數:上文展示了用以允許指數表示為不帶正負號數之偏差。有偏指數類似於二進位浮點格式之特性,除了對全零及全壹之有偏指數未添加特殊含義,如下文參考NNP資料類型1資料類型的類別所描述。
有效位:NNP資料類型1數之二進位小數點被視為在最左分數位元之左方。二進位小數點之左邊存在暗示單位位元,其對於正常數被視為壹且對於零被視為零。在左方附加有隱含的單位位元之分數為數字之有效位。
正常NNP資料類型1之值為有效位乘以基數2之無偏指數冪。
非零數之值:下文展示非零數之值:
數字類別
值
正常數 ± 2
e-31x (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位元整數格式。此等資料格式對於神經網路處理具有不同品質。作為一實例,較小資料類型(例如,較少位元)可被較快地處理且使用較少快取記憶體/記憶體,且較大資料類型在神經網路中提供較高之結果準確度。待支援之每一資料類型可在查詢參數區塊中(例如,在參數區塊630之已安裝資料類型欄位636中)具有一或多個經指派位元。舉例而言,在已安裝資料類型欄位中指示由特定處理器支援之特殊或非標準資料類型,但不指示標準資料類型。在其他實施例中,亦指示一或多個標準資料類型。其他變化係可能的。
在一個特定實例中,已安裝資料類型欄位636之位元0係保留用於NNP資料類型1資料類型,且當將其設定為例如1時,其指示處理器支援NNP資料類型1。在一個實例中,已安裝資料類型之位元向量經組態以表示至多16個資料類型,其中將一位元指派給每一資料類型。然而,在其他實施例中,位元向量可支援更多或更少資料類型。此外,向量可經組態,其中將一或多個位元指派給一資料類型。許多實例係可能的及/或可在向量中支援及/或指示額外、更少及/或其他資料類型。
在一個實例中,查詢函式獲得安裝於模型相依處理器上之資料類型的指示,且藉由例如設定參數區塊630之已安裝資料類型欄位636中之一或多個位元而將指示置放於參數區塊中。此外,在一個實例中,查詢函式獲得已安裝資料佈局格式(另一資料屬性)之指示,且藉由例如設定已安裝資料佈局格式欄位638中之一或多個位元而將資訊置放於參數區塊中。舉例而言,實例資料佈局格式包括4D特徵張量佈局及4D核心張量佈局。此等資料佈局格式以提高執行神經網路處理輔助指令之函式之處理效率的方式配置儲存器中用於張量之資料。舉例而言,為了高效地運算,神經網路處理輔助指令使用以特定資料佈局格式提供之輸入張量。儘管提供實例佈局,但可針對本文中所描述之函式及/或其他函式提供額外、更少及/或其他佈局。
特定處理器模型之佈局的使用或可用性由已安裝資料佈局格式(例如,參數區塊630之欄位638)之向量提供。舉例而言,該向量為允許CPU向應用程式傳達支援哪些佈局之已安裝資料佈局格式之位元向量。舉例而言,位元0係保留用於4D特徵張量佈局,且當將其設定為例如1時,其指示處理器支援4D特徵張量佈局;並且位元1係保留用於4D核心張量佈局,且當將其設定為例如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張量之以下元素:
,其中
為地板函式且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特徵張量佈局的輸入資料佈局之一個實例展示於圖8A至圖8C中,且4D特徵張量佈局之實例輸出描繪於圖9A至圖9C中。參考圖8A,展示3D張量800,其具有維度E1、E2及E3。在一個實例中,每一3D張量包括複數個2D張量802。因此,在所展示之實例中,複數個2D張量(例如,3個2D張量)創建3D張量,且複數個3D張量(例如,3個3D張量)創建4D張量。每一2D張量802中之數字描述其元素中之每一者將在記憶體中之位置的記憶體偏移。輸入用以將原始張量(例如,圖8A至圖8C之原始4D張量)之資料佈置在記憶體中,如對應於圖8A至圖8C之圖9A至圖9C中所展示。
在圖9A中,作為一實例,記憶體900之單元(例如,記憶體頁面)包括預選數目(例如,32)個列902,其中之每一者由例如e2_page_idx識別;並且每一列具有預選數目(例如,64)個元素904,其各自由例如e1_page_idx識別。若一列不包括預選數目個元素,則其被填補906,此被稱作列或E1填補;且若記憶體單元不具有預選數目個列,則其被填補908,此被稱作頁面或E2填補。作為實例,列填補為例如零或其他值,且頁面填補為例如現有值、零或其他值。
在一個實例中,列之輸出元素係基於其對應輸入在E1方向上之元素位置而提供於記憶體中(例如,頁面中)。舉例而言,參考圖8A,所展示之三個矩陣的元素位置0、1及2 (例如,在每一矩陣中之同一位置處的元素位置)展示於圖9A之頁面0的列0中,等等。在此實例中,4D張量為小的,且表示4D張量之每一2D張量的所有元素皆適配於一個頁面中。然而,此僅為一個實例。2D張量可包括一或多個頁面。如圖3A中所展示,彼實例中之2D張量包括12個頁面。然而,此僅為一個實例。同樣,2D張量可包括一或多個頁面。若2D張量係基於4D張量之重新格式化而創建,則2D張量之頁面數目係基於4D張量的大小。在一個實例中,一或多個ceil函式用以判定2D張量中之列數目及每一列中之元素數目,其將指示將使用多少頁面。其他變化係可能的。
如本文中所描述,根據本發明之一或多個態樣,經重新格式化之2D張量(例如,其經串連)係基於4D特徵張量佈局且儲存於記憶體中。輸入至單元啟動之2D張量為例如其中E3及E4設定為壹之4D張量。
除4D特徵張量佈局以外,在一個實例中,神經網路處理器亦可支援4D核心張量,其重新配置4D張量之元素以在執行諸如卷積等某些人工智慧(例如,神經網路處理輔助)運算時縮減記憶體存取及資料搜集步驟之數目。作為實例,將具有維度E4、E3、E2、E1之列優先通用4D張量變換成NNPA資料佈局格式1 4D核心張量(4D核心張量),如本文中所描述:
所得張量可表示為例如64元素向量之4D張量或具有如下維度之5D張量:
通用張量之元素[e4][e3][e2][e1]可映射至所得5D張量之以下元素:
,其中
係指地板函式且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)可支援其他資料佈局格式。獲得所支援資料佈局之指示且藉由設定例如欄位638中之一或多個位元而將該指示置放於查詢參數區塊中。
根據本發明之一或多個態樣,查詢參數區塊亦包括其他資料屬性資訊,其包括例如資料之所支援大小資訊。諸如神經網路處理器等處理器通常具有基於內部緩衝器大小、處理單元、資料匯流排結構、韌體限制等之限制,該等限制可限制張量維度的最大大小及/或張量之總體大小。因此,查詢函式提供欄位以將此等限制傳達至應用程式。舉例而言,基於執行查詢函式,處理器獲得各種資料大小,諸如最大維度索引大小(例如,65,536個元素)及最大張量大小(例如,8 GB),且將此資訊分別包括於參數區塊(例如,參數區塊630)之欄位640及642中。額外、更少及/或其他大小資訊亦可由處理器(例如,神經網路處理器105)支援,且因此經獲得並置放於參數區塊中,例如置放於欄位640、642及/或其他欄位中。在其他實施例中,該等限制可更小或更大,及/或大小可為其他單位,諸如位元組而非元素、元素而非位元組等。此外,其他實施例允許每一維度具有不同最大大小,而非所有維度具有相同最大值。許多變化係可能的。
根據本發明之一或多個態樣,提供查詢函式以判定與特定處理器相關之模型相依資訊。(處理器亦可支援標準資料屬性,諸如標準資料類型、標準資料佈局等,該等屬性為隱含的且未必由查詢函式呈現;但在其他實施例中,查詢函式可指示資料屬性之所有或各種選定子集等。)儘管提供實例資訊,但在其他實施例中可提供其他資訊。針對處理器及/或不同處理器之不同模型可能不同的所獲得資訊用以執行人工智慧及/或其他處理。人工智慧及/或其他處理可使用例如神經網路處理輔助指令之一或多個非查詢函式。藉由一或多次執行神經網路處理輔助指令及指定非查詢特定函式來執行用於處理中之特定非查詢函式。
下文描述由神經網路處理輔助指令支援之實例非查詢函式的其他細節(在其他實施例中,可支援額外、更少及/或其他函式):
函式碼
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運算。若指定填補類型為有效的,則將窗中之所有元素加至用以運算所得輸出元素之合集。若指定填補類型為相同的,則取決於窗之位置,僅來自窗的元素之子集可加至用以運算所得輸出元素之合集。
在一個實例中,CollectElements運算將元素加至元素之合集且使合集中元素之數目遞增。每當窗開始位置移動時,合集被清空。是否存取執行運算不需要之元素為不可預測的。
Max運算:在一個實例中,藉由將合集中之所有元素彼此進行比較及傳回最大值來運算窗中之元素的合集中之最大值。
取平均值(Avg)運算:在一個實例中,將窗中之元素的合集之平均值運算為合集中之所有元素的總和除以合集中元素之數目。
在一個實例中,欄位如下分配:
* 集用函式特定參數1控制填補類型。舉例而言,函式特定參數1之位元29至31包括指定填補類型之PAD欄位。舉例而言,實例類型包括:
PAD
填補類型
0 有效的
1 相同的
2-7 保留
若為PAD欄位指定保留值,則報告例如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將含有零。
關於長短期單元啟動之一個實施例的其他細節在本文中參考例如圖4A及圖5A至圖5B描述。
函式碼
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將含有零。
關於經閘控遞歸單位單元啟動之一個實施例的其他細節在本文中參考例如圖4B描述。
函式碼
112
:
NNPA
-
CONVOLUTION
當指定NNPA-CONVOLUTION函式時,對於由輸出張量1描述符所描述之輸出張量中的每一輸出元素,由維度索引3、2及1組成之3維輸入1窗係選自由輸入張量1描述符所描述之輸入張量1。由維度索引4、3及2組成之相同大小的3維輸入2窗係選自由輸入張量2描述符所描述之張量2。將輸入1窗中之元素乘以輸入2窗中之對應元素,且將所有乘積加在一起以產生初始總和。將此初始總和加至輸入張量3之對應元素以運算中間總和值。輸出張量之元素係對中間總和執行的指定啟動函式的結果。若未指定啟動函式,則輸出元素等於中間總和。
若指定填補類型為有效的,則窗中之所有元素用以運算所得初始總和。若指定填補類型為相同的,則當運算所得初始總和時,取決於窗之位置,輸入1窗之一些元素可能隱含為零。
是否存取執行運算不需要之元素為不可預測的。
在一個實例中,由卷積函式使用之函式特定參數的欄位如下分配:
* NNPA-CONVOLUTION函式特定參數1控制填補類型及啟動函式。在一個實例中,函式特定參數1之位元29至31包括指定填補類型之PAD欄位。實例類型如下:
PAD
填補類型
0 有效的
1 相同的
2-7 保留
若為PAD欄位指定保留值,則報告例如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向量運算,維度1向量係選自由輸入張量1描述符所描述之輸入張量1。
* 使用下文所描述之獲得維度2向量運算,維度2向量係選自由輸入張量2描述符所描述之輸入張量2。
* 使用下文所描述之點積運算來運算維度1向量及維度2向量之中間點積。
* 對中間點積及具有與輸出張量元素相同之維度索引4及維度索引1值的由輸入張量3描述符所描述之輸入張量3的元素執行運算。所得元素儲存於輸出張量中。融合運算係藉由函式特定參數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欄位之所有其他值。若為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。
如本文中所描述,單一指令(例如,神經網路處理輔助指令)經組態以執行複數個函式,包括查詢函式及複數個非查詢函式。每一非查詢函式可在諸如4D張量(或其他大小之張量)等張量上運算。根據本發明之一或多個態樣,為了促進使用張量之處理,將張量重新格式化成具有某些特性以改良處理的例如複數個2D張量。舉例而言,經重新格式化張量具有可易於運算之位址,且可加載/儲存於一個運算中,由此增加頻寬且改良系統效能。此為例如在記憶體邊界上開始張量且具有固定維度(有可能使用填補來實現)之結果。
在一個實例中,張量之重新格式化係基於處理器(例如,通用處理器104)獲得指定非查詢函式之神經網路處理輔助指令而執行的。使用例如提供於參數區塊中之張量描述符資訊(例如,圖6G之張量描述符660、665)來重新格式化指定之張量。將與經重新格式化張量相關之位址資訊提供至專用處理器(例如,神經網路處理器105)以用於執行由指令指定之函式。
在一個實例中,指令(例如,神經網路處理輔助指令)實施遞歸神經網路單元啟動(例如,長短期記憶體單元啟動、經閘控遞歸單位單元啟動及/或其他單元啟動),其中輸入及/或輸出資料使用張量之記憶體中的串連資料佈局以防止運算之間的資料之重新格式化。作為一實例,對於輸入資料之串連,在乘法運算之前在時步內對權重張量進行獨立2D轉換及串連。指令之單一引動一次跨時步運算輸入特徵之所有相乘,以得到中間結果。中間結果提供於記憶體位址相鄰張量中以運算啟動。
對於輸出資料之串連,結果張量包括時步的2D經重新格式化結果之串連。每一時步結果張量包括遞歸神經網路運算之完整結果的記憶體位址相鄰張量。時步之結果張量可直接用於下一時步之運算中而無需資料操縱或複製運算。
在一或多個其他態樣中,個別啟動及運算在加速器中一次執行的一個指令中組合。在一個實例中,遞歸神經網路依賴於長短期記憶體網路或經閘控遞歸單元網路。對於每一時步(一個接一個之運算),將多個啟動(例如,S型、雙曲正切)及運算(例如,加法、減法及/或乘法)應用於隱藏狀態(例如,先前所習得)、輸入狀態及單元狀態。至少歸因於加速器之起動時間,針對此等步驟中之每一者調用加速器(例如,神經網路處理器105)對於處理器及/或系統的總體效能而言係不利的。根據本發明之一態樣,基於個別啟動及運算在加速器中一次執行的一個指令中組合而達成顯著加速。根據本發明之一態樣,實施單一指令,由此組合個別啟動及組合函式。因此,僅存在一個引動;中間運算資料儲存於加速器中而非寫回至記憶體;SIMD寬度及加速器之管線化屬性可用以與每電腦的較少循環並行地進行更多運算;並且較高精度用於中間結果,由此針對長短期記憶體及/或經閘控遞歸單元運算而產生增強之準確度及較高穩定性。例如乘法運算與加法運算之組合會提供較高準確度,而不會損失中間結果之精度。此外,可藉由以較高精度在加速器中節省中間運算來達成較高數值準確度。
此外,根據本發明之一或多個態樣,用以提供輸入至單元啟動之串連結果張量的矩陣乘法運算與單元啟動分離,由此降低單一運算之複雜度且允許針對其他遞歸神經網路重新使用基本區塊。架構化指令提供空間上密切之輸入及輸出資料源以縮減位址轉譯。
根據一或多個態樣,運算呈內部格式之輸入的啟動,且組合運算,由此以輸入數值格式產生一或多個輸出。作為一實例,該內部格式為用於例如神經網路處理器之模型相依格式。在一個實例中,所使用之內部格式可具有與輸入/輸出數值格式不同之數值精度以增加準確度或縮減運算時間及運算能力。
此外,根據一或多個態樣,多個啟動囊封於一個指令中。該指令在不破壞極小組塊中之啟動的情況下提供模組化。此外,該指令將串連輸入及輸出格式用於啟動,由此提供處理時間之節省且增加處理速度。
本發明之一或多個態樣不可避免地與電腦技術相關且促進電腦內之處理,由此改良其效能。界定及/或使用此等張量之經重新格式化串連張量及/或指令可用於許多技術領域中,諸如用於電腦處理、人工智慧、遞歸神經網路、醫療處理、工程化、汽車技術、製造等中。藉由使用如本文中所描述之經重新格式化串連張量,提供某些最佳化,包括執行用於各種技術領域中之複雜運算的最佳化,由此藉由增加頻寬、提供效率及/或縮減執行時間來改良彼等領域。
參考圖10A及圖10B描述促進運算環境內之處理的一個實施例之其他細節,此係因為該運算環境與本發明之一或多個態樣有關。
參考圖10A,實行執行遞歸神經網路單元啟動之指令1000。實行包括例如執行遞歸神經網路單元啟動之複數個運算以提供遞歸神經網路單元啟動的結果1002。作為一實例,複數個運算係在指令之單一引動中執行1004。
使用指令之單一引動來執行複數個運算降低了複雜度,縮減了系統資源之使用且提高了系統效能。
在一個實例中,複數個運算包括一或多個S型函式及一或多個正切函式1006。在一個實例中,複數個運算包括張量元素式加法及張量元素式乘法運算1008。
作為一實例,複數個運算包括一或多個S型函式、一或多個正切函式、一或多個張量元素式加法運算及一或多個張量元素式乘法運算1010。
在一個實例中,至指令之一或多個輸入包括一或多個串連張量1012。串連張量可直接由執行於例如執行遞歸神經網路之單元啟動之加速器上的指令使用。可在一個運算中存取串連張量,從而節省處理時間且增加處理速度。此外,存在待管理之較少張量指標,且在加速器的引動之間縮減張量資料之複製或重組,由此提高處理速度。
在一個實例中,參考圖10B,作為一實例,結果係輸出張量1014,且輸出張量係至指令之另一引動之輸入1016。
作為實例,遞歸神經網路單元啟動包括長短期記憶體單元啟動1020或遞歸神經網路單元啟動包括經閘控遞歸單位單元啟動1022。
在一個實例中,執行遞歸神經網路單元啟動之複數個運算係由加速器執行且產生中間運算資料1024。作為一實例,將中間運算資料儲存於加速器中1026。
在一個實例中,執行複數個運算包括對空間上密切之輸入資料執行複數個運算1028。
其他變化及實施例係可能的。
本發明之態樣可由許多類型之運算環境使用。參考圖11A描述併有且使用本發明之一或多個態樣的運算環境之另一實例。作為一實例,圖11A之運算環境係基於由紐約阿蒙克市之國際商業機器公司提供的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提供邏輯分割及/或虛擬化支援。在一個實施例中,如圖11B中所展示,記憶體12包括例如一或多個邏輯分割區20、管理邏輯分割區之超管理器21,以及處理器韌體22。超管理器21之一個實例為由紐約阿蒙克市之國際商業機器公司提供的處理器資源/系統管理器(PR/SM
TM)。PR/SM為國際商業機器公司在至少一個管轄區域中之商標或註冊商標。
每一邏輯分割區20能夠充當單獨系統。亦即,每一邏輯分割區可獨立地重設、運行客體作業系統23,諸如由紐約阿蒙克市之國際商業機器公司提供之z/OS®作業系統,或其他控制碼24,諸如耦接設施控制碼(CFCC),並且用不同程式25來操作。在邏輯分割區中運行之作業系統或應用程式呈現為可存取完整系統,但實際上,僅其一部分可用。儘管z/OS作業系統經提供為一實例,但可根據本發明之一或多個態樣使用由國際商業機器公司及/或其他公司提供之其他作業系統。
記憶體12耦接至例如CPU 13 (圖11A),該等CPU為可分配至邏輯分割區之實體處理器資源。舉例而言,邏輯分割區20可包括一或多個邏輯處理器,其中之每一者表示可動態地分配至邏輯分割區之實體處理器資源13中的全部或一部分。
在又另一實施例中,中央電子複合體提供虛擬機支援(具有或不具有邏輯分割支援)。如圖11C中所展示,中央電子複合體11之記憶體12包括例如一或多個虛擬機26、管理虛擬機之諸如超管理器27等虛擬機管理器,以及處理器韌體28。超管理器27之一個實例為由紐約阿蒙克市之國際商業機器公司提供的z/VM®超管理器。超管理器有時被稱作主機。z/VM為國際商業機器公司在至少一個管轄區域中之商標或註冊商標。
中央電子複合體之虛擬機支援提供操作大量虛擬機26之能力,該等虛擬機各自能夠用不同程式29操作且執行客體作業系統30,諸如Linux
®作業系統。每一虛擬機26能夠充當單獨系統。亦即,每一虛擬機可獨立地進行重設,運行客體作業系統,且藉由不同程式操作。在虛擬機中運行之作業系統或應用程式呈現為能夠存取完整系統,但實際上,僅其一部分可用。儘管供應z/VM及Linux作為實例,但可根據本發明之一或多個態樣使用其他虛擬機管理器及/或作業系統。註冊商標Linux
®係依照來自Linux基金會(Linux Foundation)的轉授權而使用,該基金會為該商標在全球範圍內的所有者Linus Torvalds之獨家被授權人。
參考圖12A描述併有且使用本發明之一或多個態樣的運算環境之另一實施例。在此實例中,運算環境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指令集架構開發之軟體及指令。
參考圖12B描述與仿真器程式碼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):提供至消費者之能力係佈建處理、儲存、網路及其他基本運算資源,其中消費者能夠部署及運行可包括作業系統及應用程式之任意軟體。消費者並不管理或控制基本雲端基礎結構,但控制作業系統、儲存器、所部署應用程式,及可能有限地控制選擇網路連接組件(例如,主機防火牆)。
部署模型如下:
私用雲端:僅針對組織操作雲端基礎結構。私用雲端可由組織或第三方來管理且可存在於內部或外部。
社群雲端:該雲端基礎結構由若干組織共用且支援具有共用關注事項(例如,任務、安全要求、策略及合規性考量)之特定社群。社群雲端可由組織或第三方來管理且可存在於內部或外部。
公用雲端:使雲端基礎結構可用於公眾或大型工業集團且為出售雲端服務之組織所擁有。
混合雲端:雲端基礎結構係兩個或更多個雲端(私用、社群或公用)之組合物,該等雲端保持獨特實體但藉由實現資料及應用程式攜帶性(例如,用於在雲端之間實現負載平衡的雲端爆裂)之標準化或專屬技術系結在一起。
藉由集中於無國界、低耦接、模組化及語義互操作性對雲端運算環境進行服務定向。雲端運算之關鍵係包括互連節點之網路的基礎結構。
現參考圖13,描繪例示性雲端運算環境50。如所展示,雲端運算環境50包括一或多個雲端運算節點52,雲端消費者所使用之諸如個人數位助理(PDA)或蜂巢式電話54A、桌上型電腦54B、膝上型電腦54C及/或汽車電腦系統54N的本端運算裝置可與該一或多個雲端運算節點進行通信。節點52可彼此通信。可在諸如如上文所描述之私用、社群、公用或混合雲端或其組合等一或多個網路中將該等節點實體地或虛擬地分組(未展示)。此情形允許雲端運算環境50提供基礎結構、平台及/或軟體作為服務,針對該等服務,雲端消費者不需要在本端運算裝置上維護資源。應理解,圖13中所展示之運算裝置54A至54N之類型意欲僅為說明性的,且運算節點52及雲端運算環境50可經由任何類型的網路及/或網路可定址連接(例如,使用網頁瀏覽器)與任何類型之電腦化裝置進行通信。
現參考圖14,展示藉由雲端運算環境50 (圖13)提供之功能抽象層之集合。事先應理解,圖14中所展示之組件、層及功能意欲僅為說明性的且本發明之實施例不限於此。如所描繪,提供以下層及對應功能:
硬體及軟體層60包括硬體及軟體組件。硬體組件之實例包括:大型電腦61;基於精簡指令集電腦(RISC)架構之伺服器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)」在用於本說明書中時指定所陳述特徵、整數、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組之存在或添加。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若存在)意欲包括用於結合如具體主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述之目的呈現一或多個實施例之描述,但其不意欲為窮盡性的或限於所揭示之形式。許多修改及變化將對一般熟習此項技術者顯而易見。實施例經選擇及描述以最佳地解釋各種態樣及實際應用,且使得一般熟習此項技術者能夠理解各種實施例及適於所涵蓋之特定用途的各種修改。
0:通用暫存器
1:通用暫存器
10:運算環境
11:中央電子複合體
12:主儲存器/記憶體
13:中央處理單元(CPU)/實體處理器資源
14:I/O子系統
15:輸入/輸出控制單元
16:輸入/輸出裝置
17:資料儲存裝置
18:程式
19:電腦可讀程式指令
20:邏輯分割區
21:超管理器
22:處理器韌體
23:客體作業系統
24:控制碼
25:程式
26:虛擬機
27:超管理器
28:處理器韌體
29:程式
30:客體作業系統
31:神經網路處理器
36:運算環境
37:原生中央處理單元
38:記憶體
39:輸入/輸出裝置/介面
40:匯流排
41:暫存器
42:仿真器程式碼
43:客體指令
44:指令提取常式
45:指令轉譯常式
46:原生指令
47:仿真控制常式
50:雲端運算環境
52:雲端運算節點
54A:蜂巢式電話
54B:桌上型電腦
54C:膝上型電腦
54N:汽車電腦系統
60:硬體及軟體層
61:大型電腦
62:基於精簡指令集電腦架構之伺服器
63:伺服器
64:刀鋒伺服器
65:儲存裝置
66:網路及網路連接組件
67:網路應用程式伺服器軟體
68:資料庫軟體
70:虛擬化層
71:虛擬伺服器
72:虛擬儲存器
73:虛擬網路
74:虛擬應用程式及作業系統
75:虛擬用戶端
80:管理層
81:資源佈建
82:計量及定價
83:使用者入口網站
84:服務等級管理
85:服務等級協議規劃及實現
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:暫存器
170:組合/串連組件
171:張量組件
172:神經網路處理輔助組件
200:串連張量輸入/串連張量/串連輸入張量
202:2D張量
210:特徵輸入
212:相乘
214:串連權重張量
216:列填補
218:頁面填補
220:偏差張量
222:偏差張量
224:列填補
226:頁面填補
250:串連輸出張量
260:隱藏狀態張量/張量
270:內部單元狀態張量/張量
280:列填補
282:頁面填補
300:2D張量
302:列
304:步驟
306:額外填補
352:步驟
354:步驟
356:步驟
358:步驟
360:步驟
362:步驟
364:步驟
366:步驟
368:步驟
370:步驟
372:步驟
374:步驟
376:步驟
378:步驟
382:步驟
384:步驟
386:步驟
388:步驟
390:步驟
392:步驟
394:步驟
396:步驟
400a:第一輸入張量
400a1:張量/輸入張量
400a2:張量/輸入張量
400a3:張量/輸入張量
400a4:張量/輸入張量
400b:第二輸入張量
400b1:張量/輸入張量
400b2:張量/輸入張量
400b3:張量/輸入張量
400b4:張量/輸入張量
400c:第三輸入張量/輸入張量
401:長短期記憶體單元啟動
402a:加法運算
402b:加法運算
402c:加法運算
402d:加法運算
404a:S型啟動
404b:S型啟動
404c:S型啟動/S型函式
406:正切啟動
408:乘法運算
410:組合運算/運算
412:正切啟動/正切函式
414:乘法運算/NNPA-MUL
420a:輸出張量
420b:輸出張量
450a:第一輸入張量
450a1:張量/輸入張量
450a2:張量/輸入張量
450a3:張量/輸入張量
450b:第二輸入張量
450b1:張量/輸入張量
450b2:張量/輸入張量
450b3:張量/輸入張量
450c:輸入張量
451:經閘控遞歸單位單元啟動
452a:加法運算
452b:加法運算
454a:S型啟動/S型函式
454b:S型啟動
456a:乘法運算
456b:乘法運算
458:減法運算
460:加法運算
462:正切啟動
464:乘法運算
466:加法運算
468:輸出張量
500:長短期記憶體單元啟動
502:歷史張量
504:單元狀態張量
510:串連輸出張量/串連張量
510a:歷史張量
510b:單元狀態張量
520:矩陣乘法運算
530:組合運算
540:串連權重矩陣
550:串連偏差張量
560:權重張量
562:串連權重張量
564:矩陣乘法廣播運算
566:特徵輸入
570:串連偏差張量
572:偏差張量
600:神經網路處理輔助指令
602:作業碼欄位
610:回應碼欄位/回應碼
612:異常旗標欄位/異常旗標
614:函式碼欄位/函式碼
620:參數區塊
630:NNPA查詢可用函式參數區塊
632:已安裝函式向量
634:已安裝參數區塊格式向量
636:已安裝資料類型/已安裝資料類型欄位
638:已安裝資料佈局格式/已安裝資料佈局格式欄位
640:最大維度索引大小/欄位
642:最大張量大小/欄位
644:已安裝NNP資料類型1轉換向量
650:參數區塊
652:參數區塊版本號碼
654:模型版本號碼
656:接續旗標
658:函式特定保存區域位址
660:輸出張量描述符/張量描述符
665:輸入張量描述符/張量描述符
670:函式特定參數
675:接續狀態緩衝器欄位
682:資料佈局格式
684:資料類型
686:維度1至4索引大小
688:張量位址
700:格式
702:正負號
704:指數+31
706:分數
800:3D張量
802:2D張量
900:記憶體
902:列
904:元素
906:步驟
908:步驟
1000:步驟
1002:步驟
1004:步驟
1006:步驟
1008:步驟
1010:步驟
1012:步驟
1014:步驟
1016:步驟
1020:步驟
1022:步驟
1024:步驟
1026:步驟
1028:步驟
E1:維度
E2:維度
E3:維度
E4:維度
在本說明書之結尾處之申請專利範圍中作為實例特別地指出且清楚地主張一或多個態樣。一或多個態樣之前述內容及目標、特徵及優點自結合隨附圖式進行的以下詳細描述顯而易見,其中:
圖1A描繪併有且使用本發明之一或多個態樣的運算環境之一個實例;
圖1B描繪根據本發明之一或多個態樣的圖1A之處理器的其他細節;
圖2A描繪根據本發明之一或多個態樣的結果張量之一個實例;
圖2B描繪將串連權重乘以輸入特徵以提供根據本發明之一或多個態樣使用的中間結果之一個實例;
圖2C描繪根據本發明之一或多個態樣的與圖2B之中間結果相加以提供圖2A之結果張量的偏差之一個實例;
圖2D描繪根據本發明之一或多個態樣的串連輸出張量之一個實例;
圖3A描繪根據本發明之一或多個態樣的2D張量之一個實例;
圖3B至圖3C描繪根據本發明之一或多個態樣的用於創建選擇維度之張量的處理之一個實例;
圖4A描繪根據本發明之一或多個態樣的長短期記憶體單元啟動之一個實例;
圖4B描繪根據本發明之一或多個態樣的經閘控遞歸單位單元啟動之一個實例;
圖5A至圖5B描繪根據本發明之一或多個態樣的使用鏈接之長短期記憶體單元啟動的一個實例;
圖6A描繪根據本發明之一或多個態樣的神經網路處理輔助指令之格式的一個實例;
圖6B描繪根據本發明之一或多個態樣的由神經網路處理輔助指令使用之通用暫存器的一個實例;
圖6C描繪根據本發明之一或多個態樣的由神經網路處理輔助指令支援之函式碼的實例;
圖6D描繪根據本發明之一或多個態樣的由神經網路處理輔助指令使用之另一通用暫存器的一個實例;
圖6E描繪根據本發明之一或多個態樣的由神經網路處理輔助指令之查詢函式使用之參數區塊的一個實例;
圖6F描繪根據本發明之一或多個態樣的由神經網路處理輔助指令之一或多個非查詢函式使用之參數區塊的一個實例;
圖6G描繪根據本發明之一或多個態樣的由神經網路處理輔助指令使用之張量描述符的一個實例;
圖7描繪根據本發明之一或多個態樣的神經網路處理(NNP)資料類型1資料類型之格式的一個實例;
圖8A至圖8C描繪根據本發明之一或多個態樣的由神經網路處理輔助指令使用之輸入資料佈局的實例;
圖9A至圖9C描繪根據本發明之一或多個態樣的對應於圖8A至圖8C之輸入資料佈局的實例輸出;
圖10A至圖10B描繪根據本發明之一或多個態樣的促進運算環境內之處理的一個實例;
圖11A描繪併有且使用本發明之一或多個態樣的運算環境之另一實例;
圖11B描繪根據本發明之一或多個態樣的圖11A之記憶體之其他細節的一個實例;
圖11C描繪根據本發明之一或多個態樣的圖11A之記憶體之其他細節的另一實例;
圖12A描繪併有且使用本發明之一或多個態樣的運算環境之又一實例;
圖12B描繪根據本發明之一或多個態樣的圖12A之記憶體之其他細節;
圖13描繪根據本發明之一或多個態樣的雲端運算環境之一個實施例;以及
圖14描繪根據本發明之一或多個態樣的抽象模型層之一個實例。
1000:步驟
1002:步驟
1004:步驟
1006:步驟
1008:步驟
1010:步驟
1012:步驟
Claims (20)
- 一種用於促進一運算環境內之處理的電腦程式產品,該電腦程式產品包含: 一或多個電腦可讀儲存媒體及共同地儲存於該一或多個電腦可讀儲存媒體上以執行一方法之程式指令,該方法包含: 實行執行一遞歸神經網路單元啟動之一指令,該實行包含: 執行該遞歸神經網路單元啟動之複數個運算以提供該遞歸神經網路單元啟動的一結果,該複數個運算在該指令之一單一引動中執行。
- 如請求項1之電腦程式產品,其中該複數個運算包括一或多個S型函式及一或多個正切函式。
- 如請求項1之電腦程式產品,其中該複數個運算包括張量元素式加法及張量元素式乘法運算。
- 如請求項1之電腦程式產品,其中該複數個運算包括一或多個S型函式、一或多個正切函式、一或多個張量元素式加法運算及一或多個張量元素式乘法運算。
- 如請求項1之電腦程式產品,其中至該指令之一或多個輸入包括一或多個串連張量。
- 如請求項1之電腦程式產品,其中該結果係一輸出張量,該輸出張量係至該指令之另一引動之一輸入。
- 如請求項1之電腦程式產品,其中該遞歸神經網路單元啟動包含一長短期記憶體單元啟動。
- 如請求項1之電腦程式產品,其中該遞歸神經網路單元啟動包含一經閘控遞歸單位單元啟動。
- 如請求項1之電腦程式產品,其中該執行該遞歸神經網路單元啟動之該複數個運算係由一加速器執行且產生中間運算資料,且其中該方法進一步包含將該中間運算資料儲存於該加速器中。
- 如請求項1之電腦程式產品,其中該執行該複數個運算包括對空間上密切之輸入資料執行該複數個運算。
- 一種用於促進一運算環境內之處理的電腦系統,該電腦系統包含: 一記憶體;以及 至少一個處理器,其與該記憶體進行通信,其中該電腦系統經組態以執行一方法,該方法包含: 實行執行一遞歸神經網路單元啟動之一指令,該實行包含: 執行該遞歸神經網路單元啟動之複數個運算以提供該遞歸神經網路單元啟動的一結果,該複數個運算在該指令之一單一引動中執行。
- 如請求項11之電腦系統,其中該複數個運算包括一或多個S型函式、一或多個正切函式、一或多個張量元素式加法運算及一或多個張量元素式乘法運算。
- 如請求項11之電腦系統,其中至該指令之一或多個輸入包括一或多個串連張量。
- 如請求項11之電腦系統,其中該遞歸神經網路單元啟動包含一長短期記憶體單元啟動或一經閘控遞歸單位單元啟動。
- 如請求項11之電腦系統,其中該執行該遞歸神經網路單元啟動之該複數個運算係由一加速器執行且產生中間運算資料,且其中該方法進一步包含將該中間運算資料儲存於該加速器中。
- 一種促進一運算環境內之處理的電腦實施方法,該電腦實施方法包含: 實行執行一遞歸神經網路單元啟動之一指令,該實行包含: 執行該遞歸神經網路單元啟動之複數個運算以提供該遞歸神經網路單元啟動的一結果,該複數個運算在該指令之一單一引動中執行。
- 如請求項16之電腦實施方法,其中該複數個運算包括一或多個S型函式、一或多個正切函式、一或多個張量元素式加法運算及一或多個張量元素式乘法運算。
- 如請求項16之電腦實施方法,其中至該指令之一或多個輸入包括一或多個串連張量。
- 如請求項16之電腦實施方法,其中該遞歸神經網路單元啟動包含一長短期記憶體單元啟動或一經閘控遞歸單位單元啟動。
- 如請求項16之電腦實施方法,其中該執行該遞歸神經網路單元啟動之該複數個運算係由一加速器執行且產生中間運算資料,且該電腦實施方法進一步包含將該中間運算資料儲存於該加速器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/350,747 US20220405552A1 (en) | 2021-06-17 | 2021-06-17 | Recurrent neural network cell activation to perform a plurality of operations in a single invocation |
US17/350,747 | 2021-06-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202303420A true TW202303420A (zh) | 2023-01-16 |
Family
ID=82361399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111114942A TW202303420A (zh) | 2021-06-17 | 2022-04-20 | 遞歸神經網路單元啟動以執行一單一引動中之複數個運算 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20220405552A1 (zh) |
EP (1) | EP4356300A1 (zh) |
KR (1) | KR20230162709A (zh) |
CN (1) | CN117413279A (zh) |
AU (1) | AU2022292067A1 (zh) |
CA (1) | CA3213340A1 (zh) |
TW (1) | TW202303420A (zh) |
WO (1) | WO2022263385A1 (zh) |
-
2021
- 2021-06-17 US US17/350,747 patent/US20220405552A1/en active Pending
-
2022
- 2022-04-20 TW TW111114942A patent/TW202303420A/zh unknown
- 2022-06-13 AU AU2022292067A patent/AU2022292067A1/en active Pending
- 2022-06-13 CN CN202280038564.7A patent/CN117413279A/zh active Pending
- 2022-06-13 EP EP22736169.8A patent/EP4356300A1/en active Pending
- 2022-06-13 WO PCT/EP2022/066055 patent/WO2022263385A1/en active Application Filing
- 2022-06-13 CA CA3213340A patent/CA3213340A1/en active Pending
- 2022-06-13 KR KR1020237037674A patent/KR20230162709A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
CN117413279A (zh) | 2024-01-16 |
EP4356300A1 (en) | 2024-04-24 |
AU2022292067A1 (en) | 2023-11-09 |
US20220405552A1 (en) | 2022-12-22 |
WO2022263385A1 (en) | 2022-12-22 |
KR20230162709A (ko) | 2023-11-28 |
CA3213340A1 (en) | 2022-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI792987B (zh) | 使用暗示捨入模式之資料轉換至經選擇資料類型/來自經選擇資料類型之資料轉換 | |
TWI833205B (zh) | 用於遞歸神經網路中使用之串連輸入/輸出張量 | |
TWI807767B (zh) | 神經網路處理輔助指令 | |
TW202303394A (zh) | 在資料轉換期間之無效機器特定資料類型之偵測 | |
TWI804285B (zh) | 查詢模型相依資訊之指令 | |
TWI818518B (zh) | 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 | |
TWI813258B (zh) | 重新格式化張量以提供子張量 | |
TWI840790B (zh) | 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 | |
TW202303420A (zh) | 遞歸神經網路單元啟動以執行一單一引動中之複數個運算 | |
TWI815407B (zh) | 用於促進一計算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 | |
TWI840785B (zh) | 用於在指令執行期間偵測之無效值之例外摘要 | |
AU2022292046B2 (en) | Reformatting of tensors to provide sub-tensors | |
TWI832214B (zh) | 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 | |
TW202301109A (zh) | 執行組合矩陣乘法及偏差加法運算之單一函式 | |
TW202301112A (zh) | 用於在指令執行期間偵測之無效值之例外摘要 |