掌桥专利:专业的专利平台
掌桥专利
首页

并行处理方法及装置

文献发布时间:2023-06-19 18:35:48


并行处理方法及装置

技术领域

本申请实施例涉及计算机技术领域,特别涉及一种并行处理方法及装置。

背景技术

当前,多核芯片被广泛应用于各种设备中,以提高设备的计算能力。多核芯片包括多个计算核心,该多个计算核心可以并行执行计算任务,提高处理效率。例如,在将多核芯片用于卷积神经网络中数据的计算时,该多个计算核心中的每个计算核心可以处理一部分数据,以通过并行处理来提高效率。

在相关技术中,在将多核芯片用于并行处理待处理数据(如卷积神经网络中的数据)时,待处理数据被平均分配到该多个计算核心上,也即是,按照该多个计算核心的数量进行均匀的数据分配,各个计算核心并行处理各自被分配的数据。

然而,在该多个计算核心的算力(即计算能力)存在不同的情况下,则并行处理的整体性能由算力最差的计算核心的耗时决定,这样会导致并行处理的效率较低、性能较差。

发明内容

本申请实施例提供了一种并行处理方法及装置,能够提高通过多个计算核心并行处理的处理效率,提升性能。所述技术方案如下:

一方面,提供了一种并行处理方法,所述方法包括:

根据多个计算核心中各个计算核心的算力,确定所述多个计算核心中各个计算核心的权重;

基于所述多个计算核心中各个计算核心的权重,将待处理数据分配给所述多个计算核心;

通过所述多个计算核心并行处理所述待处理数据。

可选地,所述基于所述多个计算核心中各个计算核心的权重,将待处理数据分配给所述多个计算核心,包括:

确定所述待处理数据包括的数据单元的总个数;

基于所述多个计算核心中各个计算核心的权重和所述总个数,确定所述多个计算核心中各个计算核心所需处理的数据单元的个数;

基于所述多个计算核心中各个计算核心所需处理的数据单元的个数,将所述待处理数据分为多个数据块,所述多个数据块与所述多个计算核心一一对应;

将所述多个数据块中的各个数据块分配给所述多个计算核心中相应的计算核心。

可选地,所述待处理数据包括卷积神经网络中一个或多个算子的输入数据,不同的算子对应不同的数据分配策略;

所述确定所述待处理数据包括的数据单元的总个数,包括:

按照所述一个或多个算子分别对应的数据分配策略,确定所述一个或多个算子的输入数据包括的数据单元的总个数。

可选地,所述一个或多个算子包括通用矩阵乘GEMM卷积算子,所述GEMM卷积算子的输入数据包括第一矩阵和第二矩阵;

所述按照所述一个或多个算子分别对应的数据分配策略,确定所述一个或多个算子的输入数据包括的数据单元的总个数,包括:

将所述第一矩阵的行数或所述第二矩阵的列数作为所述总个数,所述第一矩阵的行数指示所述GEMM卷积算子输出的特征图的尺寸,所述第二矩阵的列数指示所述GEMM卷积算子输出的特征图的通道数量。

可选地,所述一个或多个算子包括池化算子,所述池化算子的输入数据包括待批处理的多通道的特征图;

所述按照所述一个或多个算子分别对应的数据分配策略,确定所述一个或多个算子的输入数据包括的数据单元的总个数,包括:

将所述待批处理的多通道的特征图的批处理量确定为所述总个数;或者,

将所述待批处理的多通道的特征图的通道数量确定为所述总个数;或者,

根据所述批处理量和所述通道数量确定所述总个数。

可选地,所述一个或多个算子包括逐元素处理算子,所述逐元素处理算子的输入数据包括多个元素;

所述按照所述一个或多个算子分别对应的数据分配策略,确定所述一个或多个算子的输入数据包括的数据单元的总个数,包括:

将所述多个元素的元素数确定为所述总个数。

可选地,所述基于所述多个计算核心中各个计算核心的权重和所述总个数,确定所述多个计算核心中各个计算核心所需处理的数据单元的个数,包括:

基于所述多个计算核心中各个计算核心的权重、所述总个数和指定数量,确定所述多个计算核心中各个计算核心所需处理的数据单元的个数,所述指定数量根据所述多个计算核心的内存访问位数确定,所述指定数量为确定所述多个计算核心中各个计算核心所需处理的数据单元的个数的最小分配单位。

可选地,所述基于所述多个计算核心中各个计算核心的权重、所述总个数和指定数量,确定所述多个计算核心中各个计算核心所需处理的数据单元的个数,包括:

基于所述多个计算核心中各个计算核心的权重、所述总个数和所述指定数量,确定所述多个计算核心中相应计算核心对应的第一处理个数,所述第一处理个数为所述指定数量的整数倍;

基于所述总个数和所述多个计算核心中各个计算核心对应的第一处理个数,确定剩余个数,所述剩余个数小于核心数量与所述指定数量的乘积,所述核心数量为所述多个计算核心的总数量;

按照所述多个计算核心中各个计算核心的权重的大小,基于所述剩余个数,确定所述多个计算核心中m个计算核心对应的第二处理个数,所述m个计算核心中任一计算核心的权重不低于所述多个计算核心中除所述m个计算核心之外的任一计算核心的权重,所述m小于或等于所述多个计算核心的总数量;

基于所述多个计算核心中各个计算核心对应的第一处理个数,以及所述m个计算核心对应的第二处理个数,确定所述多个计算核心中各个计算核心所需处理的数据单元的个数。

可选地,所述按照所述多个计算核心中各个计算核心的权重的大小,基于所述剩余个数,确定所述多个计算核心中m个计算核心对应的第二处理个数,包括:

基于所述指定数量和所述剩余个数,确定m个第二处理个数;

按照所述多个计算核心中各个计算核心的权重从大到小的顺序,从所述多个计算核心中选择m个计算核心;

从所述m个第二处理个数中,确定所述m个计算核心对应的第二处理个数。

另一方面,提供了一种并行处理装置,所述装置包括:

确定模块,用于根据多个计算核心中各个计算核心的算力,确定所述多个计算核心中各个计算核心的权重;

分配模块,用于基于所述多个计算核心中各个计算核心的权重,将待处理数据分配给所述多个计算核心;

处理模块,用于通过所述多个计算核心并行处理所述待处理数据。

可选地,所述分配模块包括:

第一确定子模块,用于确定所述待处理数据包括的数据单元的总个数;

第二确定子模块,用于基于所述多个计算核心中各个计算核心的权重和所述总个数,确定所述多个计算核心中各个计算核心所需处理的数据单元的个数;

划分子模块,用于基于所述多个计算核心中各个计算核心所需处理的数据单元的个数,将所述待处理数据分为多个数据块,所述多个数据块与所述多个计算核心一一对应;

分配子模块,用于将所述多个数据块中的各个数据块分配给所述多个计算核心中相应的计算核心。

可选地,所述待处理数据包括卷积神经网络中一个或多个算子的输入数据,不同的算子对应不同的数据分配策略;

所述第一确定子模块具体用于:

按照所述一个或多个算子分别对应的数据分配策略,确定所述一个或多个算子的输入数据包括的数据单元的总个数。

可选地,所述一个或多个算子包括通用矩阵乘GEMM卷积算子,所述GEMM卷积算子的输入数据包括第一矩阵和第二矩阵;

所述第一确定子模块具体用于:

将所述第一矩阵的行数或所述第二矩阵的列数作为所述总个数,所述第一矩阵的行数指示所述GEMM卷积算子输出的特征图的尺寸,所述第二矩阵的列数指示所述GEMM卷积算子输出的特征图的通道数量。

可选地,所述一个或多个算子包括池化算子,所述池化算子的输入数据包括待批处理的多通道的特征图;

所述第一确定子模块具体用于:

将所述待批处理的多通道的特征图的批处理量确定为所述总个数;或者,

将所述待批处理的多通道的特征图的通道数量确定为所述总个数;或者,

根据所述批处理量和所述通道数量确定所述总个数。

可选地,所述一个或多个算子包括逐元素处理算子,所述逐元素处理算子的输入数据包括多个元素;

所述第一确定子模块具体用于:

将所述多个元素的元素数确定为所述总个数。

可选地,所述第二确定子模块具体用于:

基于所述多个计算核心中各个计算核心的权重、所述总个数和指定数量,确定所述多个计算核心中各个计算核心所需处理的数据单元的个数,所述指定数量根据所述多个计算核心的内存访问位数确定,所述指定数量为确定所述多个计算核心中各个计算核心所需处理的数据单元的个数的最小分配单位。

可选地,所述第二确定子模块具体用于:

基于所述多个计算核心中各个计算核心的权重、所述总个数和所述指定数量,确定所述多个计算核心中相应计算核心对应的第一处理个数,所述第一处理个数为所述指定数量的整数倍;

基于所述总个数和所述多个计算核心中各个计算核心对应的第一处理个数,确定剩余个数,所述剩余个数小于核心数量与所述指定数量的乘积,所述核心数量为所述多个计算核心的总数量;

按照所述多个计算核心中各个计算核心的权重的大小,基于所述剩余个数,确定所述多个计算核心中m个计算核心对应的第二处理个数,所述m个计算核心中任一计算核心的权重不低于所述多个计算核心中除所述m个计算核心之外的任一计算核心的权重,所述m小于或等于所述多个计算核心的总数量;

基于所述多个计算核心中各个计算核心对应的第一处理个数,以及所述m个计算核心对应的第二处理个数,确定所述多个计算核心中各个计算核心所需处理的数据单元的个数。

可选地,所述第二确定子模块具体用于:

基于所述指定数量和所述剩余个数,确定m个第二处理个数;

按照所述多个计算核心中各个计算核心的权重从大到小的顺序,从所述多个计算核心中选择m个计算核心;

从所述m个第二处理个数中,确定所述m个计算核心对应的第二处理个数。

另一方面,提供了一种计算机设备,所述计算机设备包括处理器、通信接口、存储器和通信总线,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,所述存储器用于存放计算机程序,所述处理器用于执行所述存储器上所存放的程序,以实现上述所述并行处理方法的步骤。

另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述所述并行处理方法的步骤。

另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的并行处理方法的步骤。

本申请实施例提供的技术方案至少可以带来以下有益效果:

在本申请实施例中,根据多个计算核心中各个计算核心的算力,确定各个计算核心的权重,基于权重将待处理数据分配给多个计算核心,而非按照该多个计算核心的数量将待处理数据平均分配给该多个计算核心。由此可见,在该多个计算核心的算力存在不同的情况下,基于权重分配数据能够保证负载均衡,从而提高并行处理的处理效率,提升整体性能。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种并行处理方法的流程图;

图2是本申请实施例提供的另一种并行处理方法的流程图;

图3是本申请实施例提供的一种并行处理装置的结构示意图;

图4是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

为了便于理解,首先对本申请实施例中所涉及的部分名词和术语进行解释。

计算核心:指设备中的计算执行单元,如多核芯片的处理核心,多核芯片包括多个计算核心,多核芯片如多核CPU(Central Processing Unit,中央处理器)等。

计算核心的算力:表征计算核心的计算能力。算力与计算核心的频率、单时钟周期的能力等相关。

CNN:Convolutional Neural Networks,卷积神经网络。

本申请实施例提供的并行处理方法可以应用于各种场景中,不限定用于并行处理卷积神经网络中的数据。另外,本申请实施例提供的并行处理方法可以由计算机设备执行,该计算机设备可以为终端设备或服务器,本申请实施例不限定计算机设备的具体形态。例如,终端设备可以为手机、笔记本电脑、台式电脑等。服务器可以为一台服务器,也可以为由多台服务器构成的服务器集群,也可以为一个云计算服务中心。

需要说明的是,本申请实施例描述的业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

接下来对本申请实施例提供的并行处理方法进行详细的解释说明。

图1是本申请实施例提供的一种并行处理方法的流程图。以该方法应用于计算机设备为例,请参考图1,该方法包括如下步骤。

步骤101:根据多个计算核心中各个计算核心的算力,确定该多个计算核心中各个计算核心的权重。

在本申请实施例中,计算机设备包括多个计算核心,例如计算机设备具有多核芯片,例如双核芯片、四核芯片、八核芯片等,多核芯片包括多个计算核心,该多个计算核心中各个计算核心的算力可能存在不同。其中,如果计算机包括双核芯片,该双核芯片包括的两个计算核心的算力不同,那么该双核芯片也可以称为大小核。需要说明的是,无论该多个计算核心的算力是否存在不同,本方案均适用。

在本申请实施例中,计算机设备根据该多个计算核心中各个计算核心的算力,确定该多个计算核心中各个计算核心的权重。示例性地,计算机设备通过计算该多个计算核心中各个计算核心的算力占该多个计算核心的总算力的比值,得到该多个计算核心中各个计算核心的权重。

可选地,在确定该多个计算核心中各个计算核心的权重之前,计算机设备可以先用于并行处理的多个计算核心,并确定该多个计算核心中各个计算核心的算力。其中,计算机设备可以根据各个计算核心的频率、单周期性能等来确定各个计算核心的算力。

步骤102:基于该多个计算核心中各个计算核心的权重,将待处理数据分配给该多个计算核心。

在本申请实施例中,计算机设备基于该多个计算核心中各个计算核心的权重,将待处理数据分配给该多个计算核心。例如,为权重较大的计算核心分配较多的数据,为权重较小的计算核心分配较少的数据。

可选地,计算机设备基于该多个计算核心中各个计算核心的权重,将待处理数据分配给该多个计算核心的一种实现方式为:计算机设备确定待处理数据包括的数据单元的总个数,基于该多个计算核心中各个计算核心的权重和该总个数,确定该多个计算核心中各个计算核心所需处理的数据单元的个数。计算机设备基于该多个计算核心中各个计算核心所需处理的数据单元的个数,将待处理数据分为多个数据块,该多个数据块与该多个计算核心一一对应。计算机设备将该多个数据块中的各个数据块分配给该多个计算核心中相应的计算核心。

示例性地,计算机设备确定待处理数据包括的数据单元的总个数为1000,也即待处理数据共包括1000个数据单元,计算机设备包括三个计算核心,这三个计算核心的权重分别为0.2、0.3、0.5,则计算机设备分别用这三个计算核心的权重乘以该总个数,得到这三个计算核心所需处理的数据单元的个数分别为200、200和500。然后,计算机设备可以将待处理数据分为三个数据块。其中,第一个数据块包括200个数据单元且对应权重为0.2的计算核心,第二个数据块包括300个数据单元且对应权重为0.3的计算核心,第三个数据块包括500个数据单元且对应权重为0.5的计算核心。可选地,每个数据块包括的数据单元是连续的,这样能够提高计算核心的数据访问效率,进而提高处理效率。例如,第一个数据块包括第1至第200个数据单元,第二个数据块包括第201至第500个数据单元,第三个数据块包括第501至第1000个数据单元。

需要说明的是,若权重乘以总个数得到的数值不是整数,则计算机设备可以通过对权重乘以总个数得到的数值进行向上取整或向下取整等,使得每个计算核心所需处理的数据单元的个数为整数,且该多个计算核心所需处理的数据单元的个数之和等于待处理数据包括的数据单元的总个数。具体实现方式可以有多种,本申请对此不作限定。

另外,本方案中的待处理数据可以为任意可以并行处理的数据,本申请实施例以待处理数据包括卷积神经网络中的数据为例进行介绍。该多个计算核心用于并行处理卷积神经网络中的数据。可选地,待处理数据包括卷积神经网络中一个或多个算子的输入数据,不同的算子对应不同的数据分配策略。计算机设备可以按照该一个或多个算子分别对应的数据分配策略,确定该一个或多个算子的输入数据包括的数据单元的总个数。在本申请实施例中,该多个计算核心可以对卷积神经网络中的卷积算子、池化算子、逐元素处理算子等算子的输入数据进行并行处理。其中,卷积算子可以为卷积层中的算子,卷积算子如GEMM(General Matrix Multiplication,通用矩阵乘)卷积算子,池化算子为池化层中的算子,池化算子如最大池化算子、均值池化算子等,逐元素处理算子可以为全连接层中的算子,逐元素处理算子如elementwise算子。

接下来分别以待处理数据包括GEMM卷积算子的输入数据、池化算子的输入数据、逐元素处理算子的输入数据为例,对步骤102进行示例性地说明。

可选地,待处理数据包括卷积神经网络中GEMM卷积算子的输入数据,即卷积神经网络中的一个或多个算子包括GEMM卷积算子。GEMM卷积算子的输入数据包括第一矩阵和第二矩阵。计算机设备按照该一个或多个算子分别对应的数据分配策略,确定该一个或多个算子的输入数据包括的数据单元的总个数的一种实现方式为:计算机设备将第一矩阵的行数或第二矩阵的列数作为该总个数。其中,第一矩阵的行数指示GEMM卷积算子输出的特征图的尺寸,第二矩阵的列数指示GEMM卷积算子输出的特征图的通道数量。

需要说明的是,GEMM卷积实际可以为第一矩阵和第二矩阵的乘法,以第一矩阵和第二矩阵的尺寸分别为M*K、K*N为例,其中,M指示GEMM卷积算子输出的特征图的尺寸,N指示GEMM卷积算子输出的特征图的通道数量。计算机设备将M作为待处理数据包括的数据单元的总个数,也即是,按照行维度进行数据分配。或者,计算机设备将N作为待处理数据包括的数据单元的总个数,也即是,按照列维度进行数据分配。需要说明的是,按照行维度和按照列维度进行数据分配的原理类似。

在确定待处理数据包括的数据单元的总个数之后,计算机设备基于该多个计算核心中各个计算核心的权重和该总个数,确定该多个计算核心中各个计算核心所需处理的数据单元的个数。

可选地,计算机设备该多个计算核心中各个计算核心的权重分别乘以该总个数,得到该多个计算核心中各个计算核心所需处理的数据单元的个数。

或者,为了提高并行处理的性能,计算机设备可以按照对齐分配的方式进行数据分配。可选地,计算机设备基于该多个计算核心中各个计算核心的权重、该总个数和指定数量,确定该多个计算核心中各个计算核心所需处理的数据单元的个数。在本申请实施例中,指定数量为确定该多个计算核心中各个计算核心所需处理的数据单元的个数的最小分配单位。也即是,计算机设备按照指定数量进行对齐分配,可以理解为计算机设备以指定数量个数据单元为单位进行数据分配。

其中,指定数量根据该多个计算核心的内存访问位数确定。可选地,指定数量为该多个计算核心的内存访问位数的整数倍。示例性地,在该多个计算核心的内存访问位数为8的情况下,指定数量可以为8、16等,在内存访问位数为16的情况下,指定数量可以为16、32、64等。

可选地,计算机设备基于该多个计算核心中各个计算核心的权重、该总个数和指定数量,确定该多个计算核心中各个计算核心所需处理的数据单元的个数的一种实现方式为:计算机设备基于该多个计算核心中各个计算核心的权重、该总个数和该指定数量,确定该多个计算核心中相应计算核心对应的第一处理个数,其中,第一处理个数为指定数量的整数倍。计算机设备基于该总个数和该多个计算核心中各个计算核心对应的第一处理个数,确定剩余个数。计算机设备按照该多个计算核心中各个计算核心的权重的大小,基于该剩余个数,确定该多个计算核心中m个计算核心对应的第二处理个数,该m个计算核心中任一计算核心的权重不低于该多个计算核心中除该m个计算核心之外的任一计算核心的权重。其中,m小于或等于该多个计算核心的总数量。计算机设备基于该多个计算核心中各个计算核心对应的第一处理个数,以及该m个计算核心对应的第二处理个数,确定该多个计算核心中各个计算核心所需处理的数据单元的个数。

需要说明是,该剩余个数小于指定数量与核心数量的乘积,核心数量为该多个计算核心的总数量。换句话说,该剩余个数不大于核心数量与第一数值的乘积,第一数值为指定数量减1得到的值。示例性地,计算机设备包括三个计算核心,核心数量为3,指定数量为8,则剩余个数不大于21。

由上述可知,在本申请实施例中,计算机设备先按照指定数量进行对齐分配,以为每个计算核心分配指定数量的整数倍的数据单元,得到各个计算核心对应的第一处理个数。如果对齐分配后还有剩余数据单元未被分配,则计算机设备确定剩余个数,按照该多个计算核心的权重的大小,将剩余个数分配给该多个计算核心中的m个第一计算核心,也即基于剩余个数确定该m个计算核心对应的第二处理个数。

需要说明的是,本申请实施例不限定计算机设备基于剩余个数确定该m个计算核心对应的第二处理个数的实现方式,计算机设备可以基于权重和该剩余个数进行剩余数据分配,或者,计算机设备可以基于权重、该剩余个数和指定数量进行剩余数据分配。也即是,对于剩余个数,计算机设备可以进行对齐分配,也可以不进行对齐分配。

示例性地,假设待处理数据包括的数据单元的总个数为N,指定数量为S,该多个计算核心中任一个计算核心的权重为a,则计算机设备可以通过公式(a*N-(a*N)%S)得到该计算核心对应的第一处理个数,其中,“%”为求余数。例如,通过三个计算核心并行处理待处理数据,这三个计算核心的权重分别为0.2、0.3和0.5,N=1000,S=8,则计算机设备通过上述公式得到这三个计算核心对应的第一处理个数分别为200、296、496。计算机设备确定剩余个数为8。

假设计算机设备基于权重和该剩余个数进行剩余数据分配,计算机设备可以按照该多个计算核心中各个计算核心的权重从大到小的顺序,先用最大的权重乘以剩余个数,以得到权重最大的计算核心对应的第二处理个数。如果剩余个数减去已确定的第二处理个数得到的数值不为零,即还有剩余,则计算机设备用次大的权重乘以剩余个数,得到权重次大的计算核心对应的第二处理个数。以此类推,直至剩余个数减去已确定的第二处理个数得到的数值为零,也即直至没有剩余。其中,计算机设备可以通过向上取整、向下取整或四舍五入等方式使得第二处理个数为整数。

示例性地,假设剩余个数为8,这三个计算核心的权重分别为0.2、0.3和0.5,则计算机设备先确定权重为0.5的计算核心对应的第二处理个数为4,然后确定权重为0.3的计算核心对应的第二处理个数为3,然后确定权重为0.2的计算核心对应的第二处理个数为1。

假设计算机设备基于权重、该剩余个数和指定数量进行数据分配,则计算机设备按照该多个计算核心中各个计算核心的权重的大小,基于该剩余个数,确定该多个计算核心中m个计算核心对应的第二处理个数的实现方式可以为:计算机设备基于该指定数量和该剩余个数,确定m个第二处理个数。计算机设备按照该多个计算核心中各个计算核心的权重从大到小的顺序,从该多个计算核心中选择m个计算核心。计算机设备从该m个第二处理个数中,确定该m个计算核心对应的第二处理个数。

示例性地,假设指定数量为8,剩余个数为8,这三个计算核心的权重分别为0.2、0.3和0.5,则计算机设备确定一个第二处理个数,该第二处理个数为8,m为1,计算机设备从该多个计算核心中选择权重为0.5的计算核心,确定所选择的权重为0.5的计算核心对应的第二处理个数为8。再假设指定数量为8,剩余个数为14,这三个计算核心的权重分别为0.2、0.3和0.5,则计算机设备确定两个第二处理个数,这两个第二处理个数分别为8和6,m为2,计算机设备从该多个计算核心中选择权重为0.5和0.3的两个计算核心,计算机设备确定所选择的权重为0.5的计算核心对应的第二处理个数为8,权重为0.3的计算核心对应的第二处理个数为6。

计算机设备在确定该多个计算核心中各个计算核心对应的第一处理个数,以及m个计算核心对应的第二处理个数之后,确定该多个计算核心中各个计算核心所需处理的数据单元的个数。示例性地,对于该多个计算核心中的任一计算核心来说,如果该计算核心对应有第一处理个数,但没有对应的第二处理个数,则计算机设备将该计算核心对应的第一处理个数,确定为该计算核心所需处理的数据单元的个数。如果该计算核心对应有第一处理个数和第二处理个数,则计算机设备将该计算核心对应的第一处理个数与第二处理个数的和,确定为该计算核心所需处理的数据单元的个数。

需要说明的是,对于GEMM卷积算子来说,可以先按照列维度进行分配,也即将第二矩阵的列数作为待处理数据包括的数据单元的总个数,进而基于指定数量确定该多个计算核心中各个计算核心所需处理的数据单元的个数,也即基于指定数量进行对齐分配。如果待处理数据包括的数据单元较少,进行对齐分配后可能存在有计算核心所需数据的数据单元的个数为零的情况,也即存在有计算核心未分配到数据的情况,这种情况下,计算机设备可以重新按照行维度进行分配,也即将第一矩阵的行数作为该总个数,进而基于指定数量进行对齐分配。

在确定该多个计算核心中各个计算核心所需处理的数据单元的个数之后,计算机设备基于该多个计算核心中各个计算核心所需处理的数据单元的个数,将待处理数据分为多个数据块,该多个数据块与该多个计算核心一一对应。计算机设备将该多个数据块中的各个数据块分配给该多个计算核心中相应的计算核心。

示例性地,待处理数据包括卷积神经网络中通用矩阵乘GEMM卷积算子的输入数据,所述GEMM卷积算子的输入数据包括第一矩阵和第二矩阵,以第一矩阵和第二矩阵的尺寸分别为M*K、K*N为例,假设M=100,即第一矩阵包括100行数据,存在三个计算核心,这三个中各个计算核心所需处理的数据单元的个数分别为20、30和50,则计算机设备将第一矩阵中的第1至第20行数据以及第二矩阵作为一个数据块分配给相应的计算核心,将第一矩阵中的第21至第50行数据以及第二矩阵作为一个数据块分配给相应的计算核心,将第一矩阵中的第51至第100行数据作为一个数据块分配给相应的计算核心。

以上介绍了待处理数据包括卷积神经网络中GEMM卷积算子的输入数据的情况下步骤102的实现方式。接下来介绍在待处理数据包括卷积神经网络中池化算子的输入数据的情况下步骤102的实现方式。

可选地,待处理数据包括卷积神经网络中池化算子的输入数据,即卷积神经网络中的一个或多个算子包括池化算子。池化算子的输入数据包括待批处理的多通道的特征图。计算机设备也需要先按照该一个或多个算子分别对应的数据分配策略,确定该一个或多个算子的输入数据包括的数据单元的总个数。可选地,计算机设备将待批处理的多通道的特征图的批处理量确定为该总个数。或者,计算机设备将待批处理的多通道的特征图的通道数量确定为该总个数。或者,计算机设备根据该批处理量和该通道数量确定该总个数。

也即是,对于卷积神经网络中的池化算子来说,输入数据为四维数据,四维数据的四个维度为批处理维度、通道维度、高度维度和宽度维度,计算机设备可以按照单维度进行数据分配,也可以按照多维度进行数据分配。其中,针对池化算子进行的数据分配所基于的单维度可以指这四个维度中的批处理维度或通道维度,多维度可以包括批处理维度和通道维度。

除了池化算子之外,对于卷积神经网络中输入数据为待批处理的多通道的特征图的其他算子来说,这些算子的输入数据也是四维数据,在一些可能的实现方式中,计算机设备可以将待批处理的多通道的特征图的批处理量确定为该总个数。或者,计算机设备将待批处理的多通道的特征图的通道数量确定为该总个数。或者,计算机设备将待批处理的多通道的特征图的高度确定为该总个数。或者,计算机设备将待批处理的多通道的特征图的宽度确定为该总个数。或者,计算机设备根据该批处理量和该通道数量确定该总个数。或者,计算机设备可以根据待批处理的多通道的特征图的宽度和高度确定该总个数。或者,计算机设备根据该批处理量、该通道数量和该宽度确定该总个数。或者,计算机设备根据该批处理量、该通道数量和该高度确定该总个数。

为了便于说明,以该四维数据为NCHW维度的数据为例再次进行说明。NCWH维度中的N维度、C维度、H维度和W维度分别指批处理维度、通道维度、高度维度和宽度维度,单维度可以指N维度、C维度、H维度或W维度,多维度可以指NC维度、NCH维度或NCW维度。

需要说明的是,对于输入数据为四维数据的计算来说,在一些可能的实施例中,计算机设备可以按照该四维数据的四个维度中任一维度进行数据分配,计算机设备也可以按照这四个维度中的任意两个维度进行数据分配,计算机设备也可以按照这四个维度中的任意三个维度进行数据分配。简单来说,计算机设备可以按照单维度或多维度来进行数据分配,本申请实施例不限定单维度为哪个维度,也不限定多维度包括哪些维度。

其中,如果待批处理的多通道的特征图按行存储,则计算机设备将待批处理的多通道的特征图的高度确定为该总个数,也即按照高度维度进行数据分配。或者,计算机设备可以根据该批处理量、该通道数量和该高度确定该总个数,也即按照批处理维度、通道维度和高度维度进行数据分配。这样,能够便于计算机设备快速读取一行的数据,提高处理效率。

如果待批处理的多通道的特征图按列存储,则计算机设备将待批处理的多通道的特征图的高度确定为该总个数,也即按照宽度维度进行数据分配。或者,计算机设备可以根据该批处理量、该通道数量和该宽度确定该总个数,也即按照批处理维度、通道维度和宽度维度进行数据分配。这样,能够便于计算机设备快速读取一列的数据,提高处理效率。

在本申请实施例中,若计算机设备根据该批处理量和该通道数量确定该总个数,则计算机设备将该批处理量和通道数量的乘积作为该总个数。若计算机设备根据该批处理量、该通道数量和该宽度确定该总个数,则计算机设备将该批处理量、该通道数量和该宽度的乘积作为该总个数。若计算机设备根据该批处理量、该通道数量和该高度确定该总个数,则计算机设备将该批处理量、该通道数量和该高度的乘积作为该总个数。需要说明的是,对于按照其他的多维度进行数据分配的情况,计算机设备确定该总个数的方式类似,这样不一一介绍。

在确定待处理数据包括的数据单元的总个数之后,计算机设备基于该多个计算核心中各个计算核心的权重和该总个数,确定该多个计算核心中各个计算核心所需处理的数据单元的个数。计算机设备基于该多个计算核心中各个计算核心所需处理的数据单元的个数,将待处理数据分为多个数据块,其中,该多个数据块与该多个计算核心一一对应。计算机设备将该多个数据块中的各个数据块分配给该多个计算核心中相应的计算核心。

示例性地,假设计算机设备将待批处理的多通道的特征图的通道数量确定为待处理数据包括的数据单元的总个数,也即按照通道维度进行数据分配,通道数量为100,那么该总个数为100,以三个计算核心为例,这三个计算核心的权重分别为0.2、0.3、0.5,那么这三个计算核心所需处理的数据单元的个数分别为20、30和50,也即这三个计算核心分别需要处理20个通道、30个通道和50个通道的特征图,且这三个计算核心均需要进行批处理,也即后续分配给每个计算核心的数据均包括批处理粒度的数据,换句话说,属于一个batch(批)的数据未被分散到各个计算核心上。计算机设备将待批处理的100个通道的特征图分为三个数据块,这三个数据块分别包括待批处理的20个通道的特征图、待批处理的30个通道的特征图、待批处理的50个通道的特征图,且这三个数据块与这三个计算核心一一对应。计算机设备将待批处理的20个通道的特征图分配给权重为0.2的计算核心,将待批处理的30个通道的特征图分配给权重为0.3的计算核心,将待批处理的50个通道的特征图分配给权重为0.5的计算核心。

假设计算机设备根据批处理量和通道数量确定待处理数据包括的数据单元的总个数,也即按照批处理维度和通道维度进行数据分配,批处理量为50,通道数量为100,那么该总个数为5000,以三个计算核心为例,这三个计算核心的权重分别为0.2、0.3、0.5,那么这三个计算核心所需处理的数据单元的个数分别为1000、1500和2500,也即这三个计算核心分别需要处理1000个通道、1500个通道和2500个通道的数据,且这个三个计算核心无需进行批处理,也即后续分配给每个计算核心的数据并非批处理粒度的数据,换句话说,将属于一个batch(批)的数据也分散到各个计算核心上进行处理。计算机设备将待批处理的100个通道的特征图分为三个数据块,这三个数据块分别包括1000个通道的特征图、1500个通道的特征图、2500个通道的特征图,且这三个数据块与这三个计算核心一一对应。计算机设备将这三个数据块分别分配给相应的计算核心。

可选地,若计算机设备根据批处理量、通道数量和特征图的高度确定该总个数,或者,计算机设备根据批处理量、通道数量和特征图的高度确定该总个数,则计算机设备也可以基于指定数量进行数据的对齐分配,原理类似于前述实施例,这里不再进行详细介绍。

接下来介绍在待处理数据包括卷积神经网络中逐元素处理算子的输入数据的情况下步骤102的实现方式。

可选地,待处理数据包括卷积神经网络中逐元素处理算子的输入数据,即卷积神经网络中的一个或多个算子包括逐元素处理算子。逐元素处理算子的输入数据包括多个元素。计算机设备也需要先按照该一个或多个算子分别对应的数据分配策略,确定该一个或多个算子的输入数据包括的数据单元的总个数。可选地,计算机设备将该多个元素的元素数确定为该总个数。在确定该总个数之后,计算机设备基于该多个计算核心中各个计算核心的权重和该总个数,确定该多个计算核心中各个计算核心所需处理的数据单元的个数。计算机设备基于该多个计算核心中各个计算核心所需处理的数据单元的个数,将待处理数据分为多个数据块,其中,该多个数据块与该多个计算核心一一对应。计算机设备将该多个数据块中的各个数据块分配给该多个计算核心中相应的计算核心。

示例性地,卷积神经网络中的逐元素处理算子为elementwise算子,elementwise算子是对输入的元素进行加、减、乘、除等逐元素处理的算子。计算机设备可以将elementwise算子的输入数据所包括的多个元素的元素数作为待处理数据包括的数据单元的总个数,也即按照全局总元素数基于权重进行数据分配。假设elementwise算子的输入数据包括1000个元素,也即总个数(即全局总元素数)为1000,仍以三个计算核心为例,这三个计算核心的权重分别为0.2、0.3和0.5,那么计算机设备确定这三个计算核心分别所需处理的数据单元的个数为200、300和500,计算机设备将该多个元素分为三个数据块,这三个数据块分别包括200个元素、300个元素和500个元素,计算机设备将第1个至第200个元素分配给权重为0.2的计算核心,将第201个至第500个元素分配给权重为0.3的计算核心,将第501个至1000个元素分配给权重为0.5的计算核心。

可选地,若逐元素处理算子的输入数据为第三矩阵,第三矩阵包括多个元素,则计算机设备可以将该多个元素确定为待处理数据包括的数据单元的总个数,也可以将第三矩阵的行数或列数确定为该总个数。也即是,计算机设备可以逐元素分配,也可以逐行分配或逐列分配。

可选地,对于逐元素处理算子来说,计算机设备也可以基于指定数量进行数据的对齐分配,原理类似于前述实施例,这里不再进行详细介绍。需要说明的是,除卷积神经网络中数据之外其他的待处理数据,计算机设备也可以基于指定数量进行数据的对齐分配,原理类似与前述实施例。也即,无论待处理数据为何种数据,计算机设备均可以基于权重和总个数进行数据分配,或者,基于权重、总个数和指定数量进行数据的对齐分配。

步骤103:通过该多个计算核心并行处理待处理数据。

在本申请实施例中,在将待处理数据分配给该多个计算核心之后,计算机设备通过该多个计算核心并行处理待处理数据。

需要说明的是,若待处理数据为卷积神经网络中的数据,则对于卷积神经网络中能够进行并行处理的数据均可以先通过基于权重进行数据分配。例如,上述针对卷积神经网络中的GEMM卷积算子、池化算子、逐元素处理算子的数据分配方案可以单独使用或结合使用,在结合使用的情况下计算机设备的处理效率更高,整体性能更优。

图2是本申请实施例提供的另一种并行处理方法的流程图。参见图2,计算机设备首先确定用于并行处理的多个计算核心,然后确定该多个计算核心中各个计算核心的算力,基于算力确定该多个计算核心中各个计算核心的权重。之后,计算机设备基于权重和数据分配策略进行数据分配,数据分配后通过该多个计算核心并行处理数据。其中,数据分配策略指示数据分配的维度,即指示需要按照哪个维度进行数据分配,根据数据分配策略可以确定待处理数据包括的数据单元的总个数。可选地,数据分配策略还指示是否进行对齐分配,若进行对齐分配,数据分配策略还指示指定数量,则计算机设备还能够根据数据分配策略确定进行对齐分配所基于的指定数量,即确定最小分配单位。

综上所述,在本申请实施例中,根据多个计算核心中各个计算核心的算力,确定各个计算核心的权重,基于权重将待处理数据分配给多个计算核心,而非按照该多个计算核心的数量将待处理数据平均分配给该多个计算核心。由此可见,在该多个计算核心的算力存在不同的情况下,基于权重分配数据能够保证负载均衡,从而提高并行处理的处理效率,提升整体性能。也即是,为算力较大的计算核心分配较多的数据,为算力较小的计算核心分配较少的数据,这样充分利用该多个计算核心,提升整体性能。

上述所有可选技术方案,均可按照任意结合形成本申请的可选实施例,本申请实施例对此不再一一赘述。

图3是本申请实施例提供的一种并行处理装置300的结构示意图,该并行处理装置300可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为上述实施例中的计算机设备。请参考图3,该装置300包括:确定模块301、分配模块302和处理模块303。

确定模块301,用于根据多个计算核心中各个计算核心的算力,确定该多个计算核心中各个计算核心的权重;

分配模块302,用于基于该多个计算核心中各个计算核心的权重,将待处理数据分配给该多个计算核心;

处理模块303,用于通过该多个计算核心并行处理待处理数据。

可选地,分配模块302包括:

第一确定子模块,用于确定待处理数据包括的数据单元的总个数;

第二确定子模块,用于基于该多个计算核心中各个计算核心的权重和该总个数,确定该多个计算核心中各个计算核心所需处理的数据单元的个数;

划分子模块,用于基于该多个计算核心中各个计算核心所需处理的数据单元的个数,将待处理数据分为多个数据块,该多个数据块与该多个计算核心一一对应;

分配子模块,用于将该多个数据块中的各个数据块分配给该多个计算核心中相应的计算核心。

可选地,待处理数据包括卷积神经网络中一个或多个算子的输入数据,不同的算子对应不同的数据分配策略;

第一确定子模块具体用于:

按照该一个或多个算子分别对应的数据分配策略,确定该一个或多个算子的输入数据包括的数据单元的总个数。

可选地,该一个或多个算子包括通用矩阵乘GEMM卷积算子,GEMM卷积算子的输入数据包括第一矩阵和第二矩阵;

第一确定子模块具体用于:

将第一矩阵的行数或第二矩阵的列数作为总个数,第一矩阵的行数指示GEMM卷积算子输出的特征图的尺寸,第二矩阵的列数指示GEMM卷积算子输出的特征图的通道数量,指定数量为确定该多个计算核心中各个计算核心所需处理的数据单元的个数的最小分配单位。

可选地,该一个或多个算子包括池化算子,池化算子的输入数据包括待批处理的多通道的特征图;

第一确定子模块具体用于:

将待批处理的多通道的特征图的批处理量确定为总个数;或者,

将待批处理的多通道的特征图的通道数量确定为总个数;或者,

根据批处理量和通道数量确定总个数。

可选地,该一个或多个算子包括逐元素处理算子,逐元素处理算子的输入数据包括多个元素;

第一确定子模块具体用于:

将该多个元素的元素数确定为总个数。

可选地,第二确定子模块具体用于:

基于该多个计算核心中各个计算核心的权重、该总个数和指定数量,确定该多个计算核心中各个计算核心所需处理的数据单元的个数,该指定数量根据该多个计算核心的内存访问位数确定。

可选地,第二确定子模块具体用于:

基于该多个计算核心中各个计算核心的权重、该总个数和指定数量,确定该多个计算核心中相应计算核心对应的第一处理个数,第一处理个数为该指定数量的整数倍;

基于该总个数和该多个计算核心中各个计算核心对应的第一处理个数,确定剩余个数,该剩余个数小于核心数量与指定数量的乘积,核心数量为该多个计算核心的总数量;

按照该多个计算核心中各个计算核心的权重的大小,基于该剩余个数,确定该多个计算核心中m个计算核心对应的第二处理个数,m个计算核心中任一计算核心的权重不低于该多个计算核心中除m个计算核心之外的任一计算核心的权重,m小于或等于该多个计算核心的总数量;

基于该多个计算核心中各个计算核心对应的第一处理个数,以及该m个计算核心对应的第二处理个数,确定该多个计算核心中各个计算核心所需处理的数据单元的个数。

可选地,第二确定子模块具体用于:

基于该指定数量和该剩余个数,确定m个第二处理个数;

按照该多个计算核心中各个计算核心的权重从大到小的顺序,从该多个计算核心中选择m个计算核心;

从该m个第二处理个数中,确定该m个计算核心对应的第二处理个数。

综上所述,在本申请实施例中,根据多个计算核心中各个计算核心的算力,确定各个计算核心的权重,基于权重将待处理数据分配给多个计算核心,而非按照该多个计算核心的数量将待处理数据平均分配给该多个计算核心。由此可见,在该多个计算核心的算力存在不同的情况下,基于权重分配数据能够保证负载均衡,从而提高并行处理的处理效率,提升整体性能。

需要说明的是:上述实施例提供的并行处理装置在并行处理数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的并行处理装置与并行处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图4是本申请实施例提供的一种计算机设备400的结构框图。该计算机设备400可以是:智能手机、平板电脑、笔记本电脑或台式电脑。计算机设备400还可能被称为终端、服务器、用户设备、便携式计算机设备、膝上型计算机设备、台式计算机设备等其他名称。

通常,计算机设备400包括有:处理器401和存储器402。

处理器401可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器401可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器401可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器401还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器401所执行以实现本申请中方法实施例提供的并行处理方法。

在一些实施例中,计算机设备400还可选包括有:外围设备接口403和至少一个外围设备。处理器401、存储器402和外围设备接口403之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口403相连。具体地,外围设备包括:射频电路404、显示屏405、摄像头组件406、音频电路407、定位组件408和电源409中的至少一种。

外围设备接口403可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器401和存储器402。在一些实施例中,处理器401、存储器402和外围设备接口403被集成在同一芯片或电路板上;在一些其他实施例中,处理器401、存储器402和外围设备接口403中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路404用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路404通过电磁信号与通信网络以及其他通信设备进行通信。射频电路404将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路404包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路404可以通过至少一种无线通信协议来与其它计算机设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路404还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏405用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏405是触摸显示屏时,显示屏405还具有采集在显示屏405的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器401进行处理。此时,显示屏405还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏405可以为一个,设置在计算机设备400的前面板;在另一些实施例中,显示屏405可以为至少两个,分别设置在计算机设备400的不同表面或呈折叠设计;在另一些实施例中,显示屏405可以是柔性显示屏,设置在计算机设备400的弯曲表面上或折叠面上。甚至,显示屏405还可以设置成非矩形的不规则图形,也即异形屏。显示屏405可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。

摄像头组件406用于采集图像或视频。可选地,摄像头组件406包括前置摄像头和后置摄像头。通常,前置摄像头设置在计算机设备的前面板,后置摄像头设置在计算机设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件406还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路407可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器401进行处理,或者输入至射频电路404以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备400的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器401或射频电路404的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路407还可以包括耳机插孔。

定位组件408用于定位计算机设备400的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。定位组件408可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源409用于为计算机设备400中的各个组件进行供电。电源409可以是交流电、直流电、一次性电池或可充电电池。当电源409包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,计算机设备400还包括有一个或多个传感器410。该一个或多个传感器410包括但不限于:加速度传感器411、陀螺仪传感器412、压力传感器413、指纹传感器414、光学传感器415以及接近传感器416。

加速度传感器411可以检测以计算机设备400建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器411可以用于检测重力加速度在三个坐标轴上的分量。处理器401可以根据加速度传感器411采集的重力加速度信号,控制显示屏405以横向视图或纵向视图进行用户界面的显示。加速度传感器411还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器412可以检测计算机设备400的机体方向及转动角度,陀螺仪传感器412可以与加速度传感器411协同采集用户对计算机设备400的3D动作。处理器401根据陀螺仪传感器412采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器413可以设置在计算机设备400的侧边框和/或显示屏405的下层。当压力传感器413设置在计算机设备400的侧边框时,可以检测用户对计算机设备400的握持信号,由处理器401根据压力传感器413采集的握持信号进行左右手识别或快捷操作。当压力传感器413设置在显示屏405的下层时,由处理器401根据用户对显示屏405的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器414用于采集用户的指纹,由处理器401根据指纹传感器414采集到的指纹识别用户的身份,或者,由指纹传感器414根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器401授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器414可以被设置在计算机设备400的正面、背面或侧面。当计算机设备400上设置有物理按键或厂商Logo时,指纹传感器414可以与物理按键或厂商Logo集成在一起。

光学传感器415用于采集环境光强度。在一个实施例中,处理器401可以根据光学传感器415采集的环境光强度,控制显示屏405的显示亮度。具体地,当环境光强度较高时,调高显示屏405的显示亮度;当环境光强度较低时,调低显示屏405的显示亮度。在另一个实施例中,处理器401还可以根据光学传感器415采集的环境光强度,动态调整摄像头组件406的拍摄参数。

接近传感器416,也称距离传感器,通常设置在计算机设备400的前面板。接近传感器416用于采集用户与计算机设备400的正面之间的距离。在一个实施例中,当接近传感器416检测到用户与计算机设备400的正面之间的距离逐渐变小时,由处理器401控制显示屏405从亮屏状态切换为息屏状态;当接近传感器416检测到用户与计算机设备400的正面之间的距离逐渐变大时,由处理器401控制显示屏405从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图4中示出的结构并不构成对计算机设备400的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

在一些实施例中,还提供了一种计算机可读存储介质,该存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中并行处理方法的步骤。例如,所述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。

值得注意的是,本申请实施例提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。

应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。所述计算机指令可以存储在上述计算机可读存储介质中。

也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的并行处理方法的步骤。

应当理解的是,本文提及的“至少一个”是指一个或多个,“多个”是指两个或两个以上。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。

以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

技术分类

06120115627829