CN115525795B - 一种在多核处理器中对数据进行排序的方法 - Google Patents
一种在多核处理器中对数据进行排序的方法 Download PDFInfo
- Publication number
- CN115525795B CN115525795B CN202110712925.9A CN202110712925A CN115525795B CN 115525795 B CN115525795 B CN 115525795B CN 202110712925 A CN202110712925 A CN 202110712925A CN 115525795 B CN115525795 B CN 115525795B
- Authority
- CN
- China
- Prior art keywords
- global
- sequence
- local
- primary
- data
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 110
- 238000012545 processing Methods 0.000 claims abstract description 274
- 230000015654 memory Effects 0.000 claims description 91
- 238000007667 floating Methods 0.000 claims description 22
- 238000012163 sequencing technique Methods 0.000 claims description 20
- 230000003247 decreasing effect Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 238000013473 artificial intelligence Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 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
- 238000001514 detection method Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000009286 beneficial effect Effects 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
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
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示出了根据本公开一个实施方式的在多核处理器中对全局数据进行排序的方法;
图3a给出了处理核0中的数据7,15,3和100以个位数为基础的第一局部数位统计序列;
图3b给出了处理核1中的数据28,19,30和70以个位数为基础的第二局部数位统计序列;
图4示出了根据本公开一个实施方式的根据第一和第二局部数位统计序列来形成全局数据位统计序列的过程;
图5以图4为例描述了前缀和序列的生成过程;
图6给出了数据的位置与前缀和序列之间的逻辑关系;
图7示出了根据本公开一个实施方式的根据所述全局前缀和序列来确定所述全局数据在存储空间中的位置,以便于对所述全局数据进行排序的方法流程图;
图8示出了根据本公开一个实施方式的如图7所示方法流程图的实现方式;
图9示出了根据本公开另一个实施方式的如图7所示方法流程图的实现方式;
图10示出了根据本公开又一个实施方式的如图7所示方法流程图的实现方式;
图11示出了根据本公开另一个实施方式的在多核处理器中对数据进行排序的方法流程图;
图12示出了根据本公开一个实施方式的迭代地根据所述初级排序全局数据的次级现有全局逻辑数位,对所述初级排序全局数据进行重排序,从而形成重排序全局数据的流程示意图;
图13a给出了处理核0中的数据100,30,70,3以十位为基础的第三局部数位统计序列;
图13b给出了处理核1中的数据15,7,28和19以十位数为基础的第四局部数位统计序列;
图14示出了根据本公开一个实施方式的根据第三和第四局部数位统计序列来形成全局数据位统计序列的过程;
图15以图14为例描述了以十位为基础的前缀和序列的生成过程;
图16示出了根据本公开另一个实施方式的根据前缀和序列来确定每个数据的位置的示意图;
图17示出了一种组合处理装置;以及
图18示出了一种示例性板卡。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
对于为数据进行排序的常规算法,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,确定所述全局数位统计序列中全局整体逻辑数位的全局统计数量的前缀和,以形成全局前缀和序列;以及在操作S240,根据所述全局前缀和序列来确定所述全局数据在存储空间中的位置,以便于对所述全局数据进行排序。
首先,对图2中所涉及的概念进行解释。
上文中所述的“数据”,包括了数字以及能够转换为数字的各种其他字母、符号、字符串、汉字等。
上文中所述的“数位”是指数据中的“位”。例如,数据12包括了处于个位的数位2以及处于十位的数位1;数据108包括了处于个位的数位8,处于十位的数位0以及处于百位的数位1;对于例如数据5而言,其包括处于个位的数位5,但也可以认为其包括了处于十位的数位0,处于百位的数位0等等。
上文中的术语“同级别”是指不同数据中处于同一位的数位。例如对于数据18和数据34,其同级别的数位分别为8和4(个位)以及1和3(十位);对于数据8和数据34,其同级别的数位分别为8和4(个位)以及0和3(十位)。
下面将结合具体的例子来解释建立数位统计序列的过程。图3a和图3b示出了一个示例性的数据统计序列的示意图。
逻辑数位是指能够对数据的数位进行表达的任何形式。对于十进制整数来说,数位是直观的,比如整数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。当然,可以理解的是,这仅仅是一种特殊的示例,在实际的操作中,可以选择进制所对应的范围作为整体逻辑数位的范围。
另外,上文所述的术语“局部”和“全局”是个相对概念,例如,对于一个处理核组而言,每个处理核中的数据可以称为“局部数据”,该处理核组中多个处理核的数据可以构成“全局数据”。在另一个实施方式中,对于包括多个处理核组的处理器而言,每个处理核中的数据可以称为“局部数据”,而整个处理器中的数据可以称为“全局数据”。在又一个实施方式中,对于包括多个处理核组的处理器而言,每个处理核组中的数据可以称为“局部数据”,而整个处理器中的数据可以称为“全局数据”。从图1所示的处理器结构中可以看出,每个处理核中的共享存储器之间可以相互进行通信,从而多个局部数据可以通过共享存储器进行相互通信进而可以组合形成全局数据;或者处理核中的数据可以直接或间接地存储在全局存储器中,从而多个局部数据也可以直接或间接地通过全局存储器进行通信进而可以组合在一起形成全局数据。换言之,局部数据是仅某个处理核或者处理核组可以访问的数据,而全局数据是多个处理核或处理核组可访问的数据。还需要理解的是,这里所述的“数据”是一个宽泛的概念,其包含了处理核所处理的任何数字、数据组、序列、矩阵、变量、符号、字符等等。
假设具有八个数据,并且这八个数据分别存储在两个处理核中,例如7,15,3,100,28,19,30和70,其中,数据7,15,3,100存储在处理核0中,以及数据28,19,30和70存储在处理核1中。数据7,15,3,100可以称为局部数据,而数据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等等。
根据本公开的一个实施方式,可以针对每个处理核中的数据建立数位统计序列,针对每个处理核中的数据所建立的数位统计序列可以称为局部数位统计序列。
图3a给出了处理核0中的数据7,15,3和100以个位数为基础的第一局部数位统计序列,图3b给出了处理核1中的数据28,19,30和70以个位数为基础的第二局部数位统计序列。
如图3a所示,在该第一局部数位统计序列中,数据7,15,3和100的个位上的局部现有逻辑数位分别为7、5、3和0;其所属的整体逻辑数位为0~9,因此,该第一局部数位统计序列中,数位0的统计数量为1,数位1的统计数量为0,数位2的统计数量为0,数位3的统计数量为1,数位4的统计数量为0,数位5的统计数量为1,数位6的统计数量为0,数位7的统计数量为1,数位8的统计数量为0,以及数位9的统计数量为0。
如图3b所示,在该第二局部数位统计序列中,数据28,19,30和70的个位上的局部现有逻辑数位分别为8、9、0和0;其所属的整体逻辑数位为0~9,因此,该第二局部数位统计序列中,数位0的统计数量为2,数位1的统计数量为0,数位2的统计数量为0,数位3的统计数量为0,数位4的统计数量为0,数位5的统计数量为0,数位6的统计数量为0,数位7的统计数量为0,数位8的统计数量为1,以及数位9的统计数量为1。
建立第一和第二局部数位统计序列可以由各个处理核并行地执行,从而提升运算效率。根据本公开的另一个实施方式,可以由单个处理核来专门负责形成局部数位统计序列。例如,负责形成局部数位统计序列的单个处理核可以通过共享存储器来对数据进行存取,并形成相应的数位统计序列。
尽管图3a和图3b中示出的统计数量按照整体逻辑数位0~9增序的方式来进行排列,但本领域技术人员也可以按照整体逻辑数位9~0这样降序的方式进行排列,不同的排列方式将使得每个数据的位置产生不同,这将在后文中进行描述。需要理解的是,整体逻辑数位的排列方式不做任何限定。
当得到了如图3a和图3b所示的第一和第二局部数位统计序列之后,可以根据得到的第一和第二局部数位统计序列来计算全局数位统计序列。
图4示出了根据本公开一个实施方式的根据第一和第二局部数位统计序列来形成全局数据位统计序列的过程。
设第一局部数位统计序列为A,第二局部数位统计序列为B,那么全局数位统计序列C=A+B。即根据本公开的一个实施方式,可以将多个局部数位统计序列对应地相加,以形成全局数位统计序列。
如图4所示,在该全局数位统计序列中,数据7,15,3,100,28,19,30和70的个位数上的现有逻辑数位分别为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。
需要理解的是,尽管上文中仅以第一局部数位统计序列和第二局部数位统计序列为例进行了说明,但本公开中并不限制局部数位统计序列的数量,对于多核处理器而言,每个处理核均可以存储和处理相应的数据。
根据本公开的一个实施方式,所述多个处理核连接到共享存储器,并且通过所述共享存储器进行通信,从而根据所述局部数位统计序列形成全局数位统计序列。
在该实施方式中,如图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进行访问。由此,可以将不同处理核中的数据通过共享存储器进行通信并且进行加法运算,更具体地,可以将不同处理核中的局部数位统计序列通过共享存储器进行通信并对应相加,从而得到相应的全局数位统计序列。
根据本公开的另一个实施方式,所述多个处理核分为多个处理核组,每个处理核组中的同组处理核连接到一个共享存储器,所述多个处理核组可以通过各自的共享存储器进行通信,从而根据所述局部数位统计序列形成全局数位统计序列。
根据本公开的另一个实施方式,所述多核处理器可以包括全局存储器,多个处理核直接连接到全局存储器,或者通过共享存储器间接连接到所述全局存储器,从而根据所述局部数位统计序列形成全局数位统计序列。
因此,可以通过多种方式来从局部数据形成全局数据,例如同一处理核组中的不同处理核可以通过同一个共享存储器进行通信,从而将不同处理核中的局部数据通过同一个共享存储器进行通信进而形成全局数据;或者,不同处理核组中的不同处理核之间可以通过各自的共享存储器进行通信,从而将不同处理核组中的局部数据通过各自的共享存储器进行通信进而形成全局数据;或者,不同处理核或不同处理核组之间可以通过全局存储器进行通信,从而将不同处理核或不同处理核组中的局部数据通过全局存储器进行通信进而形成全局数据。
当得到了如图4所示的数位统计序列之后,可以计算该全局数位统计序列的前缀和,即,根据本公开的一个实施方式,确定所述全局数位统计序列中的全局整体逻辑数位的全局统计数量的前缀和,以形成全局前缀和序列可以包括:将所述全局数位统计序列中全局整体逻辑数位的全局统计数量与在前的全部全局统计数量相加,以得到全局前缀和;将所述全局前缀和存放在所述全局整体逻辑数位中每个数位对应的位置,以形成全局前缀和序列。
前缀和是反映每个元素的位置的数值。前缀和可以以数学公式表达为D[i]=C[0]+C[1]+…C[i],或者表达为D[i]=C[i]+D[i-1]。其中,D表示前缀和序列中每个元素的值,C表示上文所述的全局数位统计序列中每个元素的值,i表示前缀和序列或者全局数位统计序列中元素的索引。
图5以图4为例描述了前缀和序列的生成过程。
如图5所示,全局数位统计序列的第0个元素C[0]=3,因此,前缀和序列D[0]=C[0]=3;全局数位统计序列的第1个元素C[1]=0,因此,前缀和序列D[1]=C[0]+C[1]=3;全局数位统计序列的第2个元素C[2]=0,因此,前缀和序列D[2]=C[0]+C[1]+C[2]=3;全局数位统计序列的第3个元素C[3]=1,因此,前缀和序列D[3]=C[0]+C[1]+C[2]+C[3]=4。依照这样的计算方式,可以得到如图5所示的全局前缀和序列。
在另一个实施方式中,还可以按照D[i]=C[i]+D[i-1]来计算全局前缀和序列。
由此,
D[0]=C[0]=3;
D[1]=C[1]+D[0]=0+3=3
D[2]=C[2]+D[1]=0+3=3
D[3]=C[3]+D[2]=1+3=4
D[4]=C[4]+D[3]=0+4=4
D[5]=C[5]+D[4]=1+4=5
D[6]=C[6]+D[5]=0+5=5
D[7]=C[7]+D[6]=1+5=6
D[8]=C[8]+D[7]=1+6=7
D[9]=C[9]+D[8]=1+7=8
全局数位统计序列可以反映每个逻辑数位上有多少个数据。例如如果全局数位统计序列中数位0所对应的值为3,则表示有三个数据中包含了数位0。当将这三个数据写入到存储器中时,需要避免这些数据发生冲突。另一方面,根据全局数位统计序列得到的前缀和以及相应的全局前缀和序列能够反映相应的数据的具体位置,由此,可以根据所述全局前缀和序列来确定所述数据在存储空间中的位置,以便于对所述数据进行排序。
图6给出了数据的位置与前缀和序列之间的逻辑关系。
如图6所示,假设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。上述的区别仅仅在于对首位置的定义不同,这并不会影响本公开对技术的整体描述和理解。
综上所述,为了并行写入,提高排序效率,需要解决映射到同一逻辑数位的多个数据之间的依赖,因此可以通过前缀和序列提前计算出映射到同一逻辑数位的多个数据的位置,避免多个数据写入存储器或存储空间时发生冲突。
图7示出了根据本公开一个实施方式的根据所述全局前缀和序列来确定所述全局数据在存储空间中的位置,以便于对所述全局数据进行排序的方法流程图。
如图7所示,根据所述全局前缀和序列来确定所述全局数据在存储空间中的位置,以便于对所述全局数据进行排序可以包括:在操作S710,建立排序序列;以及,在操作S720,根据所述全局前缀和序列中每个全局现有逻辑数位所对应的全局统计数量的前缀和,将所述每个全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
首先结合图8来介绍如图7所示方法流程图。
如图8所示,给出了排序序列,该排序序列给出从低到高顺序设置的位置索引0~9,每个位置索引上方对应的位置用于填充相应的数据,从而能表示数据所处的位置。需要理解的是,如上所述,这里首位置为0,因此前缀和序列中的统计数量应当减去1。
我们仍然以数据7,15,3,100,28,19,30和70为例来进行说明。本次排序仍然只以个位数为基础来进行排序,而不考虑十位数的影响。
首先,如图8所示,以尾部数据70开始向前遍历,逻辑数位0在前缀和序列中对应的统计数量的前缀和为3,,其对应的位置应当为3-1=2。因此,可以将数据70填充到位置索引2所对应的位置处。
根据本公开的一个实施方式,每当将每个逻辑数位所属的数据存放在所述排序序列的对应位置,则将所述统计数量的前缀和减去1,从而避免对应同一逻辑数位的多个数据写入到存储器或存储空间中发生冲突。
根据该实施方式,则位置索引0处所对应的前缀和减去1,从而前缀和变为2。
接下来,遍历到数据30。此时,其对应的位置应当为2-1=1。因此,可以将数据30填充到位置索引1所对应的位置处。之后,可以将前缀和序列中逻辑数位0所对应的统计数量减去1,从而成为1。
接下来,遍历到数据19,逻辑数位9在前缀和序列中对应的统计数量的前缀和为8,其对应的位置应当为8-1=7。因此,可以将数据19填充到位置索引7所对应的位置处。另外,逻辑数位9处所对应的前缀和减去1,从而前缀和变为7。
接下来,遍历到数据28,逻辑数位8在前缀和序列中对应的统计数量的前缀和为7,其对应的位置应当为7-1=6。因此,可以将数据28填充到位置索引6所对应的位置处。另外,逻辑数位8处所对应的前缀和减去1,从而前缀和变为6。
接下来,遍历到数据100,逻辑数位0在前缀和序列中对应的统计数量的前缀和为1,其对应的位置应当为1-1=0。因此,可以将数据100填充到位置索引0所对应的位置处。另外,逻辑数位0处所对应的前缀和减去1,从而前缀和变为0。
接下来,遍历到数据3,逻辑数位3在前缀和序列中对应的统计数量的前缀和为4,其对应的位置应当为4-1=3。因此,可以将数据3填充到位置索引3所对应的位置处。另外,逻辑数位3处所对应的前缀和减去1,从而前缀和变为3。
接下来,遍历到数据15,逻辑数位5在前缀和序列中对应的统计数量的前缀和为5,其对应的位置应当为5-1=4。因此,可以将数据15填充到位置索引4所对应的位置处。另外,逻辑数位5处所对应的前缀和减去1,从而前缀和变为4。
最后,遍历到数据7,逻辑数位7在前缀和序列中对应的统计数量的前缀和为6,其对应的位置应当为6-1=5。因此,可以将数据7填充到位置索引5所对应的位置处。另外,逻辑数位7处所对应的前缀和减去1,从而前缀和变为5。
最终,经过排序的数据为100,30,70,3,15,7,28和19。
需要理解的是,并不是每个数据填充到对应的位置后,都必须要将该数据对应的逻辑数位的前缀和减去一,在另一个实施方式中,可以通过提前判断哪个逻辑数位对应至少两个数据或提前判断每个逻辑数位分别对应几个数据,进而可以仅针对包含同一逻辑数位的多个数据,在该数据填充到对应位置后,对该数据对应的逻辑数位的前缀和减去一。
例如,对于数据100,30和70,由于个位上均含有逻辑数位0,所以可以提前判断出逻辑数位0对应三个数据,而数位3,5,7,8和9分别只对应一个数据。因此,当将数据100填充到对应位置之后,需要对该数据100对应的逻辑数位的前缀和减去一;而对于数据3,15,7,28和19,则无需对这些数据对应的逻辑数位的前缀和减去一。但需要理解的是,在实际的实现中,为了简化操作,每当将一个数据填充到对应位置之后,可以将该数据对应的逻辑数位的前缀和减去一,由此将无需提前判断某个逻辑数位所对应的数据的数量。
在本公开的硬件架构中,可以采用多种方式来对所述全局数据进行排序。
根据本公开的一个实施方式,所述排序序列为全局排序序列,所述全局排序序列中包括全局现有逻辑数位的位置;并且其中,通过一个处理核,根据所述全局前缀和序列中每个全局现有逻辑数位所对应的全局统计数量的前缀和,将所述每个全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
在该实施方式中,排序序列为针对全局数据的排序序列,因此可以直接在该全局排序序列中填充所有的全局数据。此外,可以指定其中某一个处理核来专门负责该全局排序序列的形成,而无需其他处理核的参与。这样的有益效果在于,可以释放其他处理核的运算能力,降低对其他处理核的占用。
根据该实施方式的教导,如果全局数据的规模更大,需要更强的运算能力,则可以指定其中某一个处理核组来专门负责该全局排序序列的形成,而无需其他处理核组的参与。这样可以释放其他处理核组的运算能力,降低对其他处理核组的占用。另外,相比不同处理核组参与运算的情况,同一个处理核组之间的处理核可以仅通过同一个共享存储器进行通信,通信效率更高。
根据本公开的一个实施方式,所述排序序列为全局排序序列,所述全局排序序列中包括全局现有逻辑数位的位置;并且其中,将所述全局前缀和序列拆分为多个局部前缀和序列,所述局部前缀和序列中包括同级别的局部现有逻辑数位的局部前缀和;以及通过多个处理核,并行地根据所述局部前缀和序列中每个同级别的局部现有逻辑数位的局部前缀和,将所述每个局部现有逻辑数位所属的局部数据存放在所述全局排序序列的对应位置,以便于对所述全局数据进行排序。
首先,与上一实施方式相同的是,在本实施方式中,排序序列为针对全局数据的排序序列,因此可以直接在该全局排序序列中填充所有的全局数据。而与上一实施方式不同的是,在本实施方式中,存在多个局部前缀和序列,每个局部前缀和序列仅针对局部数据,而不是如上文那样针对全局数据。
下面结合图9来解释存在多个局部前缀和序列的情形。
例如,如上所述,以存储在处理核0中的第一组局部数据[7,15,3,100]和存储在处理核1中的第二组局部数据[28,19,30,70]为例,他们的第一局部数位统计序列和第二局部数位统计序列分别为A和B,全局数位统计序列为C=A+B,而全局前缀和序列为如上文所述的D=[3,3,3,4,4,5,5,6,7,8]。全局前缀和序列表示了各个数据在排序序列中的位置,当从数据的尾部开始遍历时,由于第二组局部数据[28,19,30,70]之后没有其他数据,因此,第二组局部数据中针对个位的第二局部前缀和序列D2=D=[3,3,3,4,4,5,5,6,7,8],而第一组局部数据中针对个位的第一局部前缀和序列D1=D-B=[1,3,3,4,4,5,5,6,6,7]。
在得到了局部前缀和序列D1和D2之后,根据本公开的一个实施方式,可以通过多个处理核,并行地根据上述的局部前缀和序列来确定每个局部现有逻辑数位所属的局部数据应当存放的位置,以便于对所述全局数据进行排序。
具体而言,根据该实施方式,处理核0可以根据第一局部前缀和序列D1=[1,3,3,4,4,5,5,6,6,7]来确定第一组局部数据[7,15,3,100]的位置,而处理核1可以根据第二局部前缀和序列D2=[3,3,3,4,4,5,5,6,7,8]来确定第二组局部数据[28,19,30,70]的位置。
更具体而言,处理核1以第二组局部数据中的尾部数据70开始向前遍历,逻辑数位0在前缀和序列中对应的统计数量的前缀和为3。其对应的位置应当为3-1=2。因此,可以将数据70填充到位置索引2所对应的位置处。
根据该实施方式,则位置索引0处所对应的前缀和减去1,从而前缀和变为2。
接下来,处理核1遍历到数据30。此时,其对应的位置应当为2-1=1。因此,可以将数据30填充到位置索引1所对应的位置处。另外,逻辑数位0处所对应的前缀和减去1,从而前缀和变为1。
接下来,处理核1遍历到数据19,逻辑数位9在前缀和序列中对应的统计数量的前缀和为8,其对应的位置应当为8-1=7。因此,可以将数据19填充到位置索引7所对应的位置处。另外,逻辑数位9处所对应的前缀和减去1,从而前缀和变为7。
接下来,处理核1遍历到数据28,逻辑数位8在前缀和序列中对应的统计数量的前缀和为7,其对应的位置应当为7-1=6。因此,可以将数据28填充到位置索引6所对应的位置处。另外,逻辑数位8处所对应的前缀和减去1,从而前缀和变为6。
同时,处理核0以第一组局部数据中的尾部数据100开始向前遍历,逻辑数位0在前缀和序列中对应的统计数量的前缀和为1,其对应的位置应当为1-1=0。因此,可以将数据100填充到位置索引0所对应的位置处。另外,逻辑数位0处所对应的前缀和减去1,从而前缀和变为0。
接下来,处理核0遍历到数据3,逻辑数位3在前缀和序列中对应的统计数量的前缀和为4,其对应的位置应当为4-1=3。因此,可以将数据3填充到位置索引3所对应的位置处。另外,逻辑数位3处所对应的前缀和减去1,从而前缀和变为3。
接下来,处理核0遍历到数据15,逻辑数位5在前缀和序列中对应的统计数量的前缀和为5,其对应的位置应当为5-1=4。因此,可以将数据15填充到位置索引4所对应的位置处。另外,逻辑数位5处所对应的前缀和减去1,从而前缀和变为4。
最后,处理核0遍历到数据7,逻辑数位7在前缀和序列中对应的统计数量的前缀和为6,其对应的位置应当为6-1=5。因此,可以将数据7填充到位置索引5所对应的位置处。另外,逻辑数位7处所对应的前缀和减去1,从而前缀和变为5。
最终,经过排序的数据为100,30,70,3,15,7,28和19。
需要理解的是,在上文的示例中,尽管每个处理核对自身存储的数据进行排序,但也可以由指定其他处理核来进行排序操作。还需要理解的是,尽管图9中给出的示例先由处理核1进行排序,再由处理核0进行排序,但实际中两个处理核可以独立地并行运行,而不受彼此的影响。
本实施方式所提供的技术方案可以采用多个并行的处理核来进行排序操作,这显著地提升了排序操作的执行效率。
根据本公开的又一个实施方式,所述全局排序序列可以包括多个局部排序序列,所述局部排序序列中包括局部现有逻辑数位所属的局部数据的位置;并且其中,将所述全局前缀和序列拆分为多个局部前缀和序列,所述局部前缀和序列中包括同级别的局部现有逻辑数位的局部前缀和;以及通过多个处理核,并行地根据所述局部前缀和序列中每个同级别的局部现有逻辑数位的局部前缀和,将所述每个局部现有逻辑数位所属的局部数据分别存放在所述局部排序序列的对应位置,以便于对所述全局数据进行排序。
本实施方式与图9所示的实施方式的区别在于,图9所示的实施方式中排序序列为一个,所有处理核在对相应的局部数据进行排序时,均对同一个排序序列进行访问;而在如图10所示的实施方式中,排序序列包括多个局部排序序列,每个处理核仅对相应的局部排序序列进行访问。
下面结合图10对本文的又一个实施方式进行详细解释。
在图10中,排序序列包括第一局部排序序列Q1和第二局部排序序列Q2,这两个局部排序序列Q1和Q2的结构与上文中的所述的全局排序序列相似,均包括了位置索引0-7。
如上所述,仍然以存储在处理核0中的第一组局部数据[7,15,3,100]和存储在处理核1中的第二组局部数据[28,19,30,70]为例,他们的第一局部数位统计序列和第二局部数位统计序列分别为A和B,全局数位统计序列为C=A+B,而全局前缀和序列为如上文所述的D=[3,3,3,4,4,5,5,6,7,8]。全局前缀和序列表示了各个数据在排序序列中的位置,当从数据的尾部开始遍历时,由于第二组局部数据[28,19,30,70]之后没有其他数据,因此,第二组局部数据中针对个位的第二局部前缀和序列D2=D=[3,3,3,4,4,5,5,6,7,8],而第一组局部数据中针对个位的第一局部前缀和序列D1=D-B=[1,3,3,4,4,5,5,6,6,7]。
第一局部排序序列Q1用于为第一组局部数据[7,15,3,100]进行排序,而第二局部排序序列Q2用于为第二组局部数据[28,19,30,70]进行排序。
在得到了第一和第二局部前缀和序列D1和D2之后,根据本公开的一个实施方式,可以通过多个处理核,并行地根据上述的局部前缀和序列来确定每个局部现有逻辑数位所属的局部数据应当存放的位置,以便于对所述全局数据进行排序。
具体而言,根据该实施方式,处理核0可以根据局部前缀和序列D1=[1,3,3,4,4,5,5,6,6,7]来确定第一组局部数据[7,15,3,100]的位置,而处理核1可以根据局部前缀和序列D2=[3,3,3,4,4,5,5,6,7,8]来确定第二组局部数据[28,19,30,70]的位置。
更具体而言,处理核1以第二组局部数据中的尾部数据70开始向前遍历,逻辑数位0在前缀和序列中对应的统计数量的前缀和为3。其对应的位置应当为3-1=2。因此,可以将数据70填充到第二局部排序序列Q2的位置索引2所对应的位置处。
根据该实施方式,则位置索引0处所对应的前缀和减去1,从而前缀和变为2。
接下来,处理核1遍历到数据30。此时,其对应的位置应当为2-1=1。因此,可以将数据30填充到第二局部排序序列Q2的位置索引1所对应的位置处。另外,逻辑数位0处所对应的前缀和减去1,从而前缀和变为1。
接下来,处理核1遍历到数据19,逻辑数位9在前缀和序列中对应的统计数量的前缀和为8,其对应的位置应当为8-1=7。因此,可以将数据19填充到第二局部排序序列Q2的位置索引7所对应的位置处。另外,逻辑数位9处所对应的前缀和减去1,从而前缀和变为7。
接下来,处理核1遍历到数据28,逻辑数位8在前缀和序列中对应的统计数量的前缀和为7,其对应的位置应当为7-1=6。因此,可以将数据28填充到第二局部排序序列Q2的位置索引6所对应的位置处。另外,逻辑数位8处所对应的前缀和减去1,从而前缀和变为6。
同时,处理核0以第一组局部数据中的尾部数据100开始向前遍历,逻辑数位0在前缀和序列中对应的统计数量的前缀和为1,其对应的位置应当为1-1=0。因此,可以将数据100填充到第一局部排序序列Q1的位置索引0所对应的位置处。另外,逻辑数位0处所对应的前缀和减去1,从而前缀和变为0。
接下来,处理核0遍历到数据3,逻辑数位3在前缀和序列中对应的统计数量的前缀和为4,其对应的位置应当为4-1=3。因此,可以将数据3填充到第一局部排序序列Q1的位置索引3所对应的位置处。另外,逻辑数位3处所对应的前缀和减去1,从而前缀和变为3。
接下来,处理核0遍历到数据15,逻辑数位5在前缀和序列中对应的统计数量的前缀和为5,其对应的位置应当为5-1=4。因此,可以将数据15填充到第一局部排序序列Q1的位置索引4所对应的位置处。另外,逻辑数位5处所对应的前缀和减去1,从而前缀和变为4。
最后,处理核0遍历到数据7,逻辑数位7在逻辑和序列中对应的统计数量的前缀和为6,其对应的位置应当为6-1=5。因此,可以将数据7填充到第一局部排序序列Q1的位置索引5所对应的位置处。另外,逻辑数位7处所对应的前缀和减去1,从而前缀和变为5。
最终,经过排序的数据形成两个排序序列,即第二局部排序序列Q2用于数据[30,70,28,19],并且第一局部排序序列Q1用于数据[100,3,15,7]。
通过上述方式得到的多个局部排序序列可以组合为一个整体的全局排序序列,从而能够根据整体的全局排序序列确定每个数据的位置。当然,将多个局部排序序列组合为全局排序序列并不是必须的,也可以根据每个单独的局部排序序列来确定每个数据的位置。
通过图10所示的实施方式,在确定数据的排序顺序时,每个处理核(或处理核组)可以通过单独的局部排序序列来确定每个数据的位置,而无需频繁地访问同一个排序序列,这减少了全局通信的开销,降低了通信负担。本实施方式所提供的技术方案采用多个并行的处理核来进行排序操作,这显著地提升了排序操作的执行效率。
需要理解的是,在上文的示例中,尽管每个处理核对自身存储的数据进行排序,但也可以由指定其他处理核来进行排序操作。
在基于个位对数据进行了排序之后,得到新的排序结果100,30,70,3,15,7,28和19。根据本公开的一个实施方式,可以将该排序结构进行重新存储。
根据本公开的一个实施方式,进一步包括:将排序后的全局数据拆分为多组排序后局部数据;以及将所述多组排序后局部数据分别存放在多个处理核中。
以排序后的全局数据100,30,70,3,15,7,28和19为例,可以将其拆分为两组局部数据[100,30,70,3]以及[15,7,28,19]。拆分所形成的局部数据可以分别存储在不同的处理核中,例如处理核0和处理核1中。由此,处理核0中的数据由初始的[7,15,3,100]更新为[100,30,70,3],而处理核1中的数据由初始的[28,19,30和70]更新为[15,7,28,19]。
上文中描述了基于某一级逻辑数位(如个位)进行排序,而在另一个实施方式中,可以对整体数据进行进一步的排序。对于上述的数列,期望的从小到大的顺序为3,7,15,19,28,30,70和100,而基于个位数位进行排序之后的顺序为100,30,70,3,15,7,28和19,这显然还没有达到所需的目的,因此需要进一步根据十位数和百位数进行排序。
图11示出了根据本公开另一个实施方式的在多核处理器中对数据进行排序的方法,包括:在操作S1110,根据所述全局数据的初级现有全局逻辑数位对所述全局数据进行排序,以形成初级排序全局数据;以及在操作S1120,迭代地根据所述初级排序全局数据的次级现有全局逻辑数位,对所述初级排序全局数据进行重排序,从而形成重排序全局数据。
目前尚未发现在多核处理器中基于多级数位对数据进行排序的方案,本公开的技术方案采用多级排序的方式,逐级地调整数据的位置,从而最终实现数据的排序。
对于操作S1110,根据所述全局数据的初级现有全局逻辑数位对所述全局数据进行排序,以形成初级排序全局数据可以包括:建立初级局部数位统计序列,所述初级局部数位统计序列包括:所述局部数据中初级局部现有逻辑数位所属的初级局部整体逻辑数位,以及所述初级局部整体逻辑数位在所述初级局部现有逻辑数位中的初级局部统计数量;根据所述初级局部数位统计序列形成初级全局数位统计序列,所述初级全局数位统计序列包括:所述全局数据中初级全局现有逻辑数位所属的初级全局整体逻辑数位,以及所述初级全局整体逻辑数位在所述初级全局现有逻辑数位中的初级全局统计数量;确定所述初级全局数位统计序列中初级全局整体逻辑数位的初级全局统计数量的前缀和,以形成初级全局前缀和序列;以及根据所述初级全局前缀和序列来确定所述全局数据在存储空间中的初级位置,以便于对所述全局数据进行排序。
在上面的描述中,术语“初级”和“次级”用于表示逻辑数位所处的不同位。例如,可以将数据的个位称为“初级”,而将数据的十位称为“次级”。在基于十位进行了排列之后,可以将十位称为新的“初级”,而将百位称为新的“次级”。上述的迭代操作将持续到对所有位进行排序。
上文中已经以数据7,15,3,100,28,19,30和70为例进行了说明,得到的初级排序全局数据为100,30,70,3,15,7,28和19。该初级排序全局数据是以上述全局数据的个位为基础进行的排序。这里将不再赘述。
根据本公开的一个实施方式,在对数据进行初级排序之后,可以将所述初级排序全局数据拆分为多组初级局部排序数据;将所述多组初级局部排序数据分别存储在所述多个处理核中。在该实施方式中,将初级排序后的数据进一步拆分为多组局部排序数据并存储到相应的处理核中,有利于迭代地进行进一步的排序。
根据本公开的一个实施方式,所述初级局部统计数量按照所述初级局部整体逻辑数位的增序或降序来排列。
根据本公开的一个实施方式,根据所述初级局部数位统计序列形成初级全局数位统计序列可以包括:将多个初级局部数位统计序列对应地相加,以形成初级全局数位统计序列。
根据本公开的一个实施方式,所述多个处理核连接到共享存储器,并且通过所述共享存储器进行通信,从而根据所述初级局部数位统计序列形成初级全局数位统计序列。
根据本公开的一个实施方式,其中,所述多个处理核分为多个处理核组,每个处理核组中的同组处理核连接到一个共享存储器,所述多个处理核组通过各自的共享存储器进行通信,从而根据所述初级局部数位统计序列形成初级全局数位统计序列。
根据本公开的一个实施方式,其中,所述多核处理器包括全局存储器,所述多个处理核直接连接到所述全局存储器,或者通过共享存储器间接连接到所述全局存储器,从而根据所述初级局部数位统计序列形成初级全局数位统计序列。
根据本公开的一个实施方式,其中,确定所述初级全局数位统计序列中初级全局整体逻辑数位的初级全局统计数量的前缀和,以形成初级全局前缀和序列包括:将所述初级全局数位统计序列中初级全局整体逻辑数位的初级全局统计数量与在前的全部初级全局统计数量相加,以得到初级全局前缀和;以及,将所述初级全局前缀和存放在初级全局整体逻辑数位中每个数位对应的位置,以形成初级全局前缀和序列。
根据本公开的一个实施方式,其中,根据所述初级全局前缀和序列来确定所述全局数据在存储空间中的初级位置,以便于对所述全局数据进行排序包括:建立排序序列;根据所述初级全局前缀和序列中每个初级全局现有逻辑数位所对应的初级全局统计数量的前缀和,将所述每个初级全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
根据本公开的一个实施方式,其中,所述排序序列为初级全局排序序列,所述初级全局排序序列中包括初级全局现有逻辑数位的位置;并且其中,通过一个处理核,根据所述初级全局前缀和序列中每个初级全局现有逻辑数位所对应的初级全局统计数量的前缀和,将所述每个初级全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
根据本公开的一个实施方式,其中,所述排序序列为初级全局排序序列,所述初级全局排序序列中包括初级全局现有逻辑数位的位置;并且其中,将所述初级全局前缀和序列拆分为多个初级局部前缀和序列,所述初级局部前缀和序列中包括初级局部现有逻辑数位的局部前缀和;以及通过多个处理核,并行地根据所述初级局部前缀和序列中每个初级局部现有逻辑数位的局部前缀和,将所述每个初级局部现有逻辑数位所属的局部数据存放在所述初级全局排序序列的对应位置,以便于对所述全局数据进行排序。
根据本公开的一个实施方式,其中,所述初级排序序列包括多个初级局部排序序列,所述初级局部排序序列中包括初级局部现有逻辑数位的位置;并且其中,将所述初级全局前缀和序列拆分为多个初级局部前缀和序列,所述初级局部前缀和序列中包括初级局部现有逻辑数位的局部前缀和;以及通过多个处理核,并行地根据所述初级局部前缀和序列中每个初级局部现有逻辑数位的局部前缀和,将所述每个初级局部现有逻辑数位所属的局部数据分别存放在所述初级局部排序序列的对应位置,以便于对所述全局数据进行排序。
根据本公开的一个实施方式,进一步包括:每当将所述每个初级全局现有逻辑数位所属的全局数据或局部现有逻辑数位所属的局部数据存放在所述排序序列的对应位置,则将所述初级全局统计数量的前缀和或局部前缀和减去一。
根据本公开的一个实施方式,进一步包括:响应于所述全局数据中同一级别的所有现有全局逻辑数位相同,对所述全局数据的另一个级别的现有全局逻辑数位进行排序。
图12示出了根据本公开一个实施方式的迭代地根据所述初级排序全局数据的次级现有全局逻辑数位,对所述初级排序全局数据进行重排序,从而形成重排序全局数据的流程示意图。
在该实施方式中,所述处理核中的至少两个处理核存储有作为所述初级排序全局数据的一部分的初级排序局部数据,并且其中,迭代地根据所述初级排序全局数据的次级现有全局逻辑数位,对所述初级排序全局数据进行重排序,从而形成重排序全局数据包括:在操作S1210,建立次级局部数位统计序列,所述次级局部数位统计序列包括:所述初级排序局部数据中次级局部现有逻辑数位所属的次级局部整体逻辑数位,以及所述次级整体逻辑数位在所述次级局部现有逻辑数位中的次级局部统计数量;在操作S1220,根据所述次级局部数位统计序列形成次级全局数位统计序列,所述次级全局数位统计序列包括:所述初级排序全局数据中次级全局现有逻辑数位所属的次级全局整体逻辑数位,以及所述次级全局整体逻辑数位在所述次级全局现有逻辑数位中的次级全局统计数量;在操作S1230,确定所述次级全局数位统计序列中次级全局整体逻辑数位的次级全局统计数量的前缀和,以形成次级全局前缀和序列;以及在操作S1240,根据所述次级全局前缀和序列来确定所述初级排序全局数据在存储空间中的次级位置,以便于对所述初级排序全局数据进行重排序。
可以进一步地基于十位对上述经过初级排序的数据进行进一步的排序,当基于数据的十位对数据进行进一步的排序之后,可以再基于数据的百位进行排序。
可以理解的是,对于初级排序全局数据100,30,70,3,15,7,28和19,其中,初级排序局部数据100,30,70,3存储在处理核0中,以及数据15,7,28和19存储在处理核1中。
需要基于十位对这八个数据100,30,70,3,15,7,28和19进行在此排序,那么可以统计这八个数据中十位上每个逻辑数位的数量。
类似地,可以针对每个处理核中的初级排序局部数据建立数位统计序列,针对每个处理核中的初级排序局部数据所建立的数位统计序列也可以称为局部数位统计序列。
图13a给出了处理核0中的数据100,30,70,3以十位为基础的第三局部数位统计序列,图13b给出了处理核1中的数据15,7,28和19以十位数为基础的第四局部数位统计序列。
如图13a所示,在该第三局部数位统计序列中,数据100,30,70,3的十位上的局部现有逻辑数位分别为0、3、7和0;其所属的整体逻辑数位为0~9,因此,在第三局部数位统计序列中,数位0的统计数量为2,数位1的统计数量为0,数位2的统计数量为0,数位3的统计数量为1,数位4的统计数量为0,数位5的统计数量为0,数位6的统计数量为0,数位7的统计数量为1,数位8的统计数量为0,以及数位9的统计数量为0。
如图13b所示,在该第四局部数位统计序列中,数据15,7,28和19的十位上的局部现有逻辑数位分别为1、0、2和1;其所属的整体逻辑数位为0~9,因此,该第四局部数位统计序列中,数位0的统计数量为1,数位1的统计数量为2,数位2的统计数量为1,数位3的统计数量为0,数位4的统计数量为0,数位5的统计数量为0,数位6的统计数量为0,数位7的统计数量为0,数位8的统计数量为0,以及数位9的统计数量为0。
建立第三和第四局部数位统计序列可以由各个处理核并行地执行,从而提升运算或排序效率。根据本公开的另一个实施方式,可以由单个处理核来专门负责形成局部数位统计序列。例如,负责形成局部数位统计序列的单个处理核可以通过共享存储器和/或全局存储器来对数据进行存取,并形成相应的数位统计序列。
尽管图13a和图13b中示出的统计数量按照整体逻辑数位0~9增序的方式来进行排列,但本领域技术人员也可以按照整体逻辑数位9~0这样降序的方式进行排列,不同的排列方式将使得每个数据的位置产生不同,这在上文中进行过描述,这里将不再赘述。
当得到了如图13a和图13b所示的第三和第四局部数位统计序列之后,可以根据得到的第三和第四局部数位统计序列来计算全局数位统计序列。
图14示出了根据本公开一个实施方式的根据第三和第四局部数位统计序列来形成全局数据位统计序列的过程。
设第三局部数位统计序列为A’,第四局部数位统计序列为B’,那么全局数位统计序列C’=A’+B’。相同地,可以将多个局部数位统计序列对应地相加,以形成全局数位统计序列。
如图14所示,在该全局数位统计序列中,数据100,30,70,3,15,7,28和19的十位数上的现有逻辑数位分别为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。
当得到了如图14所示的数位统计序列之后,可以计算该全局数位统计序列的前缀和。
如上所述,前缀和可以以数学公式表达为D’[i]=C’[0]+C’[1]+…C’[i],或者表达为D’[i]=C’[i]+D’[i-1]。
图15以图14为例描述了以十位为基础的前缀和序列的生成过程。
如图15所示,全局数位统计序列的第0个元素C’[0]=3,因此,前缀和序列D’[0]=C’[0]=3;全局数位统计序列的第1个元素C’[1]=2,因此,前缀和序列D’[1]=C’[0]+C’[1]=5;数位统计序列的第2个元素C’[2]=1,因此,前缀和序列D’[2]=C’[0]+C’[1]+C’[2]=6;数位统计序列的第3个元素C’[3]=1,因此,前缀和序列D’[3]=C’[0]+C’[1]+C’[2]+C’[3]=7。依照这样的计算方式,可以得到如图15所示的全局前缀和序列。
在另一个实施方式中,还可以按照D’[i]=C’[i]+D’[i-1]来计算全局前缀和序列。
由此,
D’[0]=C’[0]=3;
D’[1]=C’[1]+D’[0]=2+3=5
D’[2]=C’[2]+D’[1]=1+5=6
D’[3]=C’[3]+D’[2]=1+6=7
D’[4]=C’[4]+D’[3]=0+7=7
D’[5]=C’[5]+D’[4]=0+7=7
D’[6]=C’[6]+D’[5]=0+7=7
D’[7]=C’[7]+D’[6]=1+7=8
D’[8]=C’[8]+D’[7]=0+8=8
D’[9]=C’[9]+D’[8]=0+8=8
全局数位统计序列可以反映每个逻辑数位上有多少个数据。例如如果全局数位统计序列中数位0所对应的值为3,则表示有三个数据中包含了数位0。当将这三个数据写入到存储器中时,需要避免这些数据发生冲突。另一方面,根据全局数位统计序列得到的前缀和以及相应的全局前缀和序列能够反映相应的数据的具体位置,由此,可以根据所述全局前缀和序列来确定所述数据在存储空间中的位置,以便于对所述数据进行排序。
图16示出了根据本公开另一个实施方式的根据前缀和序列来确定每个数据的位置的示意图。
接下来,如图16所示,以尾部数据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。这里将不再对基于百位数的排序进行赘述。排序后的数据可以存储到处理核中以供进一步的使用。
还需要理解的是,图15中仅仅解释了根据前缀和序列得到排序序列的示例。根据本公开的另一个实施方式,可以仅建立一个排序序列,并通过一个处理核,对所述经过初次排序的全局数据进行重新排序;或者根据本公开的另一个实施方式,可以建立一个排序序列,并通过多个处理核并行地对经过初次排序的全局数据进行重新排序(如图9所示);或者根据本公开的又一个实施方式,可以建立多个排序序列,并通过多个处理核并行地对经过初次排序的全局数据进行重新排序(如图10所示)。这些方案在上文中已经集合图9和图10进行了描述,因此这里将不再赘述。
上文中以十进制数据为例进行了描述,根据本公开的一个实施方式,当所述数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。采用十六进制表示,能够取得更好的性能。
例如,浮点数3715.0,其十六进制表示为E83,所以其逻辑数位应该为E、8和3。
进一步地,根据本公开的一个实施方式,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。需要理解的是,当数据为十进制数据且包括负数时,也可以对该负数十进制数据的二进制的所有位取反,以及可以对十进制数据中的正数或非负十进制数据的二进制表示的符号位取反,再按照上述方法进行排序。
这里以十六进制为例来进行说明。例如,存在如下正浮点数:b1=0011 0000 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进行进一步的排序,并由此根据十六进制的所有位对这些浮点数进行排序。
本公开的技术方案提供了一种新的全向量化的排序算法,可用于实现数据的快速排序。该排序算法适合在支持向量运算的处理器中对数据进行排序,有助于提升排序的性能和效率。
本公开的多核处理器可以支持向量运算,这将有利于提升排序的性能和效率。支持向量运算的处理器,可以通过向量指令来实现向量化,以及能够并行地对数据进行运算操作。
本公开的技术方案可应用于人工智能领域,实现为或者实现在人工智能芯片中。该芯片可以单独存在,也可以包含在计算装置中。
图17示出了一种组合处理装置1700,其包括上述的计算装置1702,通用互联接口1704,和其他处理装置1706。根据本公开的计算装置与其他处理装置进行交互,共同完成用户指定的操作。图17为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在计算装置(包括例如机器学习运算装置)与其他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所需的输入数据,写入该计算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入计算装置片上的控制缓存;也可以读取计算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构还可以包括存储装置1708,存储装置分别与所述计算装置和所述其他处理装置连接。存储装置用于保存在所述计算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本计算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图18,其提供了一种示例性的板卡,上述板卡除了包括上述芯片1802以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件1804、接口装置1806和控制器件1808。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元1810。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备1812(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准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.根据条款1-4中任意一项所述的方法,其中,所述多个处理核分为多个处理核组,每个处理核组中的同组处理核连接到一个共享存储器,所述多个处理核组通过各自的共享存储器进行通信,从而根据所述局部数位统计序列形成全局数位统计序列。
条款6.根据条款5所述的方法,其中,所述多核处理器包括全局存储器,所述多个处理核直接连接到所述全局存储器,或者通过共享存储器间接连接到所述全局存储器,从而根据所述局部数位统计序列形成全局数位统计序列。
条款7.根据条款1-6中任意一项所述的方法,其中,确定所述全局数位统计序列中整体逻辑数位的全局统计数量的前缀和,以形成全局前缀和序列包括:
将所述全局数位统计序列中全局整体逻辑数位的全局统计数量与在前的全部全局统计数量相加,以得到全局前缀和;
将所述全局前缀和存放在整体逻辑数位中每个数位对应的位置,以形成全局前缀和序列。
条款8.根据条款1-7中任意一项所述的方法,其中,根据所述全局前缀和序列来确定所述全局数据在存储空间中的位置,以便于对所述全局数据进行排序包括:
建立排序序列;
根据所述全局前缀和序列中每个全局现有逻辑数位所对应的全局统计数量的前缀和,将所述每个全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
条款9.根据条款8所述的方法,其中,
所述排序序列为全局排序序列,所述全局排序序列中包括全局现有逻辑数位的位置;并且其中,
通过一个处理核,根据所述全局前缀和序列中每个全局现有逻辑数位所对应的全局统计数量的前缀和,将所述每个全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
条款10.根据条款8所述的方法,其中,
所述排序序列为全局排序序列,所述全局排序序列中包括全局现有逻辑数位的位置;并且其中,
将所述全局前缀和序列拆分为多个局部前缀和序列,所述局部前缀和序列中包括同级别的局部现有逻辑数位的局部前缀和;以及
通过多个处理核,并行地根据所述局部前缀和序列中每个同级别的局部现有逻辑数位的局部前缀和,将所述每个局部现有逻辑数位所属的局部数据存放在所述全局排序序列的对应位置,以便于对所述全局数据进行排序。
条款11.根据条款8所述的方法,其中,
所述排序序列包括多个局部排序序列,所述局部排序序列中包括局部现有逻辑数位的位置;并且其中,
将所述全局前缀和序列拆分为多个局部前缀和序列,所述局部前缀和序列中包括同级别的局部现有逻辑数位的局部前缀和;以及
通过多个处理核,并行地根据所述局部前缀和序列中每个同级别的局部现有逻辑数位的局部前缀和,将所述每个局部现有逻辑数位所属的局部数据分别存放在所述局部排序序列的对应位置,以便于对所述全局数据进行排序。
条款12.根据条款8-11中任意一项所述的方法,进一步包括:
每当将所述每个全局现有逻辑数位所属的全局数据或局部现有逻辑数位所属的局部数据存放在所述排序序列的对应位置,则将所述全局统计数量的前缀和或局部前缀和减去一。
条款13.根据条款8-12中任意一项所述的方法,进一步包括:
将排序后的全局数据拆分为多组排序后局部数据;
将所述多组排序后局部数据分别存放在多个处理核中。
条款14.根据条款1-13中任意一项所述的方法,其中,所述全局数据为十进制数据;优选地,当所述十进制数据包括负数时,对所述负数十进制数据的二进制表示的所有位取反,以及当所述十进制数据还包括正数时,对所述正数十进制数据的二进制表示的符号位取反。
条款15.根据条款1-13中任意一项所述的方法,其中,当所述全局数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。
条款16.根据条款15所述的方法,其中,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。
条款17.一种在多核处理器中对全局数据进行排序的方法,其中所述多核处理器包括多个处理核,所述处理核中的至少两个处理核存储有作为所述全局数据的一部分的局部数据,所述方法包括:
根据所述全局数据的初级现有全局逻辑数位对所述全局数据进行排序,以形成初级排序全局数据;以及
迭代地根据所述初级排序全局数据的次级现有全局逻辑数位,对所述初级排序全局数据进行重排序,从而形成重排序全局数据。
条款18.根据条款17所述的方法,其中,根据所述全局数据的初级现有全局逻辑数位对所述全局数据进行排序,以形成初级排序全局数据包括:
建立初级局部数位统计序列,所述初级局部数位统计序列包括:所述局部数据中初级局部现有逻辑数位所属的初级局部整体逻辑数位,以及所述初级整体逻辑数位在所述初级局部现有逻辑数位中的初级局部统计数量;
根据所述初级局部数位统计序列形成初级全局数位统计序列,所述初级全局数位统计序列包括:所述全局数据中初级全局现有逻辑数位所属的全局整体逻辑数位,以及所述全局整体逻辑数位在所述初级全局现有逻辑数位中的初级全局统计数量;
确定所述初级全局数位统计序列中全局整体逻辑数位的初级全局统计数量的前缀和,以形成初级全局前缀和序列;以及
根据所述初级全局前缀和序列来确定所述全局数据在存储空间中的初级位置,以便于对所述全局数据进行排序。
条款19.根据条款17或18所述的方法,进一步包括:
将所述初级排序全局数据拆分为多组初级局部排序数据;
将所述多组初级局部排序数据分别存储在所述多个处理核中。
条款20.根据条款18所述的方法,其中,所述初级局部统计数量按照所述初级整体逻辑数位的增序或降序来排列。
条款21.根据条款18-20中任意一项所述的方法,其中,根据所述初级局部数位统计序列形成初级全局数位统计序列包括:
将多个初级局部数位统计序列对应地相加,以形成初级全局数位统计序列。
条款22.根据条款18-21所述的方法,其中,所述多个处理核连接到共享存储器,并且通过所述共享存储器进行通信,从而根据所述初级局部数位统计序列形成初级全局数位统计序列。
条款23.根据条款18-22所述的方法,其中,所述多个处理核分为多个处理核组,每个处理核组中的同组处理核连接到共享存储器,所述多个处理核组通过各自的共享存储器进行通信,从而根据所述初级局部数位统计序列形成初级全局数位统计序列。
条款24.根据条款23所述的方法,其中,所述多核处理器包括全局存储器,所述多个处理核直接连接到所述全局存储器,或者通过共享存储器间接连接到所述全局存储器,从而根据所述初级局部数位统计序列形成初级全局数位统计序列。
条款25.根据条款18-24中任意一项所述的方法,其中,确定所述初级全局数位统计序列中全局整体逻辑数位的初级全局统计数量的前缀和,以形成初级全局前缀和序列包括:
将所述初级全局数位统计序列中全局整体逻辑数位的初级全局统计数量与在前的全部初级全局统计数量相加,以得到初级全局前缀和;
将所述初级全局前缀和存放在整体逻辑数位中每个数位对应的位置,以形成初级全局前缀和序列。
条款26.根据条款18-25中任意一项所述的方法,其中,根据所述初级全局前缀和序列来确定所述全局数据在存储空间中的初级位置,以便于对所述全局数据进行排序包括:
建立排序序列;
根据所述初级全局前缀和序列中每个初级全局现有逻辑数位所对应的初级全局统计数量的前缀和,将所述每个初级全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
条款27.根据条款26所述的方法,其中,
所述排序序列为初级全局排序序列,所述初级全局排序序列中包括初级全局现有逻辑数位的位置;并且其中,
通过一个处理核,根据所述初级全局前缀和序列中每个初级全局现有逻辑数位所对应的初级全局统计数量的前缀和,将所述每个初级全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
条款28.根据条款26所述的方法,其中,
所述排序序列为初级全局排序序列,所述初级全局排序序列中包括初级全局现有逻辑数位的位置;并且其中,
将所述初级全局前缀和序列拆分为多个初级局部前缀和序列,所述初级局部前缀和序列中包括初级局部现有逻辑数位的局部前缀和;以及
通过多个处理核,并行地根据所述初级局部前缀和序列中每个初级局部现有逻辑数位的局部前缀和,将所述每个初级局部现有逻辑数位所属的局部数据存放在所述初级全局排序序列的对应位置,以便于对所述全局数据进行排序。
条款29.根据条款26所述的方法,其中,
所述初级排序序列包括多个初级局部排序序列,所述初级局部排序序列中包括初级局部现有逻辑数位的位置;并且其中,
将所述初级全局前缀和序列拆分为多个初级局部前缀和序列,所述初级局部前缀和序列中包括初级局部现有逻辑数位的局部前缀和;以及
通过多个处理核,并行地根据所述初级局部前缀和序列中每个初级局部现有逻辑数位的局部前缀和,将所述每个初级局部现有逻辑数位所属的局部数据分别存放在所述初级局部排序序列的对应位置,以便于对所述全局数据进行排序。
条款30.根据条款26-29中任意一项所述的方法,进一步包括:
每当将所述每个初级全局现有逻辑数位所属的全局数据或局部现有逻辑数位所属的局部数据存放在所述排序序列的对应位置,则将所述初级全局统计数量的前缀和或局部前缀和减去一。
条款31.根据条款17-30中任意一项所述的方法,其中,所述处理核中的至少两个处理核存储有作为所述初级排序全局数据的一部分的初级排序局部数据,并且其中,迭代地根据所述初级排序全局数据的次级现有全局逻辑数位,对所述初级排序全局数据进行重排序,从而形成重排序全局数据包括:
建立次级局部数位统计序列,所述次级局部数位统计序列包括:所述初级排序局部数据中次级局部现有逻辑数位所属的次级局部整体逻辑数位,以及所述次级整体逻辑数位在所述次级局部现有逻辑数位中的初级局部统计数量;
根据所述次级局部数位统计序列形成次级全局数位统计序列,所述次级全局数位统计序列包括:所述初级排序局部数据中次级全局现有逻辑数位所属的次级全局整体逻辑数位,以及所述次级全局整体逻辑数位在所述次级全局现有逻辑数位中的次级全局统计数量;
确定所述次级全局数位统计序列中次级全局整体逻辑数位的次级全局统计数量的前缀和,以形成次级全局前缀和序列;以及
根据所述次级全局前缀和序列来确定所述初级排序全局数据在存储空间中的次级位置,以便于对所述初级排序全局数据进行重排序。
条款32.根据条款17-31中任意一项所述的方法,进一步包括:响应于所述全局数据中同一级别的所有现有全局逻辑数位相同,对所述全局数据的另一个级别的现有全局逻辑数位进行排序。
条款33.根据条款17-32中任意一项所述的方法,其中,所述全局数据为十进制数据;优选地,当所述十进制数据包括负数时,对所述负数十进制数据的二进制表示的所有位取反,以及当所述十进制数据还包括正数时,对所述正数十进制数据的二进制表示的符号位取反。。
条款34.根据条款17-32中任意一项所述的方法,其中,当所述全局数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。
条款35.根据条款34所述的方法,其中,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。
条款36.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如条款1-35中任意一项所述的方法。
条款37.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如条款1-35中任意一项所述的方法。
Claims (36)
1.一种在多核处理器中对全局数据进行排序的方法,其中所述多核处理器包括多个处理核,所述处理核中的至少两个处理核存储有作为所述全局数据的一部分的局部数据,所述方法包括:
建立局部数位统计序列,所述局部数位统计序列包括:所述局部数据中同级别的局部现有逻辑数位所属的局部整体逻辑数位,以及所述局部整体逻辑数位在所述局部数据的所述同级别的局部现有逻辑数位中的局部统计数量;
根据所述局部数位统计序列形成全局数位统计序列,所述全局数位统计序列包括:所述全局数据中同级别的全局现有逻辑数位所属的全局整体逻辑数位,以及所述全局整体逻辑数位在所述全局数据的所述同级别的全局现有逻辑数位中的全局统计数量;
确定所述全局数位统计序列中全局整体逻辑数位的全局统计数量的前缀和,以形成全局前缀和序列;以及
根据所述全局前缀和序列来确定所述全局数据在存储空间中的位置,以便于对所述全局数据进行排序包括:
建立排序序列;
根据所述全局前缀和序列中每个全局现有逻辑数位所对应的全局统计数量的前缀和,将所述每个全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
2.根据权利要求1所述的方法,其中,所述局部统计数量按照所述局部整体逻辑数位的增序或降序来排列。
3.根据权利要求1或2所述的方法,其中,根据所述局部数位统计序列形成全局数位统计序列包括:
将多个局部数位统计序列对应地相加,以形成全局数位统计序列。
4.根据权利要求1-3中任意一项所述的方法,其中,所述多个处理核连接到共享存储器,并且通过所述共享存储器进行通信,从而根据所述局部数位统计序列形成全局数位统计序列。
5.根据权利要求1-4中任意一项所述的方法,其中,所述多个处理核分为多个处理核组,每个处理核组中的同组处理核连接到一个共享存储器,所述多个处理核组通过各自的共享存储器进行通信,从而根据所述局部数位统计序列形成全局数位统计序列。
6.根据权利要求5所述的方法,其中,所述多核处理器包括全局存储器,所述多个处理核直接连接到所述全局存储器,或者通过共享存储器间接连接到所述全局存储器,从而根据所述局部数位统计序列形成全局数位统计序列。
7.根据权利要求1-6中任意一项所述的方法,其中,确定所述全局数位统计序列中全局整体逻辑数位的全局统计数量的前缀和,以形成全局前缀和序列包括:
将所述全局数位统计序列中全局整体逻辑数位的全局统计数量与在前的全部全局统计数量相加,以得到全局前缀和;
将所述全局前缀和存放在全局整体逻辑数位中每个数位对应的位置,以形成全局前缀和序列。
8.根据权利要求1所述的方法,其中,
所述排序序列为全局排序序列,所述全局排序序列中包括全局现有逻辑数位的位置;并且其中,
通过一个处理核,根据所述全局前缀和序列中每个全局现有逻辑数位所对应的全局统计数量的前缀和,将所述每个全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
9.根据权利要求1所述的方法,其中,
所述排序序列为全局排序序列,所述全局排序序列中包括全局现有逻辑数位的位置;并且其中,
将所述全局前缀和序列拆分为多个局部前缀和序列,所述局部前缀和序列中包括同级别的局部现有逻辑数位的局部前缀和;以及
通过多个处理核,并行地根据所述局部前缀和序列中每个同级别的局部现有逻辑数位的局部前缀和,将所述每个局部现有逻辑数位所属的局部数据存放在所述全局排序序列的对应位置,以便于对所述全局数据进行排序。
10.根据权利要求1所述的方法,其中,
所述排序序列包括多个局部排序序列,所述局部排序序列中包括局部现有逻辑数位的位置;并且其中,
将所述全局前缀和序列拆分为多个局部前缀和序列,所述局部前缀和序列中包括同级别的局部现有逻辑数位的局部前缀和;以及
通过多个处理核,并行地根据所述局部前缀和序列中每个同级别的局部现有逻辑数位的局部前缀和,将所述每个局部现有逻辑数位所属的局部数据分别存放在所述局部排序序列的对应位置,以便于对所述全局数据进行排序。
11.根据权利要求1,8-10中任意一项所述的方法,进一步包括:
每当将所述每个全局现有逻辑数位所属的全局数据或局部现有逻辑数位所属的局部数据存放在所述排序序列的对应位置,则将所述全局统计数量的前缀和/或局部前缀和减去一。
12.根据权利要求1,8-11中任意一项所述的方法,进一步包括:
将排序后的全局数据拆分为多组排序后局部数据;
将所述多组排序后局部数据分别存放在多个处理核中。
13.根据权利要求1-12中任意一项所述的方法,其中,所述全局数据为十进制数据;优选地,当所述十进制数据包括负数时,对所述负数十进制数据的二进制表示的所有位取反,以及当所述十进制数据还包括正数时,对所述正数十进制数据的二进制表示的符号位取反。
14.根据权利要求1-13中任意一项所述的方法,其中,当所述全局数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。
15.根据权利要求14所述的方法,其中,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。
16.一种在多核处理器中对全局数据进行排序的方法,其中所述多核处理器包括多个处理核,所述处理核中的至少两个处理核存储有作为所述全局数据的一部分的局部数据,所述方法包括:
根据所述全局数据的初级现有全局逻辑数位对所述全局数据进行排序,以形成初级排序全局数据;以及
迭代地根据所述初级排序全局数据的次级现有全局逻辑数位,对所述初级排序全局数据进行重排序,从而形成重排序全局数据。
17.根据权利要求16所述的方法,其中,根据所述全局数据的初级现有全局逻辑数位对所述全局数据进行排序,以形成初级排序全局数据包括:
建立初级局部数位统计序列,所述初级局部数位统计序列包括:所述局部数据中初级局部现有逻辑数位所属的初级局部整体逻辑数位,以及所述初级局部整体逻辑数位在所述初级局部现有逻辑数位中的初级局部统计数量;
根据所述初级局部数位统计序列形成初级全局数位统计序列,所述初级全局数位统计序列包括:所述全局数据中初级全局现有逻辑数位所属的初级全局整体逻辑数位,以及所述初级全局整体逻辑数位在所述初级全局现有逻辑数位中的初级全局统计数量;
确定所述初级全局数位统计序列中初级全局整体逻辑数位的初级全局统计数量的前缀和,以形成初级全局前缀和序列;以及
根据所述初级全局前缀和序列来确定所述全局数据在存储空间中的初级位置,以便于对所述全局数据进行排序。
18.根据权利要求16或17所述的方法,进一步包括:
将所述初级排序全局数据拆分为多组初级局部排序数据;
将所述多组初级局部排序数据分别存储在所述多个处理核中。
19.根据权利要求17所述的方法,其中,所述初级局部统计数量按照所述初级局部整体逻辑数位的增序或降序来排列。
20.根据权利要求17-19中任意一项所述的方法,其中,根据所述初级局部数位统计序列形成初级全局数位统计序列包括:
将多个初级局部数位统计序列对应地相加,以形成初级全局数位统计序列。
21.根据权利要求17-20所述的方法,其中,所述多个处理核连接到共享存储器,并且通过所述共享存储器进行通信,从而根据所述初级局部数位统计序列形成初级全局数位统计序列。
22.根据权利要求17-21所述的方法,其中,所述多个处理核分为多个处理核组,每个处理核组中的同组处理核连接到一个共享存储器,所述多个处理核组通过各自的共享存储器进行通信,从而根据所述初级局部数位统计序列形成初级全局数位统计序列。
23.根据权利要求22所述的方法,其中,所述多核处理器包括全局存储器,所述多个处理核直接连接到所述全局存储器,或者通过共享存储器间接连接到所述全局存储器,从而根据所述初级局部数位统计序列形成初级全局数位统计序列。
24.根据权利要求17-23中任意一项所述的方法,其中,确定所述初级全局数位统计序列中初级全局整体逻辑数位的初级全局统计数量的前缀和,以形成初级全局前缀和序列包括:
将所述初级全局数位统计序列中所述初级全局整体逻辑数位的初级全局统计数量与在前的全部初级全局统计数量相加,以得到初级全局前缀和;
将所述初级全局前缀和存放在所述初级全局整体逻辑数位中每个数位对应的位置,以形成初级全局前缀和序列。
25.根据权利要求17-24中任意一项所述的方法,其中,根据所述初级全局前缀和序列来确定所述全局数据在存储空间中的初级位置,以便于对所述全局数据进行排序包括:
建立排序序列;
根据所述初级全局前缀和序列中每个初级全局现有逻辑数位所对应的初级全局统计数量的前缀和,将所述每个初级全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
26.根据权利要求25所述的方法,其中,
所述排序序列为初级全局排序序列,所述初级全局排序序列中包括初级全局现有逻辑数位的位置;并且其中,
通过一个处理核,根据所述初级全局前缀和序列中每个初级全局现有逻辑数位所对应的初级全局统计数量的前缀和,将所述每个初级全局现有逻辑数位所属的全局数据存放在所述排序序列的对应位置,以便于对所述全局数据进行排序。
27.根据权利要求25所述的方法,其中,
所述排序序列为初级全局排序序列,所述初级全局排序序列中包括初级全局现有逻辑数位的位置;并且其中,
将所述初级全局前缀和序列拆分为多个初级局部前缀和序列,所述初级局部前缀和序列中包括初级局部现有逻辑数位的局部前缀和;以及
通过多个处理核,并行地根据所述初级局部前缀和序列中每个初级局部现有逻辑数位的局部前缀和,将所述每个初级局部现有逻辑数位所属的局部数据存放在所述初级全局排序序列的对应位置,以便于对所述全局数据进行排序。
28.根据权利要求25所述的方法,其中,
所述初级排序序列包括多个初级局部排序序列,所述初级局部排序序列中包括初级局部现有逻辑数位的位置;并且其中,
将所述初级全局前缀和序列拆分为多个初级局部前缀和序列,所述初级局部前缀和序列中包括初级局部现有逻辑数位的局部前缀和;以及
通过多个处理核,并行地根据所述初级局部前缀和序列中每个初级局部现有逻辑数位的局部前缀和,将所述每个初级局部现有逻辑数位所属的局部数据分别存放在所述初级局部排序序列的对应位置,以便于对所述全局数据进行排序。
29.根据权利要求25-28中任意一项所述的方法,进一步包括:
每当将所述每个初级全局现有逻辑数位所属的全局数据或局部现有逻辑数位所属的局部数据存放在所述排序序列的对应位置,则将所述初级全局统计数量的前缀和或局部前缀和减去一。
30.根据权利要求16-29中任意一项所述的方法,其中,所述处理核中的至少两个处理核存储有作为所述初级排序全局数据的一部分的初级排序局部数据,并且其中,迭代地根据所述初级排序全局数据的次级现有全局逻辑数位,对所述初级排序全局数据进行重排序,从而形成重排序全局数据包括:
建立次级局部数位统计序列,所述次级局部数位统计序列包括:所述初级排序局部数据中次级局部现有逻辑数位所属的次级局部整体逻辑数位,以及所述次级局部整体逻辑数位在所述次级局部现有逻辑数位中的次级局部统计数量;
根据所述次级局部数位统计序列形成次级全局数位统计序列,所述次级全局数位统计序列包括:所述初级排序全局数据中次级全局现有逻辑数位所属的次级全局整体逻辑数位,以及所述次级全局整体逻辑数位在所述次级全局现有逻辑数位中的次级全局统计数量;
确定所述次级全局数位统计序列中次级全局整体逻辑数位的次级全局统计数量的前缀和,以形成次级全局前缀和序列;以及
根据所述次级全局前缀和序列来确定所述初级排序全局数据在存储空间中的次级位置,以便于对所述初级排序全局数据进行重排序。
31.根据权利要求16-30中任意一项所述的方法,进一步包括:响应于所述全局数据中同一级别的所有现有全局逻辑数位相同,对所述全局数据的另一个级别的现有全局逻辑数位进行排序。
32.根据权利要求16-31中任意一项所述的方法,其中,所述全局数据为十进制数据;优选地,当所述十进制数据包括负数时,对所述负数十进制数据的二进制表示的所有位取反,以及当所述十进制数据还包括正数时,对所述正数十进制数据的二进制表示的符号位取反。
33.根据权利要求16-31中任意一项所述的方法,其中,当所述全局数据为浮点数时,将所述浮点数转换为十六进制表示,以对所述十六进制表示进行排序。
34.根据权利要求33所述的方法,其中,当浮点数包括负数时,对所述负数的十六进制表示的所有位取反;以及当所述浮点数还包括正数时,对所述正数的十六进制表示的符号位取反。
35.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如权利要求1-34中任意一项所述的方法。
36.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-34中任意一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110712925.9A CN115525795B (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 |
---|---|---|---|
CN202110712925.9A CN115525795B (zh) | 2021-06-25 | 2021-06-25 | 一种在多核处理器中对数据进行排序的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115525795A CN115525795A (zh) | 2022-12-27 |
CN115525795B true CN115525795B (zh) | 2024-01-30 |
Family
ID=84693498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110712925.9A Active CN115525795B (zh) | 2021-06-25 | 2021-06-25 | 一种在多核处理器中对数据进行排序的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115525795B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5991866A (en) * | 1992-03-25 | 1999-11-23 | Tm Patents, Lp | Method and system for generating a program to facilitate rearrangement of address bits among addresses in a massively parallel processor system |
CN1886739A (zh) * | 2003-10-27 | 2006-12-27 | 特博数据实验室公司 | 分布式存储器类型的信息处理系统 |
CN104794120A (zh) * | 2014-01-17 | 2015-07-22 | 中国石油化工股份有限公司 | 一种海量地震数据并行抽道集方法 |
CN110837584A (zh) * | 2019-10-18 | 2020-02-25 | 中山大学 | 一种分块并行构造后缀数组的方法及系统 |
CN111124995A (zh) * | 2019-12-24 | 2020-05-08 | 上海寒武纪信息科技有限公司 | 通过人工智能处理器处理一维复数数组的方法和设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080072024A1 (en) * | 2006-09-14 | 2008-03-20 | Davis Mark C | Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors |
-
2021
- 2021-06-25 CN CN202110712925.9A patent/CN115525795B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5991866A (en) * | 1992-03-25 | 1999-11-23 | Tm Patents, Lp | Method and system for generating a program to facilitate rearrangement of address bits among addresses in a massively parallel processor system |
CN1886739A (zh) * | 2003-10-27 | 2006-12-27 | 特博数据实验室公司 | 分布式存储器类型的信息处理系统 |
CN104794120A (zh) * | 2014-01-17 | 2015-07-22 | 中国石油化工股份有限公司 | 一种海量地震数据并行抽道集方法 |
CN110837584A (zh) * | 2019-10-18 | 2020-02-25 | 中山大学 | 一种分块并行构造后缀数组的方法及系统 |
CN111124995A (zh) * | 2019-12-24 | 2020-05-08 | 上海寒武纪信息科技有限公司 | 通过人工智能处理器处理一维复数数组的方法和设备 |
Non-Patent Citations (2)
Title |
---|
Engineering a Multi-core Radix Sort;Jan Wassenberg;IEEE;第160-169页 * |
基于现代硬件的并行内存排序方法综述;郭诚欣;陈红;孙辉;李翠平;吴天贞;;计算机学报(第09期);第2070-2092页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115525795A (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109740739B (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN109740754B (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN112686379B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
WO2021185262A1 (zh) | 计算装置、方法、板卡和计算机可读存储介质 | |
CN111930681A (zh) | 一种计算装置及相关产品 | |
CN115525795B (zh) | 一种在多核处理器中对数据进行排序的方法 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111047005A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111260070B (zh) | 运算方法、装置及相关产品 | |
CN110659290B (zh) | 数据处理方法及装置以及相关产品 | |
CN111382852B (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN111382856B (zh) | 数据处理装置、方法、芯片及电子设备 | |
WO2022268188A1 (zh) | 一种在多核或单核处理器中对数据进行排序的方法 | |
CN115525794A (zh) | 一种在单核处理器中对数据进行排序的方法 | |
CN111178373B (zh) | 运算方法、装置及相关产品 | |
CN111258641A (zh) | 运算方法、装置及相关产品 | |
CN112395008A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112395003A (zh) | 运算方法、装置及相关产品 | |
CN111047030A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111061507A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112395009A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112232498B (zh) | 一种数据处理装置、集成电路芯片、电子设备、板卡和方法 | |
CN111026440B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111047024A (zh) | 一种计算装置及相关产品 | |
CN111381875B (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 |