首页> 中国专利> 内核系数量化

内核系数量化

摘要

本发明公开了内核系数量化,具体公开了在执行矩阵运算时优化存储器使用的装置、系统和技术。在至少一个实施例中,优化矩阵以限制存储器和存储要求,同时最小化矩阵成员之和的精度损失。

著录项

  • 公开/公告号CN112800389A

    专利类型发明专利

  • 公开/公告日2021-05-14

    原文格式PDF

  • 申请/专利权人 辉达公司;

    申请/专利号CN202011278819.6

  • 申请日2020-11-16

  • 分类号G06F17/16(20060101);G06F9/30(20060101);

  • 代理机构11336 北京市磐华律师事务所;

  • 代理人高伟

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:58:46

说明书

技术领域

本申请总地涉及在数据表示方案之间的大数据集的转换中优化处理资源并最小化信息损失。例如,至少一个实施例涉及用于将存储为实数表示的值的矩阵转换为定点表示的处理器或计算机系统,而矩阵内的值之和的损失最小。

背景技术

从实数到定点表示的矩阵转换是在多种领域和应用中发生的常见操作。这些过滤器内核可以具有任意尺寸,并且可以具有或可以不具有对称性。在许多情况下,内核系数之和是特别重要的属性,尤其是在该和为整数的情况下。除了获得所需用法的所需过滤器参数外,这是一个增加的约束。

图1示出了实数矩阵的表示;

图2示出了具有水平和垂直对称性的实数矩阵的表示;

图3示出了具有水平对称性、垂直对称性和对角线对称性的实数矩阵的表示;

图4示出了一个或更多个实施例的流程图。

图5示出了一个或更多个实施例的流程图。

图6示出了根据至少一个实施例的数据中心系统;以及

图7示出了根据至少一个实施例的计算机系统。

具体实施方式

在一组内核系数中,数值可以以多种不同的格式表示,每种格式具有单独的存储约束。例如,对于给定的大数字,对一种存储格式(例如,实数格式)的选择具有可以在存储器中表示该数字的范围。但是,在许多应用程序中,执行其他运算时可能需要特定的数字格式,或者可能导致更有效地使用计算机资源。例如,可以将最初存储为实数的数字转换为定点表示,以便执行矩阵操作所需的计算机资源更少。但是,在数字格式之间进行转换时,精度损失可能会很大。此外,在对转换后的值执行附加运算之后,结果的误差值可能包括不希望的附加误差。例如,将值从浮点转换为定点表示会引入误差。

用于线性子空间之间的转换的一组内核系数通常包括非常大的量。内核系数通常由可以具有任意维度的矩阵表示,具体取决于应用。因为系数是具有高精度的非常大的数,并且矩阵可能具有大维度,所以可能需要大量的存储空间。此外,与以较低的精度存储的相同数字的相同数值操作相比,对系数执行的数学运算通常使用更多的处理资源。存储值以便使用更少的位存储每个系数可以优化资源要求,但会降低精度。

在一些实施例中,接收矩阵。矩阵可以包括多个值,每个值可以由尾数和指数表示,例如浮点值。在一些实施例中,可以接收矩阵,对矩阵执行一个或更多个运算。例如,可以接收具有执行矩阵加法和/或减法的请求的矩阵。由于这些运算可能需要大量资源才能对浮点值执行,因此一个或更多个组件可以基于矩阵的大小和维度确定执行该运算所需的资源超过阈值。可以将矩阵转换为更有利于加法、减法和/或乘法的格式,例如定点表示。转换后,可以再次检查矩阵以确定所需资源是否是可接受的。如果是,则可以执行该运算,并返回结果。因为矩阵值的之和对于某些应用通常是重要的值,所以执行转换以保留该和且误差最小。

本实施例假定将每个都表示为浮点值的值的矩阵转换为定点值。执行转换,以便以最小的误差项保留值之和。对于每个初始值,实数均表示为浮点值,并带有尾数和指数。尾数可以存储为一组位数的带符号2的补码整数。指数值也具有一组位数。所得的定点值均由整数值和分数值表示,每个值均具有固定的位数。

作为示例,可以使用标准单精度浮点表示来存储数字。该表示形式允许值介于1.2X10

对于本实施例,以下等式用于值的矩阵(例如,系数的过滤器内核)的边界(metes)和界限(bounds)。为了便于说明,描述了5X5的二维数组。然而,相同的实施例适用于任何尺寸或维度的矩阵。

每个内核系数可以存储为尾数m和指数e。对于具有B

M

M

M

此外,第i个内核系数的指数e

(E

E

其中,E

该等式可以解释为具有2的指数的幂的整数尾数。正是这些C值被用来保留矩阵,其中转换后的值之和的误差最小。

参考图1,示出了大小为5X5的内核系数矩阵100的表示。每个单元105包括标记为K

图1的矩阵包含每个单元格的唯一值。然而,在一些实施例中,矩阵可以具有水平对称性、垂直对称性和/或对角线对称性,特别是当矩阵具有内核系数时。例如,参考图2,示出了具有垂直对称性和水平对称性的矩阵200。如图所示,区域205包括唯一(only)单元值,其对于矩阵是独特(unique)的。其余单元具有这些值之一,以使矩阵的左侧是矩阵的右侧的镜像,具有垂直对称性的特性。此外,矩阵的上半部分是矩阵的下半部分的镜像,具有水平对称性的特性。参考图3,示出了具有对角线对称性的矩阵。在矩阵300中,两个方向的对角线都围绕矩阵的中心镜像,标记为K

对于任何矩阵,可以计算r

对于没有对称性且没有重复值的矩阵,例如矩阵100,由于2

r

r

r

r

r

r

r

r

r

类似地,矩阵300具有r值:

r

r

r

r

r

r

内核系数的之和S可以计算如下:

由于m

参考图4,提供了本文描述的方法的实施例的步骤的流程图。在一些实施例中,可以省略所示流程图的一个或更多个步骤。例如,在一些实施例中,可以在系数已经被打包的情况下省略步骤405。在一些实施例中,可以包括一个或更多个附加步骤。例如,在一些实施例中,步骤435之后可以是利用转换后的系数的一个或更多个过程或组件。如图所示,因为步骤405和440在核心方法401之外,所以不需要矩阵几何形状的知识,例如其对称性。

在步骤405,打包系数以供进一步处理。在此步骤中,研究矩阵以确定矩阵的r值和矩阵的对称性。从结果列表中删除任何r值0。另外,基于先前定义的方程,确定每个值的C值。

在步骤410中,对矩阵的系数进行预处理。确定矩阵中每个值的e值和g值。此步骤还包括通过检查每个系数的e值并选择最高值来确定矩阵的最大e值。此e值E

在步骤415,将每个矩阵单元的e值裁剪(clip)为落入有效范围内。此范围基于值E

通过最小化R,在确定矩阵之和时引入了更少的误差。对于每个值,尾数、粒度和R值由以下公式确定:

在步骤415之后,对于矩阵中的每个值,已知e值(指数值)、g值(粒度值)和R值(残留值)。此时,所有R值均为正。但是,尾数值此时仍是初步的。对于任何随后递增的尾数,矩阵中该值的R值将为负。这是最小化R的主要机制。

在步骤420,对矩阵中具有相应r值的值进行排序。此步骤是可选的。但是,按递减的g值排序的值的列表可提高后续步骤的效率。可以使用任何已知的排序方法来对值的列表进行排序。

在步骤425,将系数分组为块。每个块都经过处理,然后组装和处理新的块,直到所有系数都已处理完毕。将系数从具有较高g值的系数处理到具较低g值的系数可能会产生更好的结果。因此,在步骤420对列表进行排序改善了该步骤的结果。

可以基于两个标准来确定块。首先,可以指定最大块大小。一旦该块包括指定数量的值,就可以处理下一个块。第二,可以将块限制为恒定的粒度值。一旦识别出不同的粒度值,就可以终止当前块,并且开始新的块。在一些实施例中,可以指定这些标准中的一个或两个。如本文中所描述,块大小将是矩阵中的值的数量,对于图1至图3的矩阵,值的数量是25。此外,每个块将包括恒定的粒度。一旦构造了每个块,就通过将块中每个值的R值相加来计算R值。

在步骤430,调整每个值的尾数以最小化块的R值。最小化的R值可以确定如下:

如果R≥αg

m

R=R-g

值α是控制给定块的R收敛的无单位常数。例如,在一些实施例中,α可以被设置为1/2,从而将R约束为在给定系数的粒度为-1/2与给定系数的粒度为1/2之间的值。因此,对于块中的每个系数,如果该块的当前R值大于给定系数的g值的一半,则R会递减g值(该块的常数)并且该系数的尾数系数递增。然后,将新的R值与该块中的下一个系数进行比较。这一直持续到R不再超出收敛范围为止。

在步骤435,处理过量的残留。这包括分配处理最后一个块所剩余的任何过量残留。在以下情况下可能会发生这种情况:最后一个块包含的系数具有最小的g值,而最后一个块的系数不足以将该块的R值约束在收敛范围内,如关于步骤430所述。在一些实施例中,这可能不会发生,例如当输入内核之和是整数时。

对于最终块的每个系数,如前所述,相对于允许代表尾数的最大和最小位数来检查尾数。为该块计算增量值,如下所示:

值α

在步骤440,拆包现在转换的系数,并重新填充矩阵。该步骤与步骤405相反,并且例如由于矩阵的对称性而包括用在多个单元中重复的系数填充矩阵,并用相应的经转换的系数填充所有其他单元。所得矩阵是定点系数矩阵,其被转换为最小化系数之和。

参考图5,提供了流程图,其示出了本文所述的一个或更多个实施例。在一些实施例中,可以省略一个或更多个步骤。在一些实施例中,可以包括一个或更多个附加步骤。

在步骤505,系统接收实数矩阵。矩阵可以是任何大小和维度。在一些实施例中,接收到的矩阵可以具有一个或更多个对称特性,例如对角线对称性、垂直对称性或水平对称性。存储在矩阵中的值是实数,并且可以例如以浮点表示存储。因此,每个值可以被存储为尾数和指数部分。

在步骤510,识别要对矩阵执行的数学运算。在一些实施例中,可以将数学运算与矩阵一起提供给系统。在一些实施例中,一个或更多个其他组件可以提供数学运算。数学运算可以是例如矩阵加法、减法或一个或更多个矩阵变换。在一些实施例中,数学运算可以包括仅利用一个矩阵执行的运算。例如,该操作可以包括对矩阵中存储的一个或更多个值的操纵。在一些实施例中,该运算可以包括多个矩阵和/或向量。例如,运算可以包括两个矩阵的乘法、矩阵与向量的乘法和/或可以包括多个矩阵的其他运算,每个矩阵可以在执行该运算之前被转换。

在步骤515,系统计算用于对矩阵执行数学运算的计算机资源需求。计算机资源需求可能是,例如执行该运算可能需要的计算机周期数的估计,执行该运算可能需要的存储器中的存储,或者在执行该操作期间可能消耗的一个或更多个其他计算机资源。

在步骤520,可以将计算机资源需求与阈值进行比较,以确定矩阵的转换是否将改善计算系统的操作。该阈值可以是固定值,例如分配给该运算的计算机功率的最大量、用于计算的时间约束或用于执行该运算的存储器限制。在一些实施例中,仅当计算资源需求超过阈值时,系统才继续进行下一步骤。例如,作为执行运算的时间约束的所计算的计算机资源需求可能超过阈值时间量。在一些实施例中,仅当超过阈值时才可以执行矩阵的转换。在一些实施例中,如果不超过阈值,则可以对原始矩阵执行数学运算。

在步骤525,将矩阵转换为定点值的矩阵。可以利用本文描述的一种或更多种技术来完成矩阵的转化。例如,可以使用图4所示的技术来执行矩阵转换。因此,可以完成转换,以便转换后的矩阵以最小的误差保留矩阵之和。

在步骤530,将数学运算应用于转换后的矩阵。例如,如果数学运算包括矩阵加法,则系统可以执行矩阵加法,这在定点数与浮点数之间的计算复杂度较低。在一些实施例中,数学运算可以包括一个或更多个其他矩阵,这些矩阵先前可能已经从浮点转换为定点。在步骤535,将应用数学运算的结果提供给一个或更多个系统以进行进一步处理。

图6示出了示例数据中心600,其中可以使用至少一个实施例。在至少一个实施例中,数据中心600包括数据中心基础设施层610、框架层620、软件层630和应用层640。

在至少一个实施例中,如图6所示,数据中心基础设施层610可以包括资源协调器612、分组的计算资源614和节点计算资源(“节点C.R.s”)616(1)-616(N),其中“N”代表任何完整的正整数。在至少一个实施例中,节点C.R.s 616(1)-1016(N)可以包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器等)、存储器设备(例如,动态只读存储器)、存储设备(例如,固态驱动器或磁盘驱动器)、网络输入/输出(“NW I/O”)设备、网络交换机、虚拟机(“VM”)、电源模块和冷却模块等。在至少一个实施例中,节点C.R.s 616(1)-1016(N)中的一个或更多个节点C.R.s可以是具有一个或更多个上述计算资源的服务器。

在至少一个实施例中,分组的计算资源614可以包括容纳在一个或更多个机架(未示出)内的节点C.R.s的单独分组,或者容纳在各种地理位置(也未示出)的数据中心中的许多机架的单独分组。分组的计算资源614内的节点C.R.s的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、存储器或存储资源。在至少一个实施例中,可以将包括CPU或处理器的几个节点C.R.s分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。在至少一个实施例中,一个或更多个机架还可以包括任意组合的任何数量的电源模块、冷却模块和网络交换机。

在至少一个实施例中,资源协调器612可以配置或以其他方式控制一个或更多个节点C.R.s 616(1)-616(N)和/或分组的计算资源614。在至少一个实施例中,资源协调器612可以包括用于数据中心600的软件设计基础结构(“SDI”)管理实体。在至少一个实施例中,资源协调器可以包括硬件、软件或其某种组合。

在至少一个实施例中,如图6所示,框架层620包括作业调度器622,配置管理器624,资源管理器626和分布式文件系统628。在至少一个实施例中,框架层620可以包括用于支持软件层630的软件632和/或应用程序层640的一个或更多个应用程序642的框架。在至少一个实施例中,软件632或一个或更多个应用程序642可分别包括基于网络(web)的服务软件或应用程序,例如由亚马逊网络服务(Amazon Web Services)、谷歌云(Google Cloud)和微软Azure(Microsoft Azure)提供的那些。在至少一个实施例中,框架层620可以是但不限于一种自由和开源软件网络应用框架,例如Apache Spark TM(以下称为“Spark”),可利用分布式文件系统628进行大规模数据处理(例如,“大数据”)。在至少一个实施例中,作业调度器622可以包括Spark驱动器,以促进对数据中心600的各个层所支持的工作负荷进行调度。在至少一个实施例中,配置管理器624可以能够配置不同的层,例如软件层630和框架层620,框架层620包括Spark和分布式文件系统628,用于支持大规模数据处理。在至少一个实施例中,资源管理器626能够管理映射到或分配用于支持分布式文件系统628和作业调度器622的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层610上的分组计算资源614。在至少一个实施例中,资源管理器626可以与资源协调器612协调以管理这些映射或分配的计算资源。

在至少一个实施例中,包括在软件层630中的软件632可以包括由节点C.R.s 616(1)-616(N)、分组计算资源614和/或框架层620的分布式文件系统628的至少一部分使用的软件。一种或更多种类型的软件可以包括但不限于英特网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。

在至少一个实施例中,应用层640中包括的一个或更多个应用642可以包括由节点C.R.s 616(1)-616(N)的至少一部分、分组的计算资源614,和/或框架层620的分布式文件系统628使用的一种或更多种类型的应用程序。一种或多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序、认知计算和机器学习应用程序(包括培训或推理软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)或其他与一个或更多个实施例结合使用的机器学习应用程序)。

在至少一个实施例中,配置管理器624、资源管理器626和资源协调器612中的任何一个都可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。在至少一个实施例中,自我修改动作可以减轻数据中心600的数据中心操作员做出可能不好的配置决定,并且可以避免数据中心的未充分利用和/或性能差的部分。

在至少一个实施例中,数据中心可以使用CPU、专用集成电路(ASIC),GPU、FPGA或其他硬件来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以被配置为允许用户训练或执行信息推断的服务,例如图像识别、语音识别或其他人工智能服务。

图7是示出根据至少一个实施例的示例性计算机系统的框图,该计算机系统可以是具有互连的设备和组件的系统、片上系统(SOC)或它们的某种组合700,其形成有处理器,该处理器可以包括执行单元以执行指令。在至少一个实施例中,根据本公开,例如本文所述的实施例,计算机系统700可以包括但不限于组件,例如处理器702,以采用包括用于执行过程数据的算法的逻辑的执行单元。在至少一个实施例中,计算机系统700可以包括处理器,例如加利福尼亚州圣克拉拉市的英特尔公司提供的

实施例可以用在其他设备中,例如手持设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、英特网协议设备、数码相机、个人数字助理(“PDA”)和手持PC。在至少一个实施例中,嵌入式应用可以包括微控制器、数字信号处理器(“DSP”)、片上系统、网络计算机(“NetPC”)、机顶盒、网络集线器、广域网(“WAN”)交换机或根据至少一个实施例可以执行一个或更多个指令的任何其他系统。

在至少一个实施例中,计算机系统700可以包括但不限于处理器702,该处理器702可以包括但不限于根据本文描述的技术来执行机器学习模型训练和/或推理的一个或更多个执行单元708。在至少一个实施例中,计算机系统700是单个处理器台式机或服务器系统,但是在另一实施例中,计算机系统700可以是多处理器系统。在至少一个实施例中,处理器702可以包括但不限于复杂指令集计算机(“CISC”)微处理器、精简指令集计算(“RISC”)微处理器、超长指令字(“VLIW”)微处理器、实现指令集组合的处理器或任何其他处理器设备,例如数字信号处理器。在至少一个实施例中,处理器702可以耦合到处理器总线710,该处理器总线710可以在处理器702与计算机系统700中的其他组件之间传输数据信号。

在至少一个实施例中,处理器702可以包括但不限于级别1(“L1”)内部高速缓存存储器(“cache”)704。在至少一个实施例中,处理器702可以具有单个内部高速缓存或多级内部高速缓存。在至少一个实施例中,高速缓冲存储器可以驻留在处理器702的外部。其他实施例还可以包括内部和外部高速缓存两者的组合,这取决于特定的实现方式和需求。在至少一个实施例中,寄存器文件706可以在各种寄存器中存储不同类型的数据,所述寄存器包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。

在至少一个实施例中,包括但不限于执行整数和浮点运算的逻辑的执行单元708也位于处理器702中。在至少一个实施例中,处理器702还可以包括微码(“ucode”)只读存储器(“ROM”),用于存储某些宏指令的微代码。在至少一个实施例中,执行单元708可以包括用于处理打包指令集709的逻辑。在至少一个实施例中,通过将打包指令集709包括在通用处理器702的指令集中,连同相关联的电路,以使用通用处理器702中的打包数据来执行许多多媒体应用程序所使用的指令、操作。在一个或更多个实施例中,可以通过使用处理器的数据总线的全宽度来执行打包数据上的操作,可以加速和更有效地执行许多多媒体应用程序,这可能不需要在处理器的数据总线上传输较小的数据单元来一次执行数据元素的一个或更多个操作。

在至少一个实施例中,执行单元708也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。在至少一个实施例中,计算机系统700可以包括但不限于存储器720。在至少一个实施例中,存储器720可以被实现为动态随机存取存储器(“DRAM”)设备、静态随机存取存储器(“SRAM”)设备、闪存设备或其他存储设备。在至少一个实施例中,存储器720可以存储由可以由处理器702执行的数据信号表示的一个或更多个指令719和/或数据721。

在至少一个实施例中,系统逻辑芯片可以耦合到处理器总线710和存储器720。在至少一个实施例中,系统逻辑芯片可以包括但不限于存储器控制器集线器(“MCH”)716,以及处理器702可以经由处理器总线710与MCH 716通信。在至少一个实施例中,MCH 716可以向存储器720提供高带宽存储器路径718,以用于指令和数据存储以及用于图形命令、数据和纹理的存储。在至少一个实施例中,MCH 716可以在处理器702、存储器720和计算机系统700中的其他组件之间引导数据信号,并且在处理器总线710、存储器720和系统I/O 722之间桥接数据信号。在一个实施例中,系统逻辑芯片可以提供用于耦合到图形控制器的图形端口。在至少一个实施例中,MCH 716可以通过高带宽存储器路径718耦合到存储器720,并且图形/视频卡712可以通过加速图形端口(“AGP”)互连、PCI Express总线、NVLink、AXI或其他具有类似特征的专有总线711耦合到MCH 716。

在至少一个实施例中,计算机系统700可以使用作为专有集线器接口总线的系统I/O 722来将MCH 716耦合到I/O控制器集线器(“ICH”)730。在至少一个实施例中,ICH 730可以经由本地I/O总线提供到某些I/O设备的直接连接。在至少一个实施例中,本地I/O总线可以包括但不限于用于将外围设备连接到存储器720、芯片组和处理器702的高速I/O总线。示例可以包括但不限于音频控制器729、固件集线器(“Flash BIOS”)728、无线收发器726、数据存储724、包含用户输入和键盘接口725的传统I/O控制器723、串行扩展端口727(例如,通用串行总线(USB))和网络控制器734。数据存储724可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。

在至少一个实施例中,图7示出了系统,该系统包括互连的硬件设备或“芯片”,而在其他实施例中,图7可以示出示例性片上系统(“SoC”)。在至少一个实施例中,可以将图7所示的设连与专有互连、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,计算机系统700的一个或更多个组件使用计算快速链接(CXL)互连来互连。

其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是其某些示出的实施例在附图中示出并且已经在上面进行了详细描述。但是,应当理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的公开内容的精神和范围内的所有修改、替代构造和等同物。

除非另有说明,除非另有说明或显然与环境明显矛盾,并且不是术语的定义,否则在描述所公开的实施例的环境中(特别是在所附权利要求的环境中)对术语“一”,“一个”和“该”以及类似指代的使用应解释为涵盖单数和复数。术语“包含”,“具有”,“包括”和“内含”应解释为开放式术语(意思是“包括但不限于”)。术语“连接”在未经修改时指的是物理连接,应理解为部分或全部包含在,连接到或连接在一起的部分或全部,即使有任何介入。除非在此另外指出,否则本文中数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的速记方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。除非环境另外指出或矛盾,否则术语“组”(例如“一组项目”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非环境另外指出或矛盾,否则相应集合的术语“子集”不一定表示相应集合的适当子集,而是子集和相应集合可以相等。

除非以其他方式明确指出或与环境明显矛盾,否则诸如“A、B和C中的至少一个”或“A、B和C的至少一个”形式的词组等联合语言在环境中理解为通常用来表示项目,术语等可以是A或B或C,也可以是A和B和C集合的任何非空子集。例如,在具有三个成员,连接短语“A、B和C中的至少一个”和“A、B和C的至少一个”是指以下任意集合:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}。因此,这种联合语言通常不意图暗示某些实施例要求存在A中的至少一个、B中的至少一个和C中的至少一个。另外,除非另有说明或与环境矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示多个项目)。复数是至少两个项目,但是当明确地或通过环境指示时可以是多个。此外,除非另有说明或从环境中清楚得知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。

除非本文另外指出或与环境明显矛盾,否则本文描述的过程的操作可以任何合适的序列执行。在至少一个实施例中,诸如本文所述的那些过程(或其变形和/或其组合)的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用程序)通过硬件或其组合在一个或更多个处理器上共同执行。在至少一个实施例中,代码例如以计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非暂时性计算机可读存储介质,其不包括暂时性信号(例如,传播的瞬态电或电磁传输),但包括暂时性信号的收发器中的非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或更多个非暂时性计算机可读存储介质(或用于存储可执行指令的其他存储器)上,当由计算机系统的一个或更多个处理器执行(即,由于被执行)而导致的计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质以及缺少所有代码的多个非暂时性计算机可读存储介质的一个或更多个单个非暂时性存储介质,而多个非暂时性计算机可读存储介质共同存储所有代码。在至少一个实施例中,执行可执行指令,使得不同的指令由不同的处理器执行,例如,非暂时性计算机可读存储介质存储指令,并且主中央处理单元(“CPU”)执行一些指令,而图形处理单元(“GPU”)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。

因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所描述的过程的操作的一个或更多个服务,并且这样的计算机系统配置有能够实现操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中,是一种分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。

本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有声明。说明书中的任何语言都不应被解释为表示对于实施公开必不可少的任何未要求保护的要素。

本文引用的所有参考文献,包括出版物、专利申请和专利,均以引用的方式并入本文,如同每个参考文献被单独且具体地指出以引用的方式并入本文一样。

在描述和权利要求中,可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。

除非另外特别说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“运算”、“确定”等,是指计算机或计算系统的动作和/或过程。或类似的电子计算设备,将计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。

以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是CPU或GPU。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”过程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。而且,每个过程可以指代多个过程,以连续地或间歇地序列地或并行地执行指令。因为系统可以体现一种或更多种方法并且方法可以被认为是系统,术语“系统”和“方法”在本文中可互换使用。

在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。可以以多种方式来完成获得、获取、接收或输入模拟和数字数据,例如通过接收作为函数调用或对应用程序接口的调用的参数的数据。在一些实施方式中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由串行或并行接口传输数据来完成。在另一实施方式中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。也可以参考提供、输出、传输、发送或渲染模拟或数字数据。在各种示例中,提供、输出、传输、发送或渲染模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数,应用程序编程接口或进程间通信机制的参数进行传输来实现。

尽管上面的讨论阐述了所描述的技术的示例实现,但是其他架构可以用于实现所描述的功能,并且意图在本公开的范围内。此外,尽管出于讨论目的在上面定义了具体的责任分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。

此外,尽管已经用针对结构特征和/或方法动作的语言描述了主题,但是应该理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号