一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于TOPK操作的方法和系统与流程

2022-05-18 05:21:57 来源:中国专利 TAG:

用于topk操作的方法和系统
1.相关申请的交叉参考
2.本技术要求于2020年10月23日提交的美国临时专利申请第63/105,140号的利益和优先权,该申请通过引用全部并入本文。
技术领域
3.本公开总体上涉及计算机技术领域,更具体地,涉及用于topk操作的方法和系统。


背景技术:

4.电子设备已成为日常生活不可或缺的一部分。许多电子应用使用topk操作对结果进行排序。例如,在机器学习(ml)的一个特定应用中,topk用于识别大量数据条目中概率最高的前k个索引或条目,例如,在数千个类别中对图像进行分类。类似地,topk操作已经成为其他应用(诸如关系数据库、文档和多媒体数据库中的ad-hoc搜索和检索等)中的常见运算符。
5.一般来说,为了执行topk,向量中的元素被相互比较,以便按排序顺序识别最大的k值,并且同时还跟踪与这些最大k值中的每一个相关联的索引位置。由于ml应用的增加以及交换数据量的增加,近年来处理的数据量大幅增加。虽然比较向量的元素来以排序顺序识别最大k值对于小向量可能是可行的,但对于较大的向量长度(特别是考虑到数据量的增加)来说,计算变得昂贵,这是因为大量的计算能力被浪费在对向量中不在前k个元素中的元素进行排序方面。其他常规方法依次识别给定向量内的最大值,并对下一个最大值重复该方法,直到对前k个值进行排序。不幸的是,以排序方式顺序识别最大值来获取前k个值需要多次重复特定指令,例如,多次读取向量元素、多次执行比较指令等,这导致计算效率低下。


技术实现要素:

6.为解决上述问题,本公开提供了一种计算机实施的方法,包括:a)接收topk指令,以对具有n个元素的向量数据的最大k个元素进行排序;b)对所述向量数据的前k个元素进行检索、排序,并存储在第一寄存器中;c)读取所述向量数据的另一元素;d)确定所述向量数据的所述另一元素的值是否大于或等于所述前k个元素的值的范围;e)如果所述另一元素的值大于或等于所述第一寄存器中的值的范围,则确定所述另一元素在所述前k个元素内的位置;f)在确定所述另一元素在所述前k个元素中的位置之后,将所述前k个元素中小于所述另一元素的元素子集向下移位;g)在移位之后将所述另一元素插入到空白位置中的经确定的位置中,以形成更新后的前k个元素;以及h)针对所述向量数据的每个剩余元素,重复步骤c)、d)、e)、f)和g),直到所述向量数据的每个元素均被处理。
7.此外,本公开还提供了一种基于硬件的系统,包括:处理器,被配置为接收可执行指令,其中所述处理器进一步被配置为接收topk指令,并且其中所述处理器被配置为响应于所述topk指令而读取具有n个元素的向量数据中的前k个元素;以及一个或多个寄存器,
被配置为存储数据以执行所述topk指令,并且其中所述向量数据的所述前k个元素被排序并存储在所述一个或多个寄存器中,并且其中对于所述向量数据中的每个元素,所述处理器被配置为:a)确定所述向量数据的所述每个元素的值是否大于或等于所述前k个元素的值的范围;b)如果所述每个元素的值均大于或等于所述前k个元素的值的范围,则确定所述每个元素在所述前k个元素内的位置;c)在确定所述每个元素的位置之后,将所述前k个元素中小于所述每个元素的元素子集向下移位;d)在移位之后将所述每个元素插入到经确定的位置中,以形成更新后的前k个元素;以及e)针对所述向量数据的每个剩余元素,重复步骤a)、b)、c)和d),直到所述向量数据的每个元素均被处理。
8.此外,本公开还提供了一种基于硬件的系统,包括:a)用于接收topk指令以对具有n个元素的向量数据的最大k个元素进行排序的装置;b)用于对所述向量数据的前k个元素进行排序并存储在第一寄存器中的装置;c)用于读取所述向量数据的另一元素的装置;d)用于确定所述向量数据的所述另一元素的值是否大于或等于所述前k个元素的值的范围的装置;e)用于在所述另一元素的值大于或等于所述第一寄存器中的值的范围的情况下确定所述另一元素在所述前k个元素内的位置的装置;f)用于在确定所述另一元素在所述前k个元素中的位置之后将所述前k个元素中小于所述另一元素的元素子集向下移位的装置;g)用于在移位之后将所述另一元素插入到空白位置中的经确定的位置中以形成更新后的前k个元素的装置;以及h)用于针对所述向量数据的每个剩余元素重复步骤c)、d)、e)、f)和g)直到所述向量数据的每个元素均被处理的装置。
9.此外,本公开还提供了一种计算机实施的方法,包括:a)接收topk指令,以对具有n个元素的向量数据的最大k个元素进行排序;b)对所述向量数据的前k个元素进行检索、排序,并存储在第一寄存器中,其中n小于或等于k;c)读取所述向量数据的另一元素;d)确定所述向量数据的所述另一元素的值是否大于或等于所述前k个元素的值的范围;e)如果所述另一元素的值大于或等于所述第一寄存器中的值的范围,则确定所述另一元素在所述前k个元素内的位置;f)在确定所述另一元素在所述前k个元素中的位置之后,将所述前k个元素中小于所述另一元素的元素子集向下移位;g)在移位之后将所述另一元素插入到空白位置中的经确定的位置中,以形成更新后的前k个元素;以及h)针对所述向量数据的每个剩余元素,重复步骤c)、d)、e)、f)和g),直到所述向量数据的每个元素均被处理。
附图说明
10.当与附图一起阅读时,可通过以下详细说明更好地理解本公开的各个方面。注意,根据行业标准惯例,各种特征并未按比例绘制。事实上,为了便于讨论,可以任意增加或减小各种特征的尺寸。
11.图1示出了根据本发明实施例的一个方面的被配置为执行topk操作的基于硬件的系统的示图的示例。
12.图2a-图2d示出了根据本发明实施例的一个方面的被配置为执行topk操作的各种子操作的基于硬件的系统的示图的示例。
13.图3示出了根据本发明实施例的一个方面的用于执行topk操作的流程图的示例。
具体实施方式
14.以下公开提供了许多不同的实施例或示例,用于实施主题的不同特征。下面描述了部件和布置的具体示例以简化本公开。当然,这些只是示例,并非用于限制。此外,本公开可以在各个示例中重复附图标记和/或字母。这种重复是为了简单和清楚,其本身并不指定所讨论的各种实施例和/或配置之间的关系。
15.在更详细地描述各种实施例之前,应当理解,实施例不是限制性的,因为这些实施例中的元素可以变化。同样应当理解,本文所述和/或所示的特定实施例具有可容易与特定实施例分离并任选地与多个其他实施例中的任一实施例组合或替代本文所描述的多个其他实施例中的任一实施例中的元素的元素。还应当理解,本文使用的术语是为了描述特定概念,并且术语并非用于限制。除非另有定义,否则本文使用的所有技术和科学术语具有与实施例所属领域中通常理解的相同含义。
16.如前所讨论的,topk操作已普遍用于在各种应用(诸如ml应用)中对结果进行排名。不幸的是,topk操作通常以低效和浪费的方式实施,例如,不必要地使用存储器、过多的处理能力等。因此,需要减少在执行topk操作中使用的计算资源量(例如,存储器、处理能力等)。此外,需要尽可能快地执行topk操作。如本文所呈现的,一些实施例利用ml硬件内的算术逻辑单元(alu)和寄存器(例如,寄存器深度)来以有效方式执行topk操作。应理解,在一些实施例中,对于小k(取决于寄存器和alu的相对大小),通过向量的单个路径可能足够,而对于大k,从存储原始向量的存储器中读取向量一次,而数据处理的中间阶段被存储在片上存储器中,并且可能发生多次读取/写入。
17.通常,topk操作识别具有最大数据的向量的前k个索引位置。为了说明目的,向量数据可以是v=[100,2,101,53,33,53,67,94],并且其可以具有八个元素。用于k=4的topk操作识别最大的四个值的索引(在该说明性示例中,索引以0开始,但在其他实施例中,索引可以1开始)。换句话说,索引2对应于元素101,索引0对应于元素100,索引7对应于元素94,以及索引6对应于元素67。如此,k=4的topk操作产生[2,0,7,6]。应理解,如果向量数据的两个元素具有相同的值(例如,元素53的索引3和5),则获取元素第一次出现的索引(即,索引3),然后是后面的元素(即,索引5)。
[0018]
在一些实施例中,所建议的方法利用和使用基于ml硬件的系统的架构,其利用指令集架构(isa)实施,以有效方式利用处理元素寄存器来限制数据移动量。根据一些实施例,寄存器宽度用于在执行topk操作时跟踪前k个值。为了说明的目的,寄存器的宽度被假定为8,并且k也是8。然而,应当理解,寄存器宽度可以是任何宽度,并且k的值可以是任何值。如此,寄存器宽度为8以及k为8用于说明目的,而不应被解释为限制实施例的范围。向量数据可具有任意数量的元素,例如,1000个元素、1024个元素、256个元素等。应理解,通常k的值小于或等于寄存器的宽度。
[0019]
在一些实施例中,向量数据的前k个元素被读取、排序并存储在寄存器中。当读取向量数据的新元素时,如果新读取的元素不具有被排序并存储在寄存器中的前k个元素的范围或更大范围内的值,则读取下一个元素并重复该过程。然而,如果新读取的元素具有在被排序并存储在寄存器中的前k个元素范围内的值,则寄存器内小于读取元素的元素将被移动和移位,以便为已读取的新元素腾出空间。寄存器内大于或等于读取元素的元素也被移动,并且新读取的元素被插入到空位置。如此,用新的前k个元素更新寄存器。应理解,该
过程被重复,直到向量数据的每个元素被处理,并且获取最终的前k个元素为止。应理解,与向量数据的每个元素相关联的索引可在整个过程中被跟踪。
[0020]
图1示出了根据本发明实施例的一个方面的被配置为执行topk操作的基于硬件的系统100的示图的示例。尽管示图示出了部件在功能上是分离的,但这种描述仅用于说明目的。显然,图中所示的部件可以任意组合或划分为单独的软件、固件和/或硬件部件。此外,还应理解,无论如何组合或划分,这些部件都可以在同一主机或多个主机上执行,并且其中多个主机可由一个或多个网络耦合。当执行软件指令时,一个或多个硬件部件成为用于执行topk操作的专用硬件部件。
[0021]
在图1的示例中,数据向量包括n个元素,并存储在寄存器110中。在一个非限制性示例中,处理器120接收topk指令102。处理器120从寄存器110获取前k个元素(122)。应理解,前k个元素可以是连续的(如图所示),或者它们可以基于特定模式(例如,步幅,stride)来获取。在该非限制性示例中,k是8,并且与寄存器110的前k个元素相对应的m1、m2、

、m8被处理器120读取并排序。处理器120传送将被存储在寄存器130中的排序后的前k个元素(124)。应理解,寄存器130的宽度可大于k,例如,8、9、10、

、16等。在该非限制性示例中,m3具有最大值,然后依次为m1、m8、m2、m5、m7、m4和m6。如此,m3、m1、m8、m2、m5、m7、m4和m6被存储在寄存器130中。应理解,与每个元素相关联的索引也可以被跟踪。换句话说,与m3对应的索引i3与其他元素一样被跟踪。例如,可以在寄存器中跟踪索引。
[0022]
应理解,可以读取向量数据的下一元素(即,m9)。一旦被读取,处理器120可确定新元素(即,m9)是否具有已存储在寄存器130中的值的范围内或更高的值,即,m9是否具有高于或介于最高值元素m3和最低值元素m6之间的值。出于说明目的,确定m9具有小于m6的值。因此,不对向量数据的元素m9执行进一步的处理。
[0023]
应理解,通过处理器120读取存储在寄存器110中的向量数据的下一个元素(即,m10)。与元素m9类似,处理器120确定新读取的元素m10的值是否大于或者在与存储在寄存器130中的元素对应的值的范围内,即在本示例中,在最高值元素m3和最低值元素m6之间。
[0024]
在一个非限制性示例中,m10被确定大于元素m7但小于元素m5。如此,处理器120识别将要插入m10的位置126。最小值元素(即,在本示例中为m6)将被移出,因为其不再位于前k个元素中。在一些实施例中,元素的子集(例如,m7、m4和m6)被移位。因此,当m7和m4的位置改变时,从寄存器130消除m6。因此,创建一个空位置来插入元素值m10。一旦m10被插入,还可以跟踪其索引i10。如此,寄存器130包含从寄存器110读取的向量数据的前10个元素的更新的前k个(在该示例中为前8个)元素。对存储在寄存器110中的向量数据的每个剩余元素重复该过程,直到读取所有元素并更新前k个元素为止。如上所述,一旦读取和处理了所有元素,则寄存器130将包含向量数据的前k个元素。
[0025]
如上面的示例所示,与传统方法相比,数据移动和数据读取的数量减少。例如,存储在寄存器110中的向量数据的元素被读取一次。中间值被存储在其他寄存器中,并根据需要进行更新,以形成更新的前k个元素,从而减少资源使用量(例如,处理能力、存储器使用、数据移动等)。
[0026]
图2a-图2d示出了根据本发明实施例的一个方面的被配置为执行topk操作的各种子操作的基于硬件的系统的示图的示例。具体参考图2a,示出了与图1类似的过程。在该实施例中,示出了用于确定从存储在寄存器110中的向量数据读取的下一个元素是否大于或
者在存储在寄存器130中的元素的值的范围内的一种实施,但不应解释为限制实施例的范围。在该非限制性示例中,从存储在寄存器110中的向量数据读取下一个元素m9。元素m9被存储在寄存器142中,并且其索引被跟踪,例如在不同的寄存器中。在一些实施例中,元素m9被广播到寄存器的每个元素。例如,寄存器142中的m9可移位并存储在寄存器143中。寄存器142和143可进行逻辑or操作,并且结果可存储在寄存器144中。应理解,重复该过程,直到寄存器的每个元素均包含元素m9。例如,寄存器144的元素被移位并存储在寄存器143中。寄存器143和144在逻辑上进行or操作,并且结果可存储在寄存器144中。重复该过程,直到m9被广播到寄存器143的每个元素。换句话说,寄存器143针对其k个元素中的每一个包含m9。处理器120可包含比较块210,其将寄存器143的元素与寄存器130的元素进行比较。该比较输出比较的结果(212)。在该示例中,确定m9小于寄存器130的最小元素,因此小于m6。如此,不对m9执行进一步的处理。
[0027]
现在参考图2b,从寄存器110读取向量数据的下一个元素(即,m10),并且可以执行类似于图2a的过程。为便于说明并且如图1所讨论的,假设m10的值介于元素m3和m6之间。如此,当将寄存器143的内容与寄存器130的内容进行比较时,确定m10将被插入寄存器130中。在一些实施例中,元素m10将被插入寄存器130的位置可确定该比较揭示两个比较,其中,来自第一寄存器中的一个元素大于来自第二寄存器的另一元素,然后第一寄存器的后续元素小于第二寄存器的后续元素。在该示例中,m3》m10,m1》m10,m8》m10,m2》m10,m5》m10,但m7《m10。如此,将插入m10的位置确定为空位置,该位置在m7和后续元素向右移位后打开。
[0028]
现在参考图2c,在确定一个元素将被插入前k个元素之后,来自寄存器130的元素的子集(在该示例中为m3、m1、m8、m2和m5)被移动到寄存器146,并且来自寄存器130的元素的另一子集(在该示例中为m7、m4和m6)移动到寄存器145。应理解,基于将要插入新元素(在该实例中为m10)的位置来确定将被移动的子集。在该说明性示例中,小于m10的元素的子集被移动到寄存器145,而大于或等于m10的元素被移动到寄存器146。应理解,可以跟踪元素的索引(例如,使用不同的寄存器)。一旦子集m7、m4和m6被移动到寄存器145,则高阶位置用零填充。寄存器145的内容被向下移位,并且如此m6被丢弃,同时元素m7和m4的位置改变(具有一个较低阶位)。一旦发生移位,大于m7的元素m10可插入到m7原来所在的位置(即,第三最低阶元素)。与小于m10的元素相对应的寄存器146的低阶位置用零填充。
[0029]
在一些实施例中,寄存器146和145分别包含高阶子集元素和低阶子集元素。如此,如果合并,结果将包含更新的前k个元素。处理器120可以在寄存器146和145之间执行合并操作220,并将结果存储在寄存器130中。在一些实施例中,合并操作可以是两个寄存器之间的逻辑or操作。如此,寄存器130现在包含更新的前k个元素。对存储在寄存器110中的向量数据的每个剩余元素重复该过程,直到所有元素被相应地处理,并且寄存器130中的前k个元素被更新。
[0030]
现在参考图2d,示出了识别插入m10的位置的另一实施方式。在该示例中,使用寄存器147,其中与小于m10的元素相对应的元素用1填充,而其他元素用0填充。寄存器147的值在寄存器148中被反转。例如,寄存器147的元素移位1并存储在寄存器149中。随后,在寄存器149的最高有效位位置插入值1,并将结果存储在寄存器148中。应理解,在一些实施例中,结果可代替地存储在寄存器149中。根据一个示例性实施例,寄存器147和148在230处进行逻辑and,并且结果[0,0,0,0,0,1,0,0]被存储在寄存器149中。与值1相对应的位置是将
要插入m10元素的位置。如此,将m10插入寄存器152中由寄存器149标识的位置,其中其他元素为0。寄存器152和145在240处进行or操作,以便将m10元素插入适当位置,后跟两个较小的元素m7和m4。应理解,结果可存储在寄存器145中,寄存器145随后在与寄存器146的合并操作中使用,以更新寄存器130的前k个值。应理解,也可以跟踪与每个元素相关联的索引。
[0031]
图3示出了根据本发明实施例的一个方面的用于执行topk操作的流程图的示例。应理解,在一些实施例中,可以跟踪向量元素的值和/或索引。还应理解,如下所述的处理步骤可以任何顺序(例如,在并行处理和流水线指令中)执行,并且本文呈现的特定顺序是为了说明目的,而不应被解释为限制实施例的范围。在步骤310中,如图1和图2a-图2b所述,接收topk指令。如上面在图1-图2d中所述,topk指令可与具有n个元素的向量数据相关联。在步骤320中,如图1-图2d中所讨论的,向量数据的前k个元素被排序并存储在一个或多个寄存器中。在步骤330中,如上所述,读取向量数据的另一元素。在步骤340中,如上文在图1-图2b中所述,确定另一元素的值是否大于前k个元素的值,或者是否在前k个元素的值的范围内。换句话说,确定另一元素是否具有小于前k元素的最小值的值。在步骤350中,如果确定另一元素的值大于前k个元素的最小值,则如图1和图2c-图2d所述,确定另一元素相对于前k个元素的位置。换句话说,确定在何处插入另一元素。在步骤360中,如图1和图2c-图2d所述,来自前k个元素的小于另一元素的元素子集向下移位1,以便为另一元素创建空位置。在步骤370中,如图1和图2c-图2d所述,在元素子集向下移位之后,将另一元素插入到确定的位置,以便形成更新后的前k个元素。应理解,在步骤380中,如图1-图2d所述,对向量数据的每个剩余元素重复步骤330-370,以便形成向量数据的前k个元素。
[0032]
出于说明和描述的目的提供了上面所要求保护主题的各种实施例的描述。其目的并非详尽的,或者将所要求的主题限于所公开的精确形式。许多修改和变化对于本领域技术人员来说是显而易见的。选择和描述实施例是为了最好地描述本发明的原理及其实际应用,从而使相关领域的其他技术人员能够理解所要求保护的主题、各种实施例以及适合预期特定用途的各种修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献