CN117396845A - 神经网络处理辅助指令 - Google Patents
神经网络处理辅助指令 Download PDFInfo
- Publication number
- CN117396845A CN117396845A CN202280038395.7A CN202280038395A CN117396845A CN 117396845 A CN117396845 A CN 117396845A CN 202280038395 A CN202280038395 A CN 202280038395A CN 117396845 A CN117396845 A CN 117396845A
- Authority
- CN
- China
- Prior art keywords
- function
- processor
- tensor
- dimension
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims description 108
- 238000013528 artificial neural network Methods 0.000 title description 82
- 230000006870 function Effects 0.000 claims abstract description 411
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000004590 computer program Methods 0.000 claims description 21
- 230000001419 dependent effect Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 26
- 239000013598 vector Substances 0.000 description 69
- 230000004044 response Effects 0.000 description 50
- 238000009434 installation Methods 0.000 description 25
- 239000000047 product Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 10
- 230000004913 activation Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 9
- 238000005192 partition Methods 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 239000000945 filler Substances 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 238000006243 chemical reaction 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
- 230000008520 organization Effects 0.000 description 3
- 230000003542 behavioural effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000670 limiting effect 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
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000002829 reductive effect 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
- 239000006057 Non-nutritive feed additive Substances 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 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
- 238000013480 data collection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000013067 intermediate product Substances 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
- 238000013439 planning Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000306 recurrent 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
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/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/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/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/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/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)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (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)
- Magnetic Resonance Imaging Apparatus (AREA)
- Advance Control (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Multi Processors (AREA)
Abstract
第一处理器处理被配置为执行多个功能的指令。多个功能包括用于操作一个或多个张量的一个或多个功能。确定多个功能中的将要被执行的功能。第一处理器向第二处理器提供与该功能有关的信息。第二处理器将要执行该功能。第一处理器和第二处理器共享提供存储一致性的存储器。
Description
背景技术
一个或多个方面一般涉及促进计算环境内的处理,尤其涉及改进这样的处理。
为了增强数据和/或计算密集型计算环境中的处理,利用协处理器,诸如人工智能加速器(也称为神经网络处理器或神经网络加速器)。这样的加速器提供了在执行例如相关计算中使用的大量计算能力,该相关计算诸如对矩阵或张量的计算。
作为示例,张量计算被用在复杂处理中,包括深度学习,其是机器学习的子集。深度学习或机器学习,即人工智能的一个方面,被用于各种技术中,包括但不限于工程、制造、医学技术、汽车技术、计算机处理等。
为了执行包括张量计算的人工智能工作负荷,可以使用在通用处理器上执行许多指令的软件实现或使用专用硬件实现。在通用处理器上使用许多指令会限制神经网络操作的性能。此外,在对专用硬件实现进行编程时,可能必须针对每一代硬件修改和重新编译程序,从而增加了复杂性和验证成本。
发明内容
通过提供一种用于促进计算环境内的处理的计算机程序产品,克服了现有技术的缺点,并且提供了附加的优点。该计算机程序产品包括一个或多个计算机可读存储介质和共同存储在一个或多个计算机可读存储介质上以执行方法的程序指令。所述方法包括通过第一处理器处理被配置为执行多个功能(function)的指令。多个功能包括对一个或多个张量进行操作的功能。确定要执行的多个功能中的一个功能。第一处理器向第二处理器提供与该功能相关的信息。第二处理器用于执行该功能。第一处理器和第二处理器共享存储器,提供存储一致性。
使用被配置用于多个功能的单个指令,其中一个或多个功能可以由与处理该指令的第一处理器共享存储器的第二处理器来执行,不需要昂贵的存储器固定和输入/输出操作来与第二处理器通信。
在一个示例中,确定是第一处理器还是第二处理器要执行该功能,并且基于确定该功能要由第二处理器执行来执行该提供。
在一个示例中,确定第一处理器还是第二处理器要执行该功能包括确定由指令指定的功能是非查询功能还是查询功能。基于该功能是查询功能,第一处理器执行该功能,并且基于该功能是非查询功能,第二处理器执行该功能。
作为示例,第一处理器对指令的处理包括指令的同步执行。
在另一方面,确定功能的执行是否已经被中断。基于确定该功能的执行已被中断,获得选择缓冲器中的信息以恢复该功能的执行。
作为示例,确定功能的执行是否已经被中断包括检查在要在重新执行指令中所使用的参数块中包括的继续标志。此外,在一个示例中,选择缓冲器被指示在参数块中以用于重新执行指令。
在一个示例中,一个或多个张量具有针对第二处理器优化的格式。此外,作为示例,提供给第二处理器的信息包括存储器地址信息,该存储器地址信息用于获得要由要执行的功能操作的一个或多个张量中的至少一个张量。
作为示例,指令指定提供与处理要执行的功能有关的信息的参数块。例如,参数块取决于要执行的功能。
在一个方面,提供了一种用于促进计算环境内的处理的计算机程序产品。该计算机程序产品包括一个或多个计算机可读存储介质和共同存储在该一个或多个计算机可读存储介质上以执行方法的程序指令。该方法包括处理被配置为执行多个功能的指令。多个功能包括对一个或多个输入张量操作的功能,并且一个或多个输入张量具有对于要用于执行多个功能中的一个或多个功能的选择处理器优化的格式。从多个功能中确定要执行的特定功能,并且启动该特定功能的执行。
本文还描述并要求保护与一个或多个方面相关的计算机实现的方法和系统。此外,本文还描述并要求保护与一个或多个方面相关的服务。
通过本文所描述的技术实现了额外的特征和优点。其它实施例和方面在本文中详细描述,且被视为所要求保护的方面的一部分。
附图说明
在说明书结尾处的权利要求中作为示例特别指出并清楚地要求了一个或多个方面。从结合附图的以下详细描述中,一个或多个方面的前述和目的、特征和优点将变得显而易见,在附图中:
图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描述了根据本发明的一个或多个方面的抽象模型层的一个示例。
具体实施方式
根据本发明的一个或多个方面,提供了一种能力以促进在计算环境中进行处理。作为示例,提供了神经网络处理辅助指令,其被配置为实现多个功能,包括例如查询功能和多个非查询功能。非查询功能包括例如与张量计算相关的功能。神经网络处理辅助指令是例如作为指令集架构(ISA)的一部分的单个指令(例如,在硬件/软件接口处的单个架构的硬件机器指令),其在通用处理器上被处理(例如,至少部分地解码和/或执行)。例如,指令由通用处理器上的程序调度,该程序解码并启动指令。由指令指定的功能由通用处理器和/或专用处理器执行,诸如被配置用于某些功能的协处理器,其耦合到通用处理器或作为通用处理器的一部分。然后,指令在通用处理器上完成。在其他示例中,在一个或多个通用处理器或一个或多个专用处理器上发起、执行和完成指令。
在一个实施例中,单个架构的指令例如在主存储器上操作,并且例如被同步地执行。在一个示例中,主存储器与用于执行一个或多个功能(例如,一个或多个非查询功能)的专用处理器共享。共享主存储器的使用消除了对昂贵的存储器固定和/或输入/输出(I/O)操作以与专用处理器通信的需要。它提供了存储一致性,其中通用处理器和专用处理器的高速缓存保持一致。此外,由于在一个示例中,指令被同步执行,因此在一个示例中,发起指令的处理器在指令的执行期间向执行由指令指定的功能的专用处理器(或另一处理器)提供信息,但是不执行其他工作,除非存在指令的中断或指令完成。
神经网络处理辅助指令与先前技术相比提供了提高的性能,先前技术诸如使用许多指令和/或对可能需要针对其他代重新编程的专用处理器进行编程。执行神经网络处理辅助指令与例如软件实现相比使用更少的执行周期。使用单个指令来执行多个功能允许例如在许多机器代中以高性能来重用软件。每个功能被配置为单个指令(例如,单个架构的指令)的一部分,从而减少了系统资源的使用和复杂性,并且提高了系统性能。
参考图1A描述了用于结合和使用本发明的一个或多个方面的计算环境的一个实施例。作为示例,计算环境基于由纽约,阿蒙克,国际商业机器公司提供的指令集架构。在“z/Architecture Principles of Operation”,IBM出版号SA22-7832-12,第十三版,2019年九月中描述了z/Architecture指令集架构的一个实施例,该出版物通过引用整体并入本文。然而,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是国际商业机器公司在至少一个管辖权内的商标或注册商标。也可使用由国际商业机器公司和/或其它实体提供的其它操作系统。存储器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。此外,根据本发明的一个或多个方面,组件中的一个或多个可以包括在执行例如神经网络处理辅助指令的神经网络处理辅助处理(或可以使用本发明的一个或多个方面的其它处理)时使用的一个或多个其它组件的至少一部分或可以访问该一个或多个其它组件,如本文所述。一个或多个其他组件可以包括例如神经网络处理辅助组件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格式,该RRE格式表示具有扩展的操作代码(操作代码(opcode))的寄存器和寄存器操作。如图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。在一个示例中,存储到响应代码字段的代码被定义如下:
异常标志(EF)312:该字段(例如,位位置24-31)包括异常标志。如果在指令执行期间检测到异常条件,则对应的异常标志控制(例如,位)将被设定为(例如)一;否则,控制保持不变。异常标志字段在第一次调用指令之前被初始化为零。保留标志在指令执行期间不变。在一个示例中,如下定义存储到异常标志字段的标志:
功能代码(FC)314:该字段(例如,位位置56-63)包括功能代码。图3C中描述了神经网络处理辅助指令的分配的功能代码的示例。所有其它功能代码未被分配。如果指定了未分配的或未安装的功能代码,则设置例如0002十六进制的响应代码和例如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对应于正被安装的数据布局格式。当位是例如一时,安装对应的数据布局格式;否则,不安装数据布局格式。示例数据布局格式包括(附加的、更少的和/或其他数据布局格式是可能的):
最大维度索引大小340:参数块的该字段(例如,字节60-63)包括例如32位无符号二进制整数,其指定了在任何指定张量的指定维度索引大小中的元素的最大数量。在另一个示例中,最大维度索引大小指定了在任何指定张量的指定维度索引大小中的最大字节数量。其它示例也是可能的。
最大张量大小342:参数块的该字段(例如,字节64-71)包括例如32位无符号二进制整数,其指定了包括张量格式所需的任何填充字节的任何指定张量中的最大字节数量。在另一示例中,最大张量大小指定包括张量格式所需的任何填充的任何指定张量中的全部元素的最大数量。其它示例也是可能的。
安装-NNP-数据-类型-1-转换向量344:参数块的该字段(例如,字节72-73)包括安装-NNP-数据-类型-1-转换向量。在一个示例中,安装-NNP-数据-类型-1-转换向量的位0-15对应于来自/到NNP-数据-类型-1格式的安装数据类型转换。当位为一时,安装相应的转换;否则,不安装转换。可以指定附加的、更少的和/或其他转换。
尽管参考图3E描述了查询功能的参数块的一个示例,但是也可以使用查询功能的参数块的其他格式,包括NNPA-查询可用功能操作。在一个示例中,格式可以取决于要执行的查询功能的类型。此外,参数块和/或参数块的每个字段可以包括附加的、更少的和/或其他信息。
除了查询功能的参数块之外,在一个示例中,存在用于非查询功能的参数块格式,诸如神经网络处理辅助指令的非查询功能。参考图3F描述了由非查询功能使用的参数块的一个示例,诸如神经网络处理辅助指令的非查询功能。
如图所示,在一个示例中,由例如神经网络处理辅助指令的非查询功能所采用的参数块350包括例如:
参数块版本号352:参数块的此字段(例如,字节0-1)指定参数块的版本和大小。在一个示例中,参数块版本号的位0到8被保留且将包含零,且参数块版本号的位9到15包含指定参数块的格式的无符号二进制整数。查询功能提供了指示可用的参数块格式的机制。当所指定的参数块的大小或格式不被模型支持时,例如十六进制0001的响应代码被存储在通用寄存器0中,并且指令通过设置例如条件代码1的条件代码来完成。参数块版本号由程序指定,并且在指令执行过程中不会被修改。
模型版本号354:参数块的该字段(例如,字节2)是标识执行指令的模型(例如,特定非查询功能)的无符号二进制整数。当继续标志(下面描述)是一时,为了解释参数块的继续状态缓冲器字段(下面描述)的内容以恢复操作的目的,模型版本号可以是对操作的输入。
继续标志356:参数块的该字段(例如,位63),当例如一时,指示操作部分完成,并且继续状态缓冲器的内容可以用于恢复操作。该程序用于在为了恢复操作的目的而要重新执行指令的情况下将继续标志初始化为零并且不修改继续标志;否则,结果是不可预测的。
如果在操作开始时设置了继续标志,并且自初始调用以来参数块的内容已经改变,则结果是不可预测的。
功能特定保存区域地址358:参数块的该字段(例如,字节56-63)包括功能特定保存区域的逻辑地址。在一个示例中,功能特定保存区域地址将在4K字节边界上对齐;否则,在通用寄存器0中设置例如0015十六进制的响应代码,并且指令以例如1的条件代码完成。地址受当前寻址模式支配。功能特定保存区域的大小取决于功能代码。
当整个功能特定保存区域与程序事件记录(PER)存储区指定重叠时,在适用时,识别功能特定保存区域的PER存储更改事件。当仅功能特定保存区域的一部分与PER存储区指定重叠时,发生以下情况中的是模型相关的:
在适用时,对于整个功能特定保存区域,识别PER存储更改事件。
在适用时,对于所存储的功能特定保存区域的部分,识别PER存储更改事件。
当整个参数块与PER存储区指定重叠时,在适用时,对于该参数块,识别PER存储更改事件。当仅一部分参数块与PER存储区指定重叠时,发生以下情况中的是模型相关的:
在适用时,对于整个参数块,识别PER存储更改事件。
在适用时,对于所存储的参数块的部分,识别PER存储更改事件。
在适用时,对于参数块,识别PER零地址检测事件。在一个示例中,零地址检测不应用于张量地址或功能特定保存区域地址。
输出张量描述符(例如,1-2)360/输入张量描述符(例如,1-3)365:参考图3G描述张量描述符的一个示例。在一个示例中,张量描述符360、365包括:
数据布局格式382:张量描述符的这个字段(例如,字节0)指定数据布局格式。有效数据布局格式包括例如(附加的、更少的和/或其他数据布局格式是可能的):
如果指定了不支持的或保留的数据布局格式,则将例如0010十六进制的响应代码存储在通用寄存器0中,并且通过设置例如1的条件代码来完成指令。
数据类型384:该字段(例如,字节1)指定张量的数据类型。下面描述支持的数据类型的示例(附加的、更少的和/或其他数据类型是可能的):
值
数据类型
数据大小(位)
0 NNP数据类型-1 16
1-255 保留 --
如果指定了不支持的或保留的数据类型,则将例如0011十六进制的响应代码存储在通用寄存器0中,并且通过设置例如1的条件代码来完成指令。
维度1-4索引大小386:总的来说,维度索引大小一到四指定了4D张量的形状。每个维度索引大小大于零并且小于或等于最大维度索引大小(340,图3E);否则,例如0012十六进制的响应代码被存储在通用寄存器0中,并且通过设置例如1的条件代码来完成指令。总张量大小小于或等于最大张量大小(342,图3E);否则,例如0013十六进制的响应代码被存储在通用寄存器0中,并且通过设置例如1的条件代码来完成指令。
在一个示例中,为了确定具有NNPA-数据-类型-1元素的4D特征张量(即,总张量大小)中的字节数量,使用以下:维度-索引-4*维度-索引-3*向上取整(ceil)(维度-索引-2/32)*32*向上取整(维度-索引-1/64)*64*2。
张量地址388:张量描述符的这个字段(例如,字节24-31)包括张量最左字节的逻辑地址。地址受当前寻址模式支配。
如果地址没有在相关联的数据布局格式的边界上对齐,那么将例如0014十六进制的响应代码存储在通用寄存器0中,并且通过设定条件代码(例如1)来完成指令。
在访问寄存器模式中,访问寄存器1指定包含存储器中所有有效(active)输入和输出张量的地址空间。
回到图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)和小数(fraction)406(例如,位7-15)。
NNP-数据-类型-1格式的示例性特性描述如下:
其中,≈表示该值是近似的,Nmax是(在大小上)最大可表示的有限数,而Nmin是(在大小上)最小可表示数。
关于NNP-数据-类型-1数据类型的进一步细节描述如下:
偏置指数:用于允许指数被表示为无符号数的偏置如上所示。如下面参考NNP-数据-类型-1数据类型的类所描述的,除了没有特殊的含义被附加到全零和全一的偏置指数之外,偏置指数类似于二进制浮点格式的特征。
有效数:NNP-数据-类型-1数的二进制点被认为在最左边小数位的左边。在二进制点的左边,存在隐式的单元位,其对于正常的数被认为是一,而对于零被认为是零。具有附加在左边的隐式单元位的部分是该数的有效数。
正常NNP-数据-类型-1的值是有效数乘以基数2的无偏置指数的幂。
非零数的值:非零数的值如下所示:
数类
值
正常数 ±2e-31x(1.f)
其中e是以十进制表示的有偏指数,f是以二进制表示的小数。
在一个实施例中,存在三类NNP-数据-类型-1数据,包括数字和相关的非数字实体。每个数据项包括符号、指数和有效数。指数被偏置,使得所有偏置指数是非负无符号数,并且最小偏置指数为零。有效数包括在二进制点左边的隐式单元位和显式小数。正的符号位为零,负的符号位为一。
所允许的所有非零有限数具有唯一的NNP-数据-类型-1表示。不存在亚正常数,其可能允许相同值的多个表示,并且不存在亚正常算术操作。这三个类别包括例如:
其中:-指示不应用,*指示隐式了单元位,NINF不是数字或无穷大。
下面描述关于每一类的进一步细节:
零:零具有零偏置指数和零小数。隐式单元位是零。
正常数:正常数可以具有任何值的偏置指数。当偏置指数为0时,该小数为非零。当偏置指数是全一时,该小数不是全一。其它偏置指数值可具有任何小数值。对于所有正常数,隐式的单元位是一。
NINF:NINF由所有一的偏置指数和所有一的小数表示。NINF表示不在NNP-数据-类型-1中的可表示值的范围内的值(即,具有6个指数位和9个小数位的被设计用于深度学习的16位浮点)。通常,NINF仅在计算期间被传播,使得它们将在结束时保持可见。
尽管在一个示例中支持NNP-数据-类型-1数据类型,但也可支持其他专用和非标准数据类型,以及一个或多个标准数据类型,包括但不限于:IEEE 754短精度、二进制浮点16位、IEEE半精度浮点、8位浮点、4位整数格式和/或8位整数格式,仅举几例。这些数据格式对于神经网络处理具有不同的质量。作为示例,较小的数据类型(例如,较少的位)可以被更快地处理并且使用较少的高速缓存/存储器,并且较大的数据类型在神经网络中提供了较高的结果准确性。要支持的数据类型可在查询参数块中(例如,在参数块330的安装数据类型字段336中)具有一个或多个分配的位。例如,在安装数据类型字段中指示了特定处理器所支持的专用或非标准数据类型,但是没有指示标准数据类型。在其他实施例中,还指示了一个或多个标准数据类型。其它变化是可能的。
在一个特定的示例中,安装数据类型字段336的位0被保留用于NNP-数据-类型-1数据类型,并且当其被设置为例如1时,其指示处理器支持NNP-数据-类型-1。在一个示例中,安装数据类型的位向量被配置为表示多达16种数据类型,其中,位被分配给每个数据类型。然而,在其他实施例中的位向量可以支持更多或更少的数据类型。此外,可以配置其中一个或多位被分配给数据类型的向量。许多示例是可能的和/或附加的,更少和/或其他数据类型可以在向量中被支持和/或指示。
在一个示例中,查询功能获得安装在模型相关处理器上的数据类型的指示,并通过例如在参数块330的安装数据类型字段336中设置一个或多个位来将该指示放置在参数块中。此外,在一个示例中,查询功能获得安装数据布局格式的指示(另一数据属性),并通过例如在安装数据布局格式字段338中设置一个或多个位来将该信息放置在参数块中。示例性数据布局格式包括,例如,4D特征张量布局和4D内核(kernel)张量布局。在一个示例中,4D特征张量布局由本文所述的功能使用,并且在一个示例中,卷积功能使用4D内核张量布局。这些数据布局格式以增加神经网络处理辅助指令的功能的执行中的处理效率的方式在用于张量的存储器中布置数据。例如,为了有效地操作,神经网络处理辅助指令使用以特定数据布局格式提供的输入张量。尽管提供了示例性布局,但是可以为本文描述的功能和/或其他功能提供附加的、更少的和/或其他布局。
特定处理器模型的布局的使用或可用性由安装数据布局格式的向量(例如,参数块330的字段338)提供。该向量例如是安装数据布局格式的位向量,其允许CPU向应用传达支持哪些布局。例如,位0被保留用于4D特征张量布局,并且当它被设置为例如1时,它指示处理器支持4D特征张量布局;并且位1被保留用于4D内核张量布局,并且当它被设置为例如1时,它指示处理器支持4D内核张量布局。在一个示例中,已安装数据布局格式的位向量被配置成表示多达16个数据布局,其中位被分配给每个数据布局。然而,在其他实施例中的位向量可以支持更多或更少的数据布局。此外,可以配置向量,其中一个或多个位被分配给数据布局。许多示例是可能的。下面描述关于4D特征张量布局和4D内核张量布局的进一步细节。再次,现在或将来可以使用其他布局来优化性能。
在一个示例中,神经网络处理辅助指令以4D张量,即具有4维的张量来操作。这些4D张量是从本文中描述的通用输入张量获得,以例如行为主的,即,当以增加的存储器地址顺序枚举张量元素时,在E2维度的索引将被增加并且重复步进通过E1维度之前,被称为E1的内部维度将首先步进通过E1-索引-大小值,该E1-索引-大小值从0开始到E1-索引-大小-1。称为E4维度的外部维度的索引最后增加。
具有较低维数的张量(例如3D或1D张量)将被表示为4D张量,其中4D张量的一个或多个维度超过设为1的原始张量维度。
这里描述了将维度为E4、E3、E2、E1的行为主通用4D张量转换为4D特征张量布局(这里也称为NNPA数据布局格式0 4D特征张量):
所得到的张量例如可以表示为例如64元素向量的4D张量或者具有以下维度的5D张量:
其中,/>表示向上取整(ceil)函数。(另一种方式:E4*E3*向上取整(E2/32)*32*向上取整(E1/64)*64*元素。)
通用张量的元素[e4][e3][e2][e1]可被映射到所得5D张量的以下元素:
其中/>是向下取整函数,并且mod是模(modulo)。(另一种方式:元素/>/> 其中,/>以及/>)
所得到的张量可能大于通用张量。在通用张量中没有相应元素的所得张量的元素被称为填充(pad)元素。
考虑64元素向量的NNPA数据布局格式0 4D特征张量的元素[fe4][fe1][fe3][fe2][fe0]或其等效表示为元素的5D张量。该元素是填充元素或者是在具有维度E4、E3、E2、E1的通用4D张量中的其对应元素,可以用下式确定:
如果fe2≥E2,则其为E2(或页)填充元素
否则,如果fe1*64+fe0≥E1,则为E1(或行)-填充元素
否则,通用4D张量中的对应元素为:
[fe4][fe3][fe2][fe1*64+fe0]
对于基于卷积神经网络的人工智能模型,特征张量的4维的含义通常可以被映射为:
E4:N-小批量(batch)的大小
E3:H-3D张量/图像的高度
E2:W-3D张量/图像的宽度
E1:C-3D张量的通道或类别
对于基于机器学习或循环神经网络的人工智能模型,4D特征张量的4维的含义通常可以被映射到:
E4:T-时间步长或模型的数量
E3:保留,一般设置为1
E2:Nmb-小批量大小
E1:L-特征
NNPA数据布局格式0提供,例如,具有4k字节数据块(页)的二维数据局部性以及用于所产生的张量的外部维度的4k字节块数据对齐。
填充元素字节对于输入张量被忽略,而对于输出张量不可预测。填充字节上的PER存储改变是不可预测的。
图5A-5C示出了4D特征张量布局的输入数据布局的一个示例,其具有维度E1、E2、E3和E4,图6A-6C描绘了4D特征张量布局的示例输出。参考图5A,示出了3D张量500,其具有维度E1、E2和E3。在一个示例中,每个3D张量包括多个2D张量502。每个2D张量502中的数字描述了其每个元素在存储器中的位置的存储器偏移(offset)。输入用于在存储器中布局原始张量(例如,图5A-5C的原始4D-张量)的数据,如图6A-6C所示,其对应于图5A-5C。
在图6A中,作为示例,存储器单元600(例如,存储器页)包括预选数量(例如,32个)的行602,其中的每一个由例如e2_page_idx标识;并且每行具有预选数量(例如64个)的元素604,每个元素由例如e1_page_idx标识。如果行不包括预选数量的元素,则它被填充606,称为行或E1填充;且如果存储器单元不具有预选数量的行,那么其被填充608,称为页或E2填充。作为示例,行填充是例如零或其他值,并且页填充是例如现有值、零或其他值。
在一个示例中,基于行的输出元素在其对应输入的E1方向上的元素位置,在存储器中(例如,在页中)提供该行的输出元素。例如,参考图5A,在图6A的页0的行0中示出了所示的三个矩阵的元素位置0、1和2(例如,在每个矩阵中的相同位置处的元素位置),等等。在该示例中,4D张量很小,并且表示4D张量的每个2D张量的所有元素都适合在一页中。然而,这仅是一个示例。2D张量可以包括一个或多个页。如果基于4D张量的重新格式化创建2D张量,则2D张量的页的数量基于4D张量的大小。在一个示例中,一个或多个向上取整函数被用于确定2D张量中的行数以及每行中的元素数量,这将指示要使用多少页。其它变化是可能的。
除了4D特征张量布局之外,在一个示例中,神经网络处理器可以支持4D内核张量,其重新布置4D张量的元素以在执行诸如卷积的某些人工智能(例如,神经网络处理辅助)操作时减少存储器访问和数据收集步骤的数量。作为示例,具有维度E4、E3、E2、E1的行为主通用4D张量被转换成NNPA数据布局格式1 4D内核张量(4D内核张量),如这里所述:
所得到的张量可以表示为例如64元素向量的4D张量或者具有以下维度的5D张量:
其中/>表示向上取整函数。(另一种方式:E4*E3*向上取整(E2/32)*32*向上取整(El/64)*64元素。)
通用张量的元素[e4][e3][e2[e1]可被映射到所得5D张量的以下元素:
其中/>表示向下取整函数,而mod是模。换一种方式:元素/> 其中
所得到的张量可能大于通用张量。在通用张量中没有相应元素的所得张量的元素被称为填充元素。
考虑64元素向量的NNPA数据布局格式1 4D特征张量的元素[fe1][fe4][fe3][fe2][fe0]或其等效表示为元素的5D张量。该元素是填充元素或者是在具有维度E4、E3、E2、E1的通用4D张量中的其对应元素,可以用下式确定:
如果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个元素)和最大张量大小(例如,8GB),并且将该信息分别包括在参数块(例如,参数块330)的字段340和342中。另外,更少和/或其他大小信息也可以由处理器(例如,神经网络处理器105)支持,并且因此被获得并被放置在参数块中,例如,字段340、342和/或其他字段。在其它实施例中,限制可以更小或更大,和/或大小可以以其它单位,诸如字节而不是元素、元素而不是字节等。此外,其他实施例允许每个维度的不同最大大小,而不是所有维度的相同最大大小。许多变化是可能的。
根据本发明的一个或多个方面,提供了一种查询功能,其传达与所选处理器(例如,神经网络处理器105)的特定模型有关的详细信息。详细信息包括例如与特定处理器有关的模型相关信息。(处理器也可支持标准数据属性,例如标准数据类型、标准数据布局等,它们是查询功能所暗示的并且不一定呈现,尽管在另一实施例中,查询功能可指示数据属性的所有或各种所选子集等)。尽管提供了示例信息,但在其它实施例中可提供其它信息。所获得的信息用于执行人工智能和/或其他处理,所获得的信息对于处理器的不同模型和/或不同处理器可以是不同的。通过一次或多次执行神经网络处理辅助指令并且指定非查询特定功能来执行在处理中采用的特定非查询功能。
下面描述由神经网络处理辅助指令支持的示例非查询功能的进一步细节(在其他实施例中,可以支持附加的、更少的和/或其他功能):
功能代码16:NNPA-ADD(加)
当NNPA-ADD功能被指定时,由张量描述符1描述的输入张量1的每个元素被添加到由张量描述符2描述的输入张量2的对应元素,并且所得到的和被放置在由输出张量描述符描述的输出张量的对应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码17:NNPA-SUB(减)
当NNPA-SUB功能被指定时,张量描述符2描述的输入张量2的每个元素从张量描述符1描述的输入张量1的相应元素中减去,并且得到的差被放在输出张量的相应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码18:NNPA-MUL(乘)
当NNPA-MUL功能被指定时,由张量描述符1描述的输入张量1的每个元素(乘数)和由张量描述符2描述的输入张量2的对应元素(被乘数)的乘积被放置在输出张量的对应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码19:NNPA-DIV(除)
当NNPA-DIV功能被指定时,由张量描述符1(被除数)描述的输入张量1的每个元素被张量描述符2描述的输入张量2(除数)的对应元素除,并且商被放置在输出张量的对应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码20:NNPA-MIN(最小)
当NNPA-MIN功能被指定时,由张量描述符1描述的输入张量1的每个元素与由张量描述符2描述的输入张量2的对应元素进行比较,两个值中较小的被放入输出张量描述符的对应元素中。如果两个值相等,则将该值被放置在输出张量的相应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码21:NNPA-MAX(最大)
当NNPA-MAX功能被指定时,由张量描述符1描述的输入张量1的每个元素与由张量描述符2描述的输入张量2的相应元素进行比较,两个值中的较大者被放置在输出张量描述符的相应元素中。如果两个值相同,则将该值置于输出张量的相应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码32:NNPA-LOG(自然对数)
当NNPA-LOG功能被指定时,对于由张量描述符1描述的输入张量的每个元素,如果该元素大于零,则由输出张量描述符描述的输出张量中的对应元素是该元素的自然对数。否则,输出张量中的对应元素不是可数字表示的,并且存储与目标数据类型中的负无穷相关联的值。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4-D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码33:NNPA-EXP(指数)
当NNPA-EXP功能被指定时,对于张量描述符1所描述的输入张量的每个元素,由输出张量描述符所描述的输出张量中的对应元素是该元素的指数。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1完成。
在一个示例中,输入张量1和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码49:NNPA-RELU(修正线性单元)
当NNPA-RELU功能被指定时,对于由张量描述符1描述的输入张量的每个元素,如果该元素小于或等于零,则由输出张量描述符描述的输出张量中的对应元素为零。否则,输出张量中的对应元素是输入张量中的元素和功能特定参数1中指定的限幅(clip)值中的最小值。
作为示例,功能特定参数1定义RELU操作的限幅值。例如,限幅值是在特定功能参数1的位16-31中。限幅值是在例如NNPA-数据-类型-1格式中指定的。限幅值零指示使用最大正值;换句话说,不执行限幅。如果指定负值,则识别通用操作数数据异常。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符2、输入张量描述符3和功能特定保存区域地址字段。在一个示例中,功能特定参数2-5包含零。
功能代码50:NNPA-TANH
当NNPA-TANH功能被指定时,对于张量描述符1所描述的输入张量的每个元素,输出张量描述符所描述的输出张量中的相应元素值是该元素的双曲正切。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1完成。
在一个示例中,输入张量1和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码51:NNPA-SIGMOID
当NNPA-SIGMOID功能被指定时,对于由张量描述符1描述的输入张量的每个元素,由输出张量描述符描述的输出张量中的对应元素是该元素的反曲。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以条件代码例如1完成。
在一个示例中,输入张量1和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码52:NNPA-SOFTMAX
当NNPA-SOFTMAX功能被指定时,对于输入张量1的维度-1中的每个向量,输出张量中的相应向量被计算,如下所述:
*计算出向量的最大值。
*计算向量的维度-1中的每个元素和上面计算的最大值之间的差的指数的总和。如果输入向量的维度-1中的元素和上面计算的最大值都是数值,并且差是非数字的,则该元素的指数结果被强制为零。
*对于向量中的每个元素,中间的商由该元素与上述计算出的最大值之间的差的指数除以上述计算出的总和形成。将可选的激活功能被应用于该中间的商以形成输出向量中的相应元素。
例如,对于维度-1中的所有维度-4-索引-大小x维度-3-索引-大小x维度-2-索引-大小向量,重复该过程。
在一个示例中,NNPA-SOFTMAX功能-特定参数1控制激活功能。作为示例,功能特定参数1的ACT字段(例如,位28-31)指定激活功能。示例激活功能包括:
如果针对ACT字段指定保留值,则报告例如F001十六进制的响应代码,并且操作以例如1的条件代码完成。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器0中,并且指令以例如1的条件代码完成。
在一个示例中,如果输入张量的维度-3-索引-大小不等于一,则存储例如F000十六进制的响应码,并且指令以例如1的条件码完成。
在一个示例中,输入张量1和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符2和输入张量描述符3。在一个示例中,功能特定参数2-5包含零。
8K字节功能特定保存区域可由该功能使用。
在一个实施例中,当获得维度-1中的向量时,取决于指定的数据布局格式,元素在存储器中可以是不连续的。如果输入张量1的维度-1向量的所有元素包含在指定数据类型中可表示的最大量(magnitude)值负数,则结果可能不太准确。
功能代码64:NNPA-BATCHNORM(批归一化)
当NNPA-BATCHNORM功能被指定时,对于输入1张量的维度-1中的每个向量,通过将向量中的每个元素乘以组成输入2张量的维度-1向量中的相应元素来计算输出张量的维度-1中的相应向量。然后,将全精度乘积加到构成输入3张量的维度-1向量中的相应元素,然后舍入到输出张量的指定数据类型的精度。例如,对于维度-1中的所有维度-4-索引-大小x维度-3-索引-大小x维度-2-索引-大小向量,重复该过程。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则响应代码,例如0010十六进制或0011十六进制,分别被设置在通用寄存器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通过指定的操作被减少以汇总(summarize)输入的窗口。通过在维度索引2和3上移动2D滑动窗口来选择输入的窗口。窗口的汇总是输出张量中的元素。滑动窗口维度由例如功能特定参数4和功能特定参数5来描述。当计算相邻的输出张量元素时,滑动窗口在输入1张量上移动的量被称为步幅。滑动窗口步幅由例如功能特定参数2和功能特定参数3指定。当NNPA-MAXPOOL2D操作被指定时,下面定义的MAX(最大)操作在窗口上执行。当NNPA-AVGPOOL2D操作被指定时,在窗口上执行下面定义的AVG操作。如果指定的填充类型有效,则将窗口中的所有元素被添加到用于计算结果输出元素的集合。如果指定的填充类型相同,则根据窗口的位置,仅可以将来自窗口的元素的子集添加到用于计算结果输出元素的集合。
在一个示例中,CollectElement(集合元素)操作将元素添加到元素集合中并递增集合中的元素的数量。每当窗口开始位置移动时,该集合被清空。不可预测的是,是否访问了执行操作不需要的元素。
MAX操作:在一个示例中,通过将集合中的所有元素彼此比较并返回最大值来计算窗口中的元素的集合的最大值。
AVG(平均)操作:在一个示例中,窗口中的元素的集合的平均值被计算为集合中的所有元素的总和除以集合中的元素的数量。
在一个示例中,如下分配字段:
*池化功能特定参数1控制填充类型。例如,功能特定参数1的位29-31包括指定填充类型的PAD(填充)字段。示例类型包括例如:
如果为PAD字段指定保留值,则报告例如十六进制F000的响应代码,并且操作以例如1的条件代码完成。
在一个示例中,功能特定参数1的位位置0-28被保留并且将包含零。
*功能特定参数2包含例如指定维度2步幅(D2S)的32位无符号二进制整数,该D2S指定滑动窗口在维度2中移动的元素的数量。
*功能特定参数3包含例如指定维度3步幅(D3S)的32位无符号二进制整数,该D3S指定滑动窗口在维度3中移动的元素的数量。
*功能特定参数4包含例如指定维度2窗口大小(D2WS)的32位无符号二进制整数,该D2WS指定滑动窗口所包含的维度2中的元素的数量。
*功能特定参数5包含例如指定维度3窗口大小(D3WS)的32位无符号二进制整数,该D3WS指定滑动窗口所包含的维度3中的元素的数量。
在一个示例中,功能特定参数2-5中的指定值将小于或等于最大维度索引大小,并且功能特定参数4-5中的指定值将大于零;否则,报告响应代码,例如十六进制0012,并且操作以条件代码(例如1)完成。
如果维度2步幅和维度3步幅都是零,并且维度2窗口大小或维度3窗口大小大于例如1024,则存储响应代码,例如十六进制F001。如果维度2步幅和维度3步幅都大于例如零,并且维度2窗口大小或维度3窗口大小大于例如64,则存储响应代码,例如十六进制F002。如果维度2步幅和维度3步幅都大于例如零,并且维度2步幅或维度3步幅大于例如30,则存储响应代码,例如十六进制F003。如果维度2步幅和维度3步幅都大于例如零,并且输入张量维度2索引大小或输入张量维度3索引大小大于例如1024,则存储响应代码,例如十六进制F004。对于所有上述条件,指令以条件代码(例如1)完成。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP数据类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码(例如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索引大小之间的以下关系(Pooling Valid Padding):
其中,D2WS是维度2窗口大小,D3WS是维度3窗口大小。
忽略输出张量描述符2、输入张量描述符2和3以及功能特定保存区域地址字段。
功能代码96:NNPA-LSTMACT(长短期记忆激活)
当指定NNPA-LSTMACT功能时,由输入张量1描述符描述的输入张量1被分成用于每个维度4索引值的四个子张量,连同由输入张量2描述符描述的输入张量2被分成用于每个维度4索引值的四个子张量,并且由输入张量3描述符描述的输入张量3是针对LSTMACT操作的输入。在LSTMACT操作结束时,将结果写入由输出张量1描述符描述的输出张量1和由输出张量2描述符描述的输出张量2。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP数据类型-1(例如,数据类型=0),则在通用寄存器0中分别设置响应代码十六进制0010或十六进制0011,并且指令以条件代码(例如1)完成。
在一个实施例中,以下条件为真,否则,识别到通用操作数数据异常:
*输入张量3的维度4索引大小与输出张量1、2将等于例如一。
*输入张量1和输入张量2的维度4索引大小将等于例如四。
*例如所有输入张量和两个输出张量的维度3索引大小将等于例如一。
*例如所有输入张量和两个输出张量的数据布局和数据类型将相同。
*例如所有输入张量和两个输出张量的维度1索引大小将相同。
*例如所有输入张量和两个输出张量的维度2索引大小将相同。
在一个示例中,忽略功能特定保存区域地址字段。在一个示例中,功能特定参数1-5包含零。
功能代码97:NNPA-GRUACT(门控循环单元激活)
当NNPA-GRUACT功能被指定时,由输入张量1描述符描述的输入张量1被分成用于每个维度4索引值的三个子张量,连同由输入张量2描述符描述的输入张量2被分成用于每个维度4索引值的三个子张量,并且由输入张量3描述符描述的输入张量3是针对GRUACT操作的输入。在GRUACT操作结束时,存储由输出张量描述符描述的输出张量。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP数据类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码(例如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包括指定填充类型的PAD字段。示例类型如下:
如果为PAD字段指定保留值,则报告例如十六进制F000的响应代码,并且操作以例如1的条件代码完成。
此外,在一个示例中,NNPA-CONVOLUTION功能特定参数1的位24-27包括指定激活功能的激活字段。示例功能如下:
如果RELU的激活功能被指定,则如下确定结果输出元素值:如果中间总和值小于或等于零,则输出张量中的对应元素为零;否则,输出张量中的对应元素是功能特定参数4中指定的中间总和值和限幅值中的最小值。
如果为ACT字段指定保留值,则报告例如十六进制F001的响应代码,并且操作以例如1的条件代码完成。
*功能特定参数2包含例如指定维度2(D2S)步幅的32位无符号二进制整数,该维度2步幅指定滑动窗口在维度2中移动的元素的数量。
*功能特定参数3包含例如指定维度3(D3S)步幅的32位无符号二进制整数,该维度3步幅指定滑动窗口在维度3中移动的元素的数量。
*功能特定参数2-3中的指定值将小于最大维度索引大小;否则,报告响应代码,例如十六进制0012,并且操作以条件代码(例如1)完成。
*功能特定参数4定义用于可选的RELU操作的限幅值。在一个示例中,限幅值是在功能特定参数4的位16-31中。
在一个示例中,如果ACT字段为零,则忽略该字段。如果ACT字段指定RELU,则以NNP-数据-类型-1格式指定限幅值。零限幅值指示使用最大正值;换句话说,不执行限幅。如果指定非零,则识别通用操作数数据异常。
在一个示例中,如果在除了输入张量2之外的任何指定张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在输入张量2中的指定数据布局没有指定4D内核张量(例如,数据布局=1),则在通用寄存器0中设置响应代码,例如十六进制0010,并且指令以条件代码(例如1)完成。在一个示例中,如果在任何指定张量描述符中的数据类型没有指定NNP数据类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如十六进制0011,并且指令以条件代码(例如1)完成。
如果输入张量2的维度2步幅和维度3步幅都是零,并且维度3索引大小或维度4索引大小大于例如448,则存储响应代码,例如十六进制F002。如果维度2步幅和维度3步幅都大于零,并且输入张量2的维度3索引大小或维度4索引大小大于例如64,则存储响应代码,例如十六进制F003,并且操作以条件代码(例如1)完成。如果维度2步幅或维度3步幅大于例如13,则存储响应代码,例如十六进制F004,并且操作以条件代码(例如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索引大小之间的以下关系:
其中:
*当所指定的填充有效时,在一个示例中(卷积有效填充),满足输入1张量的维度2索引大小和维度3索引大小、输入2张量的维度3索引大小和维度4索引大小、与输出张量之间的以下关系:
其中:
在一个示例中,忽略输出张量描述符2和功能特定保存区域地址字段。在一个示例中,功能特定参数5包含零。
功能代码113:NNPA-MATMUL-OP(矩阵乘法操作)
当NNPA-MATMUL-OP功能被指定时,在一个示例中,如下所述计算由输出张量描述符描述的输出张量中的每个元素:
*使用下面描述的获得-维度-1-向量操作,从由输入张量1描述符描述的输入张量1选择维度1向量。
*使用下面描述的获得-维度-2-向量操作,从由输入张量2描述符描述的输入张量2选择维度2向量。
*使用下面描述的点积操作来计算维度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中的操作字段。操作字段指定所执行的操作。示例操作如下所示:
在一个示例中,对于加法的操作类型,输入张量3元素被加到中间点积。对于比较的操作类型,将中间点积与输入张量3元素进行比较,并且如果比较为真,则将结果设置为例如+1的值;否则,在为输出张量指定的数据类型中,它被设置为例如+0的值。
在一个示例中,OPERATION字段的所有其他值都被保留。如果为OPERATION字段指定了保留值,则报告例如十六进制F000的响应代码,并且操作以例如1的条件代码完成。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP数据类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码(例如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向量的点积。
*由输入张量3描述符所描述的输入张量3的元素,具有与输出张量元素相同的维度索引1值,被加入到先前计算的点积,并存储在输出张量中。
获得-维度-1-向量操作:对于指定的输出元素,从输入-1张量中选择维度-1向量,其中输入维度-4索引是输出维度-4-索引,输入-维度-3-索引是输出维度-3索引,并且输入维度-2-索引是输出维度-2-索引。
获得-维度-2-向量操作:对于指定的输出元素,从输入-2张量选择维度-2向量,其中输入维度-4-索引是一,输入维度-3-索引是输出维度-3-索引,并且输入维度-1-索引是输出维度-1-索引。
点积操作:计算相同大小和数据类型的两个向量的中间乘积作为输入向量1中的每个元素与输入向量2的对应元素的乘积的总和。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP数据类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码(例如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.2NNPA-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的计算环境基于由纽约Armonk的国际商业机器公司提供的指令集架构。然而,z/Architecture指令集架构仅是一个示例架构。同样,计算环境可以基于其它架构,包括但不限于/>x86架构、国际商业机器公司的其它架构和/或其它公司的架构。Intel是英特尔公司或其子公司在美国和其它国家的商标或注册商标。
在一个示例中,计算环境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的一个示例是由纽约Armonk的国际商业机器公司提供的处理器资源/系统管理器(PR/SMTM)。PR/SM是国际商业机器公司在至少一个管辖区内的商标或注册商标。
每个逻辑分区20能够作为单独的系统。即,每个逻辑分区可以被独立地重置,运行访客操作系统23(诸如由纽约Armonk的国际商业机器公司提供的操作系统),或其它控制代码24(诸如耦合设施控制代码(CFC)),并与不同的程序25一起操作。在逻辑分区中运行的操作系统或应用程序看似访问完全且完整的系统,但在现实中,仅其一部分可用。尽管z/OS操作系统是作为示例提供的,但是根据本发明的一个或多个方面,也可以使用由国际商业机器公司和/或其它公司提供的其它操作系统。
存储器12耦合到例如CPU 13(图8A),其是可分配给逻辑分区的物理处理器资源。例如,逻辑分区20可包括一个或多个逻辑处理器,每个逻辑处理器代表可被动态分配给逻辑分区的物理处理器资源13的全部或一部分。
在又一实施例中,中央电子复合体提供虚拟机支持(具有或不具有逻辑分区支持)。如图8C所示,中央电子复合体11的存储器12包括例如一个或多个虚拟机26、管理虚拟机的虚拟机管理器(例如管理程序27)以及处理器固件28。管理程序27的一个示例是由纽约Armonk的国际商业机器公司提供的管理程序。管理程序有时被称为主机。z/VM是国际商业机器公司在至少一个管辖权区的商标或注册商标。
中央电子复合体的虚拟机支持提供了操作大量虚拟机26的能力,每个虚拟机能够与不同的程序29一起操作并且运行访客操作系统30,诸如操作系统。每个虚拟机26能够用作单独的系统。也就是说,每个虚拟机可以被独立地重置,运行访客操作系统,并且利用不同的程序来操作。在虚拟机中运行的操作系统或应用程序看似访问整个系统,但是实际上,仅有一部分是可用的。尽管作为示例提供z/VM和Linux,但是根据本发明的一个或多个方面,可以使用其它虚拟机管理器和/或操作系统。注册商标/>是根据来自Linus Torvalds的专有被许可人Linux基金会的分许可人在全球基础上使用的。
参考图9A描述了用于结合和使用本发明的一个或多个方面的计算环境的另一实施例。在该示例中,计算环境36包括经由例如一个或多个总线40和/或其它连接彼此耦合的例如本机中央处理单元(CPU)37、存储器38、以及一个或多个输入/输出设备和/或接口39。作为示例,计算环境36可包括纽约Armonk的国际商业机器公司提供的处理器;加利福尼亚州Palo Alto的惠普公司提供的具有/>II处理器的HPSuperdome;和/或基于由国际商业机器公司、惠普、英特尔公司、甲骨文和/或其它公司提供的架构的其它机器。PowerPC是国际商业机器公司在至少一个管辖区内的商标或注册商标。Itanium是英特尔公司或其子公司在美国和其它国家的商标或注册商标。
本机中央处理单元37包括一个或多个本机寄存器41,诸如在环境内的处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示在任何特定时间点的环境状态的信息。
此外,本机中央处理单元37执行存储在存储器38中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器38中的仿真器代码42。该代码使得在一个架构中配置的计算环境能够仿真另一架构。例如,仿真器代码42允许基于z/Architecture指令集架构之外的架构的机器(诸如PowerPC处理器、HP Superdome服务器或其它)来仿真z/Architecture指令集架构,并且执行基于z/Architecture指令集架构开发的软件和指令。
参考图9B描述了与仿真器代码42有关的进一步细节。存储在存储器38中的访客指令43包括软件指令(例如,与机器指令相关),其被开发为在不同于本机CPU37的架构中执行。例如,访客指令43可以被设计为基于z/Architecture指令集架构在处理器上执行,但是替代地,在本机CPU37上被仿真,其可以是例如Intel Itanium II处理器。在一个示例中,仿真器代码42包括指令获取例程44,以从存储器38获得一个或多个访客指令43,并且可选地为所获得的指令提供本地缓冲。它还包括指令转译例程45,以确定所获得的访客指令的类型,并且将访客指令转译成一个或多个对应的本机指令46。该转译包括例如标识要由访客指令执行的功能以及选择(一个或多个)本机指令来执行该功能。
此外,仿真器代码42包括仿真控制例程47以使得执行本机指令。仿真控制例程47可以使本机CPU37执行仿真一个或多个先前获得的访客指令的本机指令的例程,并且在该执行结束时,将控制返回到指令获取例程以仿真下一个访客指令或一组访客指令的获得。本机指令46的执行可包括将数据从存储器38加载到寄存器中;将数据从寄存器存储回存储器;或者执行由转换例程确定的某种类型的算术或逻辑操作。
例如,每个例程以软件实现,该软件存储在存储器中并由本机中央处理单元37执行。在其它示例中,例程或操作中的一个或多个以固件、硬件、软件或其某种组合实现。被仿真的处理器的寄存器可使用本机CPU的寄存器41或通过使用存储器38中的位置来仿真,在实施例中,访客指令43、本机指令46和仿真器代码42可驻留在相同的存储器中,或者可分配在不同的存储器设备之间。
根据本发明的一个或多个方面,可被仿真的指令包括本文描述的神经网络辅助处理指令。此外,根据本发明的一个或多个方面,可以仿真其它指令和/或神经网络处理一个或多个方面。
上述计算环境仅是可以使用的计算环境的示例。可以使用其它环境,包括但不限于,非分区环境、分区环境、云环境和/或仿真环境;实施例不限于任何一种环境。尽管在此描述了计算环境的各种示例,但是本发明的一个或多个方面可以与许多类型的环境一起使用。这里提供的计算环境仅仅是示例。
每个计算环境能够被配置为包括本发明的一个或多个方面。
一个或多个方面可以涉及云计算。
可理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,该可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者进行人工交互。
广域网接入:能力在网络上可用,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。
资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明性。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。应用可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户机界面从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,该软件可包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图10,描述了说明性的云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点52,本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点52可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。可理解,图10中所示的计算设备54A-N的类型仅旨在说明,并且计算节点52和云计算环境50可以在任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图11,示出了由云计算环境50(图10)提供的一组功能抽象层。可预先理解,图12中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层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、拇指驱动器和其它存储介质等)可以直接或通过中间I/O控制器耦合到系统。网络适配器也可耦合到系统,以使数据处理系统能够通过中间专用或公共网络耦合到其它数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是几种可用的网络适配器类型。
本文所用的术语仅是为了描述特定实施例的目的,而不是旨在进行限制。如本文所用,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,在本说明书中使用术语“包括”和/或“包含”时,指定所描述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
如果存在,下面的权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与具体要求保护的其它要求保护的元件组合执行功能的任何结构、材料或动作。出于说明和描述的目的呈现了对一个或多个实施例的描述,但是该描述不旨在是穷尽的或者限于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域的其它普通技术人员能够理解具有适合于所设想的特定用途的各种修改的各种实施例。
Claims (21)
1.一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括:
一个或多个计算机可读存储介质和共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令用于执行一种方法,所述方法包括:
由第一处理器处理被配置为执行多个功能的指令,所述多个功能包括用于操作一个或多个张量的功能;
确定所述多个功能中的要被执行的功能;以及
由所述第一处理器向第二处理器提供与所述功能有关的信息,所述功能要由所述第二处理器执行,并且其中,所述第一处理器和所述第二处理器共享提供存储一致性的存储器。
2.根据权利要求1所述的计算机程序产品,其中,所述方法还包括:确定所述第一处理器还是所述第二处理器要执行所述功能,并且其中,基于确定所述功能要由所述第二处理器执行来执行所述提供。
3.根据权利要求1或2所述的计算机程序产品,其中,确定所述第一处理器还是所述第二处理器要执行所述功能包括:确定由所述指令指定的所述功能是非查询功能还是查询功能,其中,基于所述功能是查询功能,所述第一处理器要执行所述功能,并且基于所述功能是非查询功能,所述第二处理器要执行所述功能。
4.根据前述权利要求中的任一项所述的计算机程序产品,其中,由所述第一处理器处理所述指令包括:同步执行所述指令。
5.根据前述权利要求中的任一项所述的计算机程序产品,其中,所述方法还包括:
确定所述功能的执行是否已被中断;以及
基于确定所述功能的执行已被中断,获得选择缓冲器中的用于恢复所述功能的执行的信息。
6.根据权利要求5所述的计算机程序产品,其中,确定所述功能的执行是否已被中断包括:检查要在重新执行所述指令时使用的参数块中所包括的继续标志。
7.根据权利要求5所述的计算机程序产品,其中,所述选择缓冲器在要在重新执行所述指令时使用的参数块中被指示。
8.根据前述权利要求中的任一项所述的计算机程序产品,其中,所述一个或多个张量具有针对所述第二处理器优化的格式。
9.根据前述权利要求中的任一项所述的计算机程序产品,其中,被提供给所述第二处理器的所述信息包括存储器地址信息,所述存储器地址信息用于获得要由要执行的所述功能所操作的所述一个或多个张量中的至少一个张量。
10.根据前述权利要求中的任一项所述的计算机程序产品,其中,所述指令指定提供与处理要执行的所述功能有关的信息的参数块,所述参数块取决于要执行的所述功能。
11.一种用于促进计算环境内的处理的计算机系统,所述计算机系统包括:
存储器;以及
与所述存储器通信的至少一个处理器,其中,所述计算机系统被配置为执行一种方法,所述方法包括:
由第一处理器处理被配置为执行多个功能的指令,所述多个功能包括用于操作一个或多个张量的功能;
确定所述多个功能中的要被执行的功能;以及
由所述第一处理器向第二处理器提供与所述功能有关的信息,所述功能要由所述第二处理器执行,其中,所述第一处理器和所述第二处理器共享提供存储一致性的存储器。
12.根据权利要求11所述的计算机系统,其中,所述方法还包括:确定所述第一处理器还是所述第二处理器要执行所述功能,并且其中,基于确定所述功能要由所述第二处理器执行来执行所述提供。
13.根据权利要求11或12所述的计算机系统,其中,确定所述第一处理器还是所述第二处理器要执行所述功能包括:确定由所述指令指定的所述功能是非查询功能还是查询功能,其中,基于所述功能是查询功能,所述第一处理器要执行所述功能,并且基于所述功能是非查询功能,所述第二处理器要执行所述功能。
14.根据权利要求11至13中的任一项所述的计算机系统,其中,所述方法还包括:
确定所述功能的执行是否已被中断;以及
基于确定所述功能的执行已被中断,获得选择缓冲器中的用于恢复所述功能的执行的信息。
15.根据权利要求11至14中的任一项所述的计算机系统,其中,由所述第一处理器处理所述指令包括:同步执行所述指令。
16.一种促进计算环境内的处理的计算机实现的方法,所述计算机实现的方法包括:
由第一处理器处理被配置为执行多个功能的指令,所述多个功能包括用于操作一个或多个张量的功能;
确定所述多个功能中的要被执行的功能;以及
基于确定所述功能要由第二处理器执行,由所述第一处理器向所述第二处理器提供与所述功能有关的信息,其中,所述第一处理器和所述第二处理器共享提供存储一致性的存储器。
17.根据权利要求16所述的计算机实现的方法,还包括:确定所述第一处理器还是所述第二处理器要执行所述功能,并且其中,基于确定所述功能要由所述第二处理器执行来执行所述提供。
18.根据权利要求16或17所述的计算机实现的方法,其中,确定所述第一处理器还是所述第二处理器要执行所述功能包括:确定由所述指令指定的所述功能是非查询功能还是查询功能,其中,基于所述功能是查询功能,所述第一处理器要执行所述功能,并且基于所述功能是非查询功能,所述第二处理器要执行所述功能。
19.根据权利要求16至18中的任一项所述的计算机实现的方法,还包括:
确定所述功能的执行是否已被中断;以及
基于确定所述功能的执行已被中断,获得选择缓冲器中的用于恢复所述功能的执行的信息。
20.根据权利要求16至19中的任一项所述的计算机实现的方法,其中,由所述第一处理器处理所述指令包括:同步执行所述指令。
21.一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括:
一个或多个计算机可读存储介质和共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令用于执行一种方法,所述方法包括:
处理被配置为执行多个功能的指令,所述多个功能包括用于操作一个或多个输入张量的功能,所述一个或多个输入张量具有针对选择处理器优化的格式,所述选择处理器要被用于执行所述多个功能中的一个或多个功能;
从所述多个功能中确定要被执行的特定功能;以及
启动所述特定功能的执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/350,393 | 2021-06-17 | ||
US17/350,393 US11669331B2 (en) | 2021-06-17 | 2021-06-17 | Neural network processing assist instruction |
PCT/EP2022/065677 WO2022263282A1 (en) | 2021-06-17 | 2022-06-09 | Neural network processing assist instruction |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117396845A true CN117396845A (zh) | 2024-01-12 |
Family
ID=82321359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280038395.7A Pending CN117396845A (zh) | 2021-06-17 | 2022-06-09 | 神经网络处理辅助指令 |
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 |
US9710401B2 (en) | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
US10728169B1 (en) | 2015-06-26 | 2020-07-28 | Amazon Technologies, Inc. | Instance upgrade migration |
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 |
US10346350B2 (en) | 2015-10-08 | 2019-07-09 | Via Alliance Semiconductor Co., Ltd. | Direct execution by an execution unit of a micro-operation loaded into an architectural register file by an architectural instruction of a processor |
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 |
CN110462602B (zh) | 2017-04-07 | 2024-04-02 | 英特尔公司 | 用于多处理器平台上的深度学习网络执行流水线的方法和装置 |
WO2018193354A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Wavelet representation 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 |
US10642835B2 (en) | 2017-08-14 | 2020-05-05 | Sisense Ltd. | System and method for increasing accuracy of approximating query results using neural networks |
US11216437B2 (en) | 2017-08-14 | 2022-01-04 | Sisense Ltd. | System and method for representing query elements in an artificial neural network |
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 |
EP3737443A4 (en) | 2018-01-10 | 2021-10-27 | Lynjohnston, Llc | SYSTEMS AND PROCESSES ASSOCIATED WITH A COMPACT INJECTOR |
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 |
SG11202007532TA (en) | 2018-02-16 | 2020-09-29 | Governing Council Univ Toronto | Neural network accelerator |
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 |
US10620951B2 (en) | 2018-06-22 | 2020-04-14 | Intel Corporation | Matrix multiplication acceleration of sparse matrices using column folding and squeezing |
US10832139B2 (en) | 2018-06-22 | 2020-11-10 | Moffett Technologies Co. Limited | Neural network acceleration and embedding compression systems and methods with activation sparsification |
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 |
JP7423644B2 (ja) | 2019-03-15 | 2024-01-29 | インテル コーポレイション | 行列アクセラレータアーキテクチャのためのスパース最適化 |
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 | 百度在线网络技术(北京)有限公司 | 一种数据处理方法及装置 |
TWI701612B (zh) | 2019-06-19 | 2020-08-11 | 創鑫智慧股份有限公司 | 用於神經網路中激勵函數的電路系統及其處理方法 |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11907827B2 (en) | 2019-06-28 | 2024-02-20 | Intel Corporation | Schedule-aware tensor distribution module |
US11568238B2 (en) | 2019-06-28 | 2023-01-31 | Amazon Technologies, Inc. | Dynamic processing element array expansion |
EP3994621A1 (en) | 2019-07-03 | 2022-05-11 | Huaxia General Processor Technologies Inc. | Instructions for operating accelerator circuit |
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 JP JP2023564226A patent/JP2024522435A/ja active Pending
- 2022-06-09 CA CA3213333A patent/CA3213333A1/en active Pending
- 2022-06-09 KR KR1020237037676A patent/KR20230160935A/ko unknown
- 2022-06-09 AU AU2022293984A patent/AU2022293984A1/en active Pending
- 2022-06-09 CN CN202280038395.7A patent/CN117396845A/zh active Pending
- 2022-06-09 WO PCT/EP2022/065677 patent/WO2022263282A1/en active Application Filing
- 2022-06-09 EP EP22735345.5A patent/EP4356242A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI807767B (zh) | 2023-07-01 |
AU2022293984A1 (en) | 2023-11-09 |
US11669331B2 (en) | 2023-06-06 |
EP4356242A1 (en) | 2024-04-24 |
WO2022263282A1 (en) | 2022-12-22 |
KR20230160935A (ko) | 2023-11-24 |
JP2024522435A (ja) | 2024-06-21 |
CA3213333A1 (en) | 2022-12-22 |
TW202301107A (zh) | 2023-01-01 |
US20220405101A1 (en) | 2022-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117425899A (zh) | 单个函数执行组合的矩阵乘法和偏置相加操作 | |
CN117396847A (zh) | 采用隐含的舍入模式的向/从所选择的数据类型的数据转换 | |
TW202301200A (zh) | 用於遞歸神經網路中使用之串連輸入/輸出張量 | |
US12008395B2 (en) | Program event recording storage alteration processing for a neural network accelerator instruction | |
CN117396845A (zh) | 神经网络处理辅助指令 | |
TWI840785B (zh) | 用於在指令執行期間偵測之無效值之例外摘要 | |
TWI804285B (zh) | 查詢模型相依資訊之指令 | |
US11734013B2 (en) | Exception summary for invalid values detected during instruction execution | |
TWI840790B (zh) | 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 | |
AU2022292046B2 (en) | Reformatting of tensors to provide sub-tensors | |
CN117413279A (zh) | 用于在单次调用中执行多个操作的循环神经网络神经元激活 | |
CN117396846A (zh) | 具有不同操作参数验证的执行多个操作的单个功能 | |
CN117461038A (zh) | 单个函数执行组合的卷积和选择操作 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40099080 Country of ref document: HK |