CN117396902A - 用于查询模型相关信息的指令 - Google Patents

用于查询模型相关信息的指令 Download PDF

Info

Publication number
CN117396902A
CN117396902A CN202280038617.5A CN202280038617A CN117396902A CN 117396902 A CN117396902 A CN 117396902A CN 202280038617 A CN202280038617 A CN 202280038617A CN 117396902 A CN117396902 A CN 117396902A
Authority
CN
China
Prior art keywords
tensor
data
model
processor
dimension
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
Application number
CN202280038617.5A
Other languages
English (en)
Inventor
T·什莱格尔
L·阿尔巴拉卡特
J·布拉德伯里
C·里彻特纳
S·魏斯豪普特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN117396902A publication Critical patent/CN117396902A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Neurology (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

执行指令以执行查询功能。该执行包括获得与处理器的选择模型相关的信息。该信息包括处理器的选择模型的至少一个模型相关数据属性。该信息被放置在选择位置中,以供至少一个应用在执行一个或多个功能时使用。

Description

用于查询模型相关信息的指令
技术领域
一个或多个方面一般涉及促进计算环境内的处理,并且尤其涉及改进这样的处理。
背景技术
为了增强数据和/或计算密集型计算环境中的处理,利用协处理器,诸如人工智能加速器(也称为神经网络处理器或神经网络加速器)。这样的加速器提供了在执行例如相关计算(诸如对矩阵或张量的计算)中使用的大量计算能力。
作为示例,张量计算被用在复杂处理中,包括深度学习,其是机器学习的子集。深度学习或机器学习(即人工智能的一个方面)被用于各种技术中,包括但不限于工程、制造、医学技术、汽车技术、计算机处理等。
张量和张量计算使得大量数据和/或详细数据能够被输入到深度学习处理中。然而,在深度学习处理中使用的加速器受到去往/来自加速器的数据带宽的限制。当前,为了解决这种限制,采用了加速器处的数据局部性和数据重用。在张量的使用和/或使用这种张量的处理中的进步将改进使用机器学习的技术,包括计算机处理。
发明内容
通过提供一种用于促进计算环境内的处理的计算机程序产品,克服了现有技术的缺点,并且提供了附加的优点。该计算机程序产品包括一个或多个计算机可读存储介质和共同存储在该一个或多个计算机可读存储介质上以执行方法的程序指令。该方法包括执行指令以执行查询功能。该执行包括获得与处理器的选择模型相关的信息。该信息包括处理器的选择模型的至少一个模型相关数据属性。该信息被放置在选择位置中,以供至少一个应用程序在执行一个或多个功能时使用。
查询功能提供使机器能够适应存在于机器的特定模型上的能力的信息,并便于解决涉及大数据的问题。这改进了使用机器学习的技术,包括计算机处理。
通过执行查询功能,获得至少一个数据属性的模型相关信息,并且该模型相关信息可用于使用具有至少一个数据属性的数据来执行一个或多个功能。通过为至少一个数据属性准备应用,该至少一个数据属性的知识节省了执行时间,允许应用适应数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,并提高了系统性能。
当至少一个数据属性涉及张量和/或处理使用张量时,查询功能提供对张量的使用和/或使用这种张量的处理的增强。
在一个示例中,至少一个模型相关数据属性包括处理器的选择模型的一个或多个支持的数据类型。通过获得支持的数据类型,针对由处理器的特定模型支持的数据类型来定制应用,从而允许应用适应于数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,提高了系统性能。
选择位置包括例如至少一个应用可访问的参数块,并且一个或多个支持的数据类型被包括在参数块的一个或多个字段中。通过使参数块可由至少一个应用访问,应用可学习所支持的数据类型并在处理中使用该知识,从而允许应用适应于数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,提高了系统性能。
在一个示例中,至少一个模型相关数据属性包括处理器的选择模型的一个或多个支持的数据布局格式。通过获得一个或多个支持的数据布局格式,针对由处理器的特定模型支持的一个或多个数据布局格式来定制应用,从而允许应用适应于数据、数据布局和/或数据大小,以能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,提高了系统性能。
选择位置包括例如至少一个应用可访问的参数块,并且一个或多所支持的数据布局格式被包括在参数块的一个或多个字段中。通过使参数块可由至少一个应用访问,应用可学习一个或多个支持的数据布局格式,并在处理中使用该知识,从而允许应用适应于数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,提高了系统性能。
在一个示例中,至少一个模型相关数据属性包括处理器的选择模型的一个或多个支持数据大小。通过获得支持的数据大小,针对由处理器的特定模型支持的一个或多个数据大小定制应用,从而允许应用适应于数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,提高了系统性能。
选择位置包括例如至少一个应用可访问的参数块,并且一个或多个支持的数据大小被包括在参数块的一个或多个字段中。通过使参数块可由至少一个应用访问,应用可学习所支持的数据大小并在处理中使用该知识,从而允许应用适应于数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,提高了系统性能。
作为示例,一个或多个支持的数据大小包括最大维度索引大小和最大张量大小。
作为示例,选择位置包括至少一个应用可访问的参数块,并且参数块包括多个字段以存储选择模型的多个模型相关数据属性。多个字段包括:例如包括处理器的选择模型的一个或多个支持的数据类型的安装数据类型字段、包括处理器的选择模型的一个或多个支持的数据布局格式的安装数据布局格式字段、以及包括处理器的选择模型的支持数据大小的一个或多个字段。通过使参数块可由至少一个应用访问,应用可以学习所支持的数据类型、数据布局格式和数据大小,并在处理中使用该知识,允许应用适应于数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,提高了系统性能。
在一个示例中,参数块还包括安装功能向量字段和安装参数块格式字段中的至少一个。安装功能向量字段指示处理器的选择模型的一个或多个支持功能,并且安装参数块格式字段指示参数块的一个或多个支持格式。
本文还描述并要求保护与一个或多个方面相关的计算机实现的方法和系统。此外,本文还描述并要求保护与一个或多个方面相关的服务。
通过本文描述的技术实现了额外的特征和优点。在本文中详细描述其它实施例和方面,且将其视为所要求保护的方面的一部分。
附图说明
在说明书结尾处的权利要求中作为示例特别指出并清楚地要求了一个或多个方面。从结合附图的以下详细描述中,一个或多个方面的前述和目的、特征和优点将变得显而易见,在附图中:
图1A描绘了用于结合和使用本发明的一个或多个方面的计算环境的一个示例;
图1B描绘了根据本发明的一个或多个方面的图1A的处理器的进一步细节;
图2描绘了根据本发明的一个或多个方面的查询功能的处理的一个示例;
图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)的一部分,其由诸如通用处理器的处理器上的程序分派。它可以由通用处理器执行,和/或指令的一个或多个功能可以由耦合到通用处理器或作为通用处理器的一部分的专用处理器(诸如被配置用于某些功能的协处理器)执行。其它变化也是可能的。
包括和使用查询功能的指令的一个示例是神经网络处理辅助指令,其用于提供与张量计算和/或其它操作相关的功能。下面进一步描述该指令的示例。尽管神经网络处理辅助指令是使用查询功能的指令的示例,但是其他指令也可以使用这样的功能。
参考图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。此外,根据本发明的一个或多个方面,组件中的一个或多个可以包括在执行查询功能和/或神经网络处理辅助处理(例如,神经网络处理辅助指令(或可以使用本发明的一个或多个方面的其它处理))中使用的一个或多个其它组件的至少一部分或可以访问该一个或多个其它组件,如本文所述。一个或多个其他组件可以包括例如查询功能组件170和/或神经网络处理辅助组件172(和/或一个或多个其他组件)。
根据本发明的一个或多个方面,提供了一种查询功能,其传达与所选择的处理器(例如,神经网络处理器105)的特定模型有关的详细信息。作为示例,查询功能在处理器104中实现,因为处理器知道所选择的处理器的特定模型的细节,或者它实现在所选择的处理器(例如,神经网络处理器105)中。该详细信息包括例如由处理器支持的模型相关数据属性,诸如处理器的特定模型,以及由所选择的指令提供的功能/操作。在一个示例中,处理器是神经网络处理器(也称为神经网络加速器),诸如神经网络处理器105,并且查询功能用于传达至少关于由神经网络处理器的特定模型所支持的数据属性的详细信息。
参考图2描述了处理查询功能的一个示例,该处理由通用处理器(诸如通用处理器104)来执行。在其他实施例中,其可以由诸如神经网络处理器105的专用处理器执行。其它实施例也是可能的。
参考图2,在一个实施例中,经由指令来启动查询功能,并且因此,获得200并执行210指令。在一个示例中,该执行包括确定查询功能是否由指令指定220。这包括例如解码指令并检查指令的至少一个操作数以确定哪个功能被启动。如果查询功能未被指定220,则执行其他指令处理230。然而,如果查询功能被指定220,则获得与特定处理器相关的信息240,并且具体地,与处理器的特定模型相关的信息。机器或处理器的特定模型具有某些能力。机器或处理器的另一模型(例如,当前实施的)可能具有附加的、更少的和/或不同的能力和/或具有附加的、更少的和/或不同的能力的不同代(例如,当前或将来的代)。所获得的信息包括例如特定处理器的模型相关属性,特别是与由特定处理器的特定模型使用和/或存储的数据有关的属性。查询功能还获得例如可在处理器上执行的特定功能的指示,例如经由用于执行查询功能的指令。还可以获得附加的、更少的和/或其他信息。
在一个示例中,该信息由执行查询功能的处理器的固件获得。固件具有特定处理器(例如神经网络处理器)的特定模型的属性的知识。该信息可以存储在例如控制块、寄存器和/或存储器中,和/或以其他方式可由执行查询功能的处理器访问。
所获得的信息例如被放置于参数块或其他结构中,该参数块或其他结构对于可在进一步处理中使用该信息的一个或多个应用是可访问的和/或供其使用的250。在一个示例中,在存储器中维护参数块和/或参数块的信息。在其它实施例中,可在一个或多个硬件寄存器中维护参数块和/或信息。作为另一示例,查询功能可为由操作系统执行的特权操作,其使应用编程接口可用于使该信息可用于应用或其它非特权程序。在又一示例中,查询功能由诸如神经网络处理器105的专用处理器执行。其它示例是可能的。
在一个特定示例中,执行查询功能以确定与神经网络处理器(诸如神经网络处理器105)相关的信息。该信息包括例如神经网络处理器的选择模型所支持的数据类型、数据大小和/或数据布局格式。该信息是模型相关的,因为其它模型(例如,先前模型和/或未来模型)可能不支持相同的数据属性,诸如相同的数据类型、数据大小和/或数据布局格式。
在其它实施例中,可以获得其它信息。所获得的信息(例如,模型相关数据属性和/或其他信息)由例如应用用于进一步处理。例如,应用在诸如通用处理器104的处理器上执行神经网络处理辅助指令,以获得与神经网络处理器有关的模型相关信息(例如,模型相关数据属性)和/或其他信息(例如,指令和/或神经网络处理器支持的功能、参数块格式等)。然后,在神经网络处理辅助指令的其他执行中使用所获得的信息(至少所选择的信息)来执行由该指令指定的其他功能,在此称为非查询功能。这些非查询功能用于执行与例如张量计算相关的操作。在一个实施例中,由通用处理器发起神经网络处理辅助指令的其他执行,但是由专用处理器(例如,神经网络处理器105)使用所获得的信息的至少一部分来执行由指令指定的非查询功能。下面描述与查询功能和神经网络处理辅助指令有关的进一步细节。
参考图3A描述神经网络处理辅助指令的一个示例。在一个示例中,在通用处理器(例如,处理器104)上发起指令,并且取决于功能,在通用处理器和/或专用处理器(例如,专用处理器105)上执行由指令指定的功能。然后,指令在通用处理器上完成。在其他示例中,在一个或多个通用处理器或一个或多个专用处理器上发起、执行和完成指令。其它变化是可能的。在本文的描述中,指示了特定位置、特定字段和/或特定的字段大小(例如,特定字节和/或位)。然而,可以提供其他位置、字段和/或大小。此外,尽管可以指定将位设置为特定值,例如一或零,但是这仅是示例。在其它示例中,位(如果被设置)可被设置为不同值,例如相反值或另一值。许多变化是可能的。
在一个示例中,参考图3A,神经网络处理辅助指令300具有RRE格式,该RRE格式表示具有扩展的操作代码(opcode)的寄存器和寄存器操作。如图3A中所示,在一个示例中,神经网络处理辅助指令300包括指示神经网络处理辅助操作的操作代码(opcode)字段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。在一个示例中,存储到响应代码字段的代码被定义如下:
F000-FFFF功能特定响应代码。这些响应代码是为某些功能定义的。
异常标志(EF)312:该字段(例如,位位置24-31)包括异常标志。如果在指令执行期间检测到异常条件,则对应的异常标志控制(例如,位)将被设定为(例如)一;否则,控制保持不变。异常标志字段在第一次调用指令之前被初始化为零。保留标志在指令执行期间不变。在一个示例中,如下定义存储到异常标志字段的标志:
EF(位) 含义
0 范围违反。当在输入张量中检测到非数值或者将非数值存储到输出张量时,设置该标志。该标志例如仅在指令以条件代码(例如,0)完成时有效。
1-7 保留。
功能代码(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)指定张量的数据类型。下面描述支持的数据类型的示例(附加的、更少的和/或其他数据类型是可能的):
如果指定了不支持的或保留的数据类型,则将例如十六进制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)或其他结构中,该其他结构可访问和/或与一个或多个应用一起使用,该一个或多个应用可以在进一步的处理中使用该信息。
所获得的信息包括例如关于特定处理器的至少一个或多个数据属性的模型相关的详细信息,包括例如特定处理器的所选择模型的一个或多个安装或支持的数据类型、一个或多个安装或支持的数据布局格式和/或一个或多个安装或支持的数据大小。该信息是模型相关的,因为其它模型(例如,先前模型和/或未来模型)可能不支持相同的数据属性,诸如相同的数据类型、数据大小和/或数据布局格式。当查询功能(例如,NNPA-QAF功能)的执行完成时,作为示例,设置条件代码0。在一个示例中,条件代码1、2和3不适用于查询功能。下面描述与所获得的信息有关的进一步信息。
如所指示的,在一个示例中,所获得的信息包括关于例如神经网络处理器的特定模型的一个或多个数据属性的模型相关信息。数据属性的一个示例是神经网络处理器的安装数据类型。例如,神经网络处理器(或其他处理器)的特定模型可以支持一种或多种数据类型,例如NNP-数据-类型-1数据类型(也称为神经网络处理-数据-类型-1数据类型)和/或其他数据类型。NNP-数据-类型-1数据类型是16位浮点格式,其为深度学习训练和推理计算提供了许多优点,包括例如:保持了深度学习网络的准确性;消除了简化舍入模式和处理极端情况的亚正常(subnormal)格式;自动舍入到最接近的值以进行算术操作;并且无穷大和非数(NaN)的特殊实体被组合成一个值(NINF),该值被接受并由算术操作处理。NINF为指数溢出和无效操作(例如除以零)提供了更好的默认值。这允许许多程序继续运行而不隐藏这样的错误并且不使用专门的异常处理程序。其它模型相关的数据类型也是可能的。
在图4中描述NNP-数据-类型-1数据类型的格式的一个示例。如所描述的,在一个示例中,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*ceil(E2/32)*32*ceil(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*ceil(E2/32)*32*ceil(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),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码17:NNPA-SUB(减)
当NNPA-SUB功能被指定时,张量描述符2描述的输入张量2的每个元素从张量描述符1描述的输入张量1的对应元素中减去,并且得到的差被放在输出张量的对应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码18:NNPA-MUL(乘)
当NNPA-MUL功能被指定时,由张量描述符1描述的输入张量1的每个元素(乘数)和由张量描述符2描述的输入张量2的对应元素(被乘数)的乘积被放置在输出张量的对应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码19:NNPA-DIV(除)
当NNPA-DIV功能被指定时,由张量描述符1(被除数)描述的输入张量1的每个元素被张量描述符2描述的输入张量2(除数)的对应元素除,并且商被放置在输出张量的对应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码20:NNPA-MIN(最小)
当NNPA-MIN功能被指定时,由张量描述符1描述的输入张量1的每个元素与由张量描述符2描述的输入张量2的对应元素进行比较,两个值中更小的被放入输出张量描述符的对应元素中。如果两个值相等,则将该值被放置在输出张量的对应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码21:NNPA-MAX(最大)
当NNPA-MAX功能被指定时,由张量描述符1描述的输入张量1的每个元素与由张量描述符2描述的输入张量2的对应元素进行比较,两个值中的更大者被放置在输出张量描述符的对应元素中。如果两个值相同,则将该值置于输出张量的对应元素中。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1、输入张量2和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码32:NNPA-LOG(自然对数)
当NNPA-LOG功能被指定时,对于由张量描述符1描述的输入张量的每个元素,如果该元素大于零,则由输出张量描述符描述的输出张量中的对应元素是该元素的自然对数。否则,输出张量中的对应元素不是可数字表示的,并且存储与目标数据类型中的负无穷相关联的值。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4-D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码33:NNPA-EXP(指数)
当NNPA-EXP功能被指定时,对于张量描述符1所描述的输入张量的每个元素,由输出张量描述符所描述的输出张量中的对应元素是该元素的指数。
在一个示例中,如果在任何指定的张量描述符中的指定数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如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),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如1来完成。
在一个示例中,输入张量1和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符2、输入张量描述符3和功能特定保存区域地址字段。在一个示例中,功能特定参数2-5包含零。
功能代码50:NNPA-TANH
当NNPA-TANH功能被指定时,对于张量描述符1所描述的输入张量的每个元素,输出张量描述符所描述的输出张量中的对应元素值是该元素的双曲正切。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如1完成。
在一个示例中,输入张量1和输出张量的形状、数据布局和数据类型是相同的;否则,识别出通用操作数数据异常。
在一个示例中,忽略输出张量描述符2、输入张量描述符2、输入张量描述符3、功能特定参数1-5和功能特定保存区域地址字段。
功能代码51:NNPA-SIGMOID
当NNPA-SIGMOID功能被指定时,对于由张量描述符1描述的输入张量的每个元素,由输出张量描述符描述的输出张量中的对应元素是该元素的反曲(sigmoidal)。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以条件代码例如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),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以例如1的条件代码完成。
在一个示例中,如果输入张量的维度-3-索引-大小不等于一,则存储例如十六进制F000的响应代码,并且指令以例如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-索引-大小x维度-3-索引-大小x维度-2-索引-大小向量,重复该过程。
在一个示例中,如果在任何指定的张量描述符中的指定的数据布局没有指定4D特征张量(例如,数据布局=0),或者如果在任何指定的张量描述符中的数据类型没有指定NNP-数据-类型-1(例如,数据类型=0),则在通用寄存器0中设置响应代码,例如分别十六进制0010或十六进制0011,并且指令以例如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张量上移动的量被称为步幅(stride)。由例如功能特定参数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索引大小之间的以下关系:
其中:
O1D2IS 输出张量的维度2索引大小。
O1D3IS 输出张量的维度3索引大小。
I1D2IS 输入1张量的维度2索引大小。
I1D3IS 输入1张量的维度3索引大小。
D2S 维度2步幅。
D3S 维度3步幅。
*当所指定的填充有效时,在一个示例中(卷积有效填充),满足输入1张量的维度2索引大小和维度3索引大小、输入2张量的维度3索引大小和维度4索引大小、与输出张量之间的以下关系:
其中:
在一个示例中,忽略输出张量描述符2和功能特定保存区域地址字段。在一个示例中,功能特定参数5包含零。
功能代码113:NNPA-MATMUL-OP(矩阵乘法操作)
当NNPA-MATMUL功能被指定时,在一个示例中,如下所述计算由输出张量描述符描述的输出张量中的每个元素:
*使用下面描述的获得-维度-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。
如本文所描述的,单个指令(例如,神经网络处理辅助指令)被配置为执行多个功能,包括查询功能。根据本发明的一个或多个方面,查询功能提供了对于执行一个或多个功能(例如,与张量计算相关的功能)的应用有用的信息。该信息不仅传达指令和/或处理器所支持的功能,而且传达关于指令和/或处理器如何工作的附加信息,诸如与指令和/或处理器所使用的数据有关的信息。作为一个示例,该信息包括模型相关的数据属性,例如安装在处理器上的数据类型、处理器支持的可用数据布局格式、以及数据大小信息,例如最大张量大小和最大维度索引大小。查询功能允许应用确定它们是否被设计成以非查询功能将在其上运行的特定模型的属性来工作。可替换地,应用可被编写为动态地改变其行为以在不同模型上工作,这取决于由查询指令确定的该模型的确切属性。在一些情况下,如果应用不知道如何处理特定模型,则它可以用软件而不是使用加速器功能来执行神经网络计算。
查询功能可用于各种任务,包括例如虚拟机的动态迁移,使得应用可以针对应用将在其上运行的模型优化其行为。许多其它任务可以使用查询功能。
尽管在一个示例中,提供查询功能作为神经网络处理辅助指令的一部分,但是它也可以与其他指令一起使用,以提供与处理器和/或与其相关联的操作的功能、操作和/或属性有关的详细信息。神经网络处理辅助指令仅是一个示例。
本发明的一个或多个方面不可分地依赖于计算机技术,并便于计算机内的处理,从而提高其性能。使用被配置为执行包括查询功能的各种功能的单个架构化机器指令,通过降低复杂度、减少资源的使用以及提高处理速度来改善计算环境内的性能。通过使用查询功能并获得描述处理器的模型相关属性的详细信息,包括数据属性,改进了处理。在一个示例中,通过在执行非查询功能之前确定处理器支持什么来改善性能。由于应用预先知道期望什么,所以降低了应用处理复杂度以及执行时间。数据和/或指令可以用于许多技术领域,例如计算机处理、医疗处理、工程、汽车技术、制造等。通过在获得模型相关处理器相关数据时提供优化,通过减少执行时间来改进这些技术领域。
参考图7A-7B描述了与本发明的一个或多个方面相关的便于计算环境内的处理的实施例的进一步细节。
参考图7A,在一个实施例中,执行指令以执行查询功能700。该执行包括例如获得与处理器的选择模型有关的信息702。作为示例,该信息包括处理器的选择模型的至少一个模型相关数据属性704。将信息放置在选择位置中,以便由至少一个应用在执行一个或多个功能时使用706。
查询功能提供使机器能够适应存在于机器的特定模型上的能力的信息,并便于解决涉及大数据的问题。这改进了使用机器学习的技术,包括计算机处理。
通过执行查询功能,获得至少一个数据属性的模型相关信息,并且该模型相关信息可用于使用具有至少一个数据属性的数据来执行一个或多个功能。通过为至少一个数据属性准备应用,该至少一个数据属性的知识节省了执行时间,允许应用适应数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,并提高了系统性能。
当至少一个数据属性涉及张量和/或处理使用张量时,查询功能提供对张量的使用和/或使用这种张量的处理的增强。
作为示例,至少一个模型相关数据属性包括处理器的选择模型的一个或多个支持的数据类型710、处理器的选择模型的一个或多个支持的数据布局格式712和/或处理器的选择模型的一个或多个支持的数据大小714。通过获得支持的数据类型、数据布局格式和/或数据大小,应用被定制为处理器的特定模型所支持的数据类型、数据布局格式和/或数据大小,从而允许应用适应于数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了执行时间,提高了系统性能。
在一个示例中,选择位置包括至少一个应用可访问的参数块720。例如,一个或多个支持的数据类型被包括在参数块的一个或多个字段中722,一个或多个支持的数据布局格式被包括在参数块的一个或多个字段中724和/或一个或多个支持的数据大小被包括在参数块的一个或多个字段中726。通过使参数块可由至少一个应用访问,应用可以学习一个或多个支持的数据类型、一个或多个支持的数据布局格式和/或一个或多个数据大小,并在处理中使用该知识,允许应用适应于数据、数据布局和/或数据大小,以便能够例如对该特定模型执行神经网络处理。通过准备应用,减少了错误,节省了异常时间,并提高了系统性能。
参考图7B,在一个示例中,处理器的选择模型的一个或多个支持的数据大小包括最大维度索引大小和最大张量大小730。
在一个示例中,参数块包括多个字段以存储选择模型的多个模型相关数据属性740。多个字段包括例如包括处理器的选择模型的一个或多个支持的数据类型的安装数据类型字段、包括处理器的选择模型的一个或多个支持的数据布局格式的安装数据布局格式字段、以及包括处理器的选择模型的一个或多个支持的数据大小的一个或多个字段742。
参数块还包括例如安装功能向量字段和安装参数块格式字段中的至少一个750。作为示例,安装功能向量字段指示处理器的选择模型的一个或多个支持的功能752。此外,在一个示例中,安装参数块格式字段指示参数块的一个或多个支持的格式754。
通过使用查询功能来确定要在其上执行所选择的功能的处理器的模型相关属性,通过具有适当的信息来降低应用复杂度,和/或可以定制应用以使用正确的属性,例如数据类型、数据布局格式和/或数据大小。更快地执行功能,减少执行时间,并且改进处理器和/或整体系统性能。
其它变化和实施例是可能的。
本发明的各方面可由许多类型的计算环境使用。参考图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,但是根据本发明的一个或多个方面,可以使用其它虚拟机管理器和/或操作系统。注册商标/>是根据来自LinusTorvalds的专有被许可人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 (20)

1.一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括:
一个或多个计算机可读存储介质和共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令用于执行一种方法,所述方法包括:
执行指令以执行查询功能,其中,所述执行包括:
获得与处理器的选择模型有关的信息,所述信息包括所述处理器的所述选择模型的至少一个模型相关数据属性;以及
将所述信息放置在选择位置以供至少一个应用在执行一个或多个功能时使用。
2.根据前述权利要求所述的计算机程序产品,其中,所述至少一个模型相关数据属性包括所述处理器的所述选择模型的一个或多个支持的数据类型。
3.根据前述权利要求所述的计算机程序产品,其中,所述选择位置包括所述至少一个应用可访问的参数块,并且其中,所述一个或多个支持的数据类型被包括在所述参数块的一个或多个字段中。
4.根据前述权利要求中任一项所述的计算机程序产品,其中,所述至少一个模型相关数据属性包括所述处理器的所述选择模型的一个或多个支持的数据布局格式。
5.根据前述权利要求所述的计算机程序产品,其中,所述选择位置包括所述至少一个应用可访问的参数块,并且其中,所述一个或多个支持的数据布局格式被包括在所述参数块的一个或多个字段中。
6.根据前述权利要求中任一项所述的计算机程序产品,其中,所述至少一个模型相关数据属性包括所述处理器的所述选择模型的一个或多个支持的数据大小。
7.根据前述权利要求所述的计算机程序产品,其中,所述选择位置包括所述至少一个应用可访问的参数块,并且其中,所述一个或多个支持的数据大小被包括在所述参数块的一个或多个字段中。
8.根据前两项权利要求中任一项所述的计算机程序产品,其中,所述处理器的所述选择模型的所述一个或多个支持的数据大小包括最大维度索引大小和最大张量大小。
9.根据前述权利要求中任一项所述的计算机程序产品,其中,所述选择位置包括所述至少一个应用可访问的参数块,并且其中,所述参数块包括用于存储所述选择模型的多个模型相关数据属性的多个字段,所述多个字段包括用于包括所述处理器的所述选择模型的一个或多个支持的数据类型的安装数据类型字段、用于包括所述处理器的所述选择模型的一个或多个支持的数据布局格式的安装数据布局格式字段、以及用于包括所述处理器的所述选择模型的一个或多个支持的数据大小的一个或多个字段。
10.根据前述权利要求所述的计算机程序产品,其中,所述参数块进一步包括安装功能向量字段和安装参数块格式字段中的至少一个,所述安装功能向量字段指示所述处理器的所述选择模型的一个或多个支持的功能,并且所述安装参数块格式字段指示所述参数块的一个或多个支持的格式。
11.一种用于促进计算环境内的处理的计算机系统,所述计算机系统包括:
存储器;以及
与所述存储器通信的至少一个处理器,其中,所述计算机系统被配置为执行一种方法,所述方法包括:
执行指令以执行查询功能,其中,所述执行包括:
获得与处理器的选择模型有关的信息,所述信息包括所述处理器的所述选择模型的至少一个模型相关数据属性;以及
将所述信息放置在选择位置以供至少一个应用在执行一个或多个功能时使用。
12.根据前述权利要求所述的计算机系统,其中,所述至少一个模型相关数据属性包括所述处理器的所述选择模型的一个或多个支持的数据类型。
13.根据前述两项权利要求中任一项所述的计算机系统,其中,所述至少一个模型相关数据属性包括所述处理器的所述选择模型的一个或多个支持的数据布局格式。
14.根据前述三个权利要求中的任一项所述的计算机系统,其中,所述至少一个模型相关数据属性包括所述处理器的所述选择模型的一个或多个支持的数据大小。
15.根据前述四个权利要求中任一项所述的计算机系统,其中,所述选择位置包括所述至少一个应用可访问的参数块,并且其中,所述参数块包括用于存储所述选择模型的多个模型相关数据属性的多个字段,所述多个字段包括用于包括所述处理器的所述选择模型的一个或多个支持的数据类型的安装数据类型字段、用于包括所述处理器的所述选择模型的一个或多个支持的数据布局格式的安装数据布局格式字段、以及用于包括所述处理器的所述选择模型的一个或多个支持的数据大小的一个或多个字段。
16.一种用于促进计算环境内的处理的计算机实现的方法,所述计算机实现的方法包括:
执行指令以执行查询功能,其中,所述执行包括:
获得与处理器的选择模型有关的信息,所述信息包括所述处理器的所述选择模型的至少一个模型相关数据属性;以及
将所述信息放置在选择位置以供至少一个应用在执行一个或多个功能时使用。
17.根据前述权利要求所述的计算机实现的方法,其中,所述至少一个模型相关数据属性包括所述选择处理器的一个或多个支持的数据类型。
18.根据前述两项权利要求中任一项所述的计算机实现的方法,其中,所述至少一个模型相关数据属性包括所述处理器的所述选择模型的一个或多个支持的数据布局格式。
19.根据前述三个权利要求中的任一项所述的计算机实现的方法,其中,所述至少一个模型相关数据属性包括所述处理器的所述选择模型的一个或多个支持的数据大小。
20.根据前述四个权利要求中的任一项所述的计算机实现的方法,其中,所述选择位置包括所述至少一个应用可访问的参数块,并且其中,所述参数块包括用于存储所述选择模型的多个模型相关数据属性的多个字段,所述多个字段包括用于包括所述处理器的所述选择模型的一个或多个支持的数据类型的安装数据类型字段、用于包括所述处理器的所述选择模型的一个或多个支持的数据布局格式的安装数据布局格式字段、以及用于包括所述处理器的所述选择模型的一个或多个支持的数据大小的一个或多个字段。
CN202280038617.5A 2021-06-17 2022-06-13 用于查询模型相关信息的指令 Pending CN117396902A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/350,326 2021-06-17
US17/350,326 US11675592B2 (en) 2021-06-17 2021-06-17 Instruction to query for model-dependent information
PCT/IB2022/055459 WO2022264003A1 (en) 2021-06-17 2022-06-13 Instruction to query for model-dependent information

Publications (1)

Publication Number Publication Date
CN117396902A true CN117396902A (zh) 2024-01-12

Family

ID=84490396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280038617.5A Pending CN117396902A (zh) 2021-06-17 2022-06-13 用于查询模型相关信息的指令

Country Status (6)

Country Link
US (1) US11675592B2 (zh)
CN (1) CN117396902A (zh)
DE (1) DE112022003109T5 (zh)
GB (1) GB2622333A (zh)
TW (1) TWI804285B (zh)
WO (1) WO2022264003A1 (zh)

Family Cites Families (74)

* Cited by examiner, † Cited by third party
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
US8015889B2 (en) * 2005-11-15 2011-09-13 Honeywell International Inc. Ballscrew with an integral high-efficiency thrust bearing
US8291003B2 (en) 2008-09-09 2012-10-16 International Business Machines Corporation Supporting multiple formats in a floating point processor
US20100274823A1 (en) 2009-04-23 2010-10-28 Sailesh Sathish Method, apparatus and computer program product for providing an adaptive context model framework
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
US10061824B2 (en) 2015-01-30 2018-08-28 Splunk Inc. Cell-based table manipulation of event data
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10460230B2 (en) 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network
US10728169B1 (en) 2015-06-26 2020-07-28 Amazon Technologies, Inc. Instance upgrade migration
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US10452995B2 (en) 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Machine learning classification on hardware accelerators with stacked memory
US9940101B2 (en) 2015-08-25 2018-04-10 Samsung Electronics Co., Ltd. Tininess prediction and handler engine for smooth handling of numeric underflow
US10726328B2 (en) 2015-10-09 2020-07-28 Altera Corporation Method and apparatus for designing and implementing a convolution neural net accelerator
US10353860B2 (en) 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
US9569277B1 (en) 2016-01-29 2017-02-14 International Business Machines Corporation Rebalancing virtual resources for virtual machines based on multiple resource capacities
US20170286114A1 (en) 2016-04-02 2017-10-05 Intel Corporation Processors, methods, and systems to allocate load and store buffers based on instruction type
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
US10802992B2 (en) 2016-08-12 2020-10-13 Xilinx Technology Beijing Limited Combining CPU and special accelerator for implementing an artificial neural network
US10810484B2 (en) 2016-08-12 2020-10-20 Xilinx, Inc. Hardware accelerator for compressed GRU on FPGA
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
JP6988040B2 (ja) 2016-12-31 2022-01-05 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置
WO2018184208A1 (en) 2017-04-07 2018-10-11 Intel Corporation Methods and apparatus for deep learning network execution pipeline on multi-processor platform
JP6854473B2 (ja) 2017-04-17 2021-04-07 セレブラス システムズ インク. 加速化ディープラーニングのデータフロー・トリガー・タスク
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
CN107451663B (zh) 2017-07-06 2021-04-20 创新先进技术有限公司 算法组件化、基于算法组件建模方法、装置以及电子设备
US20190050725A1 (en) 2017-08-14 2019-02-14 Sisense Ltd. System and method for approximating query results using local and remote neural networks
US11216437B2 (en) 2017-08-14 2022-01-04 Sisense Ltd. System and method for representing query elements in an artificial neural network
EP3451190B1 (en) 2017-09-04 2020-02-26 Sap Se Model-based analysis in a relational database
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 삼성전자주식회사 뉴럴 네트워크 시스템 및 뉴럴 네트워크 시스템의 동작방법
US10275710B1 (en) 2017-10-31 2019-04-30 KenSci Inc. Machine learning model repository
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
CN111836658B (zh) 2018-01-10 2022-07-08 林约翰斯顿有限责任公司 紧凑式注射器系统和方法
US11093830B2 (en) 2018-01-30 2021-08-17 D5Ai Llc Stacking multiple nodal networks
WO2019157599A1 (en) 2018-02-16 2019-08-22 The Governing Council Of The University Of 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
US20190340499A1 (en) 2018-05-04 2019-11-07 Microsoft Technology Licensing, Llc Quantization for dnn accelerators
US10656913B2 (en) 2018-06-05 2020-05-19 International Business Machines Corporation Enhanced low precision binary floating-point formatting
US10832139B2 (en) 2018-06-22 2020-11-10 Moffett Technologies Co. Limited Neural network acceleration and embedding compression systems and methods with activation sparsification
US10620951B2 (en) 2018-06-22 2020-04-14 Intel Corporation Matrix multiplication acceleration of sparse matrices using column folding and squeezing
US10908906B2 (en) 2018-06-29 2021-02-02 Intel Corporation Apparatus and method for a tensor permutation engine
CN109146072B (zh) 2018-08-01 2021-03-23 上海天数智芯半导体有限公司 基于卷积神经网络加速器的数据重用方法
US10885277B2 (en) 2018-08-02 2021-01-05 Google Llc On-device neural networks for natural language understanding
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
US20200264876A1 (en) 2019-02-14 2020-08-20 Microsoft Technology Licensing, Llc Adjusting activation compression for neural network training
US11442700B2 (en) 2019-03-29 2022-09-13 Stmicroelectronics S.R.L. Hardware accelerator method, system and device
US10789402B1 (en) 2019-05-01 2020-09-29 Xilinx, Inc. Compiler and hardware abstraction layer architecture for a neural network accelerator
US11366771B2 (en) 2019-05-02 2022-06-21 EMC IP Holding Company LLC Host device with multi-path layer configured for detection and resolution of initiator-related conditions
US11790250B2 (en) 2019-05-09 2023-10-17 Intel Corporation Using computational cost and instantaneous load analysis for intelligent deployment of neural networks on multiple hardware executors
CN110197260B (zh) 2019-06-06 2020-10-02 百度在线网络技术(北京)有限公司 一种数据处理方法及装置
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
TWI701612B (zh) 2019-06-19 2020-08-11 創鑫智慧股份有限公司 用於神經網路中激勵函數的電路系統及其處理方法
US11568238B2 (en) 2019-06-28 2023-01-31 Amazon Technologies, Inc. Dynamic processing element array expansion
US20190392296A1 (en) * 2019-06-28 2019-12-26 John Brady Hardware agnostic deep neural network compiler
US11907827B2 (en) 2019-06-28 2024-02-20 Intel Corporation Schedule-aware tensor distribution module
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
US20210089316A1 (en) * 2019-09-25 2021-03-25 Intel Corporation Deep learning implementations using systolic arrays and fused operations
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
US11507831B2 (en) * 2020-02-24 2022-11-22 Stmicroelectronics International N.V. Pooling unit for deep learning acceleration

Also Published As

Publication number Publication date
TWI804285B (zh) 2023-06-01
GB2622333A (en) 2024-03-13
US11675592B2 (en) 2023-06-13
GB202319034D0 (en) 2024-01-24
DE112022003109T5 (de) 2024-04-11
US20220405100A1 (en) 2022-12-22
TW202301204A (zh) 2023-01-01
WO2022264003A1 (en) 2022-12-22

Similar Documents

Publication Publication Date Title
CN117396847A (zh) 采用隐含的舍入模式的向/从所选择的数据类型的数据转换
TWI807767B (zh) 神經網路處理輔助指令
US12008395B2 (en) Program event recording storage alteration processing for a neural network accelerator instruction
US11693692B2 (en) Program event recording storage alteration processing for a neural network accelerator instruction
US11675592B2 (en) Instruction to query for model-dependent information
TWI840790B (zh) 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法
AU2022292046B2 (en) Reformatting of tensors to provide sub-tensors
TWI840785B (zh) 用於在指令執行期間偵測之無效值之例外摘要
US11734013B2 (en) Exception summary for invalid values detected during instruction execution
US20220405348A1 (en) Reformatting of tensors to provide sub-tensors
US20220405552A1 (en) Recurrent neural network cell activation to perform a plurality of operations in a single invocation
CN117425899A (zh) 单个函数执行组合的矩阵乘法和偏置相加操作
CN117461038A (zh) 单个函数执行组合的卷积和选择操作
CN117396846A (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