CN108733352B - 支持向量排序的装置、方法及应用 - Google Patents

支持向量排序的装置、方法及应用 Download PDF

Info

Publication number
CN108733352B
CN108733352B CN201710279834.4A CN201710279834A CN108733352B CN 108733352 B CN108733352 B CN 108733352B CN 201710279834 A CN201710279834 A CN 201710279834A CN 108733352 B CN108733352 B CN 108733352B
Authority
CN
China
Prior art keywords
vector
sorting
instruction
sorted
address
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.)
Active
Application number
CN201710279834.4A
Other languages
English (en)
Other versions
CN108733352A (zh
Inventor
不公告发明人
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
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
Priority to CN201710279834.4A priority Critical patent/CN108733352B/zh
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to EP19199531.5A priority patent/EP3699826A1/en
Priority to US16/476,261 priority patent/US11977968B2/en
Priority to PCT/CN2018/083379 priority patent/WO2018192492A1/zh
Priority to CN201811011596.XA priority patent/CN109284823B/zh
Priority to CN201880000808.6A priority patent/CN109104876B/zh
Priority to EP18787049.8A priority patent/EP3579152B1/en
Publication of CN108733352A publication Critical patent/CN108733352A/zh
Priority to US16/537,820 priority patent/US10789531B2/en
Application granted granted Critical
Publication of CN108733352B publication Critical patent/CN108733352B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data

Abstract

本公开涉及支持向量排序的装置、方法和应用,其中装置包括数据存储单元、运算模块、控制单元和数据输出单元,其中,数据存储单元,用于存储向量排序指令、待排序的数据向量以及排序向量的中间结果;控制单元,获取所述向量排序指令;运算模块,用于将待排序的数据向量或排序向量的中间结构排序为由小到大的向量或由大到小的向量,排序运算所采用的方法可以配置;数据输出单元,用于存储排序后的向量。

Description

支持向量排序的装置、方法及应用
技术领域
本公开涉及向量运算领域,更具体地涉及支持向量排序指令的装置、和方法,以及相应装置的应用。
背景技术
向量排序,作为一种基本的运算类型,广泛应用于各种领域。例如,在数据库中,根据某一属性值进行排序;在人工神经网络对样本进行分类预测时,根据样本属于各分类的概率求解前k最大概率对应的类型时,需要计算出的各个分类概率进行排序,挑选出前k大的概率对应的类型。
传统的向量排序方法是在通用处理器上通过特定的算法进行运算,可以采用的方式大致有冒泡排序、选择排序、快速排序、归并排序和二分排序。采用软件方式在通用处理器上进行排序过程中,相关操作串行执行,很难利用排序算法的可并行性,运算速度较慢,同时,向量排序算法会被分成译码成一系列的指令序列,译码的开销也很大。
公开内容
有鉴于此,本公开的目的在于,提供一种支持向量排序指令的装置、方法及应用,以解决以上所述的至少一项技术问题。
根据本公开的一方面,提供一种支持向量排序的装置,包括数据存储单元、运算模块、控制单元和数据输出单元,其中,
数据存储单元,用于存储向量排序指令、待排序的数据向量以及排序向量的中间结果;
控制单元,获取所述向量排序指令,并向运算模块输入进行运算的微指令,并控制运算模块将运算结果写入到数据输出单元中;
运算模块,用于根据微指令设置排序规则,将待排序的数据向量或排序向量的中间结构排序为由小到大的向量或由大到小的向量,形成与待排序的数据向量等长度的排序后的向量;
数据输出单元,用于存储排序后的向量。
根据本公开另一方面,提供一种步骤1,控制单元3从数据存储单元1中获取所要执行的指令,单元根据指令的操作码判断指令的类型,若指令为排序指令,转到步骤5,否则,转到步骤2执行;
步骤2,控制单元3控制运算模块2从数据存储单元1中获取执行操作所需的源数据,并将其送入到第二运算子模块22;
步骤3,控制单元3控制第二运算子模块22根据指令内容完成相应的运算,获取运算结果;
步骤4,控制单元3控制第二运算子模块22将运算结果根据指令中目的操作数的地址写入到数据输出单元4中,运算终止;
步骤5,控制单元3根据向量排序的类型、待排序向量的长度,排序指令的源操作数源地址、目的操作数地址,生成向量排序所需要的微指令,并将微指令送至运算模块2;
步骤6,运算模块2从数据存储单元1中获取待排序向量或排序中间结果,根据微指令对待排序向量或排序中间结果进行排序操作;若排序得到的为中间结果,则将中间结果写回到数据存储单元1原地址处,重复执行步骤6;否则,排序得到的为最后结果,将排序后的结果根据排序指令提供的目的操作数地址写回到数据输出单元4中,操作结束。
根据本公开的再一方面,提供一种使用以上装置进行神经网络运算的方法,其中所述待排序的数据向量为预处理阶段测试数据特征矩阵对应的特征值向量和分类结果的概率向量。
本公开的装置可以通过冒泡排序、选择排序、快速排序、归并排序、二分排序等排序方法进行向量排序。其中本装置可以实现向量运算,可以充分利用排序方法的可并行性,该装置支持的向量排序指令中存在向量长度域用于指明待排序向量的长度,待排序向量的长度可变,排序方法可以配置。
附图说明
图1示意性示出了本公开实施例的向量排序指令的格式;
图2示意性示出了本公开实施例的支持向量排序指令的装置的整体结构;
图3示意性示出了本公开实施例的向量排序运算的流程图。
图4示意性示出了本公开实施例的向量归并排序运算的流程图。
图5示意性示出了本公开实施例的通过指令配置的方式动态选择排序方法完成向量排序运算的流程图。
图6示意性示出了本公开实施例的支持向量排序指令的装置的归并排序部分的第一运算子模块的结构示意图;
图7示意性示出了本公开实施例的数据归并单元的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。
根据本公开的基本构思,提供一种支持向量排序指令的装置,该装置可以完成向量排序功能。其中本装置可以实现向量运算,可以充分利用排序方法的可并行性。该装置支持的向量排序指令中存在向量长度域用于指明待排序向量的长度,待排序向量的长度可变。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
图1示意性示出了本公开实施例的向量排序指令的格式,其中可包括:
操作码OP,长度为k位,内容为b1b2…bk,用于指明该指令所做的操作为向量排序操作,若指令的前k位不与b1b2…bk一致,则表明指令表示其他运算操作;
向量地址SRC,长度为q位,当操作码为b1b2…bk时,表示待排序向量在数据存储单元中的地址;
向量地址DST,长度为q位,当操作码为b1b2…bk时,表示排序后的向量在数据输出单元中的地址;
向量长度LEN,长度为r位,当操作码为b1b2…bk时,表示待排序向量的长度;
排序类型,长度为1或多位,当操作码为b1b2…bk时,若排序类型的最高位为0,表示由小到大进行排序。若排序类型的最高位为1,表示由大到小进行排序。若排序类型域的长度为m(m>1)位,排序类型的低m-1位指明排序指令所采用的排序方法。
图2示意性示出了本公开实施例的支持向量排序指令的装置的整体结构。其中包括:
数据存储单元1,用于向控制单元3提供运算指令和向运算模块2提供运算操作的源操作数。如果进行的运算为非向量排序指令,则数据存储单元1将源操作数提供给运算模块2的第二运算子模块22,如果进行的运算为向量排序指令,则数据存储单元1将根据控制传递的信号将指定地址长度的源操作数提供给向量排序子模块21,并存储向量排序子模块21运算后的中间结果,再将存储的中间结果提供给第一运算子模块21,循环多次,直到第一运算子模块21运算得到已排序的向量。
运算模块2,用于根据控制单元3发出的信号从数据存储单元1中读取源操作数,并执行相应的运算,将运算结果写入到数据输出单元4中。其中运算模块2由向量排序子模块21和第二运算子模块22两部分构成。若由控制单元3发出的运算信号为非向量排序信号,则由第二运算子模块22完成相应的运算,并将运算结果写入到数据输出单元4中。若有控制单元3发出的运算信号为向量排序信号,则向量排序子模块21根据控制单元3发出的微指令进行向量排序运算。排序过程中,向量排序子模块21根据设置的输入数据地址和长度从数据存储单元1中读取原始数据向量或者排序得到的中间结果,若排序运算得到的是中间结果,写回到数据存储单元1中,若排序运算得到的是最终结果,则将数据向量写入到数据输出单元4中。
可选的,向量排序子模块21可以完成向量归并排序。可选的,向量排序子模块21可以通过指令配置的方式动态选择排序方法完成向量排序运算。
控制单元3,用于从数据存储单元1中读取运算操作指令,并根据指令中的操作码,生成对应的微指令,发送给运算模块2进行相关运算。控制单元3判断待执行指令为是否为排序指令,若待执行指令为非排序指令,根据指令中的源操作数、向量长度等信息控制运算模块2从数据存储单元1中读取源操作数,通过其它运算子模块22运算得到结果,并将结果写入数据输出单元4的目的操作数地址dst处。若待执行指令为排序指令,则根据排序指令的源操作数地址和长度控制向量排序子模块21从数据存储单元1中读取源操作数,完成向量排序运算以及将中间运算结果写回到数据存储单元1中或将最终结果写入输出单元4中。
可选的,还包括数据输出单元4,用于接收运算模块2运算得到的结果。运算模块2运算得到的结果会根据指令中目的操作数地址dst写入到数据输出单元4中的dst处。
图3示意性示出了本公开实施例的向量排序运算的流程图,方法包括:
步骤1,控制单元3从数据存储单元1中获取所要执行的指令,单元根据指令的操作码判断指令的类型,若指令为排序指令,转到步骤5,否则,转到步骤2执行;
步骤2,控制单元3控制运算模块2从数据存储单元1中获取执行操作所需的源数据,并将其送入到第二运算子模块22;
步骤3,控制单元3控制第二运算子模块22根据指令内容完成相应的运算,获取运算结果;
步骤4,控制单元3控制第二运算子模块22将运算结果根据指令中目的操作数的地址写入到数据输出单元4中,运算终止。
步骤5,控制单元3根据向量排序的类型、待排序向量的长度,排序指令的源操作数源地址、目的操作数地址,生成向量排序所需要的微指令,并将微指令送至运算模块2。
步骤6,运算模块2从数据存储单元1中获取待排序向量或排序中间结果,根据微指令对待排序向量或排序中间结果进行排序操作。若排序得到的为中间结果,则将中间结果写回到数据存储单元1原地址处,重复执行步骤6;否则,排序得到的为最后结果,将排序后的结果根据排序指令提供的目的操作数地址写回到数据输出单元4中,操作结束。
可选的,向量排序子模块21可以完成向量归并排序。
图4示意性示出了本公开实施例的向量归并排序运算的流程图。对应的操作流程如下:
步骤1,控制单元3从数据存储单元1中获取所要执行的指令,单元根据指令的操作码判断指令的类型,若指令为排序指令,转到步骤5,否则,转到步骤2执行;
步骤2,控制单元3控制运算模块2从数据存储单元1中获取执行操作所需的源数据,并将其送入到第二运算子模块22;
步骤3,控制单元3控制第二运算子模块22根据指令内容完成相应的运算,获取运算结果;
步骤4,控制单元3控制第二运算子模块22将运算结果根据指令中目的操作数的地址写入到数据输出单元4中,运算终止。
步骤5,控制单元3根据向量排序指令中的排序类型设置运算模块的第一运算子模块21中向量归并单元的归并方式,初始化归并次数i为1;
步骤6,在第i次归并待排序向量或中间结果时,控制单元3根据排序指令提供的源操作数地址从数据存储单元1中获取待排序向量或排序中间结果,将待排序向量或排序中间结果按顺序分成
Figure GDA0001968962600000061
份,除最后一份外,每个向量长度为2i-1,其中m和n分别为待排序向量的长度和向量归并单元的数量,按顺序编号
Figure GDA0001968962600000062
然后,将编号为2*j-1、2*j(j>0)的向量分配给第((j-1)mod n)+1个向量归并单元进行处理,若归并次数
Figure GDA0001968962600000063
则将归并次数加一,并将处理后的排序中间结果写回到数据存储单元1原地址中,若归并次数
Figure GDA0001968962600000064
只存在分配后的两份待排序向量,经第一个向量归并单元归并后,得到的向量为已排序向量,控制单元3控制第一运算子模块21将排序后的结果根据排序指令提供的目的操作数地址写入到数据输出单元4中,操作结束。
可选的,向量排序子模块21可以通过指令配置的方式动态选择排序方法完成向量排序运算。
图5示意性示出了本公开实施例的通过指令配置的方式动态选择排序方法完成向量排序运算的流程图。对应的操作流程如下:
步骤1,控制单元3从数据存储单元1中获取所要执行的指令,单元根据指令的操作码判断指令的类型,若指令为排序指令,转到步骤5,否则,转到步骤2执行;
步骤2,控制单元3控制运算模块2从数据存储单元1中获取执行操作所需的源数据,并将其送入到第二运算子模块22;
步骤3,控制单元3控制第二运算子模块22根据指令内容完成相应的运算,获取运算结果;
步骤4,控制单元3控制第二运算子模块22将运算结果根据指令中目的操作数的地址写入到数据输出单元4中,运算终止。
步骤5,控制单元3根据排序指令中的排序类型域选择对运算模块数据向量进行排序操作所采用的方法,包括但不局限于冒泡排序、选择排序、快速排序、归并排序、二分排序等;
步骤6,控制单元3根据向量排序的类型、待排序向量的长度,排序指令的源操作数源地址、目的操作数地址,生成向量排序所需要的微指令,并将微指令送至运算模块2。
步骤7,运算模块2从数据存储单元1中获取待排序向量或排序中间结果,根据微指令对待排序向量或排序中间结果进行排序操作。若排序得到的为中间结果,则将中间结果写回到数据存储单元1原地址处,重复执行步骤7;否则,排序得到的为最后结果,将排序后的结果根据排序指令提供的目的操作数地址写回到数据输出单元4中,操作结束。
图6示意性示出了本公开实施例的支持向量排序指令的装置的归并排序部分的第一运算子模块的结构示意图;
图7示意性示出了本公开实施例的数据归并单元的结构示意图;
如图所示,数据归并单元中包括控制信号CTRL,输入向量D_1和D_2,输出数据为OUT。其中,CTRL用于设置数据归并单元的操作类型和指明输入向量D_1和D_2的长度len_1和len_2,可选类型为0和1,类型0表示数据归并单元根据向量由小到大的顺序进行归并,类型1表示数据归并单元根据向量由大到小的顺序进行归并,若其中一个输入向量的长度为0时,则直接输出另一个向量。比如,当向量D_1和D_2且操作类型为0分别为2、4、6、8和3、3、5、9时,归并的过程如下:
步骤1:
D_1:2 4 6 7 len_1:4
D_2:3 3 8 9 len_2:4
输出向量:2
步骤2:
D_1:4 6 7 len_1:3
D_2:3 3 8 9 len_2:4
输出向量:2 3
步骤3:
D_1:4 6 7 len_1:3
D_2:3 8 9 len_2:3
输出向量:2 3 3
步骤4:
D_1:4 6 7 len_1:3
D_2:8 9 len_2:2
输出向量:2 3 3 4
步骤5:
D_1:6 7 len_1:2
D_2:8 9 len_2:2
输出向量:2 3 3 4 6
步骤6:
D_1:7 len_1:1
D_2:8 9 len_2:2
输出向量:2 3 3 4 6 7
步骤7:
D_1: len_1:0
D_2:8 9 len_2:2
输出向量:2 3 3 4 6 7 8 9
向量归并结束。
对于向量排序指令(sort_op,src,dst,9,0),假设数据存储单元1地址src开始,连续存放的9个数据分别为9、1、5、3、4、2、6、8、7,向量归并单元数量为2。根据排序类型的最高位,进行由小到大的排序,根据排序类型的低m-1位全0,进行排序的类型为归并排序。在运算过程,每次每个向量归并单元对应输入的向量、地址以及输出地址如下所示:
第一次合并:
Figure GDA0001968962600000091
合并后的向量为1 9 3 5 2 4 6 8 7;
第二次合并:
Figure GDA0001968962600000101
合并后的向量为1 3 5 9 2 4 6 8 7;
第三次合并:
Figure GDA0001968962600000102
合并后的向量为:1 2 3 4 5 6 7 8 7
第四次合并:
Figure GDA0001968962600000111
合并后的向量为:1 2 3 4 5 6 7 7 8,并将其送入到数据输出单元4中。
各功能单元/模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (25)

1.一种支持向量排序的装置,包括数据存储单元、运算模块、控制单元和数据输出单元,其中,
数据存储单元,用于存储运算指令、待排序的数据向量以及排序向量的中间结果,其中,所述运算指令包括:操作码OP、向量地址SRC、向量地址DST、向量长度LEN和排序类型;
控制单元,获取所述运算指令,根据所述操作码OP判断所述运算指令是否为向量排序指令,若是,根据所述向量排序指令的排序类型、向量长度LEN、向量地址SRC、向量地址DST生成向量排序所需要的微指令,并向运算模块输入进行运算的微指令,并控制运算模块将运算结果写入到数据输出单元中;
运算模块,用于根据微指令设置排序规则,所述运算模块的多个运算子模块并发执行,若排序得到的为中间结果,则将中间结果写回所述向量地址SRC,继续进行排序操作,将待排序的数据向量或排序向量的中间结果排序为由小到大的向量或由大到小的向量,形成与待排序向量等向量长度LEN的排序后的向量,并将排序后的结果根据排序指令提供的向量地址DST写入到数据输出单元;
数据输出单元,用于存储排序后的向量;
所述排序类型域的长度为m(m>1)位时,排序类型的低m-1位指明排序指令所采用的排序方法。
2.根据权利要求1所述的装置,其特征在于,还包括:
数据输出单元,用于接收并输出排序后的向量。
3.根据权利要求1所述的装置,其特征在于,所述排序规则包括冒泡排序、选择排序、快速排序、归并排序和/或二分排序规则。
4.根据权利要求3所述的装置,其特征在于,所述排序规则为归并排序规则。
5.根据权利要求4所述的装置,其特征在于,所述运算模块包括由n个向量归并单元构成的第一运算子模块,其中,n为大于等于2的自然数,第一运算子模块每次从数据存储单元中读取不大于2n个已经归并的子向量或者有序子向量,然后进行归并,转存入数据存储单元中,直到已经归并的子向量的长度等于待排序的数据向量长度,形成排序后的向量。
6.根据权利要求1-4任一所述的装置,其特征在于,所述运算模块还包括进行非向量排序的第二运算子模块,第二运算子模块用以完成除向量排序外的运算操作。
7.根据权利要求1所述的装置,其特征在于:
所述操作码OP长度为k位,内容为b1b2…bk,用于指明该指令所做的操作为向量排序操作,若指令的前k位不与b1b2…bk一致,则表明指令表示其他运算操作。
8.根据权利要求1所述的装置,其特征在于:
所述向量地址SRC长度为q位,当操作码为b1b2…bk时,表示待排序向量在数据存储单元中的地址。
9.根据权利要求1所述的装置,其特征在于:
所述向量地址DST长度为q位,当操作码为b1b2…bk时,表示排序后的向量在数据输出单元中的地址。
10.根据权利要求1所述的装置,其特征在于:
所述向量长度LEN长度为r位,当操作码为b1b2…bk时,表示待排序向量的长度。
11.根据权利要求1所述的装置,其特征在于:
所述排序类型长度为1或多位,当操作码为b1b2…bk时,若排序类型的最高位为0,表示由小到大进行排序;若排序类型的最高位为1,表示由大到小进行排序。
12.一种应用权利要求1-11任一所述装置进行向量排序方法,其特征在于包括:
通过数据存储单元存储运算指令,待排序的数据向量以及排序向量的中间结果,所述运算指令包括:操作码OP、向量地址SRC、向量地址DST、向量长度LEN和排序类型;
通过控制单元获取所述运算指令,根据所述操作码OP判断所述运算指令是否为向量排序指令,若是,根据所述向量排序指令的排序类型、向量长度LEN、向量地址SRC、向量地址DST生成向量排序所需要的微指令,并向运算模块输入进行运算的微指令,并控制运算模块将运算结果写入到数据输出单元中;
通过运算模块,根据微指令设置排序规则,所述运算模块的多个运算子模块并发执行,若排序得到的为中间结果,则将中间结果写回所述向量地址SRC,继续进行排序操作,将待排序的数据向量或排序向量的中间结构排序为由小到大的向量或由大到小的向量,形成与待排序向量等向量长度LEN的排序后的向量,并将排序后的结果根据排序指令提供的向量地址DST写入到数据输出单元;
所述排序类型域的长度为m(m>1)位时,排序类型的低m-1位指明排序指令所采用的排序方法。
13.根据权利要求12所述的方法,其特征在于,还包括:
通过数据输出单元接收并输出排序后的向量。
14.根据权利要求12所述的方法,其特征在于,所述排序规则包括冒泡排序、选择排序、快速排序、归并排序和/或二分排序规则。
15.根据权利要求14所述的方法,其特征在于,所述排序规则为归并排序规则。
16.根据权利要求12所述的方法,其特征在于:
所述操作码OP长度为k位,内容为b1b2…bk,用于指明该指令所做的操作为向量排序操作,若指令的前k位不与b1b2…bk一致,则表明指令表示其他运算操作。
17.根据权利要求12所述的方法,其特征在于:
所述向量地址SRC长度为q位,当操作码为b1b2…bk时,表示待排序向量在数据存储单元中的地址。
18.根据权利要求12所述的方法,其特征在于:
所述向量地址DST长度为q位,当操作码为b1b2…bk时,表示排序后的向量在数据输出单元中的地址。
19.根据权利要求12所述的方法,其特征在于:
所述向量长度LEN长度为r位,当操作码为b1b2…bk时,表示待排序向量的长度。
20.根据权利要求19所述的方法,其特征在于:
所述排序类型长度为1或多位,当操作码为b1b2…bk时,若排序类型的最高位为0,表示由小到大进行排序;若排序类型的最高位为1,表示由大到小进行排序。
21.一种向量排序方法,其特征在于包括:
控制单元从数据存储单元中获取所要执行的指令,控制单元根据指令的操作码判断指令的类型,其中,所述指令包括:操作码、排序指令的源操作数源地址、目的操作数地址、待排序向量的长度和排序的类型;
若控制单元根据指令的操作码判断指令的类型为非排序指令,控制单元控制运算模块从数据存储单元中获取执行操作所需的源数据,并将其送入到第二运算子模块;
控制单元控制第二运算子模块根据指令内容完成相应的运算,获取运算结果;
控制单元控制第二运算子模块将运算结果根据指令中目的操作数的地址写入到数据输出单元中,运算终止;
若控制单元根据指令的操作码判断指令的类型为排序指令,控制单元根据向量排序的类型、待排序向量的长度,排序指令的源操作数源地址、目的操作数地址,生成向量排序所需要的微指令,并将微指令送至运算模块;
运算模块从数据存储单元中获取待排序向量或排序中间结果,根据微指令对待排序向量或排序中间结果进行排序操作;若排序得到的为中间结果,则将中间结果写回到数据存储单元原地址处,继续进行排序操作;否则,排序得到的为最后结果,将排序后的结果根据排序指令提供的目的操作数地址写回到数据输出单元中,操作结束;所述运算模块的多个运算子模块并发执行;
所述排序类型域的长度为m(m>1)位时,排序类型的低m-1位指明排序指令所采用的排序方法。
22.根据权利要求21所述的方法,其特征在于,所述向量排序的类型为归并排序。
23.根据权利要求22所述的方法,其特征在于,运算模块从数据存储单元中获取待排序向量或排序中间结果,根据微指令对待排序向量或排序中间结果进行排序操作,具体为:
初始化归并次数i为1;
通过多个向量归并单元进行计算,设定
Figure FDF0000011615210000051
在第i次归并待排序的数据向量或中间结果时:
从数据存储单元中获取待排序向量或排序中间结果,将待排序的数据向量或排序中间结果按顺序分成
Figure FDF0000011615210000052
份,除最后一份外,每个向量长度为2i-1,其中m和n分别为待排序向量的长度和向量归并单元的数量,对向量进行两两归并,
若归并次数
Figure FDF0000011615210000053
则将归并次数加一,并将处理后的中间结果写回到数据存储单元原地址中,i++,继续通过多个向量归并单元进行计算;
若归并次数
Figure FDF0000011615210000054
只存在分配后的两份待排序向量,经第一个向量归并单元归并后,得到的向量为已排序向量,将排序后的结果根据排序指令提供的目的操作数地址写入到数据输出单元中,操作结束。
24.根据权利要求23所述的方法,其特征在于,所述两两归并具体包括:控制单元根据排序指令提供的源操作数地址按顺序编号1、2、…、
Figure FDF0000011615210000055
将编号为2*j-1、2*j的向量分配给第((j-1)mod n)+1个向量归并单元进行处理,其中j>0。
25.使用权利要求1-11任一所述装置进行神经网络运算的方法,其中所述待排序的数据向量为预处理阶段测试数据特征矩阵对应的特征值向量和分类结果的概率向量。
CN201710279834.4A 2017-04-20 2017-04-25 支持向量排序的装置、方法及应用 Active CN108733352B (zh)

Priority Applications (8)

Application Number Priority Date Filing Date Title
CN201710279834.4A CN108733352B (zh) 2017-04-25 2017-04-25 支持向量排序的装置、方法及应用
US16/476,261 US11977968B2 (en) 2017-04-20 2018-04-17 Sparse processing in neural network processors
PCT/CN2018/083379 WO2018192492A1 (zh) 2017-04-20 2018-04-17 一种运算装置及相关产品
CN201811011596.XA CN109284823B (zh) 2017-04-20 2018-04-17 一种运算装置及相关产品
EP19199531.5A EP3699826A1 (en) 2017-04-20 2018-04-17 Operation device and related products
CN201880000808.6A CN109104876B (zh) 2017-04-20 2018-04-17 一种运算装置及相关产品
EP18787049.8A EP3579152B1 (en) 2017-04-20 2018-04-17 Computing apparatus and related product
US16/537,820 US10789531B2 (en) 2017-04-20 2019-08-12 Operation device and related products

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710279834.4A CN108733352B (zh) 2017-04-25 2017-04-25 支持向量排序的装置、方法及应用

Publications (2)

Publication Number Publication Date
CN108733352A CN108733352A (zh) 2018-11-02
CN108733352B true CN108733352B (zh) 2021-06-11

Family

ID=63934654

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710279834.4A Active CN108733352B (zh) 2017-04-20 2017-04-25 支持向量排序的装置、方法及应用

Country Status (1)

Country Link
CN (1) CN108733352B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112861145B (zh) * 2021-01-06 2023-12-12 华控清交信息科技(北京)有限公司 一种数据处理方法、装置和用于数据处理的装置
US11593106B1 (en) 2021-09-24 2023-02-28 Apple Inc. Circuits and methods for vector sorting in a microprocessor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101571810A (zh) * 2009-05-31 2009-11-04 清华大学 执行程序的方法、验证程序结果的方法、装置及系统
CN102637124A (zh) * 2012-03-22 2012-08-15 中国电子科技集团公司第五十八研究所 一种基4fft算法的并行处理装置及方法
CN103218204A (zh) * 2013-04-19 2013-07-24 中国科学院自动化研究所 多模式地址产生装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
JP2003186567A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd マイクロプロセッサ
GB2456775B (en) * 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
CN103870408B (zh) * 2012-12-18 2017-06-06 群联电子股份有限公司 数据处理方法、存储器控制器与存储器储存装置
GB2540941B (en) * 2015-07-31 2017-11-15 Advanced Risc Mach Ltd Data processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101571810A (zh) * 2009-05-31 2009-11-04 清华大学 执行程序的方法、验证程序结果的方法、装置及系统
CN102637124A (zh) * 2012-03-22 2012-08-15 中国电子科技集团公司第五十八研究所 一种基4fft算法的并行处理装置及方法
CN103218204A (zh) * 2013-04-19 2013-07-24 中国科学院自动化研究所 多模式地址产生装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于现代硬件的并行内存排序方法综述;郭诚欣等;《计算机学报》;20161014;2070-2092 *

Also Published As

Publication number Publication date
CN108733352A (zh) 2018-11-02

Similar Documents

Publication Publication Date Title
Kaiser et al. Neural gpus learn algorithms
CN108701250B (zh) 数据定点化方法和装置
US20240012644A1 (en) Efficient direct convolution using simd instructions
CN109324827B (zh) 用于处理用于访问数据的指令的装置、方法和系统
KR102305568B1 (ko) 일정한 처리 시간 내에 k개의 극값을 찾는 방법
US10248384B2 (en) Arithmetic processing device and control method for arithmetic processing device
TW201209717A (en) Analyzing data using a hierarchical structure
JP2015505399A (ja) 状態機械格子におけるカウンタ動作
CN107341191B (zh) 一种三维空间的多尺度整数化编码方法和装置
CN111105029A (zh) 神经网络的生成方法、生成装置和电子设备
CN110321157A (zh) 用于具有可变精度输入操作数的融合乘-加操作的指令
US11244026B2 (en) Optimization problem arithmetic method and optimization problem arithmetic device
CN108733352B (zh) 支持向量排序的装置、方法及应用
JP3100721B2 (ja) 複数の命令を発行する装置および方法
JP6301647B2 (ja) 探索装置、探索方法およびプログラム
GB2573102A (en) Interaction property prediction system and method
US20220244959A1 (en) System and method for parallel combinatorial design
US20170046156A1 (en) Table lookup using simd instructions
CN113515620A (zh) 电力设备技术标准文档排序方法、装置、电子设备和介质
JP2022032703A (ja) 情報処理システム
CN109582911B (zh) 用于实行卷积的计算装置及实行卷积的计算方法
Lima et al. A Symmetric grammar approach for designing segmentation models
CN109635302A (zh) 一种训练文本摘要生成模型的方法和装置
CN110781292A (zh) 文本数据多层次分类方法、装置、电子设备和存储介质
CN112132272B (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
GR01 Patent grant
GR01 Patent grant