CN114356512A - 一种数据处理方法、设备以及计算机可读存储介质 - Google Patents
一种数据处理方法、设备以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114356512A CN114356512A CN202111242449.5A CN202111242449A CN114356512A CN 114356512 A CN114356512 A CN 114356512A CN 202111242449 A CN202111242449 A CN 202111242449A CN 114356512 A CN114356512 A CN 114356512A
- Authority
- CN
- China
- Prior art keywords
- data
- sorting
- sub
- sorted
- ordering
- 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
Images
Classifications
-
- 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
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法、设备以及计算机可读存储介质,该方法包括:根据针对待排序数据序列的数据排序请求调用C个数据双调排序组件;根据待排序数据序列以及C个数据双调排序组件,开启B个数据双调排序任务;B个数据双调排序任务分别关联不同的待排序数据子序列,B个待排序数据子序列均是基于待排序数据序列所生成的;根据B个数据双调排序任务并行运行C个数据双调排序组件,得到B个数据排序子结果;基于C个数据双调排序组件对B个数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。采用本申请,可以降低排序任务的执行耗时以及提高排序效率。本申请实施例可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据处理方法、设备以及计算机可读存储介质。
背景技术
排序操作大量应用于数据库、目标识别、文本分析等场景,是人工智能模型以及目标检测模型中的常见操作。代表性排序算法包括双调排序(Bitonic sort)、奇偶排序(Odd-even sort)以及基数排序(Radix Sort)等,其中,双调排序因其自身特有的并行性和数据索引独立性在并行计算等领域有重要的应用价值。
双调排序具有确定的执行时间,十分适合硬件实现,但在排序任务执行过程中,需要对待排序数据进行多轮遍历,故增加了执行耗时,也降低了排序效率。
发明内容
本申请实施例提供一种数据处理方法、设备以及计算机可读存储介质,不仅可以降低排序任务的执行耗时,还可以提高排序效率。
本申请实施例一方面提供了一种数据处理方法,包括:
获取针对待排序数据序列的数据排序请求,根据数据排序请求调用C个数据双调排序组件;C为大于1的正整数;
根据待排序数据序列以及C个数据双调排序组件,开启B个数据双调排序任务;B为大于1的正整数;B个数据双调排序任务分别关联不同的待排序数据子序列,B个待排序数据子序列均是基于待排序数据序列所生成的;
根据B个数据双调排序任务,并行运行C个数据双调排序组件,得到由C个数据双调排序组件所输出的B个数据排序子结果;一个数据排序子结果用于表征,一个数据双调排序任务所关联的待排序数据子序列的排序结果;
基于C个数据双调排序组件,对B个数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。
本申请实施例一方面提供了一种数据处理装置,包括:
调用组件模块,用于获取针对待排序数据序列的数据排序请求,根据数据排序请求调用C个数据双调排序组件;C为大于1的正整数;
开启任务模块,用于根据待排序数据序列以及C个数据双调排序组件,开启B个数据双调排序任务;B为大于1的正整数;B个数据双调排序任务分别关联不同的待排序数据子序列,B个待排序数据子序列均是基于待排序数据序列所生成的;
并行组件模块,用于根据B个数据双调排序任务,并行运行C个数据双调排序组件,得到由C个数据双调排序组件所输出的B个数据排序子结果;一个数据排序子结果用于表征,一个数据双调排序任务所关联的待排序数据子序列的排序结果;
合并结果模块,用于基于C个数据双调排序组件,对B个数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。
其中,调用组件模块,具体用于获取数据排序请求,将数据排序请求发送至任务控制组件;数据排序请求携带待排序数据序列中的待排序数据的第一总数量;
则开启任务模块,包括:
第一确定单元,用于在任务控制组件中,确定与第一总数量相关联的待排序数量;待排序数量等于或大于第一总数量;
第一获取单元,用于获取C个数据双调排序组件分别对应的数据存储容量,将待排序数量与总数据存储容量进行对比,得到第一对比结果;总数据存储容量等于C个数据存储容量的总和;
开启任务单元,用于根据第一对比结果开启B个数据双调排序任务。
其中,开启任务单元,包括:
第一开启子单元,用于若第一对比结果为待排序数量大于总数据存储容量,则获取待排序数量以及总数据存储容量之间的第一数量比值;
第一开启子单元,还用于根据第一数量比值开启B个数据双调排序任务;C与第一数量比值的乘积等于B;一个数据双调排序任务所携带的第二总数量等于数据存储容量;第二总数量用于表征,一个数据双调排序任务所关联的待排序数据子序列中的待排序数据的总数量;
第二开启子单元,用于第二开启子单元,用于若第一对比结果为待排序数量小于或等于总数据存储容量,则根据C个数据双调排序组件开启B个数据双调排序任务;B等于C。
其中,并行组件模块,包括:
第一分发单元,用于若B等于C,则将B个数据双调排序任务分发至C个数据双调排序组件;其中,一个数据双调排序任务分发至一个数据双调排序组件;
第一并行单元,用于通过C个数据双调排序组件,并行运行B个数据双调排序任务,得到C个数据双调排序组件分别输出的数据排序子结果。
其中,B个数据双调排序任务包括数据双调排序任务De,e为正整数且e小于或等于B;B个待排序数据子序列包括数据双调排序任务De对应的待排序数据子序列Ae;C个数据双调排序组件包括用于执行数据双调排序任务De的数据双调排序组件Fe;
第一并行单元,包括:
第一生成子单元,用于在数据双调排序组件Fe中,获取数据双调排序任务De对应的待排序数据子序列Ae,对待排序数据子序列Ae进行双调排序,得到待排序数据子序列Ae对应的数据排序子结果;
第二生成子单元,用于在运行数据双调排序组件Fe的同时,通过C-1个数据双调排序组件并行运行B-1个数据双调排序任务,得到C-1个数据双调排序组件分别输出的数据排序子结果;C-1个数据双调排序组件是指,C个数据双调排序组件中除了数据双调排序组件Fe之外的数据双调排序组件;B-1个数据双调排序任务是指,B个数据双调排序任务中除了数据双调排序任务De之外的数据双调排序任务。
其中,数据排序请求携带待排序数据序列中的待排序数据分别对应的读取地址,以及针对待排序数据序列的排序顺序;
第一生成子单元,包括:
第一获取子单元,用于在数据双调排序组件Fe中,获取数据双调排序任务De所携带的目标读取地址以及第二总数量;待排序数据序列中的待排序数据分别对应的读取地址中包括目标读取地址;第二总数量用于表征待排序数据子序列Ae中的待排序数据的总数量;
第二获取子单元,用于发送携带有目标读取地址的数据获取请求至数据读写组件,通过数据读写组件,从目标读取地址获取初始待排序数据子序列;初始待排序子序列属于待排序数据序列;
第一确定子单元,用于确定第二总数量以及第三总数量之间的数量差值;第三总数量用于表征初始待排序数据子序列中的待排序数据的总数量;
第一确定子单元,还用于根据数量差值以及排序顺序获取待排序补充数据,将待排序补充数据添加至初始待排序数据子序列中,得到待排序数据子序列Ae;
第一确定子单元,还用于将待排序数据子序列Ae加载至数据双调排序组件Fe对应的存储组件中。
其中,数据双调排序组件Fe包括排序控制子组件、轮次控制子组件、数据获取子组件以及双调排序子组件;
第一生成子单元,包括:
第二确定子单元,用于当排序控制子组件获取到数据加载完成通知时,启动轮次控制子组件;数据加载完成通知用于表征数据双调排序组件Fe对应的存储组件已加载待排序数据子序列Ae;
第二确定子单元,还用于在轮次控制子组件中,根据第二总数量,确定待排序数据子序列Ae对应的双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,将双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,发送至数据获取子组件;第二总数量用于表征待排序数据子序列Ae中的待排序数据的总数量;
第三确定子单元,用于在数据获取子组件中,根据双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,获取中间待排序数据,将中间待排序数据发送至双调排序子组件,通过双调排序子组件,对中间待排序数据进行排序,得到中间排序子结果,根据中间排序子结果确定待排序数据子序列Ae对应的数据排序子结果;待排序数据子序列Ae包括中间待排序数据。
其中,双调排序阶段的阶段数为至少两个;
第三确定子单元,具体用于在数据获取子组件中,根据至少两个双调排序阶段中的第i个双调排序阶段,从存储组件中读取第一数据排序过渡子结果;i大于1的正整数,且第一数据排序过渡子结果为第i-1个双调排序阶段中的输出结果;第i个双调排序阶段对应的双调排序逻辑参数包括n轮排序轮次逻辑参数;n是基于i所确定的,且n为大于1的正整数;
第三确定子单元,还具体用于根据第j轮排序轮次逻辑参数,从中间数据排序过渡子结果中获取中间待排序数据;j为正整数且j小于或等于n;若j为1,则中间数据排序过渡子结果为第一数据排序过渡子结果;若j不为1,则中间数据排序过渡子结果为缓存在数据获取子组件中的第二数据排序过渡子结果,第二数据排序过渡子结果是基于第j-1轮排序轮次逻辑参数所确定的;
第三确定子单元,还具体用于将中间待排序数据发送至双调排序子组件,通过双调排序子组件,对中间待排序数据进行排序,得到中间待排序数据的中间排序子结果,根据中间排序子结果确定待排序数据子序列Ae对应的第三数据排序过渡子结果;
第三确定子单元,还具体用于若j小于n,则将第三数据排序过渡子结果缓存在数据获取子组件中;
第三确定子单元,还具体用于若j=n,且第i个双调排序阶段为至少两个双调排序阶段的最后一个双调排序阶段,则将第三数据排序过渡子结果写入至存储组件,将第三数据排序过渡子结果确定为待排序数据子序列Ae对应的数据排序子结果。
其中,并行组件模块,包括:
拆分任务单元,用于若B大于C,则将B个数据双调排序任务拆分为K*C个数据双调排序任务;K为C个数据双调排序组件分别对应的最大运行轮次;
第二分发单元,用于将第i轮运行轮次中的C个数据双调排序任务分发至C个数据双调排序组件;其中,一个数据双调排序任务分发至一个数据双调排序组件;i为小于或等于K的正整数;
第二并行单元,用于通过C个数据双调排序组件,并行运行第i轮运行轮次中的C个数据双调排序任务,得到C个数据双调排序组件分别输出的数据排序子结果,直至i等于K时得到与B个数据双调排序任务分别对应的数据排序子结果。
其中,合并结果模块,包括:
第二获取单元,用于在第L次合并中获取U个数据排序子结果对;U为正整数;L为正整数;若L为1,则U个数据排序子结果对是基于B个数据排序子结果所生成的;若L不为1,则U个数据排序子结果对是基于历史合并数据排序子结果所生成的,历史合并数据排序子结果是在第L-1次合并中得到的子结果;
第一合并单元,用于基于C个数据双调排序组件,对U个数据排序子结果对进行合并,得到U个目标合并数据排序子结果;
第二确定单元,用于若U等于1,则将U个目标合并数据排序子结果,确定为待排序数据序列对应的数据排序结果;
第二合并单元,用于若U大于1,则在第L+1次合并中,基于C个数据双调排序组件,对U个目标合并数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。
其中,U个数据排序子结果对包括数据排序子结果对Mp,p为正整数,且p小于或等于U;
第一合并单元,包括:
第一数量子单元,用于确定数据排序子结果对Mp所关联的待排序数据的第四总数量,确定数据排序子结果对Mp所关联的数据双调排序组件对应的数据存储容量;C个数据双调排序组件包括数据排序子结果对Mp所关联的数据双调排序组件;
第二数量子单元,用于将第四总数量与数据存储容量进行对比,得到第二对比结果;
第三生成子单元,用于根据第二对比结果以及数据排序子结果对Mp所关联的数据双调排序组件,对数据排序子结果对Mp进行双调排序,得到数据排序子结果对Mp对应的目标合并数据排序子结果;
第四生成子单元,用于将U个数据排序子结果对对应的目标合并数据排序子结果,确定为U个目标合并数据排序子结果。
其中,数据排序子结果对Mp包括第一数据排序子结果以及第二数据排序子结果;
第三生成子单元,包括:
第一均分子单元,用于若第二对比结果为第四总数量大于数据存储容量,则将第一数据排序子结果均分为第一有序数据片段以及第二有序数据片段,将第二数据排序子结果均分为第三有序数据片段以及第四有序数据排序;
第一排序子单元,用于若第一有序数据片段中的数据小于或等于第二有序数据片段中的数据,且第三有序数据片段中的数据小于或等于第四有序数据片段中的数据,则基于第一数据双调排序组件,对第一有序数据片段以及第三有序数据片段进行双调排序,得到第三数据排序子结果;数据排序子结果对Mp所关联的数据双调排序组件包括第一数据双调排序组件;
第二排序子单元,用于基于第二数据双调排序组件,对第二有序数据片段以及第四有序数据片段进行双调排序,得到第四数据排序子结果;数据排序子结果对Mp所关联的数据双调排序组件包括第二数据双调排序组件;
第二均分子单元,用于将第三数据排序子结果均分为第五有序数据片段以及第六有序数据片段,将第四数据排序子结果均分为第七有序数据片段以及第八有序数据排序;
第三排序子单元,用于若第五有序数据片段中的数据小于或等于第六有序数据片段中的数据,第七有序数据片段中的数据小于或等于第八有序数据片段中的数据,则基于目标数据双调排序组件,对第六有序数据片段以及第七有序数据片段进行双调排序,得到第五数据排序子结果;目标数据双调排序组件为第一数据双调排序组件或第二数据双调排序组件;
第四排序子单元,用于基于第五有序数据片段、第五数据排序子结果以及第八有序数据排序,得到数据排序子结果对Mp对应的目标合并数据排序子结果。
其中,C个数据双调排序组件均包括索引生成子组件,索引生成子组件用于为待排序数据序列中的每个待排序数据分别分配索引值;数据排序请求携带写入地址;
数据处理装置,还包括:
生成序列模块,用于按序获取数据排序结果中的每个待排序数据分别对应的索引值,根据获取到的索引值,生成与待排序数据序列长度相同的索引值序列;
写入序列模块,用于发送针对索引值序列的数据写入请求至数据读写组件,通过数据读写组件,将索引值序列写入至写入地址。
本申请一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以使得计算机设备执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中的方法。
在本申请实施例中,基于C个数据双调排序组件,计算机设备可以生成针对待排序数据序列的多个数据双调排序任务,通过并行运行C个数据双调排序组件,可以同时执行多个数据双调排序任务,通过同时执行多个数据双调排序任务,可以减少待排序数据序列的排序时间,即任务执行时间;后续,基于C个数据双调排序组件,计算机设备对B个数据排序子结果进行合并,可以得到针对待排序数据序列的数据排序结果。由此可见,本申请实施例通过并行运行C个数据双调排序组件,不仅可以降低针对待排序数据序列的排序任务的执行耗时,还可以提高排序任务的排序效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种***架构示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3是本申请实施例提供的一种数据处理的场景示意图;
图4是本申请实施例提供的一种数据处理的场景示意图;
图5是本申请实施例提供的一种数据处理的场景示意图;
图6是本申请实施例提供的一种数据处理方法的流程示意图;
图7是本申请实施例提供的一种排序加速器的结构示意图;
图8是本申请实施例提供的一种数据处理方法的流程示意图;
图9是本申请实施例提供的一种数据处理的场景示意图;
图10是本申请实施例提供的一种数据处理装置的结构示意图;
图11是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解,首先对部分名词进行以下简单解释:
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
请参见图1,图1是本申请实施例提供的一种***架构示意图。如图1所示,该***可以包括业务服务器100以及终端集群,终端集群可以包括:终端设备200a、终端设备200b、终端设备200c、…、终端设备200n,可以理解的是,上述***可以包括一个或者多个终端设备,本申请不对终端设备的数量进行限制。
其中,终端集群之间可以存在通信连接,例如终端设备200a与终端设备200b之间存在通信连接,终端设备200a与终端设备200c之间存在通信连接。同时,终端集群中的任一终端设备可以与业务服务器100存在通信连接,例如终端设备200a与业务服务器100之间存在通信连接,其中,上述通信连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其它方式,本申请在此不做限制。
应当理解,如图1所示的终端集群中的每个终端设备均可以安装有应用客户端,当该应用客户端运行于各终端设备中时,可以分别与上述图1所示的业务服务器100之间进行数据交互,即上述的通信连接。其中,该应用客户端可以为短视频应用、视频应用、直播应用、社交应用、即时通信应用、游戏应用、音乐应用、购物应用、小说应用、浏览器等具有数据排序功能的应用客户端。其中,该应用客户端可以为独立的客户端,也可以为集成在某客户端(例如,社交客户端、教育客户端以及多媒体客户端等)中的嵌入式子客户端,在此不做限定。
为便于后续理解和说明,本申请实施例可以在图1所示的终端集群中选择一个终端设备作为目标终端设备,例如以终端设备200a作为目标终端设备。当获取到待排序数据序列,并接收到针对待排序数据序列的数据排序指令时,终端设备200a可以将针对待排序数据序列的数据排序请求发送至业务服务器100。进一步,业务服务器100接收到终端设备200a发送的数据排序请求后,可以通过数据排序请求调用C个数据双调排序组件,其中,数据排序请求携带有待排序数据序列中的待排序数据的第一总数量,C为大于1的正整数,即调用至少两个数据双调排序组件;进一步,业务服务器100根据第一总数量以及C个数据双调排序组件分别对应的数据存储容量,可以开启B个数据双调排序任务,其中,B为大于1的正整数,即开启至少两个数据双调排序任务,B个数据双调排序任务分别关联不同的待排序数据子序列,B个待排序数据子序列均是基于待排序数据序列所生成的;进一步,业务服务器100根据B个数据双调排序任务,可以并行运行C个数据双调排序组件,得到由C个数据双调排序组件所输出的B个数据排序子结果,其中,一个数据排序子结果用于表征,一个数据双调排序任务所关联的待排序数据子序列的排序结果;进一步,基于C个数据双调排序组件,业务服务器100可以对B个数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果,最后,可以将数据排序结果写入至数据排序请求所携带的写入地址。
可选的,若终端设备200a的本地存储了上述C个数据双调排序组件,则终端设备200a可以通过本地的C个数据双调排序组件,对待排序数据序列中的待排序数据进行双调排序,可以理解的是,该过程与上述业务服务器通过C个数据双调排序组件对待排序数据序列中的待排序数据进行双调排序的过程一致,故此处不进行赘述,请参见上文的描述。
可选的,可以理解的是,***架构中可以包括多个业务服务器,一个终端设备可以与一个业务服务器相连接,每个业务服务器可以获取到与之相连接的终端设备所发送的数据排序请求,从而可以对所获取到的数据排序请求所针对的待排序数据序列进行双调排序,并将数据排序结果返回给与之相连接的终端设备。
本申请实施例提供的方法可以应用在专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程逻辑门阵列(Field Programmable GateArray,简称FPGA)等电路中,该电路可以应用于芯片中,上述芯片可以集成在中央处理器(central processing unit,简称CPU)中,或AI芯片中,或其他类型的芯片中,该AI芯片以周边设备高速连接标准(PeriCeral Component Interconnect Express,简称PCIE)板卡的形式集成在业务服务器中。
可以理解的是,本申请实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端设备或业务服务器。其中,业务服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云数据库、云服务、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等。其中,终端设备和业务服务器可以通过有线或无线方式进行直接或间接地连接,本申请实施例在此不做限制。
可以理解的是,上述***架构可适用于数据库、目标识别、文本分析等数据排序场景,这里将不对具体的业务场景进行一一列举。
进一步地,请参见图2,图2是本申请实施例提供的一种数据处理方法的流程示意图。该数据处理方法可以由业务服务器(例如,上述图1所示的业务服务器100)执行,也可以由终端设备(例如,上述图1所示的终端设备200a)执行,还可以由业务服务器和终端设备交互执行。为便于理解,本申请实施例以该方法由业务服务器执行为例进行说明,此外,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。如图2所示,该数据处理方法至少可以包括以下步骤S101-步骤S104。
步骤S101,获取针对待排序数据序列的数据排序请求,根据数据排序请求调用C个数据双调排序组件;C为大于1的正整数。
具体的,获取数据排序请求,将数据排序请求发送至任务控制组件;数据排序请求携带待排序数据序列中的待排序数据的第一总数量。
在本申请实施例中,待排序数据序列可以是无序数据序列,例如序列(0、5、2、6、8、7、6),待排序数据序列可以是双调序列,例如序列(0、2、6、9、8、7、4、1),本申请实施例不对待排序数据序列的序列类型进行限定。可以理解的是,待排序数据序列中的待排序数据的第一总数量为至少三个。
在本申请实施例中,数据排序请求可以是终端设备发送至业务服务器的,如上文图1中所描述的,也可以是业务服务器本地生成的,本申请实施例不对数据排序请求的来源进行限定。数据排序请求可以携带待排序数据序列中的待排序数据,此时,业务服务器可以根据待排序数据序列中的待排序数据确定第一总数量,或者,数据排序请求携带待排序数据序列中的待排序数据分别对应的读取地址以及第一总数量,则业务服务器可以从读取地址读取待排序数据序列中的待排序数据,本申请实施例不对数据获取请求所携带的数据进行限定,可以根据实际应用进行设定。在本申请实施例,数据双调排序组件是指可以对待排序数据序列进行双调排序的组件。
请一并参见图3,图3是本申请实施例提供的一种数据处理的场景示意图。如图3所示,数据排序请求30a包括第一总数量、读取地址、写入地址以及写入类型,其中,写入地址用于指示业务服务器30b将数据排序结果写入至该地址,写入类型是指写入至写入地址的结果类型是数据结果类型,还是索引结果类型,可以参见下文步骤S104中的描述,此处暂不展开描述。
业务服务器30b获取到数据排序请求30a后,可以根据该数据排序请求30a调用C个(至少两个)数据双调排序组件,请参见下文图6所对应的实施例中关于数据双调排序组件的内部结构描述,此处暂不展开叙述。可以理解的是,实际应用时,第一总数量可以等于2,也可以为大于2的正整数;可以理解的是,本申请可以应用在一个数据双调排序组件对待排序数据序列进行排序处理的场景。
步骤S102,根据待排序数据序列以及C个数据双调排序组件,开启B个数据双调排序任务;B为大于1的正整数;B个数据双调排序任务分别关联不同的待排序数据子序列,B个待排序数据子序列均是基于待排序数据序列所生成的。
具体的,在任务控制组件中,确定与第一总数量相关联的待排序数量;待排序数量等于或大于第一总数量;获取C个数据双调排序组件分别对应的数据存储容量,将待排序数量与总数据存储容量进行对比,得到第一对比结果;总数据存储容量等于C个数据存储容量的总和;根据第一对比结果开启B个数据双调排序任务。
其中,根据第一对比结果开启B个数据双调排序任务的具体过程可以包括:若第一对比结果为待排序数量大于总数据存储容量,则获取待排序数量以及总数据存储容量之间的第一数量比值;根据第一数量比值开启B个数据双调排序任务;C与第一数量比值的乘积等于B;一个数据双调排序任务所携带的第二总数量等于数据存储容量;第二总数量用于表征,一个数据双调排序任务所关联的待排序数据子序列中的待排序数据的总数量;若第一对比结果为待排序数量小于或等于总数据存储容量,则根据C个数据双调排序组件开启B个数据双调排序任务;B等于C。
请再参见图3,业务服务器30b将数据排序请求30a发送至顶层控制组件,通过顶层控制组件将数据排序请求30a发送至任务控制组件30c,也可以理解为顶层控制组件将数据排序请求所携带的数据与任务控制组件30c配置好后,发送针对待排序数据序列的数据排序指令(信号,Sort request)至任务控制组件30c。
在任务控制组件30c中,业务服务器30b确定与第一总数量相关联的待排序数量,例如待排序数据序列对应的第一总数量为31,31最接近2的5次幂,则待排序数量为25,即32,可以理解的是,在本申请实施例中,第一总数量满足大于2的正整数的条件即可,待排序数量等于或大于第一总数量,且为2的幂次;业务服务器30b获取C个数据双调排序组件分别对应的数据存储容量,通常情况下,为了不增加参数配置的复杂度,C个数据存储容量是一致的,例如均为32;假设C个数据存储容量均为32,则总数据存储容量为32*C;进一步,将待排序数量与总数据存储容量进行对比,得到第一对比结果。需要说明的是,上述示例只是为了便于叙述以及理解。
请再参见图3,若第一对比结果为待排序数量大于总数据存储容量,则业务服务器30b获取待排序数量以及总数据存储容量之间的第一数量比值,如图3所示例的比值K,例如一个数据双调排序组件对应的数据存储容量为8,C等于4,则总数据存储容量等于32,若待排序数量为64,则K=2,此时,可以将一个数据双调排序任务所携带的第二总数量设置为数据存储容量,即一个数据双调排序任务所关联的待排序数据子序列中的待排序数据的总数量,等于数据存储容量,明显地,业务服务器30b需要通过任务控制组件30c开启8个数据双调排序任务。
若第一对比结果为待排序数量小于或等于总数据存储容量,例如一个数据双调排序组件对应的数据存储容量为64,C等于4,则总数据存储容量等于256,若待排序数量为64,明显地,此时开启4个数据双调排序任务即可一轮运行轮次将待排序数据序列中的待排序数据排序完毕,一个数据双调排序任务所关联的第二总数量,等于待排序数量与C的比值,即64/4。需要说明的是,上述示例只是为了便于叙述以及理解。
综上所述,任务控制组件30c解析参数(包括第一总数量以及数据存储容量等),将针对待排序数据序列的排序任务,拆分为与数据双调排序组件等同数量的排序子任务(即数据双调排序任务),并将一个数据双调排序任务发送到一个Sort单元(即数据双调排序组件)。此外,本申请实施例还考虑了每个sort单元分配的存储区域情况(即数据存储容量),在总数据存储容量小于待排序数量的情况下,也可将排序任务拆分为K*C个子任务(即数据双调排序任务),分k轮运行轮次完成,每一轮同样发送C个子任务,即一个数据双调排序任务发送到一个Sort单元。任务控制组件30c发出数据双调排序任务后,等待任务的完成信号。
步骤S103,根据B个数据双调排序任务,并行运行C个数据双调排序组件,得到由C个数据双调排序组件所输出的B个数据排序子结果;一个数据排序子结果用于表征,一个数据双调排序任务所关联的待排序数据子序列的排序结果。
具体的,若B等于C,则将B个数据双调排序任务分发至C个数据双调排序组件;其中,一个数据双调排序任务分发至一个数据双调排序组件;通过C个数据双调排序组件,并行运行B个数据双调排序任务,得到C个数据双调排序组件分别输出的数据排序子结果。其中,B个数据双调排序任务包括数据双调排序任务De,e为正整数且e小于或等于B;B个待排序数据子序列包括数据双调排序任务De对应的待排序数据子序列Ae;C个数据双调排序组件包括用于执行数据双调排序任务De的数据双调排序组件Fe。
若B大于C,则将B个数据双调排序任务拆分为K*C个数据双调排序任务;K为C个数据双调排序组件分别对应的最大运行轮次;将第i轮运行轮次中的C个数据双调排序任务分发至C个数据双调排序组件;其中,一个数据双调排序任务分发至一个数据双调排序组件;i为小于或等于K的正整数;通过C个数据双调排序组件,并行运行第i轮运行轮次中的C个数据双调排序任务,得到C个数据双调排序组件分别输出的数据排序子结果,直至i等于K时得到与B个数据双调排序任务分别对应的数据排序子结果。
由上文步骤S102可知,本申请实施例有两种开启数据双调排序任务的情况,一种是待排序数量小于或等于总数据存储容量,即B=C,此时,开启与数据双调排序组件数量等同的数据双调排序任务,即C个数据双调排序任务;一种是待排序数量大于总数据存储容量,此时开启K*C个数据双调排序任务,并通过并行运行C个数据双调排序组件K轮,执行完K*C个数据双调排序任务;可以理解的是,在待排序数量大于总数据存储容量的情况下,单轮数据双调排序组件的运行过程,与待排序数量小于或等于总数据存储容量的情况下的数据双调排序组件的并行运行过程是一致的,两者区别仅在于,前者每并行运行完C个数据双调排序组件后,需要将单轮生成的C个数据排序子结果存储至外部存储器,以执行下一轮的C个数据双调排序任务,而后者不需要将C个数据排序子结果存储至外部存储器,可以直接对C个数据排序子结果进行合并,得到待排序数据对应的数据排序结果,故在本申请实施例中,仅描述B等于C的场景,B大于C的场景可以参见下文的描述。
请一并参见图4,图4是本申请实施例提供的一种数据处理的场景示意图。如图4所示,本申请实施例将C设定为4,任务控制组件40a开启4个数据双调排序任务,如图4所示例的数据双调排序任务401a、数据双调排序任务402a、数据双调排序任务403a以及数据双调排序任务404a,业务服务器调用4个数据双调排序组件,如图4所示例的数据双调排序组件S1、数据双调排序组件S2、数据双调排序组件S3以及数据双调排序组件S4。
其中,通过所接收到的数据双调排序任务,数据双调排序组件获取待排序数据子序列的过程,请参见下文图6所对应的实施例,此处暂不展开描述。请再参见图4,数据双调排序组件S1执行数据双调排序任务401a,数据双调排序任务401a所对应的待排序数据子序列401b为(10、20、5、9),数据双调排序组件S2执行数据双调排序任务402a,数据双调排序任务402a所对应的待排序数据子序列402b为(3、8、12、14),数据双调排序组件S3执行数据双调排序任务403a,数据双调排序任务403a所对应的待排序数据子序列403b为(90、0、60、40),数据双调排序组件S4执行数据双调排序任务404a,数据双调排序任务404a所对应的待排序数据子序列404b为(23、35、95、18)。在本申请实施例中,业务服务器可以先对待排序数据序列中的每个待排序数据,按序生成其对应的唯一索引标识,本申请实施例对索引标识的形式不做限定,可以为任意一种能够用于标识待排序数据序列中的每个待排序数据的信息,为了便于叙述以及理解,本申请以4位(bit)2进制为例,如图4所示10的索引标识为0000,20的索引标识为0001,5的索引标识为0010,9的索引标识为0011,3的索引标识为0100,8的索引标识为0101,12的索引标识为0110,14的索引标识为0111,90的索引标识为1000,0的索引标识为1001,60的索引标识为1010,1011的索引标识为40,23的索引标识为1100,35的索引标识为1101,95的索引标识为1110,18的索引标识为1111。
请再参见图4,业务服务器通过C个(如图4中的4个)数据双调排序组件,并行运行B个(如图4中的4个)数据双调排序任务,得到C个数据双调排序组件分别输出的数据排序子结果,可以理解的是,一个双调排序组件执行一个数据双调排序任务,且每个数据双调排序组件的排序逻辑是一致的,故此处将以数据双调排序组件S1执行数据双调排序任务401a为例叙述,剩余的数据双调排序组件的执行过程可以参见下文的描述,不进行赘述。本申请实施例对两个索引标识分别对应的待排序数据(原始待排序数据)进行比较,并根据比较结果,更新两个索引标识分别对应的待排序数据(比较后的待排序数据)。
图4中的符号表示升序,两个相连表示相连的两个索引标识分别对应的待排序数据进行升序排序,符号表示降序,两个相连表示相连的两个索引标识分别对应的待排序数据进行降序排序。如图4所示,在数据双调排序组件S1中,待排序数据子序列401b为(10、20、5、9),故第二总数量等于4,则具有两个双调排序阶段,如图4中的第一个双调排序阶段401h,以及第二个双调排序阶段402h,且在第二个双调排序阶段402h中,包括两轮排序轮次,如图4中的第一轮排序轮次401i以及第二轮排序轮次402i。在第一个双调排序阶段401h中,一轮排序轮次逻辑参数包括索引标识0000与索引标识0001进行升序比较,索引标识0010与索引标识0011进行降序比较,故第一个双调排序阶段401h的输出结果为索引标识0000更新为待排序数据10,索引标识0001更新为待排序数据20,索引标识0010更新为待排序数据9,索引标识0011更新为待排序数据5。此时,业务服务器将上述的输出结果写入至数据双调排序组件S1对应的存储组件401d中,写入成功后,开启第二个双调排序阶段402h。
请再参见图4,在第二个双调排序阶段402h中,第一轮排序轮次401i的排序轮次逻辑参数包括索引标识0000与索引标识0010进行升序比较,索引标识0001与索引标识0011进行升序比较,故第一轮排序轮次401i的输出结果为索引标识0000更新为待排序数据9,索引标识0010更新为待排序数据10,索引标识0001更新为待排序数据5,索引标识0011更新为待排序数据20,此时,业务服务器将第一轮排序轮次401i的输出结果缓存在数据双调排序组件S1的数据获取子组件中,无需写入至存储组件401d,故在开启第二轮排序轮次402i时,数据双调排序组件S1无需从存储组件401d中获取上一排序轮次的输出结果,可以直接从本地的数据获取子组件中获取。
请再参见图4,第二轮排序轮次402i的排序轮次逻辑参数包括索引标识0000与索引标识0001进行升序比较,索引标识0010与索引标识0011进行升序比较,故第二轮排序轮次402i的输出结果为索引标识0000更新为待排序数据5,索引标识0001更新为待排序数据9,索引标识0010更新为待排序数据10,索引标识0011更新为待排序数据20,第二个双调排序阶段402h结束,此时,业务服务器将第二轮排序轮次402i的输出结果(即图4中的数据排序子结果401c)写入至存储组件401d。需要说明的是,图4示例的存储组件401d、存储组件402d、存储组件403d以及存储组件404d均为数据双调排序组件的本地存储器。
按照上述排序过程,数据双调排序组件S1对应的输出结果为数据排序子结果401c,数据双调排序组件S2对应的输出结果为数据排序子结果402c,数据双调排序组件S3对应的输出结果为数据排序子结果403c,数据双调排序组件S4对应的输出结果为数据排序子结果404c。
排序完成后,sort单元将输出结果写回存储器,同时向任务控制组件40a发出排序完成信号,表示数据双调排序任务完成。
步骤S104,基于C个数据双调排序组件,对B个数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。
具体的,在第L次合并中获取U个数据排序子结果对;U为正整数;L为正整数;若L为1,则U个数据排序子结果对是基于B个数据排序子结果所生成的;若L不为1,则U个数据排序子结果对是基于历史合并数据排序子结果所生成的,历史合并数据排序子结果是在第L-1次合并中得到的子结果;基于C个数据双调排序组件,对U个数据排序子结果对进行合并,得到U个目标合并数据排序子结果;若U等于1,则将U个目标合并数据排序子结果,确定为待排序数据序列对应的数据排序结果;若U大于1,则在第L+1次合并中,基于C个数据双调排序组件,对U个目标合并数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。其中,U个数据排序子结果对包括数据排序子结果对Mp,p为正整数,且p小于或等于U。
任务控制组件收到所有的子任务(数据双调排序任务)的完成信号后,开启针对C个数据排序子结果的合并指令,同样,业务服务器调用sort单元完成,与步骤S103中的排序过程一致,两者的区别在于待排序数据子序列可能是无序序列,而数据排序子结果所对应的序列为有序序列。
请一并参见图5以及图4,图5是本申请实施例提供的一种数据处理的场景示意图。如图5所示,业务服务器针对图4所示例的4个数据排序子结果,可以获取2个数据排序子结果对,如图5所示的由数据排序子结果401c以及数据排序子结果402c所生成的数据排序子结果对401f,以及由数据排序子结果403c以及数据排序子结果404c所生成的数据排序子结果对402f。
通过任务控制组件40a,业务服务器开启两个数据合并任务,如图5中的数据合并任务401e以及数据合并任务402e,数据合并任务401e是指对数据排序子结果401c以及数据排序子结果402c进行合并的任务,数据合并任务402e是指对数据排序子结果403c以及数据排序子结果404c进行合并的任务。
若数据存储容量大于或等于数据排序子结果对所关联的待排序数据的第四总数量,则任务控制组件40a可以将数据合并任务401e分发至数据排序子结果对401f所关联的两个数据双调排序组件中的一个或两个数据双调排序组件,即图4所示的双调排序组件S1以及双调排序组件S2,本申请实施例描述任务控制组件40a将数据合并任务401e,分发至数据排序子结果对401f所关联的两个数据双调排序组件中的一个数据双调排序组件(如图5所示的双调排序组件S1),若数据存储容量小于数据排序子结果对所关联的待排序数据的第四总数量,则请参见下文图8所对应的实施例中的描述,此处暂不展开叙述。
请结合图4以及图5,在数据双调排序组件S1中,数据排序子结果对401f为一个双调序列,其包括(5、9、10、20、14、12、8、3),故第四总数量等于8,具有三轮排序轮次,每轮排序轮次的排序轮次逻辑参数如图5所示,在第一轮排序轮次中,第一轮排序轮次逻辑参数包括索引标识0000与索引标识0100进行升序比较,索引标识0001与索引标识0101进行升序比较,索引标识0010与索引标识0110进行升序比较,索引标识0011与索引标识0111进行升序比较,得到第一轮排序轮次的输出结果为索引标识0000更新为待排序数据5,索引标识0100更新为待排序数据14,索引标识0001更新为待排序数据9,索引标识0101更新为待排序数据12,索引标识0010更新为待排序数据8,索引标识0110更新为待排序数据10,索引标识0011更新为待排序数据3,索引标识0111更新为待排序数据20;此时,业务服务器将第一轮排序轮次的输出结果(即5、9、8、3、14、12、10、20)缓存在数据双调排序组件S1的数据获取子组件中,无需写入至存储组件401d,故在开启第二轮排序轮次时,数据双调排序组件S1无需从存储组件401d中获取上一排序轮次的输出结果,可以直接从本地的数据获取子组件中获取。
请再参见图5,第二轮排序轮次逻辑参数包括索引标识0000与索引标识0010进行升序比较,索引标识0001与索引标识0011进行升序比较,索引标识0100与索引标识0110进行升序比较,索引标识0101与索引标识0111进行升序比较,得到第二轮排序轮次的输出结果为索引标识0000更新为待排序数据5,索引标识0010更新为待排序数据8,索引标识0001更新为待排序数据3,索引标识0011更新为待排序数据9,索引标识0100更新为待排序数据10,索引标识0110更新为待排序数据14,索引标识0101更新为待排序数据12,索引标识0111更新为待排序数据20;此时,业务服务器将第二轮排序轮次的输出结果(即5、3、8、9、10、12、14、20)缓存在数据双调排序组件S1的数据获取子组件中,无需写入至存储组件401d,故在开启第三轮排序轮次时,数据双调排序组件S1无需从存储组件401d中获取上一排序轮次的输出结果,可以直接从本地的数据获取子组件中获取。
请再参见图5,第三轮排序轮次逻辑参数包括索引标识0000与索引标识0001进行升序比较,索引标识0010与索引标识0011进行升序比较,索引标识0100与索引标识0101进行升序比较,索引标识0110与索引标识0111进行升序比较,得到第三轮排序轮次的输出结果为索引标识0000更新为待排序数据3,索引标识0001更新为待排序数据5,索引标识0010更新为待排序数据8,索引标识0011更新为待排序数据9,索引标识0100更新为待排序数据10,索引标识0101更新为待排序数据12,索引标识0110更新为待排序数据14,索引标识0111更新为待排序数据20;此时,业务服务器将第三轮排序轮次的输出结果(即3、5、8、9、10、12、14、20),作为目标合并数据排序子结果401g,并将该目标合并数据排序子结果401g写至存储组件401d。
可以理解的是,数据双调排序组件S3执行数据合并任务402e的过程与上文描述的过程一致,区别在于数据双调排序组件S1执行升序排序,数据双调排序组件S3执行降序排序,故不进行赘述,可以得到目标合并数据排序子结果402g。
经过一次合并后,得到两个目标合并数据排序子结果,故任务控制组件40a根据两个目标合并数据排序子结果,再分发一次数据合并任务至数据双调排序组件,直至完成所有数据排序子结果的合并,获得一组数据排序结果。
C个数据双调排序组件均包括索引生成子组件,索引生成子组件用于为待排序数据序列中的每个待排序数据分别分配索引值;数据排序请求携带写入地址;按序获取数据排序结果中的每个待排序数据分别对应的索引值,根据获取到的索引值,生成与待排序数据序列长度相同的索引值序列;发送针对索引值序列的数据写入请求至数据读写组件,通过数据读写组件,将索引值序列写入至写入地址。
数据排序结果的返回形式,可将原序列的待排序数据,按照从小到大或从大到小的顺序重新排列后返回;可选的,保持原序列数据不变,返回排序后序列(即数据排序结果)中每个待排序数据在待排序数据序列中的索引值(index),从而构成的与待排序数据序列等长的索引值序列。
通过架构并行以及流程优化,本申请实施例提出一种硬件加速排序的计算架构,实现每个时钟周期(clock)执行多个排序操作,相比于中央处理器提升计算效率。其中,架构并行是指增加排序单元(即数据双调排序组件)的并行度,使用多个排序单元,此时,排序加速器的本地存储器可以提供多个可同时访问的读写端口;流程优化是指,通过修改算法的执行顺序,将分离的计算过程进行合并,结合计算流水线,减少存储器读-比较-存储器写的轮次,实现加速。采用流程优化和架构并行的方式,可以提升排序速度,将排序耗时T从公式(1),
降低为公式(2),
公式(1)以及公式(2)中,T为执行时间,n为待排序数量,N=ceil(log2(n)),C和PS为架构并行和流程优化实现的加速比,ceil()为向上取整函数。本申请提供一种同时提升C和PS的加速方法及其执行架构,且PS>=2,C>=2,当PS=2,C=2时,性能可提升近4倍。实现中,常用的sort单元数量可以为2/4/8等。
在本申请实施例中,基于C个数据双调排序组件,计算机设备可以生成针对待排序数据序列的多个数据双调排序任务,通过并行运行C个数据双调排序组件,可以同时执行多个数据双调排序任务,通过同时执行多个数据双调排序任务,可以减少待排序数据序列的排序时间,即任务执行时间;后续,基于C个数据双调排序组件,计算机设备对B个数据排序子结果进行合并,可以得到针对待排序数据序列的数据排序结果。由此可见,本申请实施例通过并行运行C个数据双调排序组件,不仅可以降低针对待排序数据序列的排序任务的执行耗时,还可以提高排序任务的排序效率。
请参见图6,图6是本申请实施例提供的一种数据处理方法的流程示意图。该方法可以由业务服务器(例如,上述图1所示的业务服务器100)执行,也可以由终端设备(例如,上述图1所示的终端设备200a)执行,还可以由业务服务器和终端设备交互执行。为便于理解,本申请实施例以该方法由业务服务器执行为例进行说明。如图6所示,该数据处理方法的过程包括如下步骤S201-步骤S203,且步骤S201-步骤S203为图2所对应实施例中步骤S103的另一个具体实施例。
步骤S201,在数据双调排序组件Fe中,获取数据双调排序任务De对应的待排序数据子序列Ae。
具体的,数据排序请求携带待排序数据序列中的待排序数据分别对应的读取地址,以及针对待排序数据序列的排序顺序;在数据双调排序组件Fe中,获取数据双调排序任务De所携带的目标读取地址以及第二总数量;待排序数据序列中的待排序数据分别对应的读取地址中包括目标读取地址;第二总数量用于表征待排序数据子序列Ae中的待排序数据的总数量;发送携带有目标读取地址的数据获取请求至数据读写组件,通过数据读写组件,从目标读取地址获取初始待排序数据子序列;初始待排序子序列属于待排序数据序列;确定第二总数量以及第三总数量之间的数量差值;第三总数量用于表征初始待排序数据子序列中的待排序数据的总数量;根据数量差值以及排序顺序获取待排序补充数据,将待排序补充数据添加至初始待排序数据子序列中,得到待排序数据子序列Ae;将待排序数据子序列Ae加载至数据双调排序组件Fe对应的存储组件中。
请一并参见图7,图7是本申请实施例提供的一种排序加速器的结构示意图。如图7所示,该排序加速器包括任务控制组件、C个数据双调排序组件、C个数据双调排序组件分别对应的存储组件、数据选择组件以及数据读写组件。
其中,数据读写组件用于获取数据搬运请求,根据数据搬运请求实现数据搬运,该数据搬运请求可以为数据获取请求,根据数据获取请求中的目标读取地址,数据读写组件获取初始待排序数据子序列;该数据搬运请求可以为数据写入请求,根据数据写入请求,数据读写组件将索引值序列写入至写入地址。
数据选择组件,用于将本地存储器的读写通道按需分配给数据读写组件或多个数据双调排序组件。
一个存储组件,用于写入数据以及读取数据,写入的数据可以包括通过数据读写组件,从外部存储组件写入待排序数据子序列、写入数据双调排序组件所返回的中间排序子结果以及数据排序子结果等;读取的数据可以包括待排序数据子序列、中间排序子结果、数据排序子结果等。
一个数据双调排序组件,用于对待排序数据子序列进行双调排序,得到数据排序子结果;还用于对数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。数据双调排序组件也可称为排序(sort)单元。
任务控制组件,用于获取数据排序请求,根据数据排序请求开启B个数据双调排序任务,将一个数据双调排序任务分发至一个数据双调排序组件;还用于获取每个数据双调排序组件分别返回的排序完成信号,基于B个排序完成信号,开启多个数据合并任务,将一个数据合并任务分发至与数据排序子结果相关联的数据双调排序组件;还用于获取合并完成信号,将合并完成信号发送至顶层控制组件;其中,合并完成信号用于表征待排序数据序列中的待排序数据已排序完毕。任务控制组件也可称为控制单元。
数据读写组件可以是Direct Memory Access(一种直接存储器访问,缩写为DMA),DMA可以将待排序数据从排序(SORT)加速器外的外部存储器(即外部存储组件),加载(load)到排序加速器的内部存储器(即存储组件),以及将排序加速器内部存储器中的指定数据,写入(store)到排序加速器外的存储器(即外部存储组件)。DMA可以以指令队列的方式执行,也可以使用轮询的方式,本申请实施例不做限定。
数据选择组件(multiplexer,MUX),是排序加速器的内部使用选择器,业务服务器将存储器的读写通道按需分配给DMA或多个sort组件,本地存储器支持C个读通道和C个写通道,可以由多个物理存储单元拼接构成,来实现多个通道的同时读写,这里不做限定。
数据双调排序组件对应的存储组件是指排序加速器的本地存储器,待排序数据序列中的待排序数据存储在排序加速器的本地存储器或外部存储器,若存储在外部存储器,则业务服务器通过数据读取组件将外部存储器中的待排序数据读取至本地存储器,以对待排序数据进行双调排序。
可以理解的是,若排序顺序是从小至大,则待排序补充数据优先选择正无穷大,并将待排序补充数据添加至初始待排序数据子序列的待排序数据的高位地址侧,即将正无穷大排在待排序数据的后面;若排序顺序是从大至小,则待排序补充数据优先选择负无穷大,并将待排序补充数据添加至初始待排序数据子序列的待排序数据的高位地址侧,即将负无穷大排在待排序数据的后面。
步骤S202,对待排序数据子序列Ae进行双调排序,得到待排序数据子序列Ae对应的数据排序子结果。
具体的,数据双调排序组件Fe包括排序控制子组件、轮次控制子组件、数据获取子组件以及双调排序子组件;当排序控制子组件获取到数据加载完成通知时,启动轮次控制子组件;数据加载完成通知用于表征数据双调排序组件Fe对应的存储组件已加载待排序数据子序列Ae;在轮次控制子组件中,根据第二总数量,确定待排序数据子序列Ae对应的双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,将双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,发送至数据获取子组件;第二总数量用于表征待排序数据子序列Ae中的待排序数据的总数量;在数据获取子组件中,根据双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,获取中间待排序数据,将中间待排序数据发送至双调排序子组件,通过双调排序子组件,对中间待排序数据进行排序,得到中间排序子结果,根据中间排序子结果确定待排序数据子序列Ae对应的数据排序子结果;待排序数据子序列Ae包括中间待排序数据。
其中,确定待排序数据子序列Ae对应的数据排序子结果的具体过程可以包括:双调排序阶段的阶段数为至少两个;在数据获取子组件中,根据至少两个双调排序阶段中的第i个双调排序阶段,从存储组件中读取第一数据排序过渡子结果;i大于1的正整数,且第一数据排序过渡子结果为第i-1个双调排序阶段中的输出结果;第i个双调排序阶段对应的双调排序逻辑参数包括n轮排序轮次逻辑参数;n是基于i所确定的,且n为大于1的正整数;根据第j轮排序轮次逻辑参数,从中间数据排序过渡子结果中获取中间待排序数据;j为正整数且j小于或等于n;若j为1,则中间数据排序过渡子结果为第一数据排序过渡子结果;若j不为1,则中间数据排序过渡子结果为缓存在数据获取子组件中的第二数据排序过渡子结果,第二数据排序过渡子结果是基于第j-1轮排序轮次逻辑参数所确定的;将中间待排序数据发送至双调排序子组件,通过双调排序子组件,对中间待排序数据进行排序,得到中间待排序数据的中间排序子结果,根据中间排序子结果确定待排序数据子序列Ae对应的第三数据排序过渡子结果;若j小于n,则将第三数据排序过渡子结果缓存在数据获取子组件中;若j=n,且第i个双调排序阶段为至少两个双调排序阶段的最后一个双调排序阶段,则将第三数据排序过渡子结果写入至存储组件,将第三数据排序过渡子结果确定为待排序数据子序列Ae对应的数据排序子结果。
请再参见图7,多个数据双调排序组件、任务控制组件以及数据读写组件可以组成一个排序加速器,可以理解的是,每个数据双调排序组件的基本结构是相同的,在图7中,以数据双调排序组件1示例每个数据双调排序组件的基本结构,数据双调排序组件1可以包括排序控制子组件、轮次控制子组件、索引生成子组件、数据获取子组件、双调排序子组件,在双调排序场景中,这些子组件的具体实现功能可以参见上述S202。
其中,排序控制子组件用于获取任务控制组件分发的数据双调排序任务,基于该数据双调排序任务,启动轮次控制组件;还用于获取轮次控制子组件发送的完成信号(包括排序完成信号以及合并完成信号),并将合并完成信号发送至任务控制组件。上述可知,排序控制子组件实现数据双调排序组件与任务控制组件之间的信号交互,在接收到使能信号后,启动轮次控制子组件。排序控制子组件可以称为排序(sort)控制模块。
轮次控制子组件,用于根据待排序数据子序列,确定双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,并向索引生成子组件、数据获取子组件、双调排序子组件发出对应的使能信号。轮次控制子组件可以称为轮次控制模块。
索引生成子组件,用于首次待排序数据的读取,对于每组数据,生成唯一的索引标识,写入数据缓冲区。索引生成子组件可以称为索引生成模块。
数据获取子组件,用于实现待排序数据子序列中待排序数据的一轮遍历。数据获取子组件可以称为单轮数据控制与访存地址计算模块。
双调排序子组件,用于为双调排序过程中的计算子组件,实现数据的快速比较。双调排序子组件可以称为比较模块。
本申请实施例可采用流程优化的方法,将两轮或多轮过程中,对相同数据的操作过程进行合并,从而实现局部多个数据的一次读取,一次写回,代替多次读写的过程,减少了数据整体的读写轮次,实现加速效果,具体请参见上文图3所对应的实施例中步骤S103的描述。
步骤S203,在运行数据双调排序组件Fe的同时,通过C-1个数据双调排序组件并行运行B-1个数据双调排序任务,得到C-1个数据双调排序组件分别输出的数据排序子结果;C-1个数据双调排序组件是指,C个数据双调排序组件中除了数据双调排序组件Fe之外的数据双调排序组件;B-1个数据双调排序任务是指,B个数据双调排序任务中除了数据双调排序任务De之外的数据双调排序任务。
本申请实施例通过架构并行以及流程优化可以减少双调排序的执行耗时,结合图3对应的实施例,可知顶层控制单元发出排序指令,排序加速器接受指令后,从外部存储器中读入待排序数据到本地存储器,调用多个数据双调排序组件完成排序,将数据排序结果从本地存储器中写回到外部存储器,向顶层控制单元发出指令完成的响应。
在本申请实施例中,基于C个数据双调排序组件,计算机设备可以生成针对待排序数据序列的多个数据双调排序任务,通过并行运行C个数据双调排序组件,可以同时执行多个数据双调排序任务,通过同时执行多个数据双调排序任务,可以减少待排序数据序列的排序时间,即任务执行时间;后续,基于C个数据双调排序组件,计算机设备对B个数据排序子结果进行合并,可以得到针对待排序数据序列的数据排序结果。由此可见,本申请实施例通过并行运行C个数据双调排序组件,不仅可以降低针对待排序数据序列的排序任务的执行耗时,还可以提高排序任务的排序效率。
请参见图8,图8是本申请实施例提供的一种数据处理方法的流程示意图。该方法可以由业务服务器(例如,上述图1所示的业务服务器100)执行,也可以由终端设备(例如,上述图1所示的终端设备200a)执行,还可以由业务服务器和终端设备交互执行。为便于理解,本申请实施例以该方法由业务服务器执行为例进行说明。如图8所示,该数据处理方法的过程包括如下步骤S301-步骤S304,且步骤S301-步骤S304为图2所对应实施例中步骤S104的另一个具体实施例。
步骤S301,确定数据排序子结果对Mp所关联的待排序数据的第四总数量,确定数据排序子结果对Mp所关联的数据双调排序组件对应的数据存储容量;C个数据双调排序组件包括数据排序子结果对Mp所关联的数据双调排序组件。
步骤S302,将第四总数量与数据存储容量进行对比,得到第二对比结果。
步骤S301-步骤S302的具体过程请参见上文图2所对应的实施例中步骤S104的描述,此处不进行赘述。
步骤S303,根据第二对比结果以及数据排序子结果对Mp所关联的数据双调排序组件,对数据排序子结果对Mp进行双调排序,得到数据排序子结果对Mp对应的目标合并数据排序子结果。
具体的,数据排序子结果对Mp包括第一数据排序子结果以及第二数据排序子结果;若第二对比结果为第四总数量大于数据存储容量,则将第一数据排序子结果均分为第一有序数据片段以及第二有序数据片段,将第二数据排序子结果均分为第三有序数据片段以及第四有序数据排序;若第一有序数据片段中的数据小于或等于第二有序数据片段中的数据,且第三有序数据片段中的数据小于或等于第四有序数据片段中的数据,则基于第一数据双调排序组件,对第一有序数据片段以及第三有序数据片段进行双调排序,得到第三数据排序子结果;数据排序子结果对Mp所关联的数据双调排序组件包括第一数据双调排序组件;基于第二数据双调排序组件,对第二有序数据片段以及第四有序数据片段进行双调排序,得到第四数据排序子结果;数据排序子结果对Mp所关联的数据双调排序组件包括第二数据双调排序组件;将第三数据排序子结果均分为第五有序数据片段以及第六有序数据片段,将第四数据排序子结果均分为第七有序数据片段以及第八有序数据排序;若第五有序数据片段中的数据小于或等于第六有序数据片段中的数据,第七有序数据片段中的数据小于或等于第八有序数据片段中的数据,则基于目标数据双调排序组件,对第六有序数据片段以及第七有序数据片段进行双调排序,得到第五数据排序子结果;目标数据双调排序组件为第一数据双调排序组件或第二数据双调排序组件;基于第五有序数据片段、第五数据排序子结果以及第八有序数据排序,得到数据排序子结果对Mp对应的目标合并数据排序子结果。
请一并参见图9,图9是本申请实施例提供的一种数据处理的场景示意图。如图9所示,业务服务器将两个有序序列各自均分为两份,得到4个有序序列,即将有序序列S0-1(等同于第一数据排序子结果)均分为第一有序数据片段以及第二有序数据片段,将有序序列S0-2(等同于第二数据排序子结果)均分为第三有序数据片段以及第四有序数据片段;基于第一数据双调排序组件,对第一有序数据片段以及第三有序数据片段进行双调排序,得到第三数据排序子结果(等同于图9中的有序序列S1-1);基于第二数据双调排序组件,对第二有序数据片段以及第四有序数据片段进行双调排序,得到第四数据排序子结果(等同于图9中的有序序列S1-2);将第三数据排序子结果均分为第五有序数据片段以及第六有序数据片段,将第四数据排序子结果均分为第七有序数据片段以及第八有序数据排序,基于目标数据双调排序组件,对第六有序数据片段以及第七有序数据片段进行双调排序,得到第五数据排序子结果(等同于图9中的有序序列S2-2),将第五有序数据片段作为有序序列S2-1,将第八有序数据片段作为有序序列S2-3,将三个由小到大的有序序列S2-1、有序序列S2-2、有序序列S2-3通过拼接(Concat)操作拼接起来,获得最终输出。
步骤S304,将U个数据排序子结果对对应的目标合并数据排序子结果,确定为U个目标合并数据排序子结果。
其中,步骤S304的具体实现过程请参见上述图2对应的实施例中的步骤S104,此处不再进行赘述。
在本申请实施例中,基于C个数据双调排序组件,计算机设备可以生成针对待排序数据序列的多个数据双调排序任务,通过并行运行C个数据双调排序组件,可以同时执行多个数据双调排序任务,通过同时执行多个数据双调排序任务,可以减少待排序数据序列的排序时间,即任务执行时间;后续,基于C个数据双调排序组件,计算机设备对B个数据排序子结果进行合并,可以得到针对待排序数据序列的数据排序结果。由此可见,本申请实施例通过并行运行C个数据双调排序组件,不仅可以降低针对待排序数据序列的排序任务的执行耗时,还可以提高排序任务的排序效率。
进一步地,请参见图10,图10是本申请实施例提供的一种数据处理装置的结构示意图。上述数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图10所示,该数据处理装置1可以包括:调用组件模块11、开启任务模块12、并行组件模块13以及合并结果模块14。
调用组件模块11,用于获取针对待排序数据序列的数据排序请求,根据数据排序请求调用C个数据双调排序组件;C为大于1的正整数;
开启任务模块12,用于根据待排序数据序列以及C个数据双调排序组件,开启B个数据双调排序任务;B为大于1的正整数;B个数据双调排序任务分别关联不同的待排序数据子序列,B个待排序数据子序列均是基于待排序数据序列所生成的;
并行组件模块13,用于根据B个数据双调排序任务,并行运行C个数据双调排序组件,得到由C个数据双调排序组件所输出的B个数据排序子结果;一个数据排序子结果用于表征,一个数据双调排序任务所关联的待排序数据子序列的排序结果;
合并结果模块14,用于基于C个数据双调排序组件,对B个数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。
其中,调用组件模块11、开启任务模块12、并行组件模块13以及合并结果模块14的具体功能实现方式可以参见上述图2对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
再请参见图10,调用组件模块11,具体用于获取数据排序请求,将数据排序请求发送至任务控制组件;数据排序请求携带待排序数据序列中的待排序数据的第一总数量;
则开启任务模块12可以包括:第一确定单元121、第一获取单元122以及开启任务单元123。
第一确定单元121,用于在任务控制组件中,确定与第一总数量相关联的待排序数量;待排序数量等于或大于第一总数量;
第一获取单元122,用于获取C个数据双调排序组件分别对应的数据存储容量,将待排序数量与总数据存储容量进行对比,得到第一对比结果;总数据存储容量等于C个数据存储容量的总和;
开启任务单元123,用于根据第一对比结果开启B个数据双调排序任务。
其中,第一确定单元121、第一获取单元122以及开启任务单元123的具体功能实现方式可以参见上述图2对应实施例中的步骤S101-步骤S102,这里不再进行赘述。
再请参见图10,开启任务单元123可以包括:第一开启子单元1231以及第二开启子单元1232。
第一开启子单元1231,用于若第一对比结果为待排序数量大于总数据存储容量,则获取待排序数量以及总数据存储容量之间的第一数量比值;
第一开启子单元1231,还用于根据第一数量比值开启B个数据双调排序任务;C与第一数量比值的乘积等于B;一个数据双调排序任务所携带的第二总数量等于数据存储容量;第二总数量用于表征,一个数据双调排序任务所关联的待排序数据子序列中的待排序数据的总数量;
第二开启子单元1232,用于第二开启子单元,用于若第一对比结果为待排序数量小于或等于总数据存储容量,则根据C个数据双调排序组件开启B个数据双调排序任务;B等于C。
其中,第一开启子单元1231以及第二开启子单元1232的具体功能实现方式可以参见上述图2对应实施例中的步骤S102,这里不再进行赘述。
再请参见图10,并行组件模块13可以包括:第一分发单元131以及第一并行单元132。
第一分发单元131,用于若B等于C,则将B个数据双调排序任务分发至C个数据双调排序组件;其中,一个数据双调排序任务分发至一个数据双调排序组件;
第一并行单元132,用于通过C个数据双调排序组件,并行运行B个数据双调排序任务,得到C个数据双调排序组件分别输出的数据排序子结果。
其中,第一分发单元131以及第一并行单元132的具体功能实现方式可以参见上述图2对应实施例中的步骤S103,这里不再进行赘述。
再请参见图10,B个数据双调排序任务包括数据双调排序任务De,e为正整数且e小于或等于B;B个待排序数据子序列包括数据双调排序任务De对应的待排序数据子序列Ae;C个数据双调排序组件包括用于执行数据双调排序任务De的数据双调排序组件Fe;
第一并行单元132可以包括:第一生成子单元1321以及第二生成子单元1322。
第一生成子单元1321,用于在数据双调排序组件Fe中,获取数据双调排序任务De对应的待排序数据子序列Ae,对待排序数据子序列Ae进行双调排序,得到待排序数据子序列Ae对应的数据排序子结果;
第二生成子单元1322,用于在运行数据双调排序组件Fe的同时,通过C-1个数据双调排序组件并行运行B-1个数据双调排序任务,得到C-1个数据双调排序组件分别输出的数据排序子结果;C-1个数据双调排序组件是指,C个数据双调排序组件中除了数据双调排序组件Fe之外的数据双调排序组件;B-1个数据双调排序任务是指,B个数据双调排序任务中除了数据双调排序任务De之外的数据双调排序任务。
其中,第一生成子单元1321以及第二生成子单元1322的具体功能实现方式可以参见上述图6对应实施例中的步骤S201-步骤S203,这里不再进行赘述。
再请参见图10,数据排序请求携带待排序数据序列中的待排序数据分别对应的读取地址,以及针对待排序数据序列的排序顺序;
第一生成子单元1321可以包括:第一获取子单元13211、第二获取子单元13212以及第一确定子单元13213。
第一获取子单元13211,用于在数据双调排序组件Fe中,获取数据双调排序任务De所携带的目标读取地址以及第二总数量;待排序数据序列中的待排序数据分别对应的读取地址中包括目标读取地址;第二总数量用于表征待排序数据子序列Ae中的待排序数据的总数量;
第二获取子单元13212,用于发送携带有目标读取地址的数据获取请求至数据读写组件,通过数据读写组件,从目标读取地址获取初始待排序数据子序列;初始待排序子序列属于待排序数据序列;
第一确定子单元13213,用于确定第二总数量以及第三总数量之间的数量差值;第三总数量用于表征初始待排序数据子序列中的待排序数据的总数量;
第一确定子单元13213,还用于根据数量差值以及排序顺序获取待排序补充数据,将待排序补充数据添加至初始待排序数据子序列中,得到待排序数据子序列Ae;
第一确定子单元13213,还用于将待排序数据子序列Ae加载至数据双调排序组件Fe对应的存储组件中。
其中,第一获取子单元13211、第二获取子单元13212以及第一确定子单元13213的具体功能实现方式可以参见上述图6应实施例中的步骤S201,这里不再进行赘述。
再请参见图10,数据双调排序组件Fe包括排序控制子组件、轮次控制子组件、数据获取子组件以及双调排序子组件;
第一生成子单元1321可以包括:第二确定子单元13214以及第三确定子单元13215。
第二确定子单元13214,用于当排序控制子组件获取到数据加载完成通知时,启动轮次控制子组件;数据加载完成通知用于表征数据双调排序组件Fe对应的存储组件已加载待排序数据子序列Ae;
第二确定子单元13214,还用于在轮次控制子组件中,根据第二总数量,确定待排序数据子序列Ae对应的双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,将双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,发送至数据获取子组件;第二总数量用于表征待排序数据子序列Ae中的待排序数据的总数量;
第三确定子单元13215,用于在数据获取子组件中,根据双调排序阶段以及双调排序阶段对应的双调排序逻辑参数,获取中间待排序数据,将中间待排序数据发送至双调排序子组件,通过双调排序子组件,对中间待排序数据进行排序,得到中间排序子结果,根据中间排序子结果确定待排序数据子序列Ae对应的数据排序子结果;待排序数据子序列Ae包括中间待排序数据。
其中,第二确定子单元13214以及第三确定子单元13215的具体功能实现方式可以参见上述图6对应实施例中的步骤S202,这里不再进行赘述。
再请参见图10,双调排序阶段的阶段数为至少两个;
第三确定子单元13215,具体用于在数据获取子组件中,根据至少两个双调排序阶段中的第i个双调排序阶段,从存储组件中读取第一数据排序过渡子结果;i大于1的正整数,且第一数据排序过渡子结果为第i-1个双调排序阶段中的输出结果;第i个双调排序阶段对应的双调排序逻辑参数包括n轮排序轮次逻辑参数;n是基于i所确定的,且n为大于1的正整数;
第三确定子单元13215,还具体用于根据第j轮排序轮次逻辑参数,从中间数据排序过渡子结果中获取中间待排序数据;j为正整数且j小于或等于n;若j为1,则中间数据排序过渡子结果为第一数据排序过渡子结果;若j不为1,则中间数据排序过渡子结果为缓存在数据获取子组件中的第二数据排序过渡子结果,第二数据排序过渡子结果是基于第j-1轮排序轮次逻辑参数所确定的;
第三确定子单元13215,还具体用于将中间待排序数据发送至双调排序子组件,通过双调排序子组件,对中间待排序数据进行排序,得到中间待排序数据的中间排序子结果,根据中间排序子结果确定待排序数据子序列Ae对应的第三数据排序过渡子结果;
第三确定子单元13215,还具体用于若j小于n,则将第三数据排序过渡子结果缓存在数据获取子组件中;
第三确定子单元13215,还具体用于若j=n,且第i个双调排序阶段为至少两个双调排序阶段的最后一个双调排序阶段,则将第三数据排序过渡子结果写入至存储组件,将第三数据排序过渡子结果确定为待排序数据子序列Ae对应的数据排序子结果。
其中,第三确定子单元13215的具体功能实现方式可以参见上述图6对应实施例中的步骤S202,这里不再进行赘述。
再请参见图10,并行组件模块13可以包括:拆分任务单元133、第二分发单元134以及第二并行单元135。
拆分任务单元133,用于若B大于C,则将B个数据双调排序任务拆分为K*C个数据双调排序任务;K为C个数据双调排序组件分别对应的最大运行轮次;
第二分发单元134,用于将第i轮运行轮次中的C个数据双调排序任务分发至C个数据双调排序组件;其中,一个数据双调排序任务分发至一个数据双调排序组件;i为小于或等于K的正整数;
第二并行单元135,用于通过C个数据双调排序组件,并行运行第i轮运行轮次中的C个数据双调排序任务,得到C个数据双调排序组件分别输出的数据排序子结果,直至i等于K时得到与B个数据双调排序任务分别对应的数据排序子结果。
其中,拆分任务单元133、第二分发单元134以及第二并行单元135的具体功能实现方式可以参见上述图2对应实施例中的步骤S103,这里不再进行赘述。
再请参见图10,合并结果模块14可以包括:第二获取单元141、第一合并单元142、第二确定单元143以及第二合并单元144。
第二获取单元141,用于在第L次合并中获取U个数据排序子结果对;U为正整数;L为正整数;若L为1,则U个数据排序子结果对是基于B个数据排序子结果所生成的;若L不为1,则U个数据排序子结果对是基于历史合并数据排序子结果所生成的,历史合并数据排序子结果是在第L-1次合并中得到的子结果;
第一合并单元142,用于基于C个数据双调排序组件,对U个数据排序子结果对进行合并,得到U个目标合并数据排序子结果;
第二确定单元143,用于若U等于1,则将U个目标合并数据排序子结果,确定为待排序数据序列对应的数据排序结果;
第二合并单元144,用于若U大于1,则在第L+1次合并中,基于C个数据双调排序组件,对U个目标合并数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。
其中,第二获取单元141、第一合并单元142、第二确定单元143以及第二合并单元144的具体功能实现方式可以参见上述图2对应实施例中的步骤S104,这里不再进行赘述。
再请参见图10,U个数据排序子结果对包括数据排序子结果对Mp,p为正整数,且p小于或等于U;
第一合并单元142可以包括:第一数量子单元1421、第二数量子单元1422、第三生成子单元1423以及第四生成子单元1424。
第一数量子单元1421,用于确定数据排序子结果对Mp所关联的待排序数据的第四总数量,确定数据排序子结果对Mp所关联的数据双调排序组件对应的数据存储容量;C个数据双调排序组件包括数据排序子结果对Mp所关联的数据双调排序组件;
第二数量子单元1422,用于将第四总数量与数据存储容量进行对比,得到第二对比结果;
第三生成子单元1423,用于根据第二对比结果以及数据排序子结果对Mp所关联的数据双调排序组件,对数据排序子结果对Mp进行双调排序,得到数据排序子结果对Mp对应的目标合并数据排序子结果;
第四生成子单元1424,用于将U个数据排序子结果对对应的目标合并数据排序子结果,确定为U个目标合并数据排序子结果。
其中,第一数量子单元1421、第二数量子单元1422、第三生成子单元1423以及第四生成子单元1424的具体功能实现方式可以参见上述图8对应实施例中的步骤S301-步骤S304,这里不再进行赘述。
再请参见图10,数据排序子结果对Mp包括第一数据排序子结果以及第二数据排序子结果;
第三生成子单元1423可以包括:第一均分子单元14231、第一排序子单元14232、第二排序子单元14233、第二均分子单元14234、第三排序子单元14235以及第四排序子单元14236。
第一均分子单元14231,用于若第二对比结果为第四总数量大于数据存储容量,则将第一数据排序子结果均分为第一有序数据片段以及第二有序数据片段,将第二数据排序子结果均分为第三有序数据片段以及第四有序数据排序;
第一排序子单元14232,用于若第一有序数据片段中的数据小于或等于第二有序数据片段中的数据,且第三有序数据片段中的数据小于或等于第四有序数据片段中的数据,则基于第一数据双调排序组件,对第一有序数据片段以及第三有序数据片段进行双调排序,得到第三数据排序子结果;数据排序子结果对Mp所关联的数据双调排序组件包括第一数据双调排序组件;
第二排序子单元14233,用于基于第二数据双调排序组件,对第二有序数据片段以及第四有序数据片段进行双调排序,得到第四数据排序子结果;数据排序子结果对Mp所关联的数据双调排序组件包括第二数据双调排序组件;
第二均分子单元14234,用于将第三数据排序子结果均分为第五有序数据片段以及第六有序数据片段,将第四数据排序子结果均分为第七有序数据片段以及第八有序数据排序;
第三排序子单元14235,用于若第五有序数据片段中的数据小于或等于第六有序数据片段中的数据,第七有序数据片段中的数据小于或等于第八有序数据片段中的数据,则基于目标数据双调排序组件,对第六有序数据片段以及第七有序数据片段进行双调排序,得到第五数据排序子结果;目标数据双调排序组件为第一数据双调排序组件或第二数据双调排序组件;
第四排序子单元14236,用于基于第五有序数据片段、第五数据排序子结果以及第八有序数据排序,得到数据排序子结果对Mp对应的目标合并数据排序子结果。
其中,第一均分子单元14231、第一排序子单元14232、第二排序子单元14233、第二均分子单元14234、第三排序子单元14235以及第四排序子单元14236的具体功能实现方式可以参见上述图8对应实施例中的步骤S303,这里不再进行赘述。
再请参见图10,C个数据双调排序组件均包括索引生成子组件,索引生成子组件用于为待排序数据序列中的每个待排序数据分别分配索引值;数据排序请求携带写入地址;
数据处理装置1还可以包括:生成序列模块15以及写入序列模块16。
生成序列模块15,用于按序获取数据排序结果中的每个待排序数据分别对应的索引值,根据获取到的索引值,生成与待排序数据序列长度相同的索引值序列;
写入序列模块16,用于发送针对索引值序列的数据写入请求至数据读写组件,通过数据读写组件,将索引值序列写入至写入地址。
其中,生成序列模块15以及写入序列模块16的具体功能实现方式可以参见上述图2对应实施例中的步骤S104,这里不再进行赘述。
在本申请实施例中,基于C个数据双调排序组件,计算机设备可以生成针对待排序数据序列的多个数据双调排序任务,通过并行运行C个数据双调排序组件,可以同时执行多个数据双调排序任务,通过同时执行多个数据双调排序任务,可以减少待排序数据序列的排序时间,即任务执行时间;后续,基于C个数据双调排序组件,计算机设备对B个数据排序子结果进行合并,可以得到针对待排序数据序列的数据排序结果。由此可见,本申请实施例通过并行运行C个数据双调排序组件,不仅可以降低针对待排序数据序列的排序任务的执行耗时,还可以提高排序任务的排序效率。
进一步地,请参见图11,图11是本申请实施例提供的一种计算机设备的结构示意图。如图11所示,该计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机存储介质的存储器1005可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
在图11所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取针对待排序数据序列的数据排序请求,根据数据排序请求调用C个数据双调排序组件;C为大于1的正整数;
根据待排序数据序列以及C个数据双调排序组件,开启B个数据双调排序任务;B为大于1的正整数;B个数据双调排序任务分别关联不同的待排序数据子序列,B个待排序数据子序列均是基于待排序数据序列所生成的;
根据B个数据双调排序任务,并行运行C个数据双调排序组件,得到由C个数据双调排序组件所输出的B个数据排序子结果;一个数据排序子结果用于表征,一个数据双调排序任务所关联的待排序数据子序列的排序结果;
基于C个数据双调排序组件,对B个数据排序子结果进行合并,得到针对待排序数据序列的数据排序结果。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图2、图6、以及图8所对应实施例中对数据处理方法的描述,也可执行前文图10所对应实施例中对数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图2、图6、以及图8中各个步骤所提供的数据处理方法,具体可参见上述图2、图6、以及图8各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可执行前文图2、图6、以及图8所对应实施例中对数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (16)
1.一种数据处理方法,其特征在于,包括:
获取针对待排序数据序列的数据排序请求,根据所述数据排序请求调用C个数据双调排序组件;C为大于1的正整数;
根据所述待排序数据序列以及所述C个数据双调排序组件,开启B个数据双调排序任务;B为大于1的正整数;所述B个数据双调排序任务分别关联不同的待排序数据子序列,B个待排序数据子序列均是基于所述待排序数据序列所生成的;
根据所述B个数据双调排序任务,并行运行所述C个数据双调排序组件,得到由所述C个数据双调排序组件所输出的B个数据排序子结果;一个数据排序子结果用于表征,一个数据双调排序任务所关联的待排序数据子序列的排序结果;
基于所述C个数据双调排序组件,对所述B个数据排序子结果进行合并,得到针对所述待排序数据序列的数据排序结果。
2.根据权利要求1所述的方法,其特征在于,所述获取针对待排序数据序列的数据排序请求,包括:
获取所述数据排序请求,将所述数据排序请求发送至任务控制组件;所述数据排序请求携带所述待排序数据序列中的待排序数据的第一总数量;
则所述根据所述待排序数据序列以及所述C个数据双调排序组件,开启B个数据双调排序任务,包括:
在所述任务控制组件中,确定与所述第一总数量相关联的待排序数量;所述待排序数量等于或大于所述第一总数量;
获取所述C个数据双调排序组件分别对应的数据存储容量,将所述待排序数量与总数据存储容量进行对比,得到第一对比结果;所述总数据存储容量等于C个数据存储容量的总和;
根据所述第一对比结果开启所述B个数据双调排序任务。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一对比结果开启所述B个数据双调排序任务,包括:
若所述第一对比结果为所述待排序数量大于所述总数据存储容量,则获取所述待排序数量以及所述总数据存储容量之间的第一数量比值;
根据所述第一数量比值开启所述B个数据双调排序任务;C与所述第一数量比值的乘积等于B;所述一个数据双调排序任务所携带的第二总数量等于所述数据存储容量;所述第二总数量用于表征,所述一个数据双调排序任务所关联的待排序数据子序列中的待排序数据的总数量;
若所述第一对比结果为所述待排序数量小于或等于所述总数据存储容量,则根据所述C个数据双调排序组件开启所述B个数据双调排序任务;B等于C。
4.根据权利要求1所述的方法,其特征在于,所述根据所述B个数据双调排序任务,并行运行所述C个数据双调排序组件,得到由所述C个数据双调排序组件所输出的B个数据排序子结果,包括:
若B等于C,则将所述B个数据双调排序任务分发至所述C个数据双调排序组件;其中,所述一个数据双调排序任务分发至一个数据双调排序组件;
通过所述C个数据双调排序组件,并行运行所述B个数据双调排序任务,得到所述C个数据双调排序组件分别输出的数据排序子结果。
5.根据权利要求4所述的方法,其特征在于,所述B个数据双调排序任务包括数据双调排序任务De,e为正整数且e小于或等于B;所述B个待排序数据子序列包括所述数据双调排序任务De对应的待排序数据子序列Ae;所述C个数据双调排序组件包括用于执行所述数据双调排序任务De的数据双调排序组件Fe;
所述通过所述C个数据双调排序组件,并行运行所述B个数据双调排序任务,得到所述C个数据双调排序组件分别输出的数据排序子结果,包括:
在所述数据双调排序组件Fe中,获取所述数据双调排序任务De对应的所述待排序数据子序列Ae,对所述待排序数据子序列Ae进行双调排序,得到所述待排序数据子序列Ae对应的数据排序子结果;
在运行所述数据双调排序组件Fe的同时,通过C-1个数据双调排序组件并行运行B-1个数据双调排序任务,得到所述C-1个数据双调排序组件分别输出的数据排序子结果;所述C-1个数据双调排序组件是指,所述C个数据双调排序组件中除了所述数据双调排序组件Fe之外的数据双调排序组件;所述B-1个数据双调排序任务是指,所述B个数据双调排序任务中除了所述数据双调排序任务De之外的数据双调排序任务。
6.根据权利要求5所述的方法,其特征在于,所述数据排序请求携带所述待排序数据序列中的待排序数据分别对应的读取地址,以及针对所述待排序数据序列的排序顺序;
所述在所述数据双调排序组件Fe中,获取所述数据双调排序任务De对应的所述待排序数据子序列Ae,包括:
在所述数据双调排序组件Fe中,获取所述数据双调排序任务De所携带的目标读取地址以及第二总数量;所述待排序数据序列中的待排序数据分别对应的读取地址中包括所述目标读取地址;所述第二总数量用于表征所述待排序数据子序列Ae中的待排序数据的总数量;
发送携带有所述目标读取地址的数据获取请求至数据读写组件,通过所述数据读写组件,从所述目标读取地址获取初始待排序数据子序列;所述初始待排序子序列属于所述待排序数据序列;
确定所述第二总数量以及第三总数量之间的数量差值;所述第三总数量用于表征所述初始待排序数据子序列中的待排序数据的总数量;
根据所述数量差值以及所述排序顺序获取待排序补充数据,将所述待排序补充数据添加至所述初始待排序数据子序列中,得到所述待排序数据子序列Ae;
将所述待排序数据子序列Ae加载至所述数据双调排序组件Fe对应的存储组件中。
7.根据权利要求5所述的方法,其特征在于,所述数据双调排序组件Fe包括排序控制子组件、轮次控制子组件、数据获取子组件以及双调排序子组件;
所述对所述待排序数据子序列Ae进行双调排序,得到所述待排序数据子序列Ae对应的数据排序子结果,包括:
当所述排序控制子组件获取到数据加载完成通知时,启动所述轮次控制子组件;所述数据加载完成通知用于表征所述数据双调排序组件Fe对应的存储组件已加载所述待排序数据子序列Ae;
在所述轮次控制子组件中,根据第二总数量,确定所述待排序数据子序列Ae对应的双调排序阶段以及所述双调排序阶段对应的双调排序逻辑参数,将所述双调排序阶段以及所述双调排序阶段对应的双调排序逻辑参数,发送至所述数据获取子组件;所述第二总数量用于表征所述待排序数据子序列Ae中的待排序数据的总数量;
在所述数据获取子组件中,根据所述双调排序阶段以及所述双调排序阶段对应的双调排序逻辑参数,获取中间待排序数据,将所述中间待排序数据发送至所述双调排序子组件,通过所述双调排序子组件,对所述中间待排序数据进行排序,得到中间排序子结果,根据所述中间排序子结果确定所述待排序数据子序列Ae对应的数据排序子结果;所述待排序数据子序列Ae包括所述中间待排序数据。
8.根据权利要求7所述的方法,其特征在于,所述双调排序阶段的阶段数为至少两个;
所述在所述数据获取子组件中,根据所述双调排序阶段以及所述双调排序阶段对应的双调排序逻辑参数,获取中间待排序数据,将所述中间待排序数据发送至所述双调排序子组件,通过所述双调排序子组件,对所述中间待排序数据进行排序,得到中间排序子结果,根据所述中间排序子结果确定所述待排序数据子序列Ae对应的数据排序子结果,包括:
在所述数据获取子组件中,根据至少两个双调排序阶段中的第i个双调排序阶段,从所述存储组件中读取第一数据排序过渡子结果;i大于1的正整数,且所述第一数据排序过渡子结果为第i-1个双调排序阶段中的输出结果;所述第i个双调排序阶段对应的双调排序逻辑参数包括n轮排序轮次逻辑参数;n是基于i所确定的,且n为大于1的正整数;
根据第j轮排序轮次逻辑参数,从中间数据排序过渡子结果中获取中间待排序数据;j为正整数且j小于或等于n;若j为1,则所述中间数据排序过渡子结果为所述第一数据排序过渡子结果;若j不为1,则所述中间数据排序过渡子结果为缓存在所述数据获取子组件中的第二数据排序过渡子结果,所述第二数据排序过渡子结果是基于第j-1轮排序轮次逻辑参数所确定的;
将所述中间待排序数据发送至所述双调排序子组件,通过所述双调排序子组件,对所述中间待排序数据进行排序,得到所述中间待排序数据的中间排序子结果,根据所述中间排序子结果确定所述待排序数据子序列Ae对应的第三数据排序过渡子结果;
若j小于n,则将所述第三数据排序过渡子结果缓存在所述数据获取子组件中;
若j=n,且所述第i个双调排序阶段为所述至少两个双调排序阶段的最后一个双调排序阶段,则将所述第三数据排序过渡子结果写入至所述存储组件,将所述第三数据排序过渡子结果确定为所述待排序数据子序列Ae对应的数据排序子结果。
9.根据权利要求1所述的方法,其特征在于,所述根据所述B个数据双调排序任务,并行运行所述C个数据双调排序组件,得到由所述C个数据双调排序组件所输出的B个数据排序子结果,包括:
若B大于C,则将所述B个数据双调排序任务拆分为K*C个数据双调排序任务;K为所述C个数据双调排序组件分别对应的最大运行轮次;
将第i轮运行轮次中的C个数据双调排序任务分发至所述C个数据双调排序组件;其中,所述一个数据双调排序任务分发至一个数据双调排序组件;i为小于或等于K的正整数;
通过所述C个数据双调排序组件,并行运行所述第i轮运行轮次中的C个数据双调排序任务,得到所述C个数据双调排序组件分别输出的数据排序子结果,直至i等于K时得到与所述B个数据双调排序任务分别对应的数据排序子结果。
10.根据权利要求1所述的方法,其特征在于,所述基于所述C个数据双调排序组件,对所述B个数据排序子结果进行合并,得到针对所述待排序数据序列的数据排序结果,包括:
在第L次合并中获取U个数据排序子结果对;U为正整数;L为正整数;若L为1,则所述U个数据排序子结果对是基于所述B个数据排序子结果所生成的;若L不为1,则所述U个数据排序子结果对是基于历史合并数据排序子结果所生成的,所述历史合并数据排序子结果是在第L-1次合并中得到的子结果;
基于所述C个数据双调排序组件,对所述U个数据排序子结果对进行合并,得到U个目标合并数据排序子结果;
若U等于1,则将所述U个目标合并数据排序子结果,确定为所述待排序数据序列对应的数据排序结果;
若U大于1,则在第L+1次合并中,基于所述C个数据双调排序组件,对所述U个目标合并数据排序子结果进行合并,得到针对所述待排序数据序列的数据排序结果。
11.根据权利要求10所述的方法,其特征在于,所述U个数据排序子结果对包括数据排序子结果对Mp,p为正整数,且p小于或等于U;
所述基于所述C个数据双调排序组件,对所述U个数据排序子结果对进行合并,得到U个目标合并数据排序子结果,包括:
确定所述数据排序子结果对Mp所关联的待排序数据的第四总数量,确定所述数据排序子结果对Mp所关联的数据双调排序组件对应的数据存储容量;所述C个数据双调排序组件包括所述数据排序子结果对Mp所关联的数据双调排序组件;
将所述第四总数量与所述数据存储容量进行对比,得到第二对比结果;
根据所述第二对比结果以及所述数据排序子结果对Mp所关联的数据双调排序组件,对所述数据排序子结果对Mp进行双调排序,得到所述数据排序子结果对Mp对应的目标合并数据排序子结果;
将所述U个数据排序子结果对对应的目标合并数据排序子结果,确定为所述U个目标合并数据排序子结果。
12.根据权利要求11所述的方法,其特征在于,所述数据排序子结果对Mp包括第一数据排序子结果以及第二数据排序子结果;
所述根据所述第二对比结果以及所述数据排序子结果对Mp所关联的数据双调排序组件,对所述数据排序子结果对Mp进行双调排序,得到所述数据排序子结果对Mp对应的目标合并数据排序子结果,包括:
若所述第二对比结果为所述第四总数量大于所述数据存储容量,则将所述第一数据排序子结果均分为第一有序数据片段以及第二有序数据片段,将所述第二数据排序子结果均分为第三有序数据片段以及第四有序数据排序;
若所述第一有序数据片段中的数据小于或等于所述第二有序数据片段中的数据,且所述第三有序数据片段中的数据小于或等于所述第四有序数据片段中的数据,则基于第一数据双调排序组件,对所述第一有序数据片段以及所述第三有序数据片段进行双调排序,得到第三数据排序子结果;所述数据排序子结果对Mp所关联的数据双调排序组件包括所述第一数据双调排序组件;
基于第二数据双调排序组件,对所述第二有序数据片段以及所述第四有序数据片段进行双调排序,得到第四数据排序子结果;所述数据排序子结果对Mp所关联的数据双调排序组件包括所述第二数据双调排序组件;
将所述第三数据排序子结果均分为第五有序数据片段以及第六有序数据片段,将所述第四数据排序子结果均分为第七有序数据片段以及第八有序数据排序;
若所述第五有序数据片段中的数据小于或等于所述第六有序数据片段中的数据,所述第七有序数据片段中的数据小于或等于所述第八有序数据片段中的数据,则基于目标数据双调排序组件,对所述第六有序数据片段以及所述第七有序数据片段进行双调排序,得到第五数据排序子结果;所述目标数据双调排序组件为所述第一数据双调排序组件或所述第二数据双调排序组件;
基于所述第五有序数据片段、所述第五数据排序子结果以及所述第八有序数据排序,得到所述数据排序子结果对Mp对应的目标合并数据排序子结果。
13.根据权利要求1所述的方法,其特征在于,所述C个数据双调排序组件均包括索引生成子组件,所述索引生成子组件用于为所述待排序数据序列中的每个待排序数据分别分配索引值;所述数据排序请求携带写入地址;
所述方法还包括:
按序获取所述数据排序结果中的每个待排序数据分别对应的索引值,根据获取到的索引值,生成与所述待排序数据序列长度相同的索引值序列;
发送针对所述索引值序列的数据写入请求至数据读写组件,通过所述数据读写组件,将所述索引值序列写入至所述写入地址。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1至13任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-13任一项所述的方法。
16.一种计算机程序产品,其特征在于,计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,所述计算机指令适于由处理器读取并执行,以使得具有所述处理器的计算机设备执行如权利要求1-13任一项的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111242449.5A CN114356512A (zh) | 2021-10-25 | 2021-10-25 | 一种数据处理方法、设备以及计算机可读存储介质 |
PCT/CN2022/118483 WO2023071566A1 (zh) | 2021-10-25 | 2022-09-13 | 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 |
EP22885453.5A EP4328748A1 (en) | 2021-10-25 | 2022-09-13 | Data processing method and apparatus, computer device, computer-readable storage medium, and computer program product |
US18/335,491 US20230325149A1 (en) | 2021-10-25 | 2023-06-15 | Data processing method and apparatus, computer device, and computer-readable storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111242449.5A CN114356512A (zh) | 2021-10-25 | 2021-10-25 | 一种数据处理方法、设备以及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356512A true CN114356512A (zh) | 2022-04-15 |
Family
ID=81095709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111242449.5A Pending CN114356512A (zh) | 2021-10-25 | 2021-10-25 | 一种数据处理方法、设备以及计算机可读存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230325149A1 (zh) |
EP (1) | EP4328748A1 (zh) |
CN (1) | CN114356512A (zh) |
WO (1) | WO2023071566A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023071566A1 (zh) * | 2021-10-25 | 2023-05-04 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959094B2 (en) * | 2010-05-28 | 2015-02-17 | Oracle International Corporation | Early return of partial sort results in a database system |
CN111913955A (zh) * | 2020-06-22 | 2020-11-10 | 中科驭数(北京)科技有限公司 | 数据的排序处理装置、方法和存储介质 |
CN112015366B (zh) * | 2020-07-06 | 2021-09-10 | 中科驭数(北京)科技有限公司 | 数据排序方法、数据排序装置及数据库*** |
CN114356512A (zh) * | 2021-10-25 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、设备以及计算机可读存储介质 |
-
2021
- 2021-10-25 CN CN202111242449.5A patent/CN114356512A/zh active Pending
-
2022
- 2022-09-13 WO PCT/CN2022/118483 patent/WO2023071566A1/zh active Application Filing
- 2022-09-13 EP EP22885453.5A patent/EP4328748A1/en active Pending
-
2023
- 2023-06-15 US US18/335,491 patent/US20230325149A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023071566A1 (zh) * | 2021-10-25 | 2023-05-04 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
WO2023071566A1 (zh) | 2023-05-04 |
US20230325149A1 (en) | 2023-10-12 |
EP4328748A1 (en) | 2024-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109063829B (zh) | 神经网络构建方法、装置、计算机设备和存储介质 | |
CN112395300B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
US20210295168A1 (en) | Gradient compression for distributed training | |
CN109508326B (zh) | 用于处理数据的方法、装置和*** | |
CN105700956A (zh) | 用于处理分布式作业的方法和*** | |
US11423307B2 (en) | Taxonomy construction via graph-based cross-domain knowledge transfer | |
CN108776833B (zh) | 一种数据处理方法、***及计算机可读存储介质 | |
CN111985597B (zh) | 模型压缩方法及装置 | |
CN117170685B (zh) | 一种数据处理方法、装置、设备及介质 | |
US11562554B1 (en) | Workload reduction for non-maximum suppression operation | |
US20210158131A1 (en) | Hierarchical partitioning of operators | |
CN106295670A (zh) | 数据处理方法及数据处理装置 | |
CN111813517B (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN115860066A (zh) | 一种基于批处理的神经网络推理流水线复用的方法 | |
US11308396B2 (en) | Neural network layer-by-layer debugging | |
JP2021039758A (ja) | 画像間の類似度を利用した類似領域強調方法およびシステム | |
CN114356512A (zh) | 一种数据处理方法、设备以及计算机可读存储介质 | |
CN116848580A (zh) | 用于针对多方对话的话语解析的结构自感知模型 | |
Zhang et al. | A locally distributed mobile computing framework for DNN based android applications | |
CN109003223B (zh) | 图片处理方法和装置 | |
TW202301832A (zh) | 使用基於用戶互動歷史之模型來增強移動設備中之驗證 | |
CN114359811A (zh) | 数据鉴伪方法、装置、电子设备以及存储介质 | |
CN116755714B (zh) | 深度神经网络模型的运行方法、装置、设备和存储介质 | |
CN116204201B (zh) | 业务处理方法和装置 | |
CN112995067B (zh) | 一种粗粒度可重构数据处理架构及其数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40067551 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |