CN115525794A - 一种在单核处理器中对数据进行排序的方法 - Google Patents
一种在单核处理器中对数据进行排序的方法 Download PDFInfo
- Publication number
- CN115525794A CN115525794A CN202110712924.4A CN202110712924A CN115525794A CN 115525794 A CN115525794 A CN 115525794A CN 202110712924 A CN202110712924 A CN 202110712924A CN 115525794 A CN115525794 A CN 115525794A
- Authority
- CN
- China
- Prior art keywords
- data
- primary
- digit
- sequence
- statistical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000012163 sequencing technique Methods 0.000 title claims description 10
- 230000015654 memory Effects 0.000 claims description 24
- 238000007667 floating Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 7
- 230000003247 decreasing effect Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 abstract description 64
- 238000013473 artificial intelligence Methods 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90348—Query processing by searching ordered data, e.g. alpha-numerically ordered data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供一种在单核处理器中对数据进行排序的方法和系统,其中该系统和方法可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。本披露的方案可以提升包括例如人工智能领域在内的各类数据处理领域运算的运行效率,从而降低运算的整体开销和成本。
Description
技术领域
本公开涉及计算机领域,更具体地,涉及在处理器中对数据进行排序的领域。
背景技术
通常情况下,人工智能(AI)芯片专为神经网络算法这类计算密集的算法而设计,因此这类算法在AI芯片上运行效率较高。正因如此,AI芯片不具有通用性,因此对于诸如排序等通用算法来说效率较低,提高其效率的方法之一是设计一种适合AI芯片架构的算法,但并不是所有的通用算法都能够设计出类似的解决方案。
发明内容
本公开的一个目的在于在单核处理器中对数据进行排序。
根据本公开的第一方面,提供一种在单核处理器中对数据进行排序的方法,所述方法包括:建立数位统计序列,所述数位统计序列包括:所述数据中同级别的现有逻辑数位所属的整体逻辑数位,以及所述整体逻辑数位在所述数据的所述同级别的现有逻辑数位中的统计数量;确定所述数位统计序列中所述整体逻辑数位的统计数量的前缀和,以形成前缀和序列;以及根据所述前缀和序列来确定所述数据在存储空间中的位置,以便于对所述数据进行排序。
根据本公开第二方面,提供一种在单核处理器中对数据进行排序的方法,包括:根据所述数据的初级现有逻辑数位对所述数据进行排序,以形成初级排序数据;迭代地根据所述初级排序数据的次级现有逻辑数位,对所述初级排序数据进行重排序,从而形成重排序数据。
根据本公开第三方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
根据本公开第四方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开的技术方案提供了一种新的全向量化的排序算法,可用于实现数据的快速排序。并且该排序算法适合在AI芯片/处理器中对数据进行排序,提高了AI芯片/处理器中数据排序的效率。此外,该排序算法也适合在支持向量运算的处理器中对数据进行排序,有助于提升排序的性能和效率。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1示出了本公开一个实施方式的本公开可应用的处理器的结构示意图;
图2示出了根据本公开一个实施方式的在单核处理器中对数据进行排序的方法;
图3示出了根据本公开一个实施方式的数位统计序列的示例;
图4以图3为例描述了前缀和序列的生成过程;
图5给出了数据的位置与数位统计序列之间的逻辑关系;
图6示出了根据本公开一个实施方式的根据所述前缀和序列来确定所述数据在存储空间中的位置的方法流程图;
图7描述了如图6所示的排序序列;
图8示出了根据本公开另一个实施方式的在单核处理器中对数据进行排序的方法;
图9示出了根据本公开一个实施方式的迭代地根据所述初级排序数据的次级现有逻辑数位,对所述初级排序数据进行重排序,从而形成重排序数据的流程示意图;
图10示出了根据数据的次级现有逻辑数位建立前缀和序列的过程;
图11示出了根据本公开另一个实施方式的根据前缀和序列来确定每个数据的位置的示意图;
图12示出了一种组合处理装置;以及
图13示出了一种示例性板卡。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
对于为数据进行排序的常规算法,AI芯片计算效率较低,因为此类算法基本上很难向量化,因此这需要新的算法设计。
图1示出了本公开一个实施方式的本公开可应用的处理器的结构示意图。
本公开的技术方案可以应用于多核处理器,也可以应用于单核处理器。单核处理器的结构较为简单,将不再详细描述。如图1所示的多核处理器可以包括多个处理核,多个处理核又可以构成多个处理核组。例如,如图1所示,处理核00,处理核01……处理核0n构成处理核组0,并且处理核00,处理核01……处理核0n对共享存储器0进行访问;处理核10,处理核11……处理核1n构成处理核组1,并且处理核10,处理核11……处理核1n对共享存储器1进行访问;处理核m0,处理核m1……处理核mn构成处理核组m,并且处理核m0,处理核m1……处理核mn对共享存储器m进行访问。
处理核组的共享存储器0~共享存储器m之间可以进行通信,并且每个处理核可以直接地或者间接地通过其相应的共享存储器来对全局存储器进行访问。
当对数据进行排序时,处理核可以将数据写入到全局存储器中,并且完成排序之后可以从全局存储器中读取排序后的数据。
对数据进行排序可以存在多种应用场景,例如可以对十进制数据进行过排序,对16进制数据进行排序,可以对二进制数据进行排序;例如,对于汉字而言,可以将汉字转换为ASCII码,然后根据转换而来的ASCII码所对应的十进制或16进制数据进行排序。更具体地,本公开的技术方案可以对单数位的数据进行排序,例如1,9,7,8,2等等;也可以对多数位的数据进行排序,例如10,24,31,105,78等等;本公开的技术方案还可以响应于现有逻辑数位中同一级别的现有逻辑数位相同,对另一个级别的现有逻辑数位进行排序。对某些数位相同的数据直接进行排序,从而节省了排序时间,例如10,20,40,70,90等等。这些更具体的应用场景将在下文中进行更详细的描述。
图2示出了根据本公开一个实施方式的在单核处理器中对数据进行排序的方法,所述方法包括:在操作S210,建立数位统计序列,所述数位统计序列包括:所述数据中同级别的现有逻辑数位所属的整体逻辑数位,以及所述整体逻辑数位在所述数据的所述同级别的现有逻辑数位中的统计数量;在操作S220,确定所述数位统计序列中所述整体逻辑数位的统计数量的前缀和,以形成前缀和序列;以及在操作S230,根据所述前缀和序列来确定所述数据在存储空间中的位置,以便于对所述数据进行排序。
首先,对图2中所涉及的概念进行解释。
本文所述的单核处理器是指具有一个处理核的处理器,或者,在多核处理器中,仅有一个处理核参与运算的情况下,也可以称为单核处理器。对于多核处理器而言,上文中已经结合图1进行了解释,这里将不再赘述。
上文中所述的“数据”,包括了数字以及能够转换为数字的各种其他字母、符号、字符串、汉字等。
上文中所述的“数位”是指数据中的“位”。例如,数据12包括了处于个位的数位2以及处于十位的数位1;数据108包括了处于个位的数位8,处于十位的数位0以及处于百位的数位1;对于例如数据5而言,其包括处于个位的数位5,但也可以认为其包括了处于十位的数位0,处于百位的数位0等等。
上文中的术语“同级别”是指不同数据中处于同一位的数位。例如对于数据18和数据34,其同级别的数位分别为8和4(个位)以及1和3(十位);对于数据8和数据34,其同级别的数位分别为8和4(个位)以及0和3(十位)。
下面将结合具体的例子来解释建立数位统计序列的过程。图3示出了一个示例性的数据统计序列的示意图。
逻辑数位是指能够对数据的数位进行表达的任何形式。对于十进制整数来说,数位是直观的,比如整数123,它的数位分别是百分位1,十分位2,个位3,共3个数位。但是对于浮点数来说,数位并不直观,例如,浮点数3715.0,其十六进制表示为E83,所以其逻辑数位可以为E、8和3。
现有逻辑数位是指数据中实际包含的数位,例如整数123的现有逻辑数位分别是百分位1,十分位2,个位3;而浮点数3715.0的现有逻辑数位为E、8、3。
现有逻辑数位属于一个大的逻辑数位集合,例如十进制的现有逻辑数位1、2和3所属的整体逻辑数位为0~9;而十六进制的现有逻辑数位E、8和3所属的整体逻辑数位为0-F。
根据本公开的另一个实施方式,根据参与排序的数据中所含的逻辑数位的上限和下限,上述的整体逻辑数位的范围可以是该上限和下限所限制的范围。例如,如果参与排序的数据中所含的逻辑数位的下限为2,上限为7,那么该整体逻辑数位的可以是2~7。当然,可以理解的是,这仅仅是一种特殊的示例,在实际的操作中,可以选择进制所对应的范围作为整体逻辑数位的范围。
如图3所示,在某一个处理核中存储有八个数据,例如7,15,3,100,28,19,30和70,并且需要基于个位对这八个数据7,15,3,100,28,19,30和70进行排序,那么可以统计这八个数据中个位上每个逻辑数位的数量。根据人类通常的认知和“直观”的判断,如果基于个位从小到大地对数据7,15,3,100,28,19,30和70进行排序,那么实际的顺序可以是100,30,70,3,15,7,28和19。需要理解的是,如果基于个位来进行排序,那么100,30和70这三个数据也可以为30,70,100;或者可以是70,30,100;或者可以是30,100,70;或者可以是70,100,30等等。
如图3所示,在该数位统计序列中,现有逻辑数位分别为7、5、3、0、8、9、0和0,其所属的整体逻辑数位为0~9,因此,该数位统计序列中,数位0的统计数量为3,数位1的统计数量为0,数位2的统计数量为0,数位3的统计数量为1,数位4的统计数量为0,数位5的统计数量为1,数位6的统计数量为0,数位7的统计数量为1,数位8的统计数量为1,以及数位9的统计数量为1。
尽管图3中示出的统计数量按照整体逻辑数位0~9增序的方式来进行排列,但本领域技术人员也可以按照整体逻辑数位9~0这样降序的方式进行排列,不同的排列方式将使得每个数据的位置产生不同,这将在后文中进行描述。需要理解的是,整体逻辑数位的排列方式不做任何限定。
当得到了如图3所示的数位统计序列之后,可以计算该数位统计序列的前缀和,即,根据本公开的一个实施方式,确定所述数位统计序列中所述整体逻辑数位的统计数量的前缀和,以形成前缀和序列可以包括:将所述数位统计序列中每个逻辑数位的统计数量与在前的全部统计数量相加,以得到前缀和;将所述前缀和存放在每个逻辑数位对应的位置,以形成前缀和序列。
前缀和用于反映每个元素的位置。前缀和可以以数学公式表达为C[i]=A[0]+A[1]+…A[i],或者表达为C[i]=A[i]+C[i-1]。其中,C表示前缀和序列中每个元素的值,A表示数位统计序列中每个元素的值,i表示前缀和序列或者数位统计序列中元素的索引。
图4以图3为例描述了前缀和序列的生成过程。
如图4所示,数位统计序列的第0个元素A[0]=3,因此,前缀和序列C[0]=A[0]=3;数位统计序列的第1个元素A[1]=0,因此,前缀和序列C[1]=A[0]+A[1]=3;数位统计序列的第2个元素A[2]=2,因此,前缀和序列C[2]=A[0]+A[1]+A[2]=3;数位统计序列的第3个元素A[3]=1,因此,前缀和序列C[3]=A[0]+A[1]+A[2]+A[3]=4。依照这样的计算方式,可以得到如图4所示的前缀和序列。
在另一个实施方式中,也可以按照C[i]=A[i]+C[i-1]来计算前缀和序列。
由此,
C[0]=A[0]=3;
C[1]=A[1]+C[0]=0+3=3
C[2]=A[2]+C[1]=0+3=3
C[3]=A[3]+C[2]=1+3=4
C[4]=A[4]+C[3]=0+4=4
C[5]=A[5]+C[4]=1+4=5
C[6]=A[6]+C[5]=0+5=5
C[7]=A[7]+C[6]=1+5=6
C[8]=A[8]+C[7]=1+6=7
C[9]=A[9]+C[8]=1+7=8
数位统计序列反映了每个逻辑数位上有多少个数据。例如如果数位统计序列中数位0所对应的值为3,则表示有三个数据中包含了数位0。当将这三个数据写入到存储器中时,需要避免这些数据发生冲突。另一方面,根据数位统计序列得到的前缀和以及相应的前缀和序列能够反映相应的数据的具体位置,由此,可以根据所述前缀和序列来确定所述数据在存储空间中的位置,以便于对所述数据进行排序。
图5给出了数据的位置与前缀和序列之间的逻辑关系。
如图5所示,假设4个数据a0,a1,a2和a3中均包含了逻辑数位4,并且假设该逻辑数位4所对应的前缀和为7,那么可以以该前缀和7来确定包含该逻辑数位的每个数据的位置。为了清楚起见,其他逻辑数位的前缀和表示为X,并省略对其描述。根据本公开的一个实施方式,可以从数据a0,a1,a2和a3的尾部向前遍历,即数据a3的位置为7,数据a2的位置为7-1,数据a1的位置为7-2,以及数据a0的位置为7-3。也可以从数据a0,a1,a2和a3的首部向后遍历,即数据a0的位置为7,数据a1的位置为7-1,数据a2的位置为7-2,以及数据a3的位置为7-3。还需要理解的是,上文中是认为首个位置为1,如果认为首个位置为0,则从数据a0,a1,a2和a3的尾部向前遍历时,数据a3的位置为7-1,数据a2的位置为7-2,数据a1的位置为7-3,以及数据a0的位置为7-4。当从数据a0,a1,a2和a3的首部向后遍历时,则数据a0的位置为7-1,数据a1的位置为7-2,数据a2的位置为7-3,以及数据a3的位置为7-4。上述的区别仅仅在于对首位置的定义不同,这并不会影响本公开对技术的整体描述和理解。
图6示出了根据本公开一个实施方式的根据所述前缀和序列来确定所述数据在存储空间中的位置的方法流程图。
如图6所示,该流程图所示的操作包括:在操作S610,建立排序序列;在操作S620,根据所述前缀和序列中每个现有逻辑数位所对应的统计数量的前缀和,将所述每个逻辑数位所属的数据存放在所述排序序列的对应位置,以便于对所述数据进行排序。
首先结合图7来介绍如图6所示的方法流程图的过程。
如图7所示,给出了排序序列,该排序序列给出从低到高顺序设置的位置索引0~9,每个位置索引上方对应的位置用于填充相应的数据,这表示数据所处的位置。需要理解的是,如上所述,这里首位置为0,因此前缀和序列中的统计数量的前缀和应当减去1,才能表示数据所处的位置。
我们仍然以数据7,15,3,100,28,19,30和70为例来进行说明。本次排序仍然只以个位数为基础来进行排序,而不考虑十位数的影响。
首先,如图7所示,以尾部数据70开始向前遍历,逻辑数位0在前缀和序列中对应的统计数量的前缀和为3。根据图5的解释,其对应的位置应当为3-1=2。因此,可以将数据70填充到位置索引2所对应的位置处。
根据本公开的一个实施方式,每当将所述每个逻辑数位所属的数据存放在所述排序序列的对应位置,则将所述统计数量的前缀和减去1,从而避免对应同一逻辑数位的多个数据写入到存储器或存储空间中发生冲突。
根据该实施方式,则逻辑数位0处所对应的前缀和减去1,从而前缀和变为2。
接下来,遍历到数据30。此时,其对应的位置应当为2-1=1。因此,可以将数据30填充到位置索引1所对应的位置处。之后,可以将前缀和序列中逻辑数位0所对应的统计数量的前缀和减去1,从而成为1。
接下来,遍历到数据19,逻辑数位9在前缀和序列中对应的统计数量的前缀和为8。根据图5的解释,其对应的位置应当为8-1=7。因此,可以将数据19填充到位置索引7所对应的位置处。另外,逻辑数位9处所对应的前缀和减去1,从而前缀和变为7。
接下来,遍历到数据28,逻辑数位8在前缀和序列中对应的统计数量的前缀和为7。根据图5的解释,其对应的位置应当为7-1=6。因此,可以将数据28填充到位置索引6所对应的位置处。另外,逻辑数位8处所对应的前缀和减去1,从而前缀和变为6。接下来,遍历到数据100,逻辑数位0在前缀和序列中对应的统计数量的前缀和为1。根据图5的解释,其对应的位置应当为1-1=0。因此,可以将数据100填充到位置索引0所对应的位置处。另外,逻辑数位0处所对应的前缀和减去1,从而前缀和变为0。
接下来,遍历到数据3,逻辑数位3在前缀和序列中对应的统计数量的前缀和为4。根据图5的解释,其对应的位置应当为4-1=3。因此,可以将数据3填充到位置索引3所对应的位置处。另外,逻辑数位3处所对应的前缀和减去1,从而前缀和变为3。
接下来,遍历到数据15,逻辑数位5在前缀和序列中对应的统计数量的前缀和为5。根据图5的解释,其对应的位置应当为5-1=4。因此,可以将数据15填充到位置索引4所对应的位置处。另外,逻辑数位5处所对应的前缀和减去1,从而前缀和变为4。
最后,遍历到数据7,逻辑数位7在前缀和序列中对应的统计数量的前缀和为6。根据图5的解释,其对应的位置应当为6-1=5。因此,可以将数据7填充到位置索引5所对应的位置处。另外,逻辑数位7处所对应的前缀和减去1,从而前缀和变为5。
最终,经过排序的数据为100,30,70,3,15,7,28和19。
上文中描述了基于某一级逻辑数位(如个位)进行排序,而在另一个实施方式中,可以对整体数据进行排序。对于上述的数列,期望的从小到大的排序序列为3,7,15,19,28,30,70和100。由此,可以基于以上的排序对该数据进行进一步的排序。
图8示出了根据本公开另一个实施方式的在单核处理器中对数据进行排序的方法,包括:在操作S810,根据所述数据的初级现有逻辑数位对所述数据进行排序,以形成初级排序数据;在操作S820,迭代地根据所述初级排序数据的次级现有逻辑数位,对所述初级排序数据进行重排序,从而形成重排序数据。
目前尚未发现基于多级数位对数据进行排序的方案,本公开的技术方案采用多级排序的方式,逐级地调整数据的位置,从而最终实现数据的排序。
对于操作S810,根据所述数据的初级现有逻辑数位对所述数据进行排序,以形成初级排序数据可以包括:建立初级数位统计序列,所述初级数位统计序列包括:所述数据中初级现有逻辑数位所属的初级整体逻辑数位,以及所述初级整体逻辑数位在所述数据的初级现有逻辑数位中的初级统计数量;确定所述初级数位统计序列中所述初级整体逻辑数位的前缀和,以形成初级前缀和序列;以及根据所述初级前缀和序列来确定所述数据在存储空间中的初级位置,以便于对所述数据进行排序,从而形成初级排序数据。
上文中已经以数据7,15,3,100,28,19,30和70为例进行了说明,得到的初级排序数据为100,30,70,3,15,7,28和19。该初级排序数据是以数据的个位为基础进行的排序。这里将不再赘述。
同样地,所述初级统计数量按照所述初级整体逻辑数位的增序或降序来排列。
根据本公开的一个实施方式,确定所述初级数位统计序列中所述初级整体逻辑数位的初级统计数量的前缀和,以形成初级前缀和序列可以包括:将所述初级数位统计序列中每个初级数位的初级统计数量与在前的全部初级统计数量相加,以得到前缀和;将所述前缀和存放在每个初级数位对应的初级位置,以形成初级前缀和序列。
上文中已经结合图4描述了前缀和的计算过程,这里将不再赘述。
根据本公开的一个实施方式,根据所述初级前缀和序列来确定所述数据在存储空间中的初级位置,以便于对所述数据进行排序,从而形成初级排序数据可以包括:建立初级排序序列;根据所述初级前缀和序列中每个初级现有逻辑数位所对应的初级统计数量的前缀和,将所述每个初级数位所属的数据存放在所述初级排序序列的对应位置,以便于对所述数据进行排序,从而形成初级排序数据。优选地,每当将所述每个初级数位所属的数据存放在所述初级排序序列的对应位置,则将所述初级统计数量的前缀和减去一。
上文中已经结合图7描述了根据所述初级前缀和序列来确定所述数据在存储空间中的初级位置,这里将不再赘述。
图9示出了根据本公开一个实施方式的迭代地根据所述初级排序数据的次级现有逻辑数位,对所述初级排序数据进行重排序,从而形成重排序数据的流程示意图。
如图9所示,迭代地根据所述初级排序数据的次级现有逻辑数位,对所述初级排序数据进行重排序,从而形成重排序数据可以包括:在操作S910,建立次级数位统计序列,所述次级数位统计序列包括:所述初级排序数据中次级现有逻辑数位所属的次级整体逻辑数位,以及所述次级整体逻辑数位在所述初级排序数据的次级现有逻辑数位中的次级统计数量;在操作S920,确定所述次级数位统计序列中所述次级整体逻辑数位的统计数量的前缀和,以形成次级前缀和序列;以及在操作S930,根据所述次级前缀和序列来确定所述初级排序数据在存储空间中的次级位置,以便于对所述初级排序数据进行重排序,从而形成重排序数据。
可以进一步地基于上述数据的十位对数据进行进一步的排序,当基于数据的十位对数据进行进一步的排序之后,可以再基于数据的百位进行排序。
可以理解的是,对于初级排序数据100,30,70,3,15,7,28和19,可以基于这些数据的十位来建立前缀和序列。
图10示出了根据数据的次级现有逻辑数位建立前缀和序列的过程。
如图10所示,在基于次级数位(十位)的数位统计序列中,现有逻辑数位分别为0、3、7、0、1、0、2和1,其所属的整体逻辑数位为0~9,因此,该数位统计序列中,数位0的统计数量为3,数位1的统计数量为2,数位2的统计数量为1,数位3的统计数量为1,数位4的统计数量为0,数位5的统计数量为0,数位6的统计数量为0,数位7的统计数量为1,数位8的统计数量为0,以及数位9的统计数量为0。
进一步地,根据图4所示的计算前缀和的方法,基于十位所得到的前缀和序列为:
C[0]=A[0]=3;
C[1]=A[1]+C[0]=2+3=5
C[2]=A[2]+C[1]=1+5=6
C[3]=A[3]+C[2]=1+6=7
C[4]=A[4]+C[3]=0+7=7
C[5]=A[5]+C[4]=0+7=7
C[6]=A[6]+C[5]=0+7=7
C[7]=A[7]+C[6]=1+7=8
C[8]=A[8]+C[7]=0+8=8
C[9]=A[9]+C[8]=0+8=8
图11示出了根据本公开另一个实施方式的根据前缀和序列来确定每个数据的位置的示意图。
接下来,如图11所示,以尾部数据19开始向前遍历,逻辑数位1在前缀和序列中对应的统计数量的前缀和为5。其对应的位置应当为5-1=4。因此,可以将数据19填充到位置索引4所对应的位置处。另外,逻辑数位1处所对应的前缀和减去1,从而前缀和变为4。接下来,遍历到数据28。此时,逻辑数位2在前缀和序列中对应的统计数量的前缀和为6。其对应的位置应当为5。因此,可以将数据28填充到位置索引5所对应的位置处。另外,逻辑数位2处所对应的前缀和减去1,从而前缀和变为5。
接下来,遍历到数据7,逻辑数位0在前缀和序列中对应的统计数量的前缀和为3。其对应的位置应当为3-1=2。因此,可以将数据7填充到位置索引2所对应的位置处。另外,逻辑数位0处所对应的前缀和减去1,从而前缀和变为2。
接下来,遍历到数据15,逻辑数位1在前缀和序列中对应的统计数量的前缀和为4。其对应的位置应当为4-1=3。因此,可以将数据15填充到位置索引3所对应的位置处。另外,逻辑数位1处所对应的前缀和减去1,从而前缀和变为3。
接下来,遍历到数据3,逻辑数位0在前缀和序列中对应的统计数量的前缀和为2。其对应的位置应当为1。因此,可以将数据3填充到位置索引1所对应的位置处。另外,逻辑数位0处所对应的前缀和减去1,从而前缀和变为1。
接下来,遍历到数据70,逻辑数位7在前缀和序列中对应的统计数量的前缀和为8。其对应的位置应当为8-1=7。因此,可以将数据70填充到位置索引7所对应的位置处。另外,逻辑数位7处所对应的前缀和减去1,从而前缀和变为7。
接下来,遍历到数据30,逻辑数位3在前缀和序列中对应的统计数量的前缀和为7。其对应的位置应当为7-1=6。因此,可以将数据30填充到位置索引6所对应的位置处。另外,逻辑数位3处所对应的前缀和减去1,从而前缀和变为6。
最后,遍历到数据100,逻辑数位0在前缀和序列中对应的统计数量的前缀和为1。其对应的位置应当为1-1=0。因此,可以将数据100填充到位置索引0所对应的位置处。另外,逻辑数位0处所对应的前缀和减去1,从而前缀和变为0。
最终,经过排序的数据为100,3,7,15,19,28,30和70。
经过第二轮的排序,除了数据100之外,其他数据已经达到期望的顺序。可以进一步基于百位数进行排序,从而得到期望的序列3,7,15,19,28,30,70和100。这里将不再对基于百位数的排序进行赘述。排序后的数据可以存储到处理核中以供进一步的使用。
上文中以十进制数据为例进行了描述,根据本公开的一个实施方式,当所述数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。采用十六进制表示,能够取得更好的性能。
例如,浮点数3715.0,其十六进制表示为E83,所以其逻辑数位应该为E、8和3。
进一步地,根据本公开的一个实施方式,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。需要理解的是,当数据为十进制数据且包括负数时,可以对该负数十进制数据的二进制的所有位取反,以及可以对该十进制数据中的正数或非负十进制数据的二进制表示的符号位取反,再按照上述方法进行排序。
这里以十六进制为例来进行说明。例如,存在如下正浮点数:b1=00110000 00000000 0000 0000 0000 1110,那么需要将正数b1的符号位取反,即变为b1’=1011 00000000 0000 0000 0000 0000 1110,并且b1’以十六进制表示为0XB000000E。
又存在如下负浮点数:b2=1001 0101 0000 1001 0000 1001 0101 0000,那么需要将负数b2所有位取反,即变为b2’=0110 1010 1111 0110 1111 0110 1010 1111,并且b2’以十六进制表示为0X6AF6F6AF。
对于十六进制而言,需要先以低位数进行排序,即先以E和F为基础进行排序,然后以0和A进行进一步的排序,并由此根据十六进制的所有位对这些浮点数进行排序。
本公开的技术方案提供了一种新的全向量化的排序算法,可用于实现数据的快速排序。该排序算法适合在支持向量运算的处理器中对数据进行排序,有助于提升排序的性能和效率。
本公开的单核处理器可以支持向量运算,这将有利于提升排序的性能和效率。支持向量运算的处理器,可以通过向量指令来实现向量化,以及能够并行地对数据进行运算操作。
本公开还提供了一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
本公开还提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开的技术方案可应用于人工智能领域,实现为或者实现在人工智能芯片中。并且该排序算法适合在AI芯片/处理器中对数据进行排序,有效提高了AI芯片/处理器中数据排序的效率。该芯片可以单独存在,也可以包含在计算装置中。
图12示出了一种组合处理装置1200,其包括上述的计算装置1202,通用互联接口1204,和其他处理装置1206。根据本公开的计算装置与其他处理装置进行交互,共同完成用户指定的操作。图12为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在计算装置(包括例如机器学习运算装置)与其他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所需的输入数据,写入该计算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入计算装置片上的控制缓存;也可以读取计算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构还可以包括存储装置1208,存储装置分别与所述计算装置和所述其他处理装置连接。存储装置用于保存在所述计算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本计算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图13,其提供了一种示例性的板卡,上述板卡除了包括上述芯片1302以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件1304、接口装置1306和控制器件1308。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元1310。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备1312(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡。
电子设备或装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
根据如下条款,可以更好地理解本公开的技术方案:
条款1.一种在单核处理器中对数据进行排序的方法,所述方法包括:
建立数位统计序列,所述数位统计序列包括:所述数据中同级别的现有逻辑数位所属的整体逻辑数位,以及所述整体逻辑数位在所述数据的所述同级别的现有逻辑数位中的统计数量;
确定所述数位统计序列中所述整体逻辑数位的统计数量的前缀和,以形成前缀和序列;以及
根据所述前缀和序列来确定所述数据在存储空间中的位置,以便于对所述数据进行排序。
条款2.根据条款1所述的方法,其中,所述统计数量按照所述整体逻辑数位的增序或降序来排列。
条款3.根据条款1或2所述的方法,其中,确定所述数位统计序列中所述整体逻辑数位的统计数量的前缀和,以形成前缀和序列包括:
将所述数位统计序列中每个逻辑数位的统计数量与在前的全部统计数量相加,以得到前缀和;
将所述前缀和存放在每个逻辑数位对应的位置,以形成前缀和序列。
条款4.根据条款1-3中任意一项所述的方法,其中,根据所述前缀和序列来确定所述数据在存储空间中的位置,以便于对所述数据进行排序包括:
建立排序序列;
根据所述前缀和序列中每个现有逻辑数位所对应的统计数量的前缀和,将所述每个逻辑数位所属的数据存放在所述排序序列的对应位置,以便于对所述数据进行排序。
条款5.根据条款4所述的方法,进一步包括:
每当将所述每个逻辑数位所属的数据存放在所述排序序列的对应位置,则将所述统计数量的前缀和减去一。
条款6.根据条款1-5中任意一项所述的方法,其中,所述数据为十进制数据;优选地,当所述十进制数据包括负数时,对所述负数十进制数据的二进制表示的所有位取反,以及当所述十进制数据还包括正数时,对所述正数十进制数据的二进制表示的符号位取反。
条款7.根据条款1-5中任意一项所述的方法,其中,当所述数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。
条款8.根据条款7所述的方法,其中,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。
条款9.一种在单核处理器中对数据进行排序的方法,包括:
根据所述数据的初级现有逻辑数位对所述数据进行排序,以形成初级排序数据;
迭代地根据所述初级排序数据的次级现有逻辑数位,对所述初级排序数据进行重排序,从而形成重排序数据。
条款10.根据条款9所述的方法,其中,根据所述数据的初级现有逻辑数位对所述数据进行排序,以形成初级排序数据包括:
建立初级数位统计序列,所述初级数位统计序列包括:所述数据中初级现有逻辑数位所属的初级整体逻辑数位,以及所述初级整体逻辑数位在所述数据的初级现有逻辑数位中的初级统计数量;
确定所述初级数位统计序列中所述初级整体逻辑数位的统计数量的前缀和,以形成初级前缀和序列;以及
根据所述初级前缀和序列来确定所述数据在存储空间中的初级位置,以便于对所述数据进行排序,从而形成初级排序数据。
条款11.根据条款10所述的方法,其中,所述初级统计数量按照所述初级整体逻辑数位的增序或降序来排列。
条款12.根据条款10或11所述的方法,其中,确定所述初级数位统计序列中所述初级整体逻辑数位的初级统计数量的前缀和,以形成初级前缀和序列包括:
将所述初级数位统计序列中每个初级数位的初级统计数量与在前的全部初级统计数量相加,以得到前缀和;
将所述前缀和存放在每个初级数位对应的初级位置,以形成初级前缀和序列。
条款13.根据条款10-12中任意一项所述的方法,其中,根据所述初级前缀和序列来确定所述数据在存储空间中的初级位置,以便于对所述数据进行排序,从而形成初级排序数据包括:
建立初级排序序列;
根据所述初级前缀和序列中每个初级现有逻辑数位所对应的初级统计数量的前缀和,将所述每个初级数位所属的数据存放在所述初级排序序列的对应位置,以便于对所述数据进行排序,从而形成初级排序数据。
条款14.根据条款13所述的方法,进一步包括:
每当将所述每个初级数位所属的数据存放在所述初级排序序列的对应位置,则将所述初级统计数量的前缀和减去一。
条款15.根据条款10-15中任意一项所述的方法,其中,迭代地根据所述初级排序数据的次级现有逻辑数位,对所述初级排序数据进行重排序,从而形成重排序数据包括:
建立次级数位统计序列,所述次级数位统计序列包括:所述初级排序数据中次级现有逻辑数位所属的次级整体逻辑数位,以及所述次级整体逻辑数位在所述初级排序数据的次级现有逻辑数位中的次级统计数量;
确定所述次级数位统计序列中所述次级整体逻辑数位的前缀和,以形成次级前缀和序列;以及
根据所述次级前缀和序列来确定所述初级排序数据在存储空间中的次级位置,以便于对所述初级排序数据进行重排序,从而形成重排序数据。
条款16.根据条款9-15中任意一项所述的方法,进一步包括:响应于现有逻辑数位中同一级别的现有逻辑数位相同,对另一个级别的现有逻辑数位进行排序。
条款17.根据条款1-16中任意一项所述的方法,其中,所述数据为十进制数据;优选地,当所述十进制数据包括负数时,对所述负数十进制数据的二进制表示的所有位取反,以及当所述十进制数据还包括正数时,对所述正数十进制数据的二进制表示的符号位取反。
条款18.根据条款1-16中任意一项所述的方法,其中,当所述数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。
条款19.根据条款18所述的方法,其中,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。
条款20.根据条款1-19中任意一项所述的方法,其中,所述单核处理器支持向量运算。
条款21.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如条款1-20中任意一项所述的方法。
条款22.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如条款1-20中任意一项所述的方法。
Claims (22)
1.一种在单核处理器中对数据进行排序的方法,所述方法包括:
建立数位统计序列,所述数位统计序列包括:所述数据中同级别的现有逻辑数位所属的整体逻辑数位,以及所述整体逻辑数位在所述数据的所述同级别的现有逻辑数位中的统计数量;
确定所述数位统计序列中所述整体逻辑数位的统计数量的前缀和,以形成前缀和序列;以及
根据所述前缀和序列来确定所述数据在存储空间中的位置,以便于对所述数据进行排序。
2.根据权利要求1所述的方法,其中,所述统计数量按照所述整体逻辑数位的增序或降序来排列。
3.根据权利要求1或2所述的方法,其中,确定所述数位统计序列中所述整体逻辑数位的统计数量的前缀和,以形成前缀和序列包括:
将所述数位统计序列中每个逻辑数位的统计数量与在前的全部统计数量相加,以得到前缀和;
将所述前缀和存放在每个逻辑数位对应的位置,以形成前缀和序列。
4.根据权利要求1-3中任意一项所述的方法,其中,根据所述前缀和序列来确定所述数据在存储空间中的位置,以便于对所述数据进行排序包括:
建立排序序列;
根据所述前缀和序列中每个现有逻辑数位所对应的统计数量的前缀和,将所述每个逻辑数位所属的数据存放在所述排序序列的对应位置,以便于对所述数据进行排序。
5.根据权利要求4所述的方法,进一步包括:
每当将所述每个逻辑数位所属的数据存放在所述排序序列的对应位置,则将所述统计数量的前缀和减去一。
6.根据权利要求1-5中任意一项所述的方法,其中,所述数据为十进制数据;优选地,当所述十进制数据包括负数时,对所述负数十进制数据的二进制表示的所有位取反,以及当所述十进制数据还包括正数时,对所述正数十进制数据的二进制表示的符号位取反。
7.根据权利要求1-5中任意一项所述的方法,其中,当所述数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。
8.根据权利要求7所述的方法,其中,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。
9.一种在单核处理器中对数据进行排序的方法,包括:
根据所述数据的初级现有逻辑数位对所述数据进行排序,以形成初级排序数据;
迭代地根据所述初级排序数据的次级现有逻辑数位,对所述初级排序数据进行重排序,从而形成重排序数据。
10.根据权利要求9所述的方法,其中,根据所述数据的初级现有逻辑数位对所述数据进行排序,以形成初级排序数据包括:
建立初级数位统计序列,所述初级数位统计序列包括:所述数据中初级现有逻辑数位所属的初级整体逻辑数位,以及所述初级整体逻辑数位在所述数据的初级现有逻辑数位中的初级统计数量;
确定所述初级数位统计序列中所述初级整体逻辑数位的统计数量的前缀和,以形成初级前缀和序列;以及
根据所述初级前缀和序列来确定所述数据在存储空间中的初级位置,以便于对所述数据进行排序,从而形成初级排序数据。
11.根据权利要求10所述的方法,其中,所述初级统计数量按照所述初级整体逻辑数位的增序或降序来排列。
12.根据权利要求10或11所述的方法,其中,确定所述初级数位统计序列中所述初级整体逻辑数位的初级统计数量的前缀和,以形成初级前缀和序列包括:
将所述初级数位统计序列中每个初级数位的初级统计数量与在前的全部初级统计数量相加,以得到前缀和;
将所述前缀和存放在每个初级数位对应的初级位置,以形成初级前缀和序列。
13.根据权利要求10-12中任意一项所述的方法,其中,根据所述初级前缀和序列来确定所述数据在存储空间中的初级位置,以便于对所述数据进行排序,从而形成初级排序数据包括:
建立初级排序序列;
根据所述初级前缀和序列中每个初级现有逻辑数位所对应的初级统计数量的前缀和,将所述每个初级数位所属的数据存放在所述初级排序序列的对应位置,以便于对所述数据进行排序,从而形成初级排序数据。
14.根据权利要求13所述的方法,进一步包括:
每当将所述每个初级数位所属的数据存放在所述初级排序序列的对应位置,则将所述初级统计数量的前缀和减去一。
15.根据权利要求10-15中任意一项所述的方法,其中,迭代地根据所述初级排序数据的次级现有逻辑数位,对所述初级排序数据进行重排序,从而形成重排序数据包括:
建立次级数位统计序列,所述次级数位统计序列包括:所述初级排序数据中次级现有逻辑数位所属的次级整体逻辑数位,以及所述次级整体逻辑数位在所述初级排序数据的次级现有逻辑数位中的次级统计数量;
确定所述次级数位统计序列中所述次级整体逻辑数位的前缀和,以形成次级前缀和序列;以及
根据所述次级前缀和序列来确定所述初级排序数据在存储空间中的次级位置,以便于对所述初级排序数据进行重排序,从而形成重排序数据。
16.根据权利要求9-15中任意一项所述的方法,进一步包括:响应于现有逻辑数位中同一级别的现有逻辑数位相同,对另一个级别的现有逻辑数位进行排序。
17.根据权利要求1-16中任意一项所述的方法,其中,所述数据为十进制数据;优选地,当所述十进制数据包括负数时,对所述负数十进制数据的二进制表示的所有位取反,以及当所述十进制数据还包括正数时,对所述正数十进制数据的二进制表示的符号位取反。
18.根据权利要求1-16中任意一项所述的方法,其中,当所述数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。
19.根据权利要求18所述的方法,其中,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。
20.根据权利要求1-19中任意一项所述的方法,其中,所述单核处理器支持向量运算。
21.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如权利要求1-20中任意一项所述的方法。
22.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-20中任意一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110712924.4A CN115525794A (zh) | 2021-06-25 | 2021-06-25 | 一种在单核处理器中对数据进行排序的方法 |
US18/284,667 US20240168712A1 (en) | 2021-06-25 | 2022-06-24 | Method for sorting data in multi-core or single-core processor |
PCT/CN2022/100984 WO2022268188A1 (zh) | 2021-06-25 | 2022-06-24 | 一种在多核或单核处理器中对数据进行排序的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110712924.4A CN115525794A (zh) | 2021-06-25 | 2021-06-25 | 一种在单核处理器中对数据进行排序的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115525794A true CN115525794A (zh) | 2022-12-27 |
Family
ID=84693415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110712924.4A Pending CN115525794A (zh) | 2021-06-25 | 2021-06-25 | 一种在单核处理器中对数据进行排序的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115525794A (zh) |
-
2021
- 2021-06-25 CN CN202110712924.4A patent/CN115525794A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110163363B (zh) | 一种计算装置及方法 | |
WO2021185262A1 (zh) | 计算装置、方法、板卡和计算机可读存储介质 | |
CN111260042B (zh) | 数据选择器、数据处理方法、芯片及电子设备 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111124995A (zh) | 通过人工智能处理器处理一维复数数组的方法和设备 | |
CN115525794A (zh) | 一种在单核处理器中对数据进行排序的方法 | |
CN111260043A (zh) | 数据选择器、数据处理方法、芯片及电子设备 | |
CN111260070B (zh) | 运算方法、装置及相关产品 | |
CN111382852B (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN115525795B (zh) | 一种在多核处理器中对数据进行排序的方法 | |
CN111381875B (zh) | 数据比较器、数据处理方法、芯片及电子设备 | |
CN111382856B (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN111382853B (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN115408568A (zh) | 一种对神经网络的算子进行融合的方法和相关产品 | |
CN115409678A (zh) | 一种对神经网络的算子进行融合的方法和相关产品 | |
CN111723920A (zh) | 人工智能计算装置及相关产品 | |
WO2022268188A1 (zh) | 一种在多核或单核处理器中对数据进行排序的方法 | |
CN112395008A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111258641A (zh) | 运算方法、装置及相关产品 | |
CN111047024A (zh) | 一种计算装置及相关产品 | |
CN111384944B (zh) | 全加器、半加器、数据处理方法、芯片及电子设备 | |
CN111382855B (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN112395002B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111026440B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111339060B (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 |