CN113469215B - 数据处理方法、装置、电子设备及存储介质 - Google Patents
数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113469215B CN113469215B CN202110595350.7A CN202110595350A CN113469215B CN 113469215 B CN113469215 B CN 113469215B CN 202110595350 A CN202110595350 A CN 202110595350A CN 113469215 B CN113469215 B CN 113469215B
- Authority
- CN
- China
- Prior art keywords
- target
- data
- subdata
- array
- memory area
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/211—Selection of the most significant subset of features
- G06F18/2113—Selection of the most significant subset of features by ranking or filtering the set of features, e.g. using a measure of variance or of feature cross-correlation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
Landscapes
- Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本公开提供了一种数据处理方法、装置、电子设备及存储介质,属于网络技术领域。本公开实施例中,可以以待处理数据的第一子数据作为目标子数据,并根据各目标子数据表征的数值以及各预设类别表征的数值,确定各目标子数据所属的预设类别;不同的预设类别表征的数值之间依次递增,第一子数据包括待处理数据中位数最高的前t位,按照指定的数值变化顺序,依次确定前X个预设类别中目标子数据的总数量D,在D等于预设数值K的情况下,将第一目标数据写入GPU的共享内存区,并通过共享内存区将第一目标数据输出至全局内存区,第一目标数据为前X个预设类别中目标子数据对应的待处理数据。这样,一定程度上可以提高选择效率。
Description
技术领域
本公开属于网络技术领域,特别是涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
随着网络技术的不断发展,经常需要从待处理数据中选择出最大或者最小的前K个数据,以便于基于前K个数据确定向用户返回的网络对象。其中,待处理数据可以是网络对象的相关信息,网络对象可以为广告、视频、音频,等等。示例的,在广告推荐场景中,一般在计算出待推荐用户与各备选广告之间的匹配度之后,需要从匹配度中选择最大的前K个匹配度,以将这K个匹配度对应的广告返回给待推荐用户。
相关技术中,往往基于GPU对待处理数据依次进行完整的排序,并根据排序结果,选出前K个待处理数据,并直接基于GPU中配置的寄存器输出前K个待处理数据。这种方式中,对所有待处理数据进行完整的排序,效率较低。
发明内容
为克服相关技术中存在的问题,本公开提供一种数据处理方法、装置、电子设备及存储介质。
依据本公开的第一方面,提供了一种数据处理方法,应用于配置有图像处理器GPU的电子设备,该方法包括:
以待处理数据的第一子数据作为目标子数据,并根据各所述目标子数据表征的数值以及各预设类别表征的数值,确定各所述目标子数据所属的预设类别;不同的所述预设类别表征的数值之间依次递增,所述第一子数据包括所述待处理数据中位数最高的前t位;
按照指定的数值变化顺序,依次确定前X个预设类别中目标子数据的总数量D;
在所述D等于预设数值K的情况下,将第一目标数据写入所述GPU的共享内存区,并通过所述共享内存区将所述第一目标数据输出至全局内存区;所述第一目标数据为所述前X个预设类别中目标子数据对应的待处理数据。
可选的,所述方法还包括:
在所述D小于所述K且E大于所述K的情况下,将所述第一目标数据写入所述共享内存区,并通过所述共享内存区将所述第一目标数据输出至所述全局内存区,以及,将第二目标数据中的第二子数据作为下一轮处理的目标子数据,将所述K更新为K-D,以继续选择K-D个待处理数据;
其中,所述第二目标数据为第X+1个预设类别中目标子数据对应的待处理数据,所述E为前X+1个预设类别总共包含的目标子数据的数量,所述第二子数据包括除历史轮中的目标子数据之外的位数最高的前t位。
可选的,所述方法还包括:
将所述共享内存区中创建的第一数组中各元素的值更新为目标值;所述第一数组中的一个元素对应一个预设类别,所述目标值为所述元素对应的预设类别包含的目标子数据的数量;
相应地,所述依次确定前X个预设类别中目标子数据的总数量D,包括:
依次累加所述第一数组中各元素的值;
若在累加第M个元素的值之后,当前累加值等于所述K,则将前M个元素的累加值确定为所述D;
或者,若在累加第N个元素的值之后,所述累加值小于所述K,且在累加第N+1个元素的值之后,所述累加值大于所述K,则将前N个元素的累加值确定为所述D。
可选的,所述将所述共享内存区中创建的第一数组中各元素的值更新为目标值,包括:
遍历目标数值序列中的成员,并为所述成员所对应的元素的值,累加所述的数量;
其中,所述目标数值序列是以所述目标子数据的数值作为成员组成的。
可选的,所述将第一目标数据写入基于所述GPU的共享内存区,并通过所述共享内存区输出将所述第一目标数据输出至全局内存区,包括:
将各所述第一目标数据连续写入所述共享内存区中的第二数组;
将所述第二数组中存储的第一目标数据,输出至全局内存区中的第一区域;所述第一区域用于存储被选中的待处理数据。
可选的,所述将各所述第一目标数据连续写入所述共享内存区中的第二数组,包括:
基于所述GPU中的处理线程,确定各所述第一目标数据的第一数组下标;所述第一数组下标用于指示所述第一目标数据在第二数组中的位置,各所述第一数组下标指示的位置连续变化;
基于各所述第一目标数据的第一数组下标,将所述第一目标数据写入所述第二数组。
可选的,所述将第二目标数据的第二子数据作为下一轮处理的目标子数据,包括:
将各所述第二目标数据的第二子数据,连续写入所述共享内存区中的第三数组;
将所述第三数组中存储的第二子数据,输出至所述全局内存区中的第二区域,以作为所述下一轮处理的目标子数据。
可选的,所述将各所述第二目标数据的第二子数据,连续写入所述共享内存区中的第三数组,包括:
基于所述GPU中的处理线程,确定所述第二目标数据对应的第二数组下标;所述第二数组下标用于指示所述第二目标数据在所述共享内存区的第三数组中对应的位置,各所述第二数组下标指示的位置连续变化;
基于各所述第二目标数据的第二数组下标,将所述第二目标数据的第二子数据写入所述第三数组。
可选的,所述预设类别的数量与t位数据所能表征的数值的数量相匹配;所述根据各所述目标子数据表征的数值以及各预设类别表征的数值,确定各所述目标子数据所属的预设类别,包括:
基于所述GPU中的处理线程,将属于所述处理线程处理的目标子数据转换为符合目标进制的数值,以确定所述目标子数据表征的数值;所述目标进制为所述预设类别表征的数值所符合的进制;
将表征的数值与所述目标子数据表征的数值相同的预设类别,确定为所述目标子数据所属的预设类别。
可选的,所述以待处理数据的第一子数据作为目标子数据,包括:
基于所述GPU中的处理线程,将所述GPU的全局内存区中存储的所述第一子数据,读入所述处理线程对应的寄存器中,以作为所述目标子数据;
其中,目标处理线程在所述全局内存区中所访问的地址相邻,所述目标处理线程为位于同一线程块内的处理线程。
依据本公开的第二方面,提供了一种数据处理装置,应用于配置有图像处理器GPU的电子设备,该装置包括:
第一确定模块,被配置为以待处理数据的第一子数据作为目标子数据,并根据各所述目标子数据表征的数值以及各预设类别表征的数值,确定各所述目标子数据所属的预设类别;不同的所述预设类别表征的数值之间依次递增,所述第一子数据包括所述待处理数据中位数最高的前t位;
第二确定模块,被配置为按照指定的数值变化顺序,依次确定前X个预设类别中目标子数据的总数量D;
第一输出模块,被配置为在所述D等于预设数值K的情况下,将第一目标数据写入所述GPU的共享内存区,并通过所述共享内存区将所述第一目标数据输出至全局内存区;所述第一目标数据为所述前X个预设类别中目标子数据对应的待处理数据。
可选的,所述装置还包括:
第二输出模块,被配置为在所述D小于所述K且E大于所述K的情况下,将所述第一目标数据写入所述共享内存区,并通过所述共享内存区将所述第一目标数据输出至所述全局内存区,以及,将第二目标数据中的第二子数据作为下一轮处理的目标子数据,将所述K更新为K-D,以继续选择K-D个待处理数据;
其中,所述第二目标数据为第X+1个预设类别中目标子数据对应的待处理数据,所述E为前X+1个预设类别总共包含的目标子数据的数量,所述第二子数据包括除历史轮中的目标子数据之外的位数最高的前t位。
可选的,所述装置还包括:
更新模块,被配置为将所述共享内存区中创建的第一数组中各元素的值更新为目标值;所述第一数组中的一个元素对应一个预设类别,所述目标值为所述元素对应的预设类别包含的目标子数据的数量;
相应地,所述第二确定模块,具体被配置为:
依次累加所述第一数组中各元素的值;
若在累加第M个元素的值之后,当前累加值等于所述K,则将前M个元素的累加值确定为所述D;
或者,若在累加第N个元素的值之后,所述累加值小于所述K,且在累加第N+1个元素的值之后,所述累加值大于所述K,则将前N个元素的累加值确定为所述D。
可选的,所述更新模块,具体被配置为:
遍历目标数值序列中的成员,并为所述成员所对应的元素的值,累加所述的数量;
其中,所述目标数值序列是以所述目标子数据的数值作为成员组成的。
可选的,所述第一输出模块,具体被配置为:
将各所述第一目标数据连续写入所述共享内存区中的第二数组;所述第二目标数据为前X个预设类别中目标子数据对应的待处理数据;
将所述第二数组中存储的第一目标数据,输出至全局内存区中的第一区域;所述第一区域用于存储被选中的待处理数据。
可选的,所述第一输出模块,具体还被配置为:
基于所述GPU中的处理线程,确定各所述第一目标数据的第一数组下标;所述第一数组下标用于指示所述第一目标数据在第二数组中的位置,各所述第一数组下标指示的位置连续变化;
基于各所述第一目标数据的第一数组下标,将所述第一目标数据写入所述第二数组。
可选的,所述第二输出模块,具体被配置为:
将各所述第二目标数据的第二子数据,连续写入所述共享内存区中的第三数组;
将所述第三数组中存储的第二子数据,输出至所述全局内存区中的第二区域,以作为所述下一轮处理的目标子数据。
可选的,所述第二输出模块,具体还被配置为:
基于所述GPU中的处理线程,确定所述第二目标数据对应的第二数组下标;所述第二数组下标用于指示所述第二目标数据在所述共享内存区的第三数组中对应的位置,各所述第二数组下标指示的位置连续变化;
基于各所述第二目标数据的第二数组下标,将所述第二目标数据的第二子数据写入所述第三数组。
可选的,所述预设类别的数量与t位数据所能表征的数值的数量相匹配;所述第一确定模块,具体被配置为:
基于所述GPU中的处理线程,将属于所述处理线程处理的目标子数据转换为符合目标进制的数值,以确定所述目标子数据表征的数值;所述目标进制为所述预设类别表征的数值所符合的进制;
将表征的数值与所述目标子数据表征的数值相同的预设类别,确定为所述目标子数据所属的预设类别。
可选的,所述第一确定模块,具体还被配置为:
基于所述GPU中的处理线程,将所述GPU的全局内存区中存储的所述第一子数据,读入所述处理线程对应的寄存器中,以作为所述目标子数据;
其中,目标处理线程在所述全局内存区中所访问的地址相邻,所述目标处理线程为位于同一线程块内的处理线程。
依据本公开的第三方面,提供了一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如第一方面中任一项所述的数据处理方法。
依据本公开的第四方面,提供了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备执行如第一方面中任一项所述的数据处理方法。
依据本公开的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括可读性程序指令,所述可读性程序指令由电子设备的处理器执行时,使得所述电子设备执行如第一方面中任一项所述的数据处理方法。
本公开相比于相关技术,具有如下的优点和积极效果:
本公开实施例提供的数据处理方法,可以以待处理数据的第一子数据作为目标子数据,并根据各目标子数据表征的数值以及各预设类别表征的数值,确定各目标子数据所属的预设类别;不同的预设类别表征的数值之间依次递增,第一子数据包括待处理数据中位数最高的前t位,按照指定的数值变化顺序,依次确定前X个预设类别中目标子数据的总数量D,在D等于预设数值K的情况下,将第一目标数据写入GPU的共享内存区,并通过共享内存区将第一目标数据输出至全局内存区,第一目标数据为前X个预设类别中目标子数据对应的待处理数据。这样,由于无需对所有的待处理数据逐个进行比较,以进行完整的排序,即,无需确定出各个待处理数据之间的完整大小顺序,仅根据待处理数据的目标子数据进行分类,即可实现选择最大/最小的K个待处理数据,进而一定程度上可以提高选择效率。
同时,直接基于寄存器输出的方式中,会受限于寄存器数量,最大仅支持选出不超过寄存器数量的待处理数据,往往无法满足更多的需求。而本公开实施例中,基于共享内存区即可实现输出待处理数据,因此,一定程度上可以降低寄存器所带来的限制,进而一定程度上可以支持更大的K,满足更多样的选择需求。
上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本公开的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本公开实施例提供的一种数据处理方法的步骤流程图;
图2是本公开实施例提供的一种数据处理装置的框图;
图3是根据一示例性实施例示出的一种用于数据处理的装置的框图;
图4是根据一示例性实施例示出的一种用于数据处理的装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是本公开实施例提供的一种数据处理方法的步骤流程图,该方法可以应用于配置有图像处理器(Graphics Processing Unit,GPU)的电子设备,如图1所示,该方法可以包括:
步骤101、以待处理数据的第一子数据作为目标子数据,并根据各所述目标子数据表征的数值以及各预设类别表征的数值,确定各所述目标子数据所属的预设类别;不同的所述预设类别表征的数值之间依次递增,所述第一子数据包括所述待处理数据中位数最高的前t位。
本公开实施例中,待处理数据的具体种类以及数量可以是根据实际需求设置的,示例的,待处理数据可以为匹配度、偏离程度、相似度,待处理数据的数量可以为100000,等等。本公开实施例中的位可以指的是比特位(bit),第一子数据可以为待处理数据的部分数据,具体可以为待处理数据中位数最高的前t位,即,第一子数据为待处理数据的最左边比特位开始的高t位。相应地,目标子数据表征的数值可以为高t位表征的数值。其中,t可以是根据实际需求设置的。以待处理数据为16位的数据为例,可以将t设置为8,即,以待处理数据的高8位作为第一子数据。这样,以待处理数据的高t位作为第一子数据,先基于第一子数据进行选择,一定程度上可以在降低计算量的同时,确保后续基于第一子数据选择出的待处理数据的准确性。
进一步地,预设类别可以是根据实际需求设置的,预设类别可以用于表征不同的数值,不同的预设类别表征的数值之间可以依次递增,即,不同预设类别表征的数值可以不同。具体的,各个预设类别表征的数值可以是预先为预设类别设置的,示例的,预设类别表征的数值可以为0,1,2,3…,255。一个预设类别也可以表征一个数值范围内的多个数值。在这种情况下,这多个数值之间也可以是依次递增的。例如,预设类别1可以表征数值:0,1,2,预设类别2可以表征数值:3,4,5,预设类别3可以表征数值:6,7,8。目标子数据所属的预设类别,可以是表征的数值中存在与目标子数据表征的数值相同的预设类别,即,本步骤中可以按照各目标子数据表征的数值,将目标子数据划分至对应的预设类别中,不同待处理数据中的高t位如果相同,那么这些待处理数据的目标子数据可以被划分至同一预设类别。
步骤102、按照指定的数值变化顺序,依次确定前X个预设类别中目标子数据的总数量D。
本公开实施例中,数值变化顺序可以是根据实际需求预先指定的,示例的,数值变化顺序可以包括数值由大至小和/或数值由小至大的顺序。X的具体值可以由实际情况决定。不同情况下,各个目标子数据的数值可能不同,相应地,分类之后各预设种类中包含的目标子数据的数量不同,进而可以使得X的具体值不同。D的具体值可以是按照由大至小或由小至大的顺序对前X个预设类别中包含的目标子数据的数量进行累加得到的。示例的,假设X为3,按照由大至小的顺序,可以将最大的前3个预设类别中包含的目标子数据的数量进行加和,得到D。
进一步地,在确定D时,具体按照预设类别表征的数值由大至小的顺序进行确定和/或按照由小至大的顺序进行确定,可以根据实际需求选择,本公开实施例中对此不作限定。例如,可以在所需选择的K个待处理数据为最大的K个待处理数据的情况下,可以将由大至小的顺序作为指定的数值变化顺序,按照由大至小的顺序进行确定,在所需选择的K个待处理数据为最小的K个待处理数据的情况下,可以将由小至大的顺序作为指定的数值变化顺序,按照由小至大的顺序进行确定。在同时需要选择最小的K个待处理数据以及最大的K个待处理数据的情况下,可以将由大至小和由小至大的顺序作为指定的数值变化顺序,按照由大至小和由小至大的顺序分别确定D。需要说明的是,在同时按照由大至小和由小至大的顺序确定D的情况下,可以分别得到按照由大至小顺序确定出的D以及按照由小至大顺序确定出的D,相应地,针对任一D,可以按照后续步骤进行处理。
步骤103、在所述D等于预设数值K的情况下,将第一目标数据写入所述GPU的共享内存区,并通过所述共享内存区将所述第一目标数据输出至全局内存区;所述第一目标数据为所述前X个预设类别中目标子数据对应的待处理数据。
本公开实施例中,预设数值K可以是根据实际需求设置的,示例的,K可以为3000,5000,等等。如果D等于K,则可以说明前X个预设类别中包含的目标子数据的数量满足选择需求,因此,可以直接输出第一目标数据,以实现从待处理数据中选出最大/最小的K个待处理数据。
进一步地,本公开实施例中的涉及的各项操作可以是基于GPU中的处理线程实现。示例的,处理线程可以通过访问共享内存区,以实现将第一目标数据写入共享内存区,并通过共享内存区输出第一目标数据。具体的,可以是将第一目标数据输出至全局内存区,以方便存储以及便于后续环节使用。其中,共享内存区可以位于GPU上,实际应用场景中处理线程访问共享内存区的速度往往较快,因此,基于共享内存区输出选择的待处理数据,一定程度上可以确保输出效率。同时,受限于硬件成本,GPU中的寄存器数量往往有限,而共享内存区可容纳的元素数量往往更多,因此,本公开实施例中,基于共享内存区输出选择的待处理数据,一定程度上可以支持更大的K,进而可以满足更多的需求。
综上所述,本公开实施例提供的数据处理方法,可以以待处理数据的第一子数据作为目标子数据,并根据各目标子数据表征的数值以及各预设类别表征的数值,确定各目标子数据所属的预设类别;不同的预设类别表征的数值之间依次递增,第一子数据包括待处理数据中位数最高的前t位,按照指定的数值变化顺序,依次确定前X个预设类别中目标子数据的总数量D,在D等于预设数值K的情况下,将第一目标数据写入GPU的共享内存区,并通过共享内存区将第一目标数据输出至全局内存区,第一目标数据为前X个预设类别中目标子数据对应的待处理数据。这样,由于无需对所有的待处理数据逐个进行比较,以进行完整的排序,即,无需确定出各个待处理数据之间的完整大小顺序,仅根据待处理数据的目标子数据进行分类,即可实现选择最大/最小的K个待处理数据,进而一定程度上可以提高选择效率。
同时,直接基于寄存器输出的方式中,会受限于寄存器数量,最大仅支持选出不超过寄存器数量的待处理数据,往往无法满足更多的需求。而本公开实施例中,基于共享内存区即可实现输出待处理数据,因此,一定程度上可以降低寄存器所带来的限制,进而一定程度上可以支持更大的K,满足更多样的选择需求。
可选的,本公开实施例中还可以在确定D之后执行下述步骤:
步骤S21、在所述D小于所述K且E大于所述K的情况下,将所述第一目标数据写入所述共享内存区,并通过所述共享内存区将所述第一目标数据输出至所述全局内存区,以及,将第二目标数据中的第二子数据作为下一轮处理的目标子数据,将所述K更新为K-D,以继续选择K-D个待处理数据;所述第二目标数据为第X+1个预设类别中目标子数据对应的待处理数据,所述E为前X+1个预设类别总共包含的目标子数据的数量,所述第二子数据包括除历史轮中的目标子数据之外的位数最高的前t位。
本公开实施例中,如果D小于K,则可以说明前X个预设类别中目前包含的目标子数据对应待处理数据的数量不足。E大于K,则可以说明前X+1个预设类别中目前包含的目标子数据对应待处理数据的数量刚好超过K个,即,第X+1个预设类别中各目标子数据所对应的待处理数据中包含前K-D个待处理数据。因此可以先输出前X个预设类别中包含的各目标子数据所对应的待处理数据,并继续进行选择。
进一步地,第二子数据可以包括除历史轮中的目标子数据之外的位数最高的前t位。示例的,本公开实施例中,可以按照t个比特位对待处理进行切分,得到由t个比特位组成的子数据。示例的,在待处理数据为16位的半精度浮点数的情况下,可以将除第一轮中高8位组成的目标子数据之外,剩余低8位作为第二子数据,以低8位作为第二轮处理中的目标子数据,参与第二轮的选择。在待处理数据为32位的数据的情况下,可以将第9位至第16位组成的子数据作为第二子数据,以第9位至第16位作为第二轮处理中的目标子数据,参与第二轮的选择。相应地,此时K的具体值等于第一轮中的K减去第一轮中选出的待处理数据的数量D。进一步地,如果第二轮中选择出的待处理数据的数量依旧不足当前的K,即,目前选择出的待处理数据的总数量小于第一轮中的K,则可以将除第一轮以及第二轮中的目标子数据之外的位数最高的前t位,即,将第17位至第24位作为第三轮处理中的目标子数据,参与第三轮的选择。相应地,此时K的具体值等于第二轮中的K减去第二轮中选出的待处理数据的数量D,即,等于第一轮中的K减去第一轮中选出的待处理数据的数量D以及第二轮中选出的待处理数据的数量D。每轮处理8个比特位的子数据,在待处理数据为Q位的数据的情况下,最多需要Q/8轮即可完成选择。
进一步地,将第二目标数据的第二子数据作为目标子数据,以继续选择K-D个待处理数据时,可以按照前述对目标子数据的处理方式进行处理,本公开实施例在此不做赘述。假设K为100,X为10,前10个预设类别中包含的目标子数据对应待处理数据的数量为95,前11个预设类别中包含的目标子数据对应待处理数据的数量为105,那么可以继续从第11个预设类别中包含的目标子数据对应待处理数据中,选出最大/最小的5个待处理数据。
本公开实施例中,通过在D小于K且E大于K的情况下,即,在前X个预设类别总共包含的目标子数据的数量不足K,前X+1个预设类别总共包含的目标子数据的数量刚好超过K的情况下,先将前X个预设类别中包含的各目标子数据所对应的待处理数据输出。然后,基于第X+1个预设类别中各目标子数据所对应的待处理数据,继续进行下一轮处理,以选出缺少的K-D个待处理数据。这样,通过后续轮的处理,可以确保最终能够选择出足量的K个待处理数据,确保选择效果。同时,仅以第X+1个预设类别中各目标子数据所对应的待处理数据作为后续的选择对象,可以在为后续处理提供足够的选择对象的同时,较大程度的缩小后续的选择范围,减少后续处理的处理量,进而可以确保后续的处理效率。示例的,假设有256个预设类别,在数据均衡分布的情况下,进入下一轮处理的可以仅为1/256的数据,进而可以平衡对共享内存与寄存器的需求以及数据处理的迭代次数,进而确保后续的处理效率。
可选的,本公开实施例中,预设类别的数量可以与t位数据所能表征的数值的数量相匹配。示例的,在t=8的情况下,8比特位的数据可以表征的数值为2^8=256,因此预设类别的数量可以为256,预设类别表征的数值可以分别为0,1,2,…,255。相应地,上述步骤101中根据各所述目标子数据表征的数值以及各预设类别表征的数值,确定各所述目标子数据所属的预设类别的操作,可以具体包括:
步骤S31、基于所述GPU中的处理线程,将属于所述处理线程处理的目标子数据转换为符合目标进制的数值,以确定所述目标子数据表征的数值;所述目标进制为所述预设类别表征的数值所符合的进制。
本公开实施例中,目标子数据所符合的进制可以为二进制,预设类别表征的数值所符合的进制可以为十进制。由于十进制包含的位数往往较少,因此先将目标子数据转换为符合目标进制的数值,一定程度上可以方便后续进行数值比对。进一步地,GPU中的处理线程可以为多个,多个处理线程可以并行工作。属于各处理线程处理的目标子数据可以是预先分配的,属于某个处理线程处理的目标子数据可以组成一个子数字序列,处理线程进行处理时,可以将子数字序列读到寄存器中进行处理。这样,一定程度上可以确保处理效率。进一步地,在将目标子数据转换为符合目标进制的数值时,可以通过对寄存器中子数字序列中各个目标子数据进行掩码处理,以实现转换。其中,转换得到的数值也可以放在寄存器中,以方便后续使用。
步骤S32、将表征的数值与所述目标子数据表征的数值相同的预设类别,确定为所述目标子数据所属的预设类别。
本步骤中,如果目标子数据表征的数值与某个预设类别所表征的数值相同,则可以确定该目标子数据属于该预设类别,可以将该目标子数据划分至该预设类别。其中,本公开实施例中将目标子数据分类至不同预设类别中的操作,可以相当于对目标子数据进行“分桶操作”。通过进行分类,可以实现以非比较的方式选出前K个待处理数据。
本公开实施例中,通过设置与目标子数据可能表征的各个数值对应的多个预设类别,并基于处理线程先将属于该处理线程处理的目标子数据转换为符合目标进制的数值,然后通过数值对比即可确定出目标子数据所属的预设类别,进而一定程度上可以提高类别确定效率。同时,由于GPU往往具备大量的处理核且允许进行高度并行的计算,因此,为GPU中的各处理线程分配属于各处理线程处理的目标子数据,并基于处理线程进行处理,一定程度上可以确保处理效果,降低处理延迟。
可选的,本公开实施例中还可以在确定D之前,执行下述步骤:
步骤S41、将所述共享内存区中创建的第一数组中各元素的值更新为目标值;所述第一数组中的一个元素对应一个预设类别,所述目标值为所述元素对应的预设类别包含的目标子数据的数量。
本步骤中第一数组可以是预先创建的。示例的,可以在初始化过程中,在处理线程的线程块所对应的共享内存区中创建第一数组。示例的,可以初始化一个包含256个元素的数组。需要说明的是,进行初始化时,可以根据共享内存中配置的存储体(bank)的数量,确定线程块中参与初始化的处理线程的数量。示例的,参与初始化的处理线程的数量可以与bank的数量相同,例如,两者均为32。这样,可以使得一个处理线程对应一个bank,进而避免bank冲突。
进一步地,第一数组中元素对应的预设类别可以依次设置。示例的,第一个元素可以对应表征数值为0的预设类别,第二个元素可以对应表征数值为1的预设类别,第三个元素可以对应表征数值为2的预设类别,…,以此类推,最后一个元素可以对应表征数值为255的预设类别。这样,通过依次设置可以方便后续按照预设类别表征的由大至小或由小至大的顺序进行统计。具体的,确定各预设类别包含的目标子数据的数量的过程,可以相当于进行全局直方图统计操作。
相应地,上述依次确定前X个预设类别中目标子数据的总数量D的操作,可以包括:
步骤S51、依次累加所述第一数组中各元素的值。
示例的,在按照由大至小的顺序进行确定的情况下,可以从最后一个元素开始,依次累计元素的值。示例的,可以先为最后一个元素的值累加倒数第二个元素的值,得到累加值,然后继续累加倒数第三个元素的值,得到新的累加值,一直累加到满足停止条件为止。相应地,在按照由小至大的顺序进行确定的情况下,可以从第一个元素开始,依次累计元素的值。示例的,可以先为第一个元素的值累加第二个元素的值,得到累加值,然后继续累加第三个元素的值,得到新的累加值,一直累加到满足停止条件为止。
步骤S52、若在累加第M个元素的值之后,当前累加值等于所述K,则将前M个元素的累加值确定为所述D;或者,若在累加第N个元素的值之后,所述累加值小于所述K,且在累加第N+1个元素的值之后,所述累加值大于所述K,则将前N个元素的累加值确定为所述D。
本步骤中,如果在累加第M个元素的值之后当前累加值等于K,则可以确定M为X,相应地,可以将前M个元素的累加值确定为D。其中,前M个元素的累加值可以是对前M个元素的值进行累加得到的。如果在累加第N个元素的值之后累加值小于K,而且在累加第N+1个元素的值之后累加值大于K,则可以确定N为X,相应地,可以将前N个元素的累加值确定为D。其中,前N个元素的累加值可以是对前N个元素的值进行累加得到的。
本公开实施例中,通过将共享内存区中创建的第一数组中各元素的值,更新为元素对应的预设类别所包含的目标子数据的数量,在确定D的过程中,通过对第一数组中元素的值进行累加,即可实现确定D。这样,一定程度上可以提高操作的便捷度,提高统计效率。同时,以共享内存区中的第一数组保持个预设类别所包含的目标子数据的数量,一定程度上可以确保在预设类别较多的情况下,能够完整的保持各个预设类别中包含的目标子数据的数量,进而确保所确定的D的准确性。
可选的,将第一数组中各元素的值更新为目标值时,可以遍历目标数值序列中的成员,并为所述成员所对应的元素的值,累加所述的数量。其中,目标数值序列是以目标子数据的数值作为成员组成的。成员所对应的元素可以为该成员所属的预设类别对应的元素,具体实施时,可以遍历扫描目标数值序列中的各个成员,在每扫描到1个成员时,为该成员所属的预设类别对应的元素的值加1。
本公开实施例中,通过遍历目标数值序列中的成员,并为遍历到的成员所对应的元素的值,累加所述遍历到的成员的数量。这样,一定程度上可以降低遗漏的风险,进而确保第一数组中元素的值的准确性。
需要说明的是,本公开实施例中,也可以先将检测是否扫描到连续的相同成员,如果存在,则可以直接为该成员所属的预设类别对应的元素的值加P。其中,P为连续的相同成员的数量。反之,如果不存在,则可以为扫描到的不连续的成员对应的元素的值加1。这样,可以减少对共享内存的事务操作的次数。
可选的,上述将第一目标数据写入基于所述GPU的共享内存区,并通过所述共享内存区输出将所述第一目标数据输出至全局内存区的操作,可以包括:
步骤S61、将各所述第一目标数据连续写入所述共享内存区中的第二数组。
本步骤中,第二数组可以是预先创建的,第二数组可容纳的元素数量可以不小于K。目标子数据对应的待处理数据可以是包含该目标子数据的完整数据。以目标子数据为高8位数据为例,目标子数据对应的待处理数据可以是包含该高8位数据以及剩余位数据的完整数据。具体的,可以基于各处理线程将属于该处理线程处理的待处理数据读入寄存器,然后扫描待处理数据,以确定出前X个预设类别中目标子数据对应的待处理数据。示例的,在选择最大的K个待处理数据时,可以以第X+1个预设类别表征的数值作为阈值,将数值大于阈值的待处理数据作为第一目标数据。在选择最小的K个待处理数据时,可以以第X+1个预设类别表征的数值作为阈值,将数值小于阈值的待处理数据作为第一目标数据。进一步地,可以对前X个预设类别中目标子数据对应的待处理数据进行标记(例如,使用布尔型寄存器数组进行标记),以便于执行写入操作时,可以便捷的确定出第一目标数据。进一步地,可以将第二数组作为一个缓冲区,将第一目标数据连续写入缓冲区。这样,通过将第一目标数据有序的汇总在一起,进而可以方便后续输出。
步骤S62、将所述第二数组中存储的第一目标数据,输出至全局内存区中的第一区域;所述第一区域用于存储被选中的待处理数据。
本步骤中,第一区域可以是根据实际需求预先划分,本公开实施例对此不作限定。具体的,可以将第二数组中的元素统一拷贝到全局内存区中的第一区域,作为输出结果。在一种实现方式中,可以直接由处理线程将各自处理的属于前X个预设类别中目标子数据对应的待处理数据,输出至全局内存区。这种方式中,可能会在向全局内存区输出时,出现写入冲突,进而会导致输出效率较低。
本公开实施例中,通过先将各第一目标数据连续写入共享内存区中的第二数组,然后,将第二数组中存储的第一目标数据,依次输出至全局内存区中的第一区域,第一区域用于存储被选中的待处理数据。这样,一定程度上可以基于连续的第二数组有序输出,避免向全局内存区输出时,出现冲突的问题,进而确保输出效率。
可选的,上述将各所述第一目标数据连续写入所述共享内存区中的第二数组的操作,可以具体包括:
步骤S71、基于所述GPU中的处理线程,确定各所述第一目标数据的第一数组下标;所述第一数组下标用于指示所述第一目标数据在第二数组中的位置,各所述第一数组下标指示的位置连续变化。
具体的,在共享内存中连续的比特位往往被分配到连续的bank中,共享内存区中地址映射的方式往往写满一行,然后再写下一行。其中,一列相当于一个bank,每个bank可以有一个编号。本公开实施例中,可以将第一目标数据作为第一数组中元素,第一数组中元素所对应的bank编号可以是元素的数组下标(即,地址偏移量)对bank的总数量进行取余所得。相应地,可以基于元素对应的bank编号以及bank的总数量,确定出第一数组下标。进一步地,在确定第一数组下标时,也可以基于预设的并行前缀和(Parallel Prefix Sum)操作,计算第一数组下标。其中,计算得到的第一数组下标可以保存于寄存器中。
步骤S72、基于各所述第一目标数据的第一数组下标,将所述第一目标数据写入所述第二数组。
示例的,可以将第一目标数据拷贝到第一数组下标指示的位置,进而形成连续的缓冲区。
本公开实施例中,通过为各第一目标数据设置连续的第一数组下标,并基于第一目标数据的第一数组下标,将第一目标数据写入第二数组。这样,一定程度上可以确保在第二数组中形成连续的数据区,进而方便后续向全局内存区进行输出。
可选的,本公开实施例将第二目标数据的第二子数据作为下一轮处理的目标子数据的步骤,可以包括:
步骤S81、将各所述第二目标数据的第二子数据,连续写入所述共享内存区中的第三数组。
本步骤中,第三数组可以是预先创建的。具体的,可以基于各处理线程将属于该处理线程处理的待处理数据读入寄存器,然后扫描待处理数据,以确定出第X+1个预设类别中目标子数据对应的待处理数据,即,确定第二目标数据。示例的,可以以第X+1个预设类别表征的数值作为阈值,将数值大等于阈值的待处理数据作为第二目标数据。进一步地,可以对第X+1个预设类别中目标子数据对应的待处理数据进行标记(例如,使用布尔型寄存器数组进行标记),以便于执行写入操作时,可以便捷的确定出第二目标数据。进一步地,可以将第三数组作为一个缓冲区,将第二目标数据中的第二子数据连续写入缓冲区。这样,通过将第二子数据有序的汇总在一起,进而可以方便后续输出。
步骤S82、将所述第三数组中存储的第二子数据,输出至所述全局内存区中的第二区域,以作为所述下一轮处理的目标子数据。
本步骤中,第二区域可以是根据实际需求预先划分,本公开实施例对此不作限定。具体的,可以将第三数组中的元素统一拷贝到全局内存区中的第二区域,作为下一轮处理的目标子数据。
本公开实施例中,通过先将各第二目标数据的第二子数据连续写入共享内存区中的第三数组,然后,将第三数组中存储的第二子数据,依次输出至全局内存区中的第二区域,作为下一轮处理的目标子数据。这样,一定程度上可以基于连续的第三数组有序输出,避免向全局内存区输出时,出现冲突的问题,进而确保输出效率。
可选的,上述将各所述第二目标数据的第二子数据连续写入第三数组的操作,可以具体包括:基于所述GPU中的处理线程,确定所述第二目标数据对应的第二数组下标;所述第二数组下标用于指示所述第二目标数据在所述共享内存区的第三数组中对应的位置,各所述第二数组下标指示的位置连续变化;基于各所述第二目标数据的第二数组下标,将所述第二目标数据的第二子数据写入所述第三数组。具体的,各操作的实现方式可以参照前述确定第一数组下标的相关内容,此处不再赘述。
本公开实施例中,通过为各第二目标数据设置连续的第二数组下标,并基于第二目标数据的第二数组下标,将的第二目标数据的第二子数据写入第三数组。这样,一定程度上可以确保在第三数组中形成连续的数据区,进而方便后续向全局内存区进行输出。
可选的,本公开实施例以待处理数据的第一子数据作为目标子数据时,可以基于所述GPU中的处理线程,将所述GPU的全局内存区中存储的所述第一子数据,读入所述处理线程对应的寄存器中,以作为所述目标子数据;其中,目标处理线程在所述全局内存区中所访问的地址相邻,所述目标处理线程为位于同一线程块内的处理线程。具体实施时,第一子数据可以是预先写入全局内存区中的,处理线程对应的寄存器也可以是预先分配的,本公开实施例对此不作限定。目标处理线程在全局内存区中所访问的地址相邻,可以指的是同一线程块内的处理线程在全局内存区中,同一时刻所访问的地址为相邻地址。其中,多个处理线程可以作为一个线程块,通过将同一线程块内的处理线程在同一时刻所访问的地址设置为相邻地址,即,对全局内存区访问时,对各处理线程的访问请求进行对齐合并处理。这样,可以更为高效的利用全局内存区的数据传输带宽,进而一定程度上可以降低请求次数。示例的,以待处理数据为16bit的数据为例,通过对齐连续访问,通过一次内存请求,处理线程即可连续访问32字节内存,进而一定程度上可以确保请求效率,使得后续可以充分发挥GPU中处理线程的并行计算能力。
本公开实施例中,在获取第一子数据作为目标子数据时,通过设置同一线程块内的处理线程在同一时刻所访问的地址为相邻地址,通过处理线程将第一子数据读入寄存器中。这样,可以更为高效的利用全局内存的数据传输带宽,进而一定程度上可以提高获取效率。
需要说明的是,在采用“warp-select”的现有实现方式中,受到寄存器的硬件约束,往往只能支持K≤1024,或者,K≤2048但是,在很多全量召回场景,往往需要支持更大的K,比如20000。在采用双调排序的现有实现方式中,随着K的增大,处理效率往往较低。而本公开实施例中,仅根据待处理数据的目标子数据进行分类,即可实现选择最大/最小的K个待处理数据,进而一定程度上可以确保选择效率。且本公开实施例中,仅在寄存器中暂存各处理线程当前处理的部分待处理数据,基于共享内存区实现输出待处理数据。因此,一定程度上优化了对GPU的共享内存和寄存器的使用方式,进而可以降低寄存器所带来的限制,支持更大的K,满足全量召回场景的需求。
图2是本公开实施例提供的一种数据处理装置的框图,该装置应用于配置有图像处理器GPU的电子设备,如图2所示,该装置20可以包括:
第一确定模块201,被配置为以待处理数据的第一子数据作为目标子数据,并根据各所述目标子数据表征的数值以及各预设类别表征的数值,确定各所述目标子数据所属的预设类别;不同的所述预设类别表征的数值之间依次递增,所述第一子数据包括所述待处理数据中位数最高的前t位;
第二确定模块202,被配置为按照指定的数值变化顺序,依次确定前X个预设类别中目标子数据的总数量D;
第一输出模块203,被配置为在所述D等于预设数值K的情况下,将第一目标数据写入所述GPU的共享内存区,并通过所述共享内存区将所述第一目标数据输出至全局内存区;所述第一目标数据为所述前X个预设类别中目标子数据对应的待处理数据。
本公开实施例提供的数据处理装置,可以以待处理数据的第一子数据作为目标子数据,并根据各目标子数据表征的数值以及各预设类别表征的数值,确定各目标子数据所属的预设类别;不同的预设类别表征的数值之间依次递增,第一子数据包括待处理数据中位数最高的前t位,按照指定的数值变化顺序,依次确定前X个预设类别中目标子数据的总数量D,在D等于预设数值K的情况下,将第一目标数据写入GPU的共享内存区,并通过共享内存区将第一目标数据输出至全局内存区,第一目标数据为前X个预设类别中目标子数据对应的待处理数据。这样,由于无需对所有的待处理数据逐个进行比较,以进行完整的排序,即,无需确定出各个待处理数据之间的完整大小顺序,仅根据待处理数据的目标子数据进行分类,即可实现选择最大/最小的K个待处理数据,进而一定程度上可以提高选择效率。
同时,直接基于寄存器输出的方式中,会受限于寄存器数量,最大仅支持选出不超过寄存器数量的待处理数据,往往无法满足更多的需求。而本公开实施例中,基于共享内存区即可实现输出待处理数据,因此,一定程度上可以降低寄存器所带来的限制,进而一定程度上可以支持更大的K,满足更多样的选择需求。
可选的,所述装置20还包括:
第二输出模块,被配置为在所述D小于所述K且E大于所述K的情况下,将所述第一目标数据写入所述共享内存区,并通过所述共享内存区将所述第一目标数据输出至所述全局内存区,以及,将第二目标数据中的第二子数据作为下一轮处理的目标子数据,将所述K更新为K-D,以继续选择K-D个待处理数据;
其中,所述第二目标数据为第X+1个预设类别中目标子数据对应的待处理数据,所述E为前X+1个预设类别总共包含的目标子数据的数量,所述第二子数据包括除历史轮中的目标子数据之外的位数最高的前t位。
可选的,所述装置20还包括:
更新模块,被配置为将所述共享内存区中创建的第一数组中各元素的值更新为目标值;所述第一数组中的一个元素对应一个预设类别,所述目标值为所述元素对应的预设类别包含的目标子数据的数量;
相应地,所述第二确定模块202,具体被配置为:
依次累加所述第一数组中各元素的值;
若在累加第M个元素的值之后,当前累加值等于所述K,则将前M个元素的累加值确定为所述D;
或者,若在累加第N个元素的值之后,所述累加值小于所述K,且在累加第N+1个元素的值之后,所述累加值大于所述K,则将前N个元素的累加值确定为所述D。
可选的,所述更新模块,具体被配置为:
遍历目标数值序列中的成员,并为所述成员所对应的元素的值,累加所述的数量;
其中,所述目标数值序列是以所述目标子数据的数值作为成员组成的。
可选的,所述第一输出模块203,具体被配置为:
将各所述第一目标数据连续写入所述共享内存区中的第二数组;所述第二目标数据为前X个预设类别中目标子数据对应的待处理数据;
将所述第二数组中存储的第一目标数据,输出至全局内存区中的第一区域;所述第一区域用于存储被选中的待处理数据。
可选的,所述第一输出模块203,具体还被配置为:
基于所述GPU中的处理线程,确定各所述第一目标数据的第一数组下标;所述第一数组下标用于指示所述第一目标数据在第二数组中的位置,各所述第一数组下标指示的位置连续变化;
基于各所述第一目标数据的第一数组下标,将所述第一目标数据写入所述第二数组。
可选的,所述第二输出模块,具体被配置为:
将各所述第二目标数据的第二子数据,连续写入所述共享内存区中的第三数组;
将所述第三数组中存储的第二子数据,输出至所述全局内存区中的第二区域,以作为所述下一轮处理的目标子数据。
可选的,所述第二输出模块,具体还被配置为:
基于所述GPU中的处理线程,确定所述第二目标数据对应的第二数组下标;所述第二数组下标用于指示所述第二目标数据在所述共享内存区的第三数组中对应的位置,各所述第二数组下标指示的位置连续变化;
基于各所述第二目标数据的第二数组下标,将所述第二目标数据的第二子数据写入所述第三数组。
可选的,所述预设类别的数量与t位数据所能表征的数值的数量相匹配;所述第一确定模块201,具体被配置为:
基于所述GPU中的处理线程,将属于所述处理线程处理的目标子数据转换为符合目标进制的数值,以确定所述目标子数据表征的数值;所述目标进制为所述预设类别表征的数值所符合的进制;
将表征的数值与所述目标子数据表征的数值相同的预设类别,确定为所述目标子数据所属的预设类别。
可选的,所述第一确定模块201,具体还被配置为:
基于所述GPU中的处理线程,将所述GPU的全局内存区中存储的所述第一子数据,读入所述处理线程对应的寄存器中,以作为所述目标子数据;
其中,目标处理线程在所述全局内存区中所访问的地址相邻,所述目标处理线程为位于同一线程块内的处理线程。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
根据本公开的一个实施例,提供了一种电子设备,包括:处理器、用于存储处理器可执行指令的存储器,其中,处理器被配置为执行时实现如上述任一个实施例中的数据处理方法中的步骤。
根据本公开的一个实施例,还提供了一种存储介质,当存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一个实施例中的数据处理方法中的步骤。
根据本公开的一个实施例,还提供了一种计算机程序产品,该计算机程序产品包括可读性程序指令,可读性程序指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一个实施例中的数据处理方法中的步骤。
图3是根据一示例性实施例示出的一种用于数据处理的装置的框图。例如,装置700可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图3,装置700可以包括以下一个或多个组件:处理组件702,存储器704,电力组件706,多媒体组件708,音频组件710,输入/输出(I/O)的接口712,传感器组件714,以及通信组件716。
处理组件702通常控制装置700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述的数据处理方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
存储器704被配置为存储各种类型的数据以支持在设备700的操作。这些数据的示例包括用于在装置700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件706为装置700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为装置700生成、管理和分配电力相关联的组件。
多媒体组件708包括在所述装置700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(MIC),当装置700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
I/O接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件714包括一个或多个传感器,用于为装置700提供各个方面的状态评估。例如,传感器组件714可以检测到设备700的打开/关闭状态,组件的相对定位,例如所述组件为装置700的显示器和小键盘,传感器组件714还可以检测装置700或装置700一个组件的位置改变,用户与装置700接触的存在或不存在,装置700方位或加速/减速和装置700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件716被配置为便于装置700和其他设备之间有线或无线方式的通信。装置700可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件716还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置700可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述数据处理方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由装置700的处理器720执行以完成上述数据处理方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图4是根据一示例性实施例示出的一种用于数据处理的装置的框图。例如,装置800可以被提供为一服务器。参照图4,装置800包括处理组件822,其进一步包括一个或多个处理器,以及由存储器832所代表的存储器资源,用于存储可由处理组件822的执行的指令,例如应用程序。存储器832中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件822被配置为执行指令,以执行上述数据处理方法。
装置800还可以包括一个电源组件826被配置为执行装置800的电源管理,一个有线或无线网络接口850被配置为将装置800连接到网络,和一个输入输出(I/O)接口858。装置800可以操作基于存储在存储器832的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (23)
1.一种数据处理方法,其特征在于,应用于配置有图像处理器GPU的电子设备,所述方法包括:
以待处理数据的第一子数据作为目标子数据,并根据各所述目标子数据表征的数值以及各预设类别表征的数值,确定各所述目标子数据所属的预设类别;不同的所述预设类别表征的数值之间依次递增,所述第一子数据包括所述待处理数据中位数最高的前t位;
按照指定的数值变化顺序,确定前X个预设类别中目标子数据的总数量D;
在所述前X个预设类别中目标子数据的总数量D等于预设数值K的情况下,将第一目标数据写入所述GPU的共享内存区,并通过所述共享内存区将所述第一目标数据输出至全局内存区;所述第一目标数据为所述前X个预设类别中目标子数据对应的待处理数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述D小于所述K且E大于所述K的情况下,将所述第一目标数据写入所述共享内存区,并通过所述共享内存区将所述第一目标数据输出至所述全局内存区,以及,将第二目标数据中的第二子数据作为下一轮处理的目标子数据,将所述K更新为K-D,以继续选择K-D个待处理数据;
其中,所述第二目标数据为第X+1个预设类别中目标子数据对应的待处理数据,所述E为前X+1个预设类别总共包含的目标子数据的数量,所述第二子数据包括除历史轮中的目标子数据之外的位数最高的前t位。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
将所述共享内存区中创建的第一数组中各元素的值更新为目标值;所述第一数组中的一个元素对应一个预设类别,所述目标值为所述元素对应的预设类别包含的目标子数据的数量;
相应地,所述确定前X个预设类别中目标子数据的总数量D,包括:
依次累加所述第一数组中各元素的值;
若在累加第M个元素的值之后,当前累加值等于所述K,则将前M个元素的累加值确定为所述D;
或者,若在累加第N个元素的值之后,所述累加值小于所述K,且在累加第N+1个元素的值之后,所述累加值大于所述K,则将前N个元素的累加值确定为所述D。
4.根据权利要求3所述的方法,其特征在于,所述将所述共享内存区中创建的第一数组中各元素的值更新为目标值,包括:
遍历目标数值序列中的成员,并为所述遍历到的成员所对应的元素的值,累加所述遍历到的成员的数量;
其中,所述目标数值序列是以所述目标子数据的数值作为成员组成的。
5.根据权利要求1或2所述的方法,其特征在于,所述将第一目标数据写入基于所述GPU的共享内存区,并通过所述共享内存区输出将所述第一目标数据输出至全局内存区,包括:
将各所述第一目标数据连续写入所述共享内存区中的第二数组;
将所述第二数组中存储的第一目标数据,输出至全局内存区中的第一区域;所述第一区域用于存储被选中的待处理数据。
6.根据权利要求5所述的方法,其特征在于,所述将各所述第一目标数据连续写入所述共享内存区中的第二数组,包括:
基于所述GPU中的处理线程,确定各所述第一目标数据的第二数组下标;所述第二数组下标用于指示所述第一目标数据在第二数组中的位置,各所述第二数组下标指示的位置连续变化;
基于各所述第一目标数据的第二数组下标,将所述第一目标数据写入所述第二数组。
7.根据权利要求2所述的方法,其特征在于,所述将第二目标数据的第二子数据作为下一轮处理的目标子数据,包括:
将各所述第二目标数据的第二子数据,连续写入所述共享内存区中的第三数组;
将所述第三数组中存储的第二子数据,输出至所述全局内存区中的第二区域,以作为所述下一轮处理的目标子数据。
8.根据权利要求7所述的方法,其特征在于,所述将各所述第二目标数据的第二子数据,连续写入所述共享内存区中的第三数组,包括:
基于所述GPU中的处理线程,确定所述第二目标数据对应的第三数组下标;所述第三数组下标用于指示所述第二目标数据在所述共享内存区的第三数组中对应的位置,各所述第三数组下标指示的位置连续变化;
基于各所述第二目标数据的第三数组下标,将所述第二目标数据的第二子数据写入所述第三数组。
9.根据权利要求1或2所述的方法,其特征在于,所述预设类别的数量与t位数据所能表征的数值的数量相匹配;所述根据各所述目标子数据表征的数值以及各预设类别表征的数值,确定各所述目标子数据所属的预设类别,包括:
基于所述GPU中的处理线程,将属于所述处理线程处理的目标子数据转换为符合目标进制的数值,以确定所述目标子数据表征的数值;所述目标进制为所述预设类别表征的数值所符合的进制;
将表征的数值与所述目标子数据表征的数值相同的预设类别,确定为所述目标子数据所属的预设类别。
10.根据权利要求1所述的方法,其特征在于,所述以待处理数据的第一子数据作为目标子数据,包括:
基于所述GPU中的处理线程,将所述GPU的全局内存区中存储的所述第一子数据,读入所述处理线程对应的寄存器中,以作为所述目标子数据;
其中,目标处理线程在所述全局内存区中所访问的地址相邻,所述目标处理线程为位于同一线程块内的处理线程。
11.一种数据处理装置,其特征在于,应用于配置有图像处理器GPU的电子设备,所述装置包括:
第一确定模块,被配置为以待处理数据的第一子数据作为目标子数据,并根据各所述目标子数据表征的数值以及各预设类别表征的数值,确定各所述目标子数据所属的预设类别;不同的所述预设类别表征的数值之间依次递增,所述第一子数据包括所述待处理数据中位数最高的前t位;
第二确定模块,被配置为按照指定的数值变化顺序,确定前X个预设类别中目标子数据的总数量D;
第一输出模块,被配置为在所述前X个预设类别中目标子数据的总数量D等于预设数值K的情况下,将第一目标数据写入所述GPU的共享内存区,并通过所述共享内存区将所述第一目标数据输出至全局内存区;所述第一目标数据为所述前X个预设类别中目标子数据对应的待处理数据。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第二输出模块,被配置为在所述D小于所述K且E大于所述K的情况下,将所述第一目标数据写入所述共享内存区,并通过所述共享内存区将所述第一目标数据输出至所述全局内存区,以及,将第二目标数据中的第二子数据作为下一轮处理的目标子数据,将所述K更新为K-D,以继续选择K-D个待处理数据;
其中,所述第二目标数据为第X+1个预设类别中目标子数据对应的待处理数据,所述E为前X+1个预设类别总共包含的目标子数据的数量,所述第二子数据包括除历史轮中的目标子数据之外的位数最高的前t位。
13.根据权利要求11或12所述的装置,其特征在于,所述装置还包括:
更新模块,被配置为将所述共享内存区中创建的第一数组中各元素的值更新为目标值;所述第一数组中的一个元素对应一个预设类别,所述目标值为所述元素对应的预设类别包含的目标子数据的数量;
相应地,所述第二确定模块,具体被配置为:
依次累加所述第一数组中各元素的值;
若在累加第M个元素的值之后,当前累加值等于所述K,则将前M个元素的累加值确定为所述D;
或者,若在累加第N个元素的值之后,所述累加值小于所述K,且在累加第N+1个元素的值之后,所述累加值大于所述K,则将前N个元素的累加值确定为所述D。
14.根据权利要求13所述的装置,其特征在于,所述更新模块,具体被配置为:
遍历目标数值序列中的成员,并为所述遍历到的成员所对应的元素的值,累加所述遍历到的成员的数量;
其中,所述目标数值序列是以所述目标子数据的数值作为成员组成的。
15.根据权利要求11或12所述的装置,其特征在于,所述第一输出模块,具体被配置为:
将各所述第一目标数据连续写入所述共享内存区中的第二数组;
将所述第二数组中存储的第一目标数据,输出至全局内存区中的第一区域;所述第一区域用于存储被选中的待处理数据。
16.根据权利要求15所述的装置,其特征在于,所述第一输出模块,具体还被配置为:
基于所述GPU中的处理线程,确定各所述第一目标数据的第二数组下标;所述第二数组下标用于指示所述第一目标数据在第二数组中的位置,各所述第二数组下标指示的位置连续变化;
基于各所述第一目标数据的第二数组下标,将所述第一目标数据写入所述第二数组。
17.根据权利要求12所述的装置,其特征在于,所述第二输出模块,具体被配置为:
将各所述第二目标数据的第二子数据,连续写入所述共享内存区中的第三数组;
将所述第三数组中存储的第二子数据,输出至所述全局内存区中的第二区域,以作为所述下一轮处理的目标子数据。
18.根据权利要求17所述的装置,其特征在于,所述第二输出模块,具体还被配置为:
基于所述GPU中的处理线程,确定所述第二目标数据对应的第三数组下标;所述第三数组下标用于指示所述第二目标数据在所述共享内存区的第三数组中对应的位置,各所述第三数组下标指示的位置连续变化;
基于各所述第二目标数据的第三数组下标,将所述第二目标数据的第二子数据写入所述第三数组。
19.根据权利要求11或12所述的装置,其特征在于,所述预设类别的数量与t位数据所能表征的数值的数量相匹配;所述第一确定模块,具体被配置为:
基于所述GPU中的处理线程,将属于所述处理线程处理的目标子数据转换为符合目标进制的数值,以确定所述目标子数据表征的数值;所述目标进制为所述预设类别表征的数值所符合的进制;
将表征的数值与所述目标子数据表征的数值相同的预设类别,确定为所述目标子数据所属的预设类别。
20.根据权利要求11所述的装置,其特征在于,所述第一确定模块,具体还被配置为:
基于所述GPU中的处理线程,将所述GPU的全局内存区中存储的所述第一子数据,读入所述处理线程对应的寄存器中,以作为所述目标子数据;
其中,目标处理线程在所述全局内存区中所访问的地址相邻,所述目标处理线程为位于同一线程块内的处理线程。
21.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至10中任一项所述的数据处理方法。
22.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备执行如权利要求1至10中任一项所述的数据处理方法。
23.一种计算机程序产品,其特征在于,所述计算机程序产品包括可读性程序指令,所述可读性程序指令由电子设备的处理器执行时,使得所述电子设备执行如权利要求1至10中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110595350.7A CN113469215B (zh) | 2021-05-28 | 2021-05-28 | 数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110595350.7A CN113469215B (zh) | 2021-05-28 | 2021-05-28 | 数据处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113469215A CN113469215A (zh) | 2021-10-01 |
CN113469215B true CN113469215B (zh) | 2022-07-08 |
Family
ID=77871874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110595350.7A Active CN113469215B (zh) | 2021-05-28 | 2021-05-28 | 数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113469215B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017035813A1 (zh) * | 2015-09-02 | 2017-03-09 | 华为技术有限公司 | 一种数据访问方法、装置及系统 |
CN107920253A (zh) * | 2017-10-31 | 2018-04-17 | 北京赛思信安技术股份有限公司 | 一种基于gpu的视频处理方法 |
CN112070652A (zh) * | 2019-06-10 | 2020-12-11 | 上海赜睿信息科技有限公司 | 数据压缩、解压方法、可读存储介质和电子设备 |
CN112148693A (zh) * | 2020-10-19 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10664286B2 (en) * | 2017-03-13 | 2020-05-26 | Board Of Supervisors Of Louisiana State University And Agricultural And Mechanical College | Enhanced performance for graphical processing unit transactional memory |
-
2021
- 2021-05-28 CN CN202110595350.7A patent/CN113469215B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017035813A1 (zh) * | 2015-09-02 | 2017-03-09 | 华为技术有限公司 | 一种数据访问方法、装置及系统 |
CN107920253A (zh) * | 2017-10-31 | 2018-04-17 | 北京赛思信安技术股份有限公司 | 一种基于gpu的视频处理方法 |
CN112070652A (zh) * | 2019-06-10 | 2020-12-11 | 上海赜睿信息科技有限公司 | 数据压缩、解压方法、可读存储介质和电子设备 |
CN112148693A (zh) * | 2020-10-19 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于现代硬件的并行内存排序方法综述;郭诚欣等;《计算机学报》;20151231(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113469215A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107888981B (zh) | 音视频预加载方法、装置、设备及存储介质 | |
CN111160448B (zh) | 一种图像分类模型的训练方法及装置 | |
CN108073303B (zh) | 一种输入方法、装置及电子设备 | |
CN107621886B (zh) | 一种输入推荐方法、装置及电子设备 | |
CN109522937B (zh) | 图像处理方法及装置、电子设备和存储介质 | |
CN110929837A (zh) | 神经网络模型压缩方法及装置 | |
CN110764627A (zh) | 一种输入方法、装置和电子设备 | |
CN111582432B (zh) | 一种网络参数处理方法及装置 | |
CN111813307B (zh) | 应用程序显示方法、装置及电子设备 | |
CN108573697B (zh) | 一种语言模型更新方法、装置及设备 | |
CN111694768B (zh) | 运算方法、装置及相关产品 | |
US11494117B2 (en) | Method and system for data processing | |
CN113469215B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112035651A (zh) | 语句补全方法、装置及计算机可读存储介质 | |
CN110262746B (zh) | 一种金融数据输入方法、装置及介质 | |
CN115512116B (zh) | 图像分割模型优化方法、装置、电子设备及可读存储介质 | |
CN109901726B (zh) | 一种候选词生成方法、装置及用于候选词生成的装置 | |
CN108628883B (zh) | 一种数据处理方法、装置及电子设备 | |
CN115016944A (zh) | 一种进程访问方法、装置及电子设备 | |
CN110019657B (zh) | 处理方法、装置和机器可读介质 | |
CN113807540A (zh) | 一种数据处理方法及装置 | |
CN114298227A (zh) | 文本去重方法、装置、设备及介质 | |
CN108345590B (zh) | 一种翻译方法、装置、电子设备以及存储介质 | |
CN111984423A (zh) | 一种运行深度学习模型的方法、装置及介质 | |
CN110019928B (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 |