CN113778518B - 数据处理方法、装置、计算机设备和存储介质 - Google Patents
数据处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113778518B CN113778518B CN202111012559.2A CN202111012559A CN113778518B CN 113778518 B CN113778518 B CN 113778518B CN 202111012559 A CN202111012559 A CN 202111012559A CN 113778518 B CN113778518 B CN 113778518B
- Authority
- CN
- China
- Prior art keywords
- data
- target
- array
- candidate
- target thread
- 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
- 238000003672 processing method Methods 0.000 title abstract description 14
- 238000012545 processing Methods 0.000 claims abstract description 121
- 238000000034 method Methods 0.000 claims abstract description 80
- 230000008569 process Effects 0.000 claims abstract description 41
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 23
- 238000004364 calculation method Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 14
- 238000003491 array Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据处理方法、装置、计算机设备和存储介质,涉及计算机技术领域。通过多个目标线程并行对原始数组进行循环运算处理,其中,每一次运算处理的过程包括:每个目标线程从候选数组中读取每个目标线程对应的m个数据,然后检测读取到的m个数据的运算属性是否相同,若m个数据的运算属性相同,则通过目标线程对m个数据进行运算,并基于运算结果确定m个候选数据。若m个数据的运算属性不同,则不作处理,直接将m个数据作为m个候选数据,最后,根据各个目标线程得到候选数据确定每一次运算处理的目标数组,基于该方法可以通过多个目标线程直接对原始数组中运算属性不同的数据分别进行计算,简化了计算流程,降低了运算负担。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理方法、装置、计算机设备和存储介质。
背景技术
计算集群系统包括多个计算节点,每个计算节点均部署有CPU和GPU,其中,CPU负责逻辑控制,GPU负责数据计算。由于GPU具有多核并行的特点,因此其可以实现快速计算的目的,从而提高计算节点以及计算集群系统的运算效率。其中,GPU在进行数据计算的过程中,一般采用多线程并行的方式,在多线程并行时,每个线程执行的任务是相同的。
通常情况下,待处理数据存储在原始数组中,多线程并行时,首先需要对原始数组进行预处理,即将原始数组拆分为多个子数组,每个子数组中包括原始数组中的部分待处理数据。然后,每个线程处理不同子数组中的待处理数据。
然而,该方法在对待处理数据进行计算时,需要先将原始数组拆分成多个子数组,然后才能多线程并行计算,增加了GPU的计算负担。
发明内容
基于此,有必要针对上述技术问题,提供一种数据处理方法、装置、计算机设备和存储介质。
一种数据处理方法,该方法包括:
基于并发的多个目标线程针对原始数组进行循环运算处理,直至连续n次运算处理得到的目标数组满足预设条件为止;
其中,第i次运算处理,包括:对于各目标线程,通过目标线程从候选数组中读取与目标线程对应的m个数据;若m个数据的运算属性相同,则通过目标线程对m个数据进行运算,并根据运算结果确定m个候选数据,若m个数据的运算属性不相同,则通过目标线程将读取到的m个数据作为m个候选数据;根据各目标线程得到的候选数据,确定第i次运算处理得到的目标数组,其中,候选数组在i=1时为原始数组,在i大于1时为第i-1次运算处理得到的目标数组,i为大于等于1的整数,n、m为大于等于2的整数。
本申请实施例通过多个目标线程并行对原始数组进行循环运算处理,其中,每一次运算处理的过程包括:每个目标线程从候选数组中读取每个目标线程对应的m个数据,然后检测读取到的m个数据的运算属性是否相同,若m个数据的运算属性相同,则通过目标线程对m个数据进行运算,并基于运算结果确定m个候选数据。若m个数据的运算属性不同,则不作处理,直接将m个数据作为m个候选数据,最后,根据各个目标线程得到候选数据确定每一次运算处理的目标数组,基于该方法,在计算机设备通过目标线程读取到运算属性不相同的数据时,可以通过目标线程将读取到的数据作为候选数据,以在下一次循环运算时进行处理,这样计算机设备可以通过多个目标线程直接对原始数组中运算属性不同的数据分别进行计算,而不需要将原始数组拆分为多个子数组,简化了计算流程,降低了运算负担。
在其中一个实施例中,根据运算结果确定m个候选数据,包括:
根据运算结果以及m-1个预设数据确定m个候选数据,预设数据不为原始数组中的数据,也不为根据原始数组中的数据计算得到的数据。
本申请实施例中,通过将运算结果以及p(p<=m)个预设数据作为m个候选数据。实现了读取m个数据得到m个候选数据,即通过各个目标线程读取的数据的数量与运算处理后得到的候选数据的数量相同,从而能够将各个目标线程的运算处理结果隔离开来,这样多目标线程并发时,就可以避免出现多个目标线程同时在同一个存储地址内写入运算处理结果。
在其中一个实施例中,该方法还包括:
若通过目标线程从候选数组中读取到的数据的个数h不足m个,则根据读取到的h个数据确定h个候选数据,h为小于m的正整数。
本申请实施例中,对于实际应用中经常会出现的,读取到的数据的个数不足m个的情况,确定将读取到的h个数据作为h个候选数据,并在后续根据各个目标线程得到的m个候选数据和h个候选数据,确定第i次运算处理得到的目标数组的方式限定了各个目标线程在进行运算处理时可能遇到的异常状况,避免了目标线程在进行数据规约处理出现无法处理的情况,提高了运算处理效率。
在其中一个实施例中,通过目标线程从候选数组中读取与目标线程对应的m个数据,包括:
根据目标线程的编号确定与目标线程对应的m个数据在候选数组中的排列位置;
根据排列位置从候选数组中读取与目标线程对应的m个数据。
本申请实施例中,计算机设备根据目标线程的编号确定与目标线程对应的m个数据在候选数组中的排列位置,然后通过目标线程读取该m个数据。由于各个目标线程的编号是不相同的,因此可以确定基于各个目标线程的编号确定的与各个目标线程对应的m个数据不会出现重复,这样就可以避免多线程并发时,多个线程重复对同一数据进行处理的问题。
在其中一个实施例中,候选数组为第i-1次运算处理得到的目标数组,根据目标线程的编号确定与目标线程对应的m个数据在候选数组中的排列位置,包括:
根据目标线程的编号,从候选数组包括的非预设数据中,确定与目标线程对应的m个数据在候选数组中的排列位置,其中,预设数据不为原始数组中的数据,也不为根据原始数组中的数据计算得到的数据。
本申请实施例中,计算机设备通过目标线程的编号从候选数组包括的非预设数据中确定与目标线程对应的m个数据在候选数组中的排列位置,可以确保计算机设备通过目标线程读取的数据不为预设数据,避免造成资源浪费,提高数据处理效率。
在其中一个实施例中,根据各目标线程得到的候选数据,确定第i次运算处理得到的目标数组,包括:
根据各目标线程读取的m个数据在候选数组中的排列位置,确定各目标线程得到的候选数据在第i次运算处理得到的目标数组中的目标排列位置;
根据目标排列位置确定第i次运算处理得到的目标数组。
本申请实施例中,计算机设备根据通过各目标线程读取的m个数据在候选数组中的排列位置,确定各目标线程得到的m个候选数据在第i次运算处理得到的目标数组中的目标排列位置,保证了第i次运算处理得到的目标数组中,运算属性相同的数据排列在一起,避免了运算属性相同的数据之间出现运算属性不同的数据,降低了数据处理过程的复杂度。
在其中一个实施例中,预设条件为运算处理得到的目标数组一致。
若计算机设备检测连续n次运算处理的的目标数组均满足预设条件,说明循环运算处理得到的运算结果不再发生变化,因此将该不再发生变化的运算结果确定为对原始数组的最终运算结果,保证了最终运算结果的稳定性。
在其中一个实施例中,直至连续n次运算处理得到的目标数组满足预设条件为止之后,该方法还包括:
对于各目标线程,通过目标线程从满足预设条件的目标数组中读取m个数据,其中,通过目标线程从满足预设条件的目标数组中读取m个数据的策略与循环运算处理过程中读取m个数据的策略不同;
其中,通过目标线程从满足预设条件的目标数组中读取m个数据的策略包括:以满足预设条件的目标数组中排列在第二个位置的数据为起始读取与目标线程对应的m个数据;
若m个数据的运算属性相同,则通过目标线程对m个数据进行运算,并根据运算结果确定m个候选数据,若m个数据的运算属性不相同,则通过目标线程将读取到的m个数据作为m个候选数据;若通过目标线程从候选数组中读取到的数据的个数n不足m个,则根据读取到的n个数据确定n个候选数据;
根据各目标线程得到的候选数据,得到原始数组的最终运算结果。
本申请实施例中,计算机设备通过各个目标线程读取数据时,各个目标线程读取数据的地址均进行偏移,这样将运算属性相同的数据就可以被同一个目标线程读取,从而进行聚合,保证了原始数组的最终运算结果的稳定。
在其中一个实施例中,基于并发的多个目标线程针对原始数组进行循环运算处理,包括:
按照运算属性对原始数组进行排序;
基于并发的多个目标线程针对排序后的原始数组进行循环运算处理。
基于该种排序处理,使得原始数组中运算属性相同的数据排列在一起,这样在进行数据规约时,能够提高对运算属性相同的数据的处理效率,以便于尽快地将运算属性相同的数据进行聚合。
一种数据处理装置,该装置包括:
循环运算模块,用于基于并发的多个目标线程针对原始数组进行循环运算处理,直至连续n次运算处理得到的目标数组满足预设条件为止;
其中,第i次运算处理,包括:对于各目标线程,通过目标线程从候选数组中读取与目标线程对应的m个数据;若m个数据的运算属性相同,则通过目标线程对m个数据进行运算,并根据运算结果确定m个候选数据,若m个数据的运算属性不相同,则通过目标线程将读取到的m个数据作为m个候选数据;根据各目标线程得到的候选数据,确定第i次运算处理得到的目标数组,其中,候选数组在i=1时为原始数组,在i大于1时为第i-1次运算处理得到的目标数组,i为大于等于1的整数,n、m为大于等于2的整数。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例中的技术方案。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例中的技术方案。
上述数据处理方法、装置、计算机设备和存储介质,可以降低运算负担。该数据处理方法通过多个目标线程并行对原始数组进行循环运算处理,多个目标线程并发对原始数组进行处理时,各个线程基于读m个数据,得到m个候选数据的方式,保证各个目标线程读取的数据和得到的候选数据的数量一致,这样计算机设备可以通过多个目标线程直接对原始数组中运算属性不同的数据分别进行计算,而不需要将原始数组拆分为多个子数组,简化了计算流程,降低了运算负担。
附图说明
图1为一个实施例中数据处理方法的流程示意图;
图2为一个实施例中对候选数组中的数据进行处理的示意图;
图3为第i次运算处理得到的目标数组的示意图;
图4为一个实施例中运算属性相同的数据无法规约处理的场景展示图;
图5为一个实施例中确定原始数组的最终运算结果的方法的示意图;
图6为一个实施例中循环运算处理的过程展示图;
图7为一个实施例中从满足预设条件的目标数组中读取m个候选数据的方法的示意图;
图8为一种排序后的原始数组的示意图;
图9为通过目标线程的编号确定与目标线程对应的m个数据的方法的流程图;
图10为一个实施例中数据处理装置的结构框图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
目前,高性能计算集群系统大多由通过高速网络互联的多个计算节点构成。随着计算机产业的发展以及计算机的计算能力的不断提升,高性能计算集群系统中包含的计算节点的数目也逐年增加,从几十个计算节点到成百上千个计算节点,甚至,当前包含上万个计算节点的计算集群系统也不断涌现。
为了提高计算节点以及计算集群系统的运算效率,近年来随着异构计算的兴起,计算集群系统中的计算节点开始部署有CPU(英文:central processing unit,中文:中央处理器)和GPU(英文:graphics processing unit,中文:图形处理器),其中,CPU负责逻辑控制,GPU负责数据计算。GPU相比于CPU的优势是,GPU具有多核并行的特点,可以实现快速计算的目的。
例如统计数组[2,2,2,2,2,1,1,1,1,3,3,3,3,3]中的2一共有多少个。若多个线程顺序执行,那么每个线程判断读取到的数据是否是2,若是,则在前一个线程的计数结果上加1,这样不会产生问题。
然而,GPU在进行数据运算的过程中,一般采用多线程并行的方式,多个线程并发执行任务时,每个线程执行的任务是相同的,且各个线程之间无通信,也就是说,每个线程不能获得其他线程的执行结果,也不能根据其他线程的执行结果改变自身执行的任务。而多线程并行的方式统计上述数组中的2一共有多少个,就会出现多个线程并行在同一时间对已有的计数结果进行加1操作,这样就会导致计数错误。
为了解决这个问题,现有技术提出了在多线程并行执行任务时,首先对原始数组进行预处理,即按照原始数组中的待处理的数据的运算属性将原始数组拆分为多个子数组,每个子数组中的数据的运算属性相同,然后,各个线程分别处理不同的子数组中的数据,并将处理结果写入各个子数组对应的位置。
然而,在实际应用中,原始数组中的数据量是非常庞大的,将原始数组中的数据拆分为多个子数组需要占用较多的运算资源,因此增加了GPU的运算负担。
基于此,本申请提供的数据处理方法可以直接对原始数组中运算属性不同的数据进行规约运算,而不需要将原始数组拆分为多个子数组,简化了运算流程,降低了运算负担。
在一个实施例中,如图1所示提供了一种数据处理方法的流程图,本实施例以该方法应用于计算机设备进行举例说明,可以理解的是,该计算机设备部署有CPU和GPU。本实施例中,该方法包括以下步骤:
计算机设备基于并发的多个目标线程针对原始数组进行循环运算处理。
本申请实施例中,原始数组为待进行运算处理的数组,原始数组中存储有多个数据,每个数据对应携带有该数据的数值和属性标识,其中,属性标识用于表示该数据的运算属性。该多个数据的运算属性可能并不相同,而运算属性不同的数据不能进行运算。其中,原始数组中运算属性相同的数据排列在一起。
下面对计算机设备通过各个目标线程执行第i次运算处理的过程进行说明,i为大于等于1的整数,如图1所示,第i次运算处理包括:
步骤101,对于各目标线程,计算机设备通过目标线程从候选数组中读取与目标线程对应的m个数据。
其中,i=1时,候选数组为原始数组。该种情况下,计算机设备通过目标线程从候选数组(即原始数组)中读取与目标线程对应的m个数据。当i大于1时,第i次运算处理对应的候选数组为第i-1次运算处理得到的目标数组,计算机设备通过目标线程从候选数组(即第i-1次运算处理得到的目标数组)中读取与目标线程对应的m个数据。
计算机设备通过各个目标线程读取数据时,以候选数组中排列在第一个位置的数据为起始按照顺序遍历候选数组中的数据,直到遍历到数据在候选数组中的排列位置与通过目标线程所要读取的第一个数据在候选数组中的排列位置一致,则开始读取数据,直至读取到m个数据为止。
步骤102,计算机设备通过目标线程判断读取到的m个数据的运算属性是否相同,根据读取到的m个数据的运算属性确定m个候选数据。
其中,若读取到的m个数据的运算属性相同,则计算机设备通过目标线程对读取到的m个数据进行运算,并根据运算结果确定m个候选数据。若读取到的m个数据的运算属性不相同,则计算机设备通过目标线程将读取到的m个数据作为m个候选数据。
其中,计算机设备通过目标线程判断读取到的m个数据的运算属性是否相同的过程包括:
计算机设备通过目标线程从候选数组中读取数据时,可以获取到数据的数值和属性标识,计算机设备通过目标线程根据读取到的m个数据的属性标识是否一致可以确定读取到的m个数据的运算属性是否相同。其中,m个数据的属性标识均一致,表示m个数据的运算属性相同。m个数据的属性标识有一个属性标识与其他属性标识不一致,表示m个数据的运算属性不相同。
下面对计算机设备通过目标线程根据读取到的m个数据的运算属性确定m个候选数据的过程进行说明:
若读取到的m个数据的运算属性相同,则计算机设备可以通过目标线程对该m个数据进行运算。若读取到的m个数据的运算属性不相同,则计算机设备可以通过目标线程将读取到的m个数据作为m个候选数据,即不进行运算处理。
在一种可选的实现方式中,读取到的m个数据的运算属性相同可以是指m个数据的运算属性全部相同,如表1所示,表1中m=6,表1中示出了数据的属性标识。
表1
1 | 1 | 1 | 1 | 1 | 1 |
该种情况下,计算机设备通过目标线程对该m个数据进行运算的过程包括:计算机设备可以通过目标线程基于预设的运算规则对该m个数据进行运算。可选的,该预设的运算规则可以例如是取最小、取最大、求和、平方和、逻辑与/或、向量点积等。
在得到运算结果之后,计算机设备可以通过目标线程根据运算结果确定m个候选数据,其中,确定m个候选数据的过程可以详见下文叙述。
若读取到的m个数据的运算属性不属于表1所示出的情形,则表示该m个数据的运算属性不相同,如图2中B区域所示,例如m=3,目标线程2对应的3个数据为候选数组中排列位置为第四,第五和第六的3个数据,在读取数据之后,计算机设备通过目标线程判断该3个数据的运算属性不完全相同,这种情况下,计算机设备通过该目标线程将读取到的该3个数据作为3个候选数据,如图2中点b区域所示。
在另一种可选的实现方式中,读取到的m个数据的运算属性相同是指m个数据中的部分数据的运算属性相同,如表2所示,表2中m=6。
表2
1 | 1 | 2 | 2 | 2 | 5 |
其中,位于第一位置和第二位置的数据的运算属性相同,位于第三位置、第四位置和第五位置的数据运算属性相同,位于第六位置的数据与其他位置的数据的运算属性均不相同。
该种情况下,计算机设备通过目标线程对该m个数据进行运算的过程包括:计算机设备调用目标线程对运算属性相同的数据基于预设的运算规则进行运算,即对第一位置和第二位置的数据进行运算,得到一个运算结果,同时,对第三位置、第四位置和第五位置的数据进行运算,又得到一个运算结果。
在得到运算结果之后,计算机设备可以通过目标线程根据运算结果以及未进行运算的数据确定m个候选数据,其中,确定m个候选数据的过程可以详见下文叙述。
若读取到的m个数据的运算属性如表3所示,即m个数据的运算属性全部不相同,则表示该m个数据的运算属性不相同。
表3
1 | 2 | 3 | 4 | 5 | 6 |
这种情况下,计算机设备通过该目标线程不做运算处理,而是将读取到的该6个数据作为6个候选数据。
步骤103,计算机设备根据各个目标线程得到的m个候选数据确定第i次运算处理得到的目标数组。
本申请实施例中,计算机设备可以将各个目标线程得到的m个候选数据组合起来得到第i次运算处理得到的目标数组。其中,组合方式可以包括两种可选方式,在下文中详细说明。
本申请实施例中,在第1次运算处理结束后,计算机设备可以将第1次运算处理得到的目标数组作为第2次运算处理对应的候选数组,在第2次运算处理结束后,计算机设备可以将第2次运算处理得到的目标数组作为第3次运算处理对应的候选数组,……,以此类推。
步骤104,计算机设备检测是否连续n次运算处理的的目标数组均满足预设条件,若是,则终止循环运算处理。
其中,n为大于等于2的正整数。
在每一次运算处理得到目标数组之后,计算机设备都可以检测本次运算处理得到目标数组是否满足预设条件,可选的,预设条件可以为目标数组中任意两个数据的运算属性不相同。可选的,预设条件还可以为运算处理得到的目标数组一致。
若本次运算处理得到目标数组满足预设条件,则计算机设备可以检测是否连续n次运算处理的的目标数组均满足预设条件。若是,则说明循环运算处理得到的运算结果不再发生变化,因此将该不再发生变化的运算结果确定为对原始数组的最终运算结果。
若本次运算处理得到目标数组不满足预设条件,则计算机设备通过各个目标线程进行下一次循环运算处理。
本申请实施例中,多个目标线程并发对原始数组进行处理时,各个线程基于读m个数据,得到m个候选数据的方法,保证各个目标线程读取的数据和得到的候选数据的数量一致,从而实现了避免各个目标线程对同一个地址进行操作,由于各个目标线程的操作地址不同,因此就不会出现各个目标线程相互干扰的情况,保证了各个目标线程的执行结果的独立性。
需要说明的是,本申请实施例中,在循环运算处理时,m的取值可以不相同。例如在第1次运算处理时,m取值为3,在第2次运算处理时,m取值可以为2,……。可选的,本申请实施例中,循环运算处理的次数i与第i次运算处理中m的取值负相关,即i越大,m越小。
在本申请的一种实施例中,由于候选数组中的数据的数量并不总是能够被各目标线程读取的数据的个数m整除,因此就会出现某个目标线程从候选数组中读取不到m个数据的情况,针对该种情况,本申请实施例提供的数据处理方法包括以下内容:
计算机设备通过目标线程从候选数组中读取与目标线程对应的m个数据的过程中,若计算机设备通过目标线程从候选数组中读取到的h个数据不足m个,则根据读取到的h个数据确定h个候选数据,其中,h为小于m的正整数。
在一种可选的实现方式中,如图2所述,计算机设备通过目标线程4从候选数组中只能读取到2个数据,2个数据少于m,这种情况下,计算机设备不通过目标线程4对读取到的数据进行运算,而是直接将读取到的2个数据作为2个候选数据。
在另一种可选的实现方式中,若读取到的h个数据中存在运算属性相同的数据,则对运算属性相同的数据进行运算,得到运算结果,基于运算结果、未进行运算的数据以及P个预设数据确定h个候选数据。
相应的,由于一些目标线程得到m个候选数据,一些目标线程得到h个候选数据,这种情况下,计算机设备通过各个目标线程得到的m个候选数据和h个候选数据,确定第i次运算处理得到的目标数组。
本申请实施例中,对于实际应用中经常会出现的,读取到的数据的个数不足m个的情况,确定将读取到的h个数据作为h个候选数据,并在后续根据各个目标线程得到的m个候选数据和h个候选数据,确定第i次运算处理得到的目标数组的方式限定了各个目标线程在进行运算处理时可能遇到的异常状况,避免了目标线程在进行数据规约处理出现无法处理的情况,提高了运算处理效率。
在本申请的一个实施例中,如图4所示,若计算机设备通过目标线程每次读取两个数据时,就会导致位于第2位和第3位的运算属性相同的数据总是不能聚合到一起。为了解决这个技术问题,如5所示,本申请实施例提供了另一种数据处理方法,该数据处理方法包括以下内容:
步骤501,计算机设备基于并发的多个目标线程针对原始数组进行循环运算处理,直至连续n次运算处理得到的目标数组满足预设条件为止。
步骤502,对于各目标线程,计算机设备通过目标线程从满足预设条件的目标数组中读取m个数据。
其中,通过目标线程从满足预设条件的目标数组中读取m个数据的策略与循环运算处理过程中读取m个数据的策略不同。计算机设备通过目标线程从满足预设条件的目标数组中读取m个数据的策略包括:以满足预设条件的目标数组中排列在第二个位置的数据为起始读取与目标线程对应的m个数据。
结合图6和图7可以看出,计算机设备通过目标线程读取数据时,从满足预设条件的目标数组的第二个位置为起始位置开始遍历,即,各个目标线程将满足预设条件的目标数组的排列在第二个位置的数据作为其遍历的第一个数据,实现了计算机设备通过各个目标线程读取数据时的读取地址均进行了偏移,这样就可以解决图4中出现的情况,运算属性相同的数据就可以被同一个目标线程读取,从而进行聚合。
步骤503,若m个数据的运算属性相同,则计算机设备通过目标线程对m个数据进行运算,并根据运算结果确定m个候选数据,若m个数据的运算属性不相同,则计算机设备通过目标线程将读取到的m个数据作为m个候选数据;若通过目标线程从候选数组中读取到的数据的个数n不足m个,则计算机设备根据读取到的n个数据确定n个候选数据。
步骤504,计算机设备根据各目标线程得到的候选数据,得到原始数组的最终运算结果。
本申请实施例中,计算机设备通过各个目标线程读取数据时,各个目标线程读取数据的地址均进行偏移,这样将运算属性相同的数据就可以被同一个目标线程读取,从而进行聚合,保证了原始数组的最终运算结果的稳定。
可选的,在本申请的一个实施例中,原始数组中的多个数据是无规律排列的,计算机设备在对原始数组进行循环运算处理之前,可以按照运算属性对原始数组中的多个数据进行排序,使得运算属性相同的数据排列在一起。然后,计算机设备再基于并发的多个目标线程针对排序后的原始数组进行循环运算处理。其中,图8示例性地示出了排序后的原始数组的示意图,图8中,前4个数据的属性标识均为1,表示该4个数据的运算属性相同,第5-6个数据的属性标识为2,表示该两个数据的运算属性相同,且与前4个数据的运算属性不相同。后面6个数据的属性标识为3,表示该6个数据的运算属性相同。
基于该种排序处理,使得原始数组中运算属性相同的数据排列在一起,这样在进行数据规约时,能够提高对运算属性相同的数据的处理效率,以便于尽快地将运算属性相同的数据进行聚合。
可选的,在本申请的一个实施例中,计算机设备通过目标线程从候选数组中确定与目标线程对应的m个数据的方法有两种,以下分别进行说明:
第一种是:
计算机设备可以预先规定好各个目标线程对应的m个数据在候选数组中的排列位置,例如,m=2,计算机设备可以预先规定通过目标线程A读取的与目标线程A对应的2个数据为在候选数组中排列在第1位置和第2位置的数据。规定通过目标线程B读取的与目标线程B对应的2个数据为在候选数组中排列在第7位置和第8位置的数据。规定通过目标线程C读取的与目标线程C对应的2个数据为在候选数组中排列在第3位置和第4位置的数据,……等。
第二种是:
计算机设备可以通过目标线程的编号确定与目标线程对应的m个数据。如图9所示,该方法包括:
步骤901,计算机设备根据目标线程的编号确定与目标线程对应的m个数据在候选数组中的排列位置。
其中,目标线程的编号是指计算机设备对现有存活的目标线程的排列编号,需要理解的是,目标线程的排列编号并不代表目标线程在执行任务时的先后顺序。各个目标线程是并发执行任务的。
本申请实施例中,计算机设备可以首先根据目标线程的排列编号N和读取的数据的个数m确定编号范围,其中,编号范围为[N×(m-1)+1,N×m,],其中,N为目标线程的排列编号;计算机设备可以将从编号范围内提取的正整数确定为与目标线程对应的m个目标编号,该m个目标编号即与目标线程对应的m个数据在候选数组中的排列位置的编号。
例如,读取的数据的个数m为2,目标线程的排列编号为1,那么,计算机设备通过目标线程读取的2个数据在候选数据中的排列位置的编号为1和2;读取的数据的个数m为2,目标线程的排列编号为6,那么,计算机设备通过目标线程读取的2个数据在候选数据中的排列位置的编号为11和12;……。
读取的数据的个数m为4,目标线程的排列编号为1,那么,计算机设备通过目标线程1读取的m个数据的编号范围为[1,4],将从编号范围[1,4]中提取的正整数为1、2、3、4确定为与目标线程1对应的4个目标编号,即表示计算机设备通过目标线程1读取的4个数据在候选数据中的排列位置的编号为1、2、3、4。
类似的,读取的数据的个数m为4,目标线程的排列编号为3,那么,计算机设备通过目标线程3读取的m个数据的编号范围为[9,12],将从编号范围[9,12]中提取的正整数为9、10、11、12确定为与目标线程3对应的4个目标编号,即表示计算机设备通过目标线程3读取的4个数据在候选数据中的排列位置的编号为9、10、11、12,……,在此不进行穷举。
步骤902,计算机设备通过目标线程根据排列位置从候选数组中读取与目标线程对应的m个数据。
以读取的数据的个数m为4,目标线程的排列编号为3为例,计算机设备通过目标线程3从候选数组中读取的排列位置的编号为9、10、11、12的4个数据。
本申请实施例中,计算机设备根据目标线程的编号确定与目标线程对应的m个数据在候选数组中的排列位置,然后通过目标线程读取该m个数据。由于各个目标线程的编号是不相同的,因此可以确定基于各个目标线程的编号确定的与各个目标线程对应的m个数据不会出现重复,这样就可以避免多线程并发时,多个线程重复对同一数据进行处理的问题。
下面,对本申请实施例中提出的,计算机设备通过目标线程根据运算结果确定m个候选数据的过程进行说明。
在得到运算结果之后,计算机设备可以根据运算结果和P个预设数据确定m个候选数据。
在一种可选的实现方式中:
如图2中A区域所示,读取到的m个数据的运算属性全部相同,则运算结果只有一个,这种情况下,P个预设数据可以是指m-1个预设数据,可以将该运算结果和m-1个预设数据组合起来,得到m个候选数据。
可选的,本申请实施例中,预设数据可以为占位符。
如图2所示,例如m=3,如图2中A区域所示,目标线程1对应的3个数据为候选数组中排列位置为第一,第二和第三的3个数据,在读取数据之后,计算机设备通过目标线程判断该3个数据的运算属性完全相同,因此,对该3个数据的数值进行运算,得到一个运算结果表示为1(3),然后生成P(P=2)个占位符“-”,根据该运算结果1(3)和2个占位符得到3个候选数据,如图2中a区域所示。
可选的,本申请实施例中,如图3所示,预设数据可以为预设极小值数据,例如-0,也可以为其他默认数据。
在另一种可选的实现方式中:
承接上文表2中所示的情况,m=6读取到的m个数据的运算属性部分相同,这种情况下,运算结果包括多个,且存在未参与计算的数据(即第六位置的数据),则运算结果和P个预设数据确定m个候选数据的过程包括以下内容:
在读取数据之后,通过对第一位置和第二位置的数据进行运算,得到一个运算结果,表示为1(2),同时,对第三位置、第四位置和第五位置的数据进行运算,又得到一个运算结果,表示为2(3)。同时还存在位于第六位置的未参与运算的数据,计算机设备可以调用目标线程生成P(P=3)个占位符或者预设数据,令运算结果1(2)、运算结果2(3)、未参与运算的数据以及3个占位符或者预设数据构成6个候选数据,可以如表4所示。
表4
1(2) | 2(3) | 5 | -0 | -0 | -0 |
可选的,运算结果与P个预设数据在组合时,运算结果可以位于m个候选数据中的任意一个位置。例如表4还可以表示为表5。
表5
1(2) | -0 | 2(3) | -0 | -0 | 5 |
可选的,运算结果的先后顺序按照其对应的数据的先后顺序进行排列。
需要说明的是,在循环运算处理时,每一次运算处理过程中,运算结果在m个候选数据中的排列位置相同。
本申请实施例中,通过将运算结果以及p(p<=m)个预设数据作为m个候选数据。实现了读取m个数据得到m个候选数据,即通过各个目标线程读取的数据的数量与运算处理后得到的候选数据的数量相同,从而能够将各个目标线程的运算处理结果隔离开来,这样多目标线程并发时,就可以避免出现多个目标线程同时在同一个存储地址内写入运算处理结果。
对应于上述两种实现方式,就会导致第i次运算处理得到的目标数组中出现占位符或者出现预设数据。对于该种情况,在第i+1次运算处理时,计算机设备通过目标线程从候选数组中读取与目标线程对应的m个数据的过程包括以下两种方式:
第一种方式是:
在得到第i次运算处理得到的目标数组之后,计算机设备可以对第i次运算处理得到的目标数组进行数据清洗,即剔除第i次运算处理得到的目标数组中的占位符(或者预设数据),非占位符数据(或者非预设数据)保持原有先后顺序不变。将数据清洗后的第i次运算处理得到的目标数组作为第i+1次运算处理的候选数组。
然后,计算机设备可以通过目标线程从候选数组中读取与目标线程对应的m个数据,并根据m个数据的运算属性和数值确定m个候选数据,最后根据各目标线程得到的候选数据确定第二次运算处理得到的目标数组。
第二种方式是:
计算机设备通过目标线程从候选数组中读取数据时,以候选数组中排列在第一个位置的数据为起始按照顺序遍历候选数组中的数据,在遍历的过程中,若遇到占位符(或者预设数据)则忽略,仅遍历候选数组中的非占位符(或者非预设数据),直至读取到m个非占位符(或者非预设数据)。
下面,对计算机设备通过目标线程从候选数组包括的非预设数据中读取与目标线程对应的m个数据的过程进行说明。
如图3所示,例如目标线程1对应的3个数据为候选数组中排列位置为第一,第二和第三的3个数据,就是指图3中的①②③所标识的3个非预设值数据。预设数据不参与各个目标线程从候选数组中读取数据时的排序。
相应的,目标线程2对应的3个数据为候选数组中排列位置为第四,第五和第六的3个非预设值数据。如图3中的④⑤⑥所标识的3个非预设值数据。
第三种方式是:
计算机设备根据目标线程的编号,从候选数组包括的非预设数据中,确定与目标线程对应的m个数据在候选数组中的排列位置。
其中,预设数据不为原始数组中的数据,也不为根据原始数组中的数据计算得到的数据。
其中,计算机设备根据目标线程的编号确定与目标线程对应的m个数据在候选数组中的排列位置的过程可以参考上述实施例中步骤501-步骤502公开的内容。
计算机设备在确定好与目标线程对应的m个数据在候选数组中的排列位置之后,从候选数组中的非预设数据中确定出与目标线程对应的m个数据。
例如,如图6所示,m=2,与目标线程1对应的2个数据在候选数组中的排列位置分别为第一位置和第二位置,那么候选数组包括的非预设数据中排序在第一位和第二位的非预设数据1(4)和2(2)即为与目标线程对应的2个数据,目标线程2和目标线程3读取数据的原理与目标线程1读取数据的原理相同,在此不进行赘述。
本申请实施例中,计算机设备通过目标线程的编号从候选数组包括的非预设数据中确定与目标线程对应的m个数据在候选数组中的排列位置,可以确保计算机设备通过目标线程读取的数据不为预设数据,避免造成资源浪费,提高数据处理效率。
下面对计算机设备将各个目标线程得到的m个候选数据组合起来得到第i次运算处理得到的目标数组的过程进行说明:
在一种可选的实现方式中:
计算机设备可以基于各个目标线程的编号的先后顺序确定各个目标线程得到的m个候选数据的先后顺序,然后基于该先后顺序将各个目标线程得到的m个候选数据排列组合得到第i次运算处理得到的目标数组。
在另一种可选的实现方式中:
计算机设备还可以根据通过各目标线程读取的m个数据在候选数组中的排列位置,确定各目标线程得到的m个候选数据在第i次运算处理得到的目标数组中的目标排列位置;根据目标排列位置确定对各目标线程得到的m个候选数据进行组合,得到第i次运算处理得到的目标数组。
如图2所示,图2中,目标线程1读取的m个数据在候选数组中的排列位置位于目标线程2读取的m个数据在候选数组中的排列位置之前,那么在本次运算处理得到的目标数组中,目标线程1得到的m个候选数据就位于目标线程2得到的候选数据之前。图2中,位于第一行的数组为原始数组,位于第二行的数组为第1次运算处理得到的目标数组。
本申请实施例中,计算机设备根据通过各目标线程读取的m个数据在候选数组中的排列位置,确定各目标线程得到的m个候选数据在第i次运算处理得到的目标数组中的目标排列位置,保证了第i次运算处理得到的目标数组中,运算属性相同的数据排列在一起,避免了运算属性相同的数据之间出现运算属性不同的数据,降低了数据处理过程的复杂度。
应该理解的是,虽然图1-9中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图10所示,提供了一种数据处理装置1000,包括:循环运算模块1001,其中:
循环运算模块,用于基于并发的多个目标线程针对原始数组进行循环运算处理,直至连续n次运算处理得到的目标数组满足预设条件为止;
其中,第i次运算处理,包括:对于各目标线程,通过目标线程从候选数组中读取与目标线程对应的m个数据;若m个数据的运算属性相同,则通过目标线程对m个数据进行运算,并根据运算结果确定m个候选数据,若m个数据的运算属性不相同,则通过目标线程将读取到的m个数据作为m个候选数据;根据各目标线程得到的候选数据,确定第i次运算处理得到的目标数组,其中,候选数组在i=1时为原始数组,在i大于1时为第i-1次运算处理得到的目标数组,i为大于等于1的整数,n、m为大于等于2的整数。
在一个实施例中,循环运算模块1001具体用于:根据运算结果以及p(p<=m)个预设数据确定m个候选数据,预设数据不为原始数组中的数据,也不为根据原始数组中的数据计算得到的数据。
在一个实施例中,循环运算模块1001具体用于:若通过目标线程从候选数组中读取到的数据的个数h不足m个,则根据读取到的h个数据确定h个候选数据,h为小于m的正整数。
在一个实施例中,循环运算模块1001具体用于:根据目标线程的编号确定与目标线程对应的m个数据在候选数组中的排列位置;
根据排列位置从候选数组中读取与目标线程对应的m个数据。
在一个实施例中,候选数组为第i-1次运算处理得到的目标数组,循环运算模块1001具体用于:根据目标线程的编号,从候选数组包括的非预设数据中,确定与目标线程对应的m个数据在候选数组中的排列位置,其中,预设数据不为原始数组中的数据,也不为根据原始数组中的数据计算得到的数据。
在一个实施例中,循环运算模块1001具体用于:根据各目标线程读取的m个数据在候选数组中的排列位置,确定各目标线程得到的候选数据在第i次运算处理得到的目标数组中的目标排列位置;
根据目标排列位置确定第i次运算处理得到的目标数组。
在一个实施例中,循环运算模块1001具体用于:预设条件为运算处理得到的目标数组一致。
在一个实施例中,循环运算模块1001具体用于:对于各目标线程,通过目标线程从满足预设条件的目标数组中读取m个数据,其中,通过目标线程从满足预设条件的目标数组中读取m个数据的策略与循环运算处理过程中读取m个数据的策略不同;
其中,通过目标线程从满足预设条件的目标数组中读取m个数据的策略包括:以满足预设条件的目标数组中排列在第二个位置的数据为起始读取与目标线程对应的m个数据;
若m个数据的运算属性相同,则通过目标线程对m个数据进行运算,并根据运算结果确定m个候选数据,若m个数据的运算属性不相同,则通过目标线程将读取到的m个数据作为m个候选数据;若通过目标线程从候选数组中读取到的数据的个数n不足m个,则根据读取到的n个数据确定n个候选数据;
根据各目标线程得到的候选数据,得到原始数组的最终运算结果。
在一个实施例中,循环运算模块1001具体用于:按照运算属性对原始数组进行排序;基于并发的多个目标线程针对排序后的原始数组进行循环运算处理。
关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据处理方法。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种数据处理方法,其特征在于,所述方法包括:
基于并发的多个目标线程针对原始数组进行循环运算处理,直至连续n次运算处理得到的目标数组满足预设条件为止,其中,所述预设条件为所述目标数组中任意两个数据的运算属性不相同;
其中,第i次运算处理,包括:对于各所述目标线程,通过所述目标线程从候选数组中读取与所述目标线程对应的m个数据,其中,以所述候选数组中排列在第一个位置的数据为起始;若所述m个数据的运算属性相同,则通过所述目标线程对所述m个数据进行运算,并根据运算结果确定m个候选数据,若所述m个数据的运算属性不相同,则通过所述目标线程将读取到的m个数据作为m个候选数据;根据各所述目标线程得到的候选数据,确定第i次运算处理得到的目标数组,其中,所述候选数组在i=1时为所述原始数组,在i大于1时为第i-1次运算处理得到的目标数组,i为大于等于1的整数,n、m为大于等于2的整数,i与m的取值为负相关。
2.根据权利要求1所述的方法,其特征在于,所述根据运算结果确定m个候选数据,包括:
根据所述运算结果以及p(p<=m)个预设数据确定所述m个候选数据,所述预设数据不为所述原始数组中的数据,也不为根据所述原始数组中的数据计算得到的数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若通过所述目标线程从所述候选数组中读取到的数据的个数h不足m个,则根据读取到的h个数据确定h个候选数据,h为小于m的正整数。
4.根据权利要求1所述的方法,其特征在于,所述通过所述目标线程从候选数组中读取与所述目标线程对应的m个数据,包括:
根据所述目标线程的编号确定与所述目标线程对应的m个数据在所述候选数组中的排列位置;
根据所述排列位置从所述候选数组中读取与所述目标线程对应的m个数据。
5.根据权利要求4所述的方法,其特征在于,所述候选数组为第i-1次运算处理得到的目标数组,所述根据所述目标线程的编号确定与所述目标线程对应的m个数据在所述候选数组中的排列位置,包括:
根据所述目标线程的编号,从所述候选数组包括的非预设数据中,确定与所述目标线程对应的m个数据在所述候选数组中的排列位置,其中,所述预设数据不为所述原始数组中的数据,也不为根据所述原始数组中的数据计算得到的数据。
6.根据权利要求1所述的方法,其特征在于,所述根据各所述目标线程得到的候选数据,确定第i次运算处理得到的目标数组,包括:
根据各所述目标线程读取的m个数据在候选数组中的排列位置,确定各所述目标线程得到的候选数据在第i次运算处理得到的目标数组中的目标排列位置;
根据所述目标排列位置确定第i次运算处理得到的目标数组。
7.根据权利要求1所述的方法,其特征在于,所述预设条件还可以为运算处理得到的目标数组一致。
8.根据权利要求7所述的方法,其特征在于,所述直至连续n次运算处理得到的目标数组满足预设条件为止之后,所述方法还包括:
对于各所述目标线程,通过所述目标线程从满足所述预设条件的目标数组中读取m个数据,其中,通过所述目标线程从满足所述预设条件的目标数组中读取m个数据的策略与循环运算处理过程中读取m个数据的策略不同;
其中,通过所述目标线程从满足所述预设条件的目标数组中读取m个数据的策略包括:以所述满足所述预设条件的目标数组中排列在第二个位置的数据为起始读取与所述目标线程对应的m个数据;
若所述m个数据的运算属性相同,则通过所述目标线程对所述m个数据进行运算,并根据运算结果确定m个候选数据,若所述m个数据的运算属性不相同,则通过所述目标线程将读取到的m个数据作为m个候选数据;若通过所述目标线程从所述候选数组中读取到的数据的个数n不足m个,则根据读取到的n个数据确定n个候选数据;
根据各所述目标线程得到的候选数据,得到所述原始数组的最终运算结果。
9.根据权利要求1所述的方法,其特征在于,所述基于并发的多个目标线程针对原始数组进行循环运算处理,包括:
按照运算属性对所述原始数组进行排序;
基于并发的多个目标线程针对排序后的原始数组进行循环运算处理。
10.一种数据处理装置,其特征在于,所述装置包括:
循环运算模块,用于基于并发的多个目标线程针对原始数组进行循环运算处理,直至连续n次运算处理得到的目标数组满足预设条件为止,其中,所述预设条件为所述目标数组中任意两个数据的运算属性不相同;
其中,第i次运算处理,包括:对于各所述目标线程,通过所述目标线程从候选数组中读取与所述目标线程对应的m个数据,其中,以所述候选数组中排列在第一个位置的数据为起始;若所述m个数据的运算属性相同,则通过所述目标线程对所述m个数据进行运算,并根据运算结果确定m个候选数据,若所述m个数据的运算属性不相同,则通过所述目标线程将读取到的m个数据作为m个候选数据;根据各所述目标线程得到的候选数据,确定第i次运算处理得到的目标数组,其中,所述候选数组在i=1时为所述原始数组,在i大于1时为第i-1次运算处理得到的目标数组,i为大于等于1的整数,n、m为大于等于2的整数,i与m的取值为负相关。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至9中任一项所述的方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111012559.2A CN113778518B (zh) | 2021-08-31 | 2021-08-31 | 数据处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111012559.2A CN113778518B (zh) | 2021-08-31 | 2021-08-31 | 数据处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113778518A CN113778518A (zh) | 2021-12-10 |
CN113778518B true CN113778518B (zh) | 2024-03-26 |
Family
ID=78840404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111012559.2A Active CN113778518B (zh) | 2021-08-31 | 2021-08-31 | 数据处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113778518B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878050A (zh) * | 2023-02-23 | 2023-03-31 | 摩尔线程智能科技(北京)有限责任公司 | 基于多路输入的数据处理装置、方法和计算机设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103713884A (zh) * | 2013-12-18 | 2014-04-09 | 珠海金山网络游戏科技有限公司 | 多线程通过数组处理数据的方法、系统及多线程处理器 |
CN107704266A (zh) * | 2017-08-28 | 2018-02-16 | 电子科技大学 | 一种应用于解决粒子模拟并行数据竞争的归约方法 |
CN109062636A (zh) * | 2018-07-20 | 2018-12-21 | 浪潮(北京)电子信息产业有限公司 | 一种数据处理方法、装置、设备及介质 |
CN109144731A (zh) * | 2018-08-31 | 2019-01-04 | 中国平安人寿保险股份有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN109522126A (zh) * | 2018-11-19 | 2019-03-26 | 中国人民解放军战略支援部队信息工程大学 | 面向共享内存多核结构中线程级并行的数据优化方法及装置 |
CN110765162A (zh) * | 2019-09-06 | 2020-02-07 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 数据比对方法、装置、计算机设备和存储介质 |
CN111488177A (zh) * | 2020-04-14 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111815359A (zh) * | 2020-07-09 | 2020-10-23 | 北京字节跳动网络技术有限公司 | 一种目标人群确定方法、装置、电子设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10713746B2 (en) * | 2018-01-29 | 2020-07-14 | Microsoft Technology Licensing, Llc | FIFO queue, memory resource, and task management for graphics processing |
CN108733344B (zh) * | 2018-05-28 | 2023-07-04 | 深圳市道通智能航空技术股份有限公司 | 数据读写方法、装置以及环形队列 |
-
2021
- 2021-08-31 CN CN202111012559.2A patent/CN113778518B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103713884A (zh) * | 2013-12-18 | 2014-04-09 | 珠海金山网络游戏科技有限公司 | 多线程通过数组处理数据的方法、系统及多线程处理器 |
CN107704266A (zh) * | 2017-08-28 | 2018-02-16 | 电子科技大学 | 一种应用于解决粒子模拟并行数据竞争的归约方法 |
CN109062636A (zh) * | 2018-07-20 | 2018-12-21 | 浪潮(北京)电子信息产业有限公司 | 一种数据处理方法、装置、设备及介质 |
CN109144731A (zh) * | 2018-08-31 | 2019-01-04 | 中国平安人寿保险股份有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN109522126A (zh) * | 2018-11-19 | 2019-03-26 | 中国人民解放军战略支援部队信息工程大学 | 面向共享内存多核结构中线程级并行的数据优化方法及装置 |
CN110765162A (zh) * | 2019-09-06 | 2020-02-07 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 数据比对方法、装置、计算机设备和存储介质 |
CN111488177A (zh) * | 2020-04-14 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN111815359A (zh) * | 2020-07-09 | 2020-10-23 | 北京字节跳动网络技术有限公司 | 一种目标人群确定方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113778518A (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kiveris et al. | Connected components in mapreduce and beyond | |
CN111062467B (zh) | 一种应用于ai异构编译器的自动切分神经网络子图方法 | |
JP2010033561A (ja) | マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 | |
US11748164B2 (en) | FAAS distributed computing method and apparatus | |
CN111858651A (zh) | 一种数据处理方法以及数据处理装置 | |
CN113778518B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115390788A (zh) | 基于fpga的图卷积神经网络稀疏矩阵乘法分配系统 | |
CN111045825A (zh) | 批处理性能优化方法、装置、计算机设备及存储介质 | |
CN109844774B (zh) | 一种并行反卷积计算方法、单引擎计算方法及相关产品 | |
CN110609924A (zh) | 基于图数据的全量关系计算方法、装置、设备及存储介质 | |
CN111522873B (zh) | 区块生成方法、装置、计算机设备和存储介质 | |
JP2018132948A (ja) | 読込プログラム、読込方法および情報処理装置 | |
US7673182B2 (en) | Method and apparatus for obtaining stack traceback data for multiple computing nodes of a massively parallel computer system | |
US11615094B2 (en) | System and method for joining skewed datasets in a distributed computing environment | |
CN112100446B (zh) | 搜索方法、可读存储介质和电子设备 | |
CN109284260B (zh) | 大数据文件读取方法、装置、计算机设备及存储介质 | |
CN109388428B (zh) | 图层遍历方法、控制装置及数据处理系统 | |
CN111813761A (zh) | 一种数据库管理方法、装置以及计算机存储介质 | |
CN110704693A (zh) | 分布式图计算系统和分布式图计算方法 | |
CN113127694A (zh) | 一种数据存储方法、装置、电子设备及存储介质 | |
US20240087076A1 (en) | Graph data calculation method and apparatus | |
CN114238258B (zh) | 数据库数据处理方法、装置、计算机设备、存储介质 | |
CN112579299B (zh) | 资源调度方法、电子设备及存储介质 | |
CN115220657A (zh) | 层级数据关系的获取方法、装置及其计算机设备 | |
US20230128180A1 (en) | Programmable access engine architecture for graph neural network and graph application |
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 |