CN116048742B - 一种数据处理方法及电子设备 - Google Patents

一种数据处理方法及电子设备 Download PDF

Info

Publication number
CN116048742B
CN116048742B CN202210603412.9A CN202210603412A CN116048742B CN 116048742 B CN116048742 B CN 116048742B CN 202210603412 A CN202210603412 A CN 202210603412A CN 116048742 B CN116048742 B CN 116048742B
Authority
CN
China
Prior art keywords
task
computing unit
proportion
ratio
subtask
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
Application number
CN202210603412.9A
Other languages
English (en)
Other versions
CN116048742A (zh
Inventor
邓锋贤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202210603412.9A priority Critical patent/CN116048742B/zh
Publication of CN116048742A publication Critical patent/CN116048742A/zh
Application granted granted Critical
Publication of CN116048742B publication Critical patent/CN116048742B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请提供一种数据处理方法及电子设备,涉及终端技术领域,改善了异构计算过程中,不能动态分配任务量的问题。具体方案为:调用第一计算单元处理第一子任务的第一可执行任务,第一可执行任务对应的任务量占比为第一比例;调用第二计算单元处理第一子任务中的第二可执行任务,第二可执行任务对应的任务量占比为第二比例;之后,调用第一计算单元处理第二子任务中的第三可执行任务,第三可执行任务对应的任务量占比为第三比例;调用第二计算单元处理第二子任务中的第四可执行任务,第四可执行任务对应的任务量占比为第四比例,所述第三比例与第一比例不同,所述第四比例与所述第二比例不同,第一子任务和第二子任务属于同一计算任务。

Description

一种数据处理方法及电子设备
技术领域
本申请涉及终端设备技术领域,尤其涉及一种数据处理方法及电子设备。
背景技术
目前大部分便携式的电子设备(如手机),可以通过异构计算方式提高运算能力。上述异构计算可以是通过多个计算单元,如,中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、数字信号处理器(digital signalprocessor,DSP)协调处理计算任务。当然,在使用异构计算方式的过程中,会涉及到多个计算模块之间的任务分配问题。
相关技术中,会预先配置不同计算模块协同处理各类计算任务时的任务量占比。然而,这种方式,在部分情况下,不能充分利用计算资源,从而影响电子设备处理计算任务的处理效率。
发明内容
本申请实施例提供一种数据处理方法及电子设备,用于提升电子设备对计算资源的实时利用效率,从而提高电子设备处理计算任务的处理效率。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请实施例提供的一种数据处理方法,应用于电子设备,所述电子设备包括第一计算单元和第二计算单元,所述第一计算单元和第二计算单元上均包括用于处理第一任务的第一算法,所述第一任务包括多个子任务,所述多个子任务包括第一子任务和第二子任务,所述方法包括:调用所述第一计算单元处理所述第一子任务中的第一可执行任务,其中,第一可执行任务与所述第一子任务之间的任务量占比为第一比例,所述第一比例为所述第一计算单元对应的预设比例;调用所述第二计算单元处理所述第一子任务中的第二可执行任务,其中,第二可执行任务与所述第一子任务之间的任务量占比为第二比例,所述第二比例为所述第二计算单元对应的预设比例;调用所述第一计算单元处理所述第二子任务中的第三可执行任务,其中,第三可执行任务与所述第二子任务之间的任务量占比为第三比例,所述第三比例为根据所述第一比例和第一时长确定的比例值,所述第一时长为所述第一计算单元处理所述第一可执行任务的时耗;调用所述第二计算单元处理所述第二子任务中的第四可执行任务,其中,第四可执行任务与所述第二子任务之间的任务量占比为第四比例,所述第四比例为根据所述第二比例和第二时长确定的比例值,所述第二时长为所述第一计算单元处理所述第二可执行任务的时耗。
在上述实施例中,针对第一任务,第一计算单元和第二计算单元可以分多次协同进行处理。第一次协同处理时,按照预设的比例给第一计算单元和第二计算单元分配任务量。第二次协同处理时,可以会根据上一次的执行情况,如,执行过程中耗费的时长,调整任务分配的比例,比如,执行速度更快的计算单元,分配的任务比例调高,再比如,执行速度更慢的计算单元,分配的任务比例调低,这样,动态的任务分配,不仅可以充分利用计算资源,还可以保障处理第一任务的效率。
在一些实施例中,在调用所述第一计算单元处理所述第一子任务中的第一可执行任务之前,所述方法还包括:查询所述第一计算单元对应的第一比例和所述第二计算单元对应的第二比例;根据所述第一比例,从所述第一子任务中,划分出所述第一可执行任务;根据所述第二比例,从所述第一子任务中,划分出所述第二可执行任务。
在一些实施例中,所述方法还包括:分别调用所述第一计算单元和所述第二计算单元处理第一样本任务,所述第一样本任务与所述第一任务为同类型的计算任务;统计所述第一计算单元处理所述第一样本任务的第三时长和所述第二计算单元处理所述第一样本任务的第四时长;依据所述第三时长和所述第四时长,利用第一公式,确定所述第一计算单元对应的第一亲和度权重,以及所述第二计算单元对应的第二亲和度权重,其中,所述第一公式包括:
Mj=Max(Tj)/Tj
其中,j是1和m之间的任意整数值,m代表包含所述第一算法的计算单元总数;Mj指示第j个包含第一算法的计算单元的亲和度权重;在j=1时,Mj指示第一计算单元的第一亲和度权重,Tj指代所述第三时长;在j=2时,Mj指示第二计算单元的第二亲和度权重,Tj指代所述第四时长;Max(Tj)指示包含第一算法的计算单元中,处理所述第一样本任务所需的最长运算时长;依据所述第一亲和度权重、第二亲和度权重,结合第二公式,确定所述第一比例和所述第二比例;其中,所述第二公式包括:
其中,在j=1时,P0j指示所述第一比例,Mj指示第一计算单元的第一亲和度权重;在j=2时,P0j指示所述第二比例,Mj指示第二计算单元的第二亲和度权重;存储所述第一比例和第二比例。
在一些实施例中,在所述第一计算单元处理完所述第一可执行任务,且所述第二计算单元处理完所述第二可执行任务之后,所述方法还包括:获取所述第一时长和所述第二时长;根据所述第一比例和所述第一时长,结合第三公式,确定所述第三比例;根据所述第二比例和所述第二时长,结合所述第三公式,确定所述第四比例;其中,所述第三公式包括:
P2j=P0j-w(T1j-AvgT1),
其中,j是1和m之间的任意整数值,m代表包含所述第一算法的计算单元总数;T1j指示第j个包含所述第一算法的计算单元,处理完对应的可执行任务的时耗;在j=1时,P2j指示所述第一计算单元对应的所述第三比例,P0j指示所述第一比例,T1j指示所述第一时长;在j=2时,P2j指示所述第二计算单元对应的所述第四比例,P0j指示所述第二比例,T1j指示所述第二时长,AvgT1指示参与处理第一子任务的计算单元,完成对应的可执行任务的时耗平均值,w指示预配置的权重参数。
在一些实施例中,所述多个子任务还包括第三子任务,所述方法还包括:调用所述第一计算单元处理所述第三子任务中的第五可执行任务,其中,第五可执行任务与所述第三子任务之间的任务量占比为第五比例,所述第五比例为根据所述第三比例和第五时长确定的比例值,所述第五时长为所述第一计算单元处理所述第三可执行任务的时耗;调用所述第二计算单元处理所述第三子任务中的第六可执行任务,其中,第六可执行任务与所述第三子任务之间的任务量占比为第六比例,所述第六比例为根据所述第四比例和第六时长确定的比例值,所述第六时长为所述第一计算单元处理所述第四可执行任务的时耗。
在一些实施例中,所述第一子任务的任务量小于所述第二子任务的任务量。
在一些实施例中,所述电子设备还包括第三计算单元,所述第一计算单元和第二计算单元上均包括用于处理第二任务的第二算法,所述第二计算单元和第三计算单元上均包括用于处理第三任务的第三算法,所述第二任务包括第四子任务,所述第三任务包括第五子任务,所述方法包括:调用所述第一计算单元处理所述第四子任务中的第七可执行任务,其中,所述第七可执行任务与所述第四子任务之间的任务量占比为第七比例,所述第七比例为所述第一计算单元对应于所述第二任务的预设比例;调用所述第二计算单元处理所述第四子任务中的第八可执行任务,其中,所述第八可执行任务与所述第四子任务之间的任务量占比为第八比例,所述第八比例为所述第二计算单元对应于所述第二任务的预设比例;调用所述第二计算单元处理所述第五子任务中的第九可执行任务,其中,所述第九可执行任务与所述第五子任务之间的任务量占比为第九比例,所述第九比例为所述第二计算单元对应于所述第三任务的预设比例;调用所述第三计算单元处理所述第五子任务中的第十可执行任务,其中,所述第十可执行任务与所述第五子任务之间的任务量占比为第十比例,所述第十比例为所述第三计算单元对应于所述第三任务的预设比例。
在一些实施例中,所述方法还包括:确定协同处理所述第一任务的计算单元包括所述第一计算单元和第二计算单元。
第二方面,本申请实施例提供的一种电子设备,电子设备包括一个或多个处理器和存储器;所述存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,所述一个或多个处理器,用于:调用所述第一计算单元处理所述第一子任务中的第一可执行任务,其中,第一可执行任务与所述第一子任务之间的任务量占比为第一比例,所述第一比例为所述第一计算单元对应的预设比例;调用所述第二计算单元处理所述第一子任务中的第二可执行任务,其中,第二可执行任务与所述第一子任务之间的任务量占比为第二比例,所述第二比例为所述第二计算单元对应的预设比例;调用所述第一计算单元处理所述第二子任务中的第三可执行任务,其中,第三可执行任务与所述第二子任务之间的任务量占比为第三比例,所述第三比例为根据所述第一比例和第一时长确定的比例值,所述第一时长为所述第一计算单元处理所述第一可执行任务的时耗;调用所述第二计算单元处理所述第二子任务中的第四可执行任务,其中,第四可执行任务与所述第二子任务之间的任务量占比为第四比例,所述第四比例为根据所述第二比例和第二时长确定的比例值,所述第二时长为所述第一计算单元处理所述第二可执行任务的时耗。
在一些实施例中,所述一个或多个处理器,还用于:查询所述第一计算单元对应的第一比例和所述第二计算单元对应的第二比例;根据所述第一比例,从所述第一子任务中,划分出所述第一可执行任务;根据所述第二比例,从所述第一子任务中,划分出所述第二可执行任务。
在一些实施例中,所述一个或多个处理器,还用于:分别调用所述第一计算单元和所述第二计算单元处理第一样本任务,所述第一样本任务与所述第一任务为同类型的计算任务;统计所述第一计算单元处理所述第一样本任务的第三时长和所述第二计算单元处理所述第一样本任务的第四时长;依据所述第三时长和所述第四时长,利用第一公式,确定所述第一计算单元对应的第一亲和度权重,以及所述第二计算单元对应的第二亲和度权重,其中,所述第一公式包括:
Mj=Max(Tj)/Tj
其中,j是1和m之间的任意整数值,m代表包含所述第一算法的计算单元总数;Mj指示第j个包含第一算法的计算单元的亲和度权重;在j=1时,Mj指示第一计算单元的第一亲和度权重,Tj指代所述第三时长;在j=2时,Mj指示第二计算单元的第二亲和度权重,Tj指代所述第四时长;Max(Tj)指示包含第一算法的计算单元中,处理所述第一样本任务所需的最长运算时长;依据所述第一亲和度权重、第二亲和度权重,结合第二公式,确定所述第一比例和所述第二比例;其中,所述第二公式包括:
其中,在j=1时,P0j指示所述第一比例,Mj指示第一计算单元的第一亲和度权重;在j=2时,P0j指示所述第二比例,Mj指示第二计算单元的第二亲和度权重;存储所述第一比例和第二比例。
在一些实施例中,所述一个或多个处理器,还用于:获取所述第一时长和所述第二时长;根据所述第一比例和所述第一时长,结合第三公式,确定所述第三比例;根据所述第二比例和所述第二时长,结合所述第三公式,确定所述第四比例;其中,所述第三公式包括:
P2j=P0j-w(T1j-AvgT1),
其中,j是1和m之间的任意整数值,m代表包含所述第一算法的计算单元总数;T1j指示第j个包含所述第一算法的计算单元,处理完对应的可执行任务的时耗;在j=1时,P2j指示所述第一计算单元对应的所述第三比例,P0j指示所述第一比例,T1j指示所述第一时长;在j=2时,P2j指示所述第二计算单元对应的所述第四比例,P0j指示所述第二比例,T1j指示所述第二时长,AvgT1指示参与处理第一子任务的计算单元,完成对应的可执行任务的时耗平均值,w指示预配置的权重参数。
在一些实施例中,所述一个或多个处理器,还用于:调用所述第一计算单元处理所述第三子任务中的第五可执行任务,其中,第五可执行任务与所述第三子任务之间的任务量占比为第五比例,所述第五比例为根据所述第三比例和第五时长确定的比例值,所述第五时长为所述第一计算单元处理所述第三可执行任务的时耗;调用所述第二计算单元处理所述第三子任务中的第六可执行任务,其中,第六可执行任务与所述第三子任务之间的任务量占比为第六比例,所述第六比例为根据所述第四比例和第六时长确定的比例值,所述第六时长为所述第一计算单元处理所述第四可执行任务的时耗。
在一些实施例中,所述一个或多个处理器,还用于:所述第一子任务的任务量小于所述第二子任务的任务量。
在一些实施例中,所述一个或多个处理器,还用于:所述电子设备还包括第三计算单元,所述第一计算单元和第二计算单元上均包括用于处理第二任务的第二算法,所述第二计算单元和第三计算单元上均包括用于处理第三任务的第三算法,所述第二任务包括第四子任务,所述第三任务包括第五子任务,所述方法包括:调用所述第一计算单元处理所述第四子任务中的第七可执行任务,其中,所述第七可执行任务与所述第四子任务之间的任务量占比为第七比例,所述第七比例为所述第一计算单元对应于所述第二任务的预设比例;调用所述第二计算单元处理所述第四子任务中的第八可执行任务,其中,所述第八可执行任务与所述第四子任务之间的任务量占比为第八比例,所述第八比例为所述第二计算单元对应于所述第二任务的预设比例;调用所述第二计算单元处理所述第五子任务中的第九可执行任务,其中,所述第九可执行任务与所述第五子任务之间的任务量占比为第九比例,所述第九比例为所述第二计算单元对应于所述第三任务的预设比例;调用所述第三计算单元处理所述第五子任务中的第十可执行任务,其中,所述第十可执行任务与所述第五子任务之间的任务量占比为第十比例,所述第十比例为所述第三计算单元对应于所述第三任务的预设比例。
在一些实施例中,所述一个或多个处理器,还用于:确定协同处理所述第一任务的计算单元包括所述第一计算单元和第二计算单元。
第三方面,本申请实施例提供的一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述第一方面及其可能的实施例中的方法。
第四方面,本申请提供一种计算机程序产品,当计算机程序产品在上述电子设备上运行时,使得电子设备执行上述第一方面及其可能的实施例中的方法。
可以理解地,上述各个方面所提供的电子设备、计算机可读存储介质以及计算机程序产品均应用于上文所提供的对应方法,因此,其所能达到的有益效果可参考上文所提供的对应方法中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种电子设备的硬件结构示意图;
图2为本申请实施例提供的一种电子设备的软、硬件结构示意图;
图3为本申请实施例提供的一种数据处理方法的流程图之一;
图4为本申请实施例提供的测试计算单元1对应的运算时间的示例图;
图5为本申请实施例提供的一种数据处理方法的流程图之二;
图6为本申请实施例提供的一种数据处理方法的流程图之三;
图7为本申请实施例提供的一种数据处理方法的流程图之四;
图8为本申请实施例提供的电子设备中软件模块的交互图之一;
图9为本申请实施例提供的电子设备中软件模块的交互图之二;
图10为本申请实施例提供的一种芯片系统的组成示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请实施例提供了一种数据处理方法,应用于包括芯片平台(system-on-a-chip,SOC)的电子设备。
其中,SOC中集成了电子设备中的大量核心部件,比如,多种类型的计算单元。可以理解的,上述计算单元是指具有数字处理能力的硬件模块。示例性地,SOC中集成的计算单元可以包括以下至少两种:中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、数字信号处理器(digital signal processor,DSP)、神经网络处理器(neural-network processing unit,NPU)以及现场可编程门阵列(fieldprogrammable gate array,FPGA)等。
这样,SOC可以提供多类型的运算能力,比如,由SOC中集成的CPU提供的复杂逻辑判断能力,由SOC中集成的DSP提供的定点运算能力,由SOC中集成的GPU提供的浮点运算和并行运算能力等。这样,包含上述SOC的电子设备可以实现异构计算,例如,多类计算单元可以共同参与处理同一个运算任务,相较于非异构计算而言,面对任何运算任务,电子设备可使用的运算资源更多,这样,也就提高电子设备的运算能力。
在一些实施例中,电子设备可以将同一计算任务等分给多个计算单元进行处理,然而,在实际处理过程中,不同计算单元所需时间存在参差,致使电子设备采用异构计算的方式,处理计算任务的效率达不到最优。究其原因在于:一方面,虽然多类计算单元都具备运算能力,但不同计算单元的运算能力依然存在差异。另一方面,由于各计算单元特点不同,处理不同计算任务的运算效率也是不同的。可以理解的,为了处理不同计算任务,各计算单元上,需要布局实现不同功能的多个算法(又可称为算子或程序代码)。由于各计算单元特点不同,不同计算单元中实现相同功能的算法是不同的。其中,上述不同可以包括编写方式、语言逻辑的不同等,这都会影响到各计算单元实际处理计算任务所需时长。
以计算任务是图像滤波,DSP中实现图像滤波功能的算法需符合定点运算的要求,GPU中实现图像滤波功能的算法需符合浮点运算的要求。这样,DSP处理图像滤波的效率与GPU处理图像滤波的效率不同,也就是,DSP和GPU面对等分的图像滤波任务,所需的处理时间也不同,这样将导致处理计算任务的时长,受处理速度慢的计算单元的影响。
在一些实施例中,可以预先确定计算单元适合执行的计算任务类型,以及各类计算任务在对应的计算单元之间的分配比例。其中,上述对应的计算单元是指适合执行该类计算任务的所有计算单元。这样,在实际接收到计算任务后,电子设备可以按照预先设定的分配比例,将该计算任务分配给对应的计算单元。
然而,这种静态设定任务分配比例的方式,一旦设定完毕,在电子设备运行期间就无法更改。显然,电子设备实际的运行环境是动态变化的,上述静态设定任务分配比例的方式,并不能稳定保持较优的计算任务处理效率。
比如,预先设定图像滤波任务可以分配给GPU和DSP处理,GPU可分配70%,DSP可分配30%。在接收到图像滤波任务之后,均会给GPU分配70%的图像滤波任务和给DSP分配30%的图像滤波任务。如果GPU和DSP都空闲的情况下,那么处理该图像滤波任务的效率能达到预期。如果在GPU忙碌、DSP空闲的情况下,那么处理该图像滤波任务的效率就不理想,同时,还存在空闲运算资源(DSP)未充分利用的问题。
为了改善上述问题,本申请实施例提供了一种数据处理方法,该方法将计算任务分为n个子任务,n为大于1的正整数。然后,分n次指示多个计算单元协同处理计算任务,如,每次指示多个计算单元执行一个子任务。可理解的,参与协同的计算单元可以是该计算任务对应的计算单元。
另外,第i次指示各计算单元协同处理计算任务时,各计算单元之间任务的分配比例,由各计算单元执行第n-1个子任务的实际情况而定。其中,i的取值可以是2至n之间的任意值。另外,第1次指示各计算单元协同处理计算任务时,可以按照预先设定的任务分配比例,又称为初始化分配比例,确定各计算单元需处理的任务量。
这样,电子设备可以根据实际的运行环境,动态地调整计算任务在各计算单元之间的分配比例。也就是,电子设备在任何运行环境下,都能达到当前环境下较优的任务处理效率。从而,在充分利用运算资源的同时,提高电子设备的计算任务处理效率。
在具体实现中,上述方法可以应用于配置有SOC的电子设备,例如,桌面型、膝上型、平板电脑、手持计算机、手机、笔记本电脑、超级移动个人计算机(Ultra-mobilePersonal Computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(Personal DigitalAssistant,PDA)、电视机、VR设备、AR设备等等。
请参考图1,为本申请实施例提供的一种电子设备100的结构示意图。如图1所示,电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。
其中,上述传感器模块180可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器和骨传导传感器等传感器。
可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。该显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
另外,上述电子设备100中的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。以采用分层架构的Android系统为例,电子设备100的软硬件架构可以如图2所示。
如图2所示,电子设备100从上至下可以分成应用程序层(简称应用层),应用程序框架层(简称框架层),核心库和运行时(libraries&android runtime)层,内核(Kernel)层(也称为驱动层)以及硬件(Hardwork)层等若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。
其中,应用层可以包括一系列应用程序包。如图2所示,应用层可以包括相机应用、图库应用、视频应用等多个应用程序包。
一般而言,应用程序是使用Java语言开发,通过调用应用程序框架层所提供的应用程序编程接口(application programming interface,API)和编程框架来完成。示例性地,应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括内容提供器、资源管理器、通知管理器、窗口管理器、视图系统、电话管理器等,本申请实施例对此不做任何限制。
其中,上述内容提供器,用来存放和获取数据,并使这些数据可以被应用本身或其他应用程序访问。此外,内容提供器还可以获取其他应用程序所共享的数据。其中,上述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
上述资源管理器,用于读取应用程序所需的非代码资源,如,字符串、图形和布局文件(layout file)等。
如图2所示,系统库可以包括多个功能模块。例如:图层整合器(SurfaceFlinger),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。SurfaceFlinger用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
内核层是硬件和软件之间的层。内核层至少包含摄像头驱动程序,音频驱动程序,传感器驱动程序等驱动软件,本申请实施例对此不做任何限制。
内核层中的驱动软件程序可以驱动硬件层中对应的硬件模块,实现对应的功能。例如,摄像头驱动程序可以驱动电子设备100的摄像头执行图像采集,从而,实现拍照功能。
另外,图2中还示例性地展示了硬件层中的硬件模块,如,集成于SOC的多类型计算单元(CPU、GPU、DSP、NPU和FPGA),当然,硬件层还可以包括图2中未示出的硬件模块,如,摄像头、存储器等。
在一些实施例中,应用层中的应用程序运行过程中,会产生业务需求。通过业务需求可以指示一定数量的计算任务,这样,在应用层的应用程序产生业务需求,且该业务需求指示有计算任务时,应用层可以通过框架层向CPU发送任务通知,用于向CPU发布对应的计算任务。
例如,相机应用运行期间,接收到用户指示拍照的操作,可以产生摄照需求。该拍摄需求可以指示拍摄任务及图像预处理任务(如,图像滤波任务)。这样,应用层可以通过框架层向摄像头发送指示拍摄任务的通知,指示摄像头采集原始图像帧。另外,应用层可以通过框架层向计算单元(如,CPU)发送指示预处理任务的通知,指示CPU执行图像预处理任务。这样,CPU可以对采集到的原始图像帧执行图像预处理。上述图像预处理任务也属于一类计算任务吗,可以交由计算单元处理。另外,电子设备自身运行过程中,CPU也会接收各种类型的计算任务。
在接收到计算任务,且计算任务适合使用异构计算的情况下,电子设备可以按照本申请实施例提供的数据处理方法,指示多个计算模块协同处理该计算任务。下面以处理一个计算任务(如,第一任务)进行举例。如图3所示,上述数据处理方法包括以下步骤:
S101,电子设备将第一任务划分为多个子任务。
在一些实施例中,可以将第一任务等分的划分为多个子任务,这样,每个子任务对应的任务量相同。比如,第一任务是对采集到的一帧原始图像帧进行图像滤波。电子设备可以将第一任务拆分为子任务a和子任务b,其中,子任务a指示对原始图像帧中50%的图像区域进行图像滤波,子任务b指示对该原始图像帧的另外50%的图像区域进行图像滤波。
在另一些实施例中,还可以按照预设的任务划分比例,将第一任务划分为多个子任务。比如,预先设置有三个任务划分比例,如,N0%、N1%和N2%,N0%+N1%+N2%=100%,N0小于N1,也小于N2,那可以将第一任务拆分为子任务1、子任务2和子任务3。上述子任务1的任务量占第一任务的总任务量(Task)的N0%,上述子任务2的任务量占第一任务的总任务量(Task)的N1%,上述子任务3的任务量占第一任务的总任务量(Task)的N2%。
S102,电子设备获取第一任务对应的初始分配比例1。
其中,初始分配比例1的数量与计算单元1的数量有关,且所有的初始分配比例1之和等于1。上述计算单元1是指电子设备中可处理第一类计算任务的计算单元,例如,计算单元1包括第一计算单元、第二计算单元和第三计算单元。通常计算单元1中部署有可处理第一类计算任务的算法1(又称为第一算法),当然,不同计算单元1上部署的算法1可以不同。计算单元1上部署的算法1处理任务的效率越高,那么计算单元1与该算法1之间的亲和度权重1越高。上述第一任务属于第一类计算任务,同样,第一任务的多个子任务也属于第一类计算任务。
上述初始分配比例1是指在处理第一任务中第1个子任务(如,称为第一子任务)时,给各个计算单元1分配的任务量占比。上述初始分配比例1与各计算单元1对应的亲和度权重1相关联。
在一些实施例中,上述初始分配比例1可以通过测试得到,并预存储于电子设备的存储地址1。这样,实际处理第一任务之前,通过访问存储地址1,即可得到第一任务对应的初始分配比例1。作为一种示例,测试初始分配比例1的过程如下:
(1)获取各个计算单元1处理同一个第一类计算任务的运算时间1。
示例性地,样本任务1(又称为第一样本任务)和第一任务均属于第一类计算任务,如图4所示,电子设备中的SOC上集成了多个计算单元,其中,CPU、GPU和DSP中布局有算法1,而FPGA和其他计算单元上未布局算法1,那么可确定CPU、GPU和DSP为计算单元1,分别将样本任务1输入CPU、GPU和DSP进行处理,然后,得到CPU处理样本任务1的运算时间T1、GPU处理样本任务1的运算时间T2和DSP处理样本任务1的运算时间T3。另外,第一计算单元处理样本任务所需的运算时间又可称为第三时长,第二计算单元处理样本任务所需的运算时间又可称为第四时长。
(2)依据所有计算单元1对应的运算时间1,确定各个计算单元1对应的亲和度权重1。
作为一种实现方式,依据所有计算单元1对应的运算时间1,利用公式1,得到亲和度权重1。上述公式1(如称为第一公式)如下:
Mj=Max(Tj)/Tj
其中,Tj指代第j个计算单元1对应的运算时间1,j的取值范围是1至m之间的任意正整数值,m为计算单元1的种类数量。比如,图4所示的SOC中,CPU、GPU和DSP为计算单元1,m的值为3。Mj指示第j个计算单元1所对应的亲和度权重1。Max(Tj)指代所有计算单元1对应的运算时间1中的最大值。
例如,CPU、GPU和DSP为计算单元1,T1、T2和T3中,T2的值最大,那么CPU对应的亲和度权重1的值为T2/T1,GPU对应的亲和度权重1的值为1,DSP对应的亲和度权重1的值为T2/T3。另外,第一计算单元对应的亲和度权重1又可称为第一亲和度权重,第二计算单元对应的亲和度权重1又可称为第二亲和度权重。
(3)依据所有计算单元1对应的亲和度权重1,利用公式2(如称为第二公式),得到各计算单元1对应的初始分配比例1,其中,公式2如下:
其中,P0j指代第j个计算单元1对应的初始分配比例1,Mj指示第j个计算单元1所对应的亲和度权重1,m代表计算单元1的总数量。另外,所有的计算单元1对应的初始分配比例1叠加的值等于100%。
这样,就可以测试出各个计算单元1,面对第一类计算任务时,对应的初始分配比例1。然后,将各计算单元1、指示第一类计算任务的类型标识和初始分配比例1,对应存储。其他类型计算任务对应的初始分配比例,也可以通过上述方式得到,并存储,在此不再赘述。
在一些实施例中,电子设备可以依据第一任务对应的类型标识,从已存储的初始分配比例中,查询到各个计算单元1对应的初始分配比例1。
S103,电子设备将第1个子任务,按照初始分配比例1进行拆分,得到多个与计算单元1对应的可执行任务1。
在一些实施例中,依次各计算单元1对应的初始分配比例1,结合第1个子任务的任务量,确定出该计算单元1对应的可执行任务量。例如,CPU对应的初始分配比例1为30%,第1个子任务的任务量为Task1,那么CPU对应的可执行任务量为30%*Task1。GPU对应的初始分配比例1为50%,那么GPU对应的可执行任务量为50%*Task1。DSP对应的初始分配比例1为20%,那么DSP对应的可执行任务量为20%*Task1。然后,按照该计算单元1对应的可执行任务量按照,从第1个子任务中,划分出对应的可执行任务1,该可执行任务1所对应的任务量等于可执行任务量。例如,第一计算单元的初始分配比例1可称为第一比例,第二计算单元的初始分配比例1又可称为第二比例,第一计算单元对应的第一可执行任务,第二计算单元对应的第二可执行任务,可以统称为可执行任务1。
比如,按照CPU对应的可执行任务量(如,30%*Task1),从第1个子任务中,划出任务量为30%*Task1的可执行任务1。按照GPU对应的可执行任务量(如,50%*Task1),从第1个子任务中,划出任务量为50%*Task1的可执行任务1。按照DSP对应的可执行任务量(如,20%*Task1),从第1个子任务中,划出任务量为20%*Task1的可执行任务1。
S104,电子设备指示计算单元1执行对应的可执行任务1。
在一些实施例中,电子设备可以调用计算单元1中算法1的应用程序接口(application programming interface,API),如称为API1,指示该计算单元1执行对应的可执行任务1。示例性地,可以调用CPU中的API1,指示CPU处理任务量为30%*Task1的可执行任务1。可以调用GPU中的API1,指示GPU处理任务量为50%*Task1的可执行任务1。可以调用DSP中的API1,指示DSP处理任务量为20%*Task1的可执行任务1。
S105,电子设备获取各计算单元1对应的实际运算时间1,其中,实际运算时间1为计算单元1处理完可执行任务1所需的时间。
在一些实施例中,可以通过各计算单元1的API1,获取计算单元1执行完可执行任务1的时长,以作为对应的实际运算时间1。例如,第一计算单元对应的实际运算时间1可称为第一时长,第二计算单元对应的实际运算时间1可称为第二时长。
S106,电子设备根据实际运算时间1及初始分配比例1,确定各计算单元1对应的实时分配比例2。
其中,上述实时分配比例2是在初始分配比例1的基础上,利用实际运算时间1,调整后的分配比例。每个计算单元1对应有一个实时分配比例2,上述实时分配比例2可以指示在处理第2个子任务(如称为第二子任务)时,对应的计算单元1可分配到的任务量占比。
示例性地,电子设备可以根据实际运算时间1及初始分配比例1,利用公式3(又称为第三公式),得到各计算单元1对应的实时分配比例2。其中,公式3可以是:
P2j=P0j-w(T1j-AvgT1);
其中,上述P2j是在处理第2个子任务时,为第j个计算单元1划分的任务量占比,又可称为第j个计算单元1的实时分配比例2。P0j指代第j个计算单元1对应的初始分配比例1,j的取值范围是1至m之间的任意正整数值,m为计算单元1的种类数量。w为预先配置的比例参数,该w可以是经验值,w为正数,本申请实施例对w的取值不作限定。T1j是第j个计算单元1处理对应的可执行任务1所用时长,又称为实际运算时间1。AvgT1是指多个计算单元1的实际运算时间1的均值。
S107,电子设备将第2个子任务,按照实时分配比例2进行拆分,得到多个与计算单元1对应的可执行任务2。
在一些实施例中,上述S107的实现细节可以参考上述S103,在此不再赘述。例如,第一计算单元的实时分配比例2可称为第三比例,第二计算单元的实时分配比例2又可称为第四比例,第一计算单元对应的第三可执行任务,第二计算单元对应的第四可执行任务,可以统称为可执行任务2。
S108,电子设备指示计算单元1执行对应的可执行任务2。
在一些实施例中,上述S108的实现细节可参考上述S104,在此不再赘述。
在一些实施例中,如果第一任务拆分后的子任务不少于3个的情况下,在处理完第2个子任务之后,如处理第i个子任务(此处i的取值是3至n之中的任意整数值,n为第一任务对应的子任务总数量)之前,电子设备可以依据各计算单元1处理第i-1个子任务时所用的时长(如称为实际运算时间i-1),确定各计算单元1对应的实时分配比例i。其中,上述实时分配比例i,用于指示处理第i个子任务时,对应的计算单元1分配的任务量占比。例如,开始处理第3个子任务(如称为第三子任务)时,电子设备可以根据各计算单元1处理第2个子任务时对应的实际运算时间2,确定各计算单元1的实时分配比例3。
示例性地,如图5所示,上述方法还可以包括:
S201,电子设备获取各计算单元1对应的实际运算时间i-1。
其中,实际运算时间i-1为处理第i-1个子任务过程中,计算单元1处理完对应的可执行任务所需的时间。在一些实施例中,上述S201的实现细节可参考上述S105,在此不再赘述。例如,在i=3时,第一计算单元对应的实际运算时间i-1又可称为第五时长,第二计算单元对应的实际运算时间i-1又可称为第六时长。
S202,电子设备根据实际运算时间i-1及实时分配比例i-1,确定各计算单元1对应的实时分配比例i。
其中,上述实时分配比例i-1是在处理第i-1个子任务时,给各个计算单元1分配的任务量占比。另外,实时分配比例i可以是在实时分配比例i-1的基础上,利用实际运算时间i-1,调整后的分配比例。
在一些实施例中,上述S202的实现细节可参考上述S106。
示例性地,电子设备可以根据实际运算时间i-1及实时分配比例i-1,利用公式4,得到各计算单元1对应的实时分配比例i。其中,公式4可以是:
Pij=P(i-1)j-w(T(i-1)j-AvgTi-1);
其中,上述Pij是处理第i个子任务时,第j个计算单元1对应的实时分配比例i。P(i-1)j是指处理第i-1个子任务时,第j个计算单元1对应的实时分配比例i-1,j的取值范围是1至m之间的任意正整数值,m为计算单元1的种类数量。i为不小于3且不大于n的正整数,该n指第一任务划分得到的子任务总数。
另外,w为预先配置的比例参数,该w可以是经验值,w为正数,本申请实施例对w的取值不作限定。T(i-1)j是处理第i-1个子任务时,第j个计算单元1的实际运算时间i-1。AvgTi-1是指多个计算单元1的实际运算时间i-1的均值。
S203,电子设备将第i个子任务,按照实时分配比例i进行拆分,得到多个与计算单元1对应的可执行任务i。
在一些实施例中,上述S203的实现细节可参考上述S107,在此不再赘述。例如,在i=3时,第一计算单元的实时分配比例3可称为第五比例,第二计算单元的实时分配比例3又可称为第六比例,第一计算单元对应的第五可执行任务,第二计算单元对应的第六可执行任务,可以统称为可执行任务3。
S204,电子设备指示计算单元1执行对应的可执行任务i。
在一些实施例中,上述S204的实现细节可参考上述S108,在此不再赘述。
作为一种实现方式,如图6所示,在电子设备中CPU、GPU和DSP上均布局有算法1,也即,可以处理第一任务的场景下,电子设备处理第一任务的实现过程如下:
首先,获取第一任务对应的任务数据包。其中,该任务数据包对应有需处理的数据,该数据的大小可以量化为任务量,如记为Task
其次,判断第一任务是否完成。可以理解的,首次判断第一任务是否完成的判断结果为未完成。
如果第一任务未已完成,那么继续获取N(i-1)%的第一任务,i指示从第一任务中获取任务的次数。其中,N(i-1)%是指第i次从第一任务中获取的任务量占比,又可称为任务分配比例。在一些示例中,可以预先设定i的最大值和每个i对应的上述N(i-1)%。比如,预先设定i的最大值为3,第1次对应的任务分配比例为N0%、第2次对应的任务分配比例为N1%和第3次对应的任务分配比例为N2%。其中,N0%、N1%和N2%的总和为100%。这样,第一次可以从第一任务中分出任务量为N0%*Task的子任务,第二次可以从第一任务中分出任务量为N1%*Task的子任务,第三次可以从第一任务中分出任务量为N2%*Task的子任务。
然后,按照CPU、GPU和DSP对应的分配比例,从Ni-1%的第一任务中,确定出CPU对应的任务量1、GPU对应的任务量2和DSP对应的任务量3。
其中,在首次处理第一任务,也即,处理N0%的第一任务时,上述分配比例可以是CPU、GPU和DSP对应的初始分配比例1,该初始分配比例1的获得方式可参考前述实施例,在此不再赘述。另外,任务量1可以是CPU对应的分配比例与N0%*Task的乘积。任务量2可以是GPU对应的分配比例与N0%*Task的乘积。任务量3可以是DSP对应的分配比例与N0%*Task的乘积。
在确定出任务量1、任务量2和任务量3之后,调用CPU中算法1的API处理第一任务中大小为任务量1的任务,调用GPU中算法1的API处理第一任务中大小为任务量2的任务,调用DSP中算法1的API处理第一任务中大小为任务量3的任务。这样,CPU、GPU和DSP可以协同处理第一任务的不同部分,提高处理效率。
之后,可以分别统计CPU、GPU和DSP对应的处理时长。CPU对应的处理时长是指CPU处理完上述任务量1所需的时间,也即,前述实施例中提到的CPU对应的实际运算时间。GPU对应的处理时长是指GPU处理完上述任务量2所需的时间,也即前述实施例中提到的GPU对应的实际运算时间。DSP对应的处理时长是指DSP处理完上述任务量3所需的时间,也即前述实施例中提到的DSP对应的实际运算时间。
然后,更新CPU、GPU和DSP对应的分配比例。第一次更新分配比例的实现方式可以参考上述S106,也即,依据初始分配比例1和实际运算时间,确定出CPU、GPU和DSP对应的实时分配比例,作为更新后的分配比例。
之后,进行再一次判断第一任务是否完成,并重复上述过程,比如,获取N1%的第一任务,按照CPU、GPU和DSP对应的分配比例(也即,更新后的分配比例),从N1%的第一任务中,确定出CPU对应的任务量1、GPU对应的任务量2和DSP对应的任务量3。其中,任务量1可以是CPU对应的分配比例与N1%*Task的乘积。任务量2可以是GPU对应的分配比例与N1%*Task的乘积。任务量3可以是DSP对应的分配比例与N1%*Task的乘积。分别调度CPU、GPU和DSP中算法1的API处理对应的任务量。然后,再次统计本次CPU、GPU和DSP对应的处理时长。最后,更新CPU、GPU和DSP对应的分配比例,此时更新分配比例的过程可参考S202,也即,依据当前的分配比例和最新得到的实际运算时间,确定出CPU、GPU和DSP对应的实时分配比例,作为更新后的分配比例。
再次更新完分配比例之后,继续判断第一任务是否完成,并重复上述过程,比如,获取N2%的第一任务,按照CPU、GPU和DSP对应的分配比例(也即,再次更新后的分配比例),从N2%的第一任务中,确定出CPU对应的任务量1、GPU对应的任务量2和DSP对应的任务量3。其中,任务量1可以是CPU对应的分配比例与N2%*Task的乘积。任务量2可以是GPU对应的分配比例与N2%*Task的乘积。任务量3可以是DSP对应的分配比例与N2%*Task的乘积。分别调度CPU、GPU和DSP中算法1的API处理对应的任务量。然后,再次统计本次CPU、GPU和DSP对应的处理时长。最后,再次更新CPU、GPU和DSP对应的分配比例,此时更新分配比例的过程可参考S202,也即,依据当前的分配比例和最新得到的实际运算时间,确定出CPU、GPU和DSP对应的实时分配比例,作为更新后的分配比例。
上述示例中,分次指示CPU、GPU和DSP协同处理第一任务,如,指示CPU、GPU和DSP协同处理N0%的第一任务,指示CPU、GPU和DSP协同处理N1%的第一任务和指示CPU、GPU和DSP协同处理N2%的第一任务。其中,处理N0%的第一任务期间和处理N1%的第一任务期间相比,CPU对应的分配比例不同,GPU对应的分配比例不同,DSP对应的分配比例不同,另外,CPU对应的任务量1也不相同,GPU对应的任务量2也不相同,DSP对应的任务量3不同。同样,处理N1%的第一任务期间和处理N2%的第一任务期间相比,CPU对应的分配比例不同,GPU对应的分配比例不同,DSP对应的分配比例不同,另外,CPU对应的任务量1也不相同,GPU对应的任务量2也不相同,DSP对应的任务量3不同。处理N0%的第一任务期间和处理N2%的第一任务期间相比,CPU对应的分配比例不同,GPU对应的分配比例不同,DSP对应的分配比例不同,另外,CPU对应的任务量1也不相同,GPU对应的任务量2也不相同,DSP对应的任务量3不同。
总而言之,处理第一任务的整个周期内,分配给CPU、GPU和DSP的任务量是动态调整的,这样的动态调整过程中,充分考虑到不同计算单元实际的运行状态,高效利用可用的计算资源,同时,保障计算任务的处理效率。
在其他实施例中,电子设备需要面对大量的计算任务并发的场景,在此场景下,电子设备可以结合系统状态,动态调整各计算单元之间任务分配比例。如图7所示,电子设备可以将需要处理的计算任务放入任务池中,等待被处理。这样,电子设备也可以同时或者先后从任务池中,获取待处理的多个计算任务,如,第二任务和第三任务。然后,初始化计算单元中用于处理第二任务的算法,以及初始化计算单元中用于处理第三任务的算法。
在初始化第二任务对应的算法之后,可以判断第二任务是否可采用异构计算方式处理。示例性地,判断方式可以是查询可处理第二任务的计算单元的数量,如果数量为1,那么确定第二任务不可采用异构计算方式处理,在此场景下,调度指定的计算单元处理第二任务。其中,指定的计算单元为可处理该第二任务的计算单元。
如果可处理第二任务的计算单元的数量大于1,那么确定第二任务可采用异构计算方式处理,这样,可以采用前述实施例中介绍的数据处理方法处理该第二任务。例如,第一计算单元和第二计算单元上布局有用于处理第二任务的第二算法,那么可以确定第二任务可以采用异构计算的方式进行处理。然后,把第二任务划分为多个子任务,多个子任务包括第四子任务。
在处理第四子任务的过程中,由第一计算单元处理第四子任务中的第七可执行任务,第七可执行任务与第四子任务之间的任务量占比为第七比例,第七比例为所述第一计算单元对应于所述第二任务的初始化分配比例1。同时,由第二计算单元处理第四子任务中的第八可执行任务,所述第八可执行任务与第四子任务之间的任务量占比为第八比例,第八比例为第二计算单元对应于所述第二任务的初始化分配比例1。
另外,在初始化第三任务对应的算法之后,可以判断第三任务是否可采用异构计算方式处理。如果确定第三任务不可采用异构计算方式处理,那么调度指定的计算单元处理第三任务。其中,指定的计算单元为可处理该第三任务的计算单元。
如果确定第三任务可采用异构计算方式处理,那么继续采用前述实施例中介绍的数据处理方法处理该第三任务。例如,第二计算单元和第三计算单元上布局有用于处理第三任务的第三算法,那么可以确定第三任务可以采用异构计算的方式进行处理。把第三任务划分为多个子任务,多个子任务包括第五子任务。
在处理第五子任务的过程中,由第二计算单元处理第五子任务中的第九可执行任务,第九可执行任务与所述第五子任务之间的任务量占比为第九比例,第九比例为第二计算单元对应于所述第三任务的初始化分配比例1。同时,由第三计算单元处理第五子任务中的第十可执行任务,第十可执行任务与所述第五子任务之间的任务量占比为第十比例,第十比例为第三计算单元对应于所述第三任务的初始化分配比例1。
当然,电子设备处理第二任务和第三任务的时间可以存在重叠,所用的计算单元也存在重叠。
在利用上述数据处理方法处理计算任务的过程中,电子设备中多个软件模块需要进行数据的交互,例如,图8所示,涉及的软件模块包括:初始化任务分配策略模块、CPU中的算法、GPU中的算法、DSP中的算法、FPGA中的算法、其他计算单元中的算法、CPU任务比例模块、GPU任务比例模块、DSP任务比例模块、FPGA任务比例模块、其他计算单元任务比例模块、任务调度模块、系统状态监控模块及任务状态监控模块。
以处理第二任务进行举例:在所有计算单元都可以处理第二任务的场景下,可确定需要采用异构计算方式处理该第二任务。这样,如图8所示,初始化任务分配策略模块可以按照S101~S104所指示的步骤,确定各个计算单元首次处理第二任务时,所需处理的任务量,得到各计算单元对应的可执行任务。然后,调用CPU中的算法、GPU中的算法、DSP中的算法、FPGA中的算法、其他计算单元中的算法,实际处理对应的可执行任务。在各计算单元实际处理完对应的可执行任务之后,分别通过对应的任务比例模块,将实际运算时间发送给任务调度模块。比如,CPU中的算法处理完对应的可执行任务之后,可以通过CPU任务比例模块,将处理该可执行任务的实际运算时间发送给任务调度模块。当然,任务调度模块还可以从系统状态监控模块获取指示各计算单元是否忙碌的信息1及从任务状态监控模块中获取指示第二任务是否完成的信息2。可以理解地,上述系统状态监控模块可以实时监控各计算单元的资源占用量,在计算单元的资源占用量超过设定阈值时,可以确定该计算单元处于忙碌,否则确定该计算单元处于空闲。任务状态监控模块可用于监控各计算任务的完成进度。
在任务调度模块得到来自于各任务比例模块发送的实际运算时间之后,任务调度模块先根据来自任务状态监控模块的信息2,确定第二任务是否已完成。在确定第二任务未完成的情况下,第二设备根据来自系统状态监控模块的信息1,确定是否暂停执行第二任务。比如,在信息1指示第二任务可用的计算单元中,空闲的计算单元少于指定数量,如,指定数量为2,那么确定暂停执行第二任务。之后,任务调度模块可以周期性地从系统状态监控模块中查询最新的信息1。在得到的信息1指示第二任务可用的计算单元中,空闲的计算单元不少指定数量时,任务调度模块可以执行上述S106和S107,确定各计算单元再次处理第二任务时,所需处理的任务量,得到各计算单元对应的可执行任务,然后,如图9所示,任务调度模块分别通过各计算单元对应的任务比例模块,将各计算单元对应的可执行任务发送至各计算单元,调用各计算单元中的算法处理新接收到的可执行任务。
另外,除了CPU中的算法和CPU任务比例模块之外,初始化任务分配策略模块、任务调度模块、系统状态监控模块及任务状态监控模块均可以部署在CPU上。
本申请实施例还提供一种芯片系统,该芯片系统可以应用于前述实施例中的电子设备。如图10所示,该芯片系统包括至少一个处理器2201和至少一个接口电路2202。该处理器2201可以是上述电子设备中的处理器。处理器2201和接口电路2202可通过线路互联。该处理器2201可以通过接口电路2202从上述电子设备的存储器接收并执行计算机指令。当计算机指令被处理器2201执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
在一些实施例中,通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何在本申请实施例揭露的技术范围内的变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种数据处理方法,其特征在于,应用于电子设备,所述电子设备包括第一计算单元和第二计算单元,所述方法包括:
将第一任务划分为多个子任务,所述多个子任务包括第一子任务和第二子任务;
确定所述第一子任务的任务量小于所述第二子任务的任务量;
拆分所述第一子任务,得到第一可执行任务和第二可执行任务,其中,第一可执行任务与所述第一子任务之间的任务量占比为第一比例,所述第一比例为所述第一计算单元对应的预设比例,第二可执行任务与所述第一子任务之间的任务量占比为第二比例,所述第二比例为所述第二计算单元对应的预设比例;
调用所述第一计算单元处理所述第一子任务中的第一可执行任务;
调用所述第二计算单元处理所述第一子任务中的第二可执行任务;
在所述第一子任务被处理完之后,拆分所述第二子任务,得到第三可执行任务和第四可执行任务,其中,所述第三可执行任务与所述第二子任务之间的任务量占比为第三比例,所述第三比例为在所述第一比例的基础上,按照第一时长和第二时长之间的大小关系进行调节后得到的比例,所述第一时长为所述第一计算单元处理所述第一可执行任务的时耗,所述第四可执行任务与所述第二子任务之间的任务量占比为第四比例,所述第四比例为在所述第二比例的基础上,采用第一时长和第二时长之间的大小关系进行调节后得到的比例,所述第二时长为所述第一计算单元处理所述第二可执行任务的时耗;
调用所述第一计算单元处理所述第二子任务中的第三可执行任务;
调用所述第二计算单元处理所述第二子任务中的第四可执行任务。
2.根据权利要求1所述的数据处理方法,其特征在于,在调用所述第一计算单元处理所述第一子任务中的第一可执行任务之前,所述方法还包括:
查询所述第一计算单元对应的第一比例和所述第二计算单元对应的第二比例;
根据所述第一比例,从所述第一子任务中,划分出所述第一可执行任务;
根据所述第二比例,从所述第一子任务中,划分出所述第二可执行任务。
3.根据权利要求1或2所述的数据处理方法,其特征在于,所述第一计算单元和第二计算单元上均包括用于处理第一任务的第一算法,所述方法还包括:
分别调用所述第一计算单元和所述第二计算单元处理第一样本任务,所述第一样本任务与所述第一任务为同类型的计算任务;
统计所述第一计算单元处理所述第一样本任务的第三时长和所述第二计算单元处理所述第一样本任务的第四时长;
依据所述第三时长和所述第四时长,利用第一公式,确定所述第一计算单元对应的第一亲和度权重,以及所述第二计算单元对应的第二亲和度权重,其中,所述第一公式包括:
Mj=Max(Tj)/Tj
其中,j是1和m之间的任意整数值,m代表包含所述第一算法的计算单元总数;Mj指示第j个包含第一算法的计算单元的亲和度权重;在j=1时,Mj指示第一计算单元的第一亲和度权重,Tj指代所述第三时长;在j=2时,Mj指示第二计算单元的第二亲和度权重,Tj指代所述第四时长;Max(Tj)指示包含第一算法的计算单元中,处理所述第一样本任务所需的最长运算时长;
依据所述第一亲和度权重、第二亲和度权重,结合第二公式,确定所述第一比例和所述第二比例;其中,所述第二公式包括:
其中,在j=1时,P0j指示所述第一比例,Mj指示第一计算单元的第一亲和度权重;在j=2时,P0j指示所述第二比例,Mj指示第二计算单元的第二亲和度权重;
存储所述第一比例和第二比例。
4.根据权利要求1所述的数据处理方法,其特征在于,在所述第一计算单元处理完所述第一可执行任务,且所述第二计算单元处理完所述第二可执行任务之后,所述方法还包括:
获取所述第一时长和所述第二时长;
根据所述第一比例和所述第一时长,结合第三公式,确定所述第三比例;
根据所述第二比例和所述第二时长,结合所述第三公式,确定所述第四比例;其中,所述第三公式包括:
P2j=P0j-w(T1j-AvgT1),
其中,j是1和m之间的任意整数值,m代表包含第一算法的计算单元总数;T1j指示第j个包含所述第一算法的计算单元,处理完对应的可执行任务的时耗;在j=1时,P2j指示所述第一计算单元对应的所述第三比例,P0j指示所述第一比例,T1j指示所述第一时长;在j=2时,P2j指示所述第二计算单元对应的所述第四比例,P0j指示所述第二比例,T1j指示所述第二时长,AvgT1指示参与处理第一子任务的计算单元,完成对应的可执行任务的时耗平均值,w指示预配置的权重参数。
5.根据权利要求1所述的数据处理方法,其特征在于,所述多个子任务还包括第三子任务,所述方法还包括:
调用所述第一计算单元处理所述第三子任务中的第五可执行任务,其中,第五可执行任务与所述第三子任务之间的任务量占比为第五比例,所述第五比例为根据所述第三比例和第五时长确定的比例值,所述第五时长为所述第一计算单元处理所述第三可执行任务的时耗;
调用所述第二计算单元处理所述第三子任务中的第六可执行任务,其中,第六可执行任务与所述第三子任务之间的任务量占比为第六比例,所述第六比例为根据所述第四比例和第六时长确定的比例值,所述第六时长为所述第一计算单元处理所述第四可执行任务的时耗。
6.根据权利要求1所述的数据处理方法,其特征在于,所述电子设备还包括第三计算单元,所述第一计算单元和第二计算单元上均包括用于处理第二任务的第二算法,所述第二计算单元和第三计算单元上均包括用于处理第三任务的第三算法,所述第二任务包括第四子任务,所述第三任务包括第五子任务,所述方法包括:
调用所述第一计算单元处理所述第四子任务中的第七可执行任务,其中,所述第七可执行任务与所述第四子任务之间的任务量占比为第七比例,所述第七比例为所述第一计算单元对应于所述第二任务的预设比例;
调用所述第二计算单元处理所述第四子任务中的第八可执行任务,其中,所述第八可执行任务与所述第四子任务之间的任务量占比为第八比例,所述第八比例为所述第二计算单元对应于所述第二任务的预设比例;
调用所述第二计算单元处理所述第五子任务中的第九可执行任务,其中,所述第九可执行任务与所述第五子任务之间的任务量占比为第九比例,所述第九比例为所述第二计算单元对应于所述第三任务的预设比例;
调用所述第三计算单元处理所述第五子任务中的第十可执行任务,其中,所述第十可执行任务与所述第五子任务之间的任务量占比为第十比例,所述第十比例为所述第三计算单元对应于所述第三任务的预设比例。
7.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:确定协同处理所述第一任务的计算单元包括所述第一计算单元和第二计算单元。
8.一种电子设备,其特征在于,电子设备包括一个或多个处理器和存储器;所述存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,所述一个或多个处理器,用于执行如权利要求1-7中任一项所述的方法。
9.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-7中任一项所述的方法。
CN202210603412.9A 2022-05-30 2022-05-30 一种数据处理方法及电子设备 Active CN116048742B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210603412.9A CN116048742B (zh) 2022-05-30 2022-05-30 一种数据处理方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210603412.9A CN116048742B (zh) 2022-05-30 2022-05-30 一种数据处理方法及电子设备

Publications (2)

Publication Number Publication Date
CN116048742A CN116048742A (zh) 2023-05-02
CN116048742B true CN116048742B (zh) 2023-11-07

Family

ID=86112071

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210603412.9A Active CN116048742B (zh) 2022-05-30 2022-05-30 一种数据处理方法及电子设备

Country Status (1)

Country Link
CN (1) CN116048742B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116431315B (zh) * 2023-06-07 2023-08-29 成都登临科技有限公司 批处理任务的处理方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706741A (zh) * 2009-12-11 2010-05-12 中国人民解放军国防科学技术大学 一种基于负载平衡的cpu和gpu两级动态任务划分方法
CN111090508A (zh) * 2019-11-29 2020-05-01 西安交通大学 一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法
CN114217955A (zh) * 2021-11-22 2022-03-22 浙江大华技术股份有限公司 一种数据处理方法、设备及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706741A (zh) * 2009-12-11 2010-05-12 中国人民解放军国防科学技术大学 一种基于负载平衡的cpu和gpu两级动态任务划分方法
CN111090508A (zh) * 2019-11-29 2020-05-01 西安交通大学 一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法
CN114217955A (zh) * 2021-11-22 2022-03-22 浙江大华技术股份有限公司 一种数据处理方法、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN116048742A (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
US20210358523A1 (en) Image processing method and image processing apparatus
CN113778663B (zh) 一种多核处理器的调度方法及电子设备
CN110162393B (zh) 任务调度方法、装置及存储介质
EP4149071A1 (en) Artificial intelligence resource scheduling method and apparatus, storage medium, and chip
CN115292052B (zh) 内存回收方法、电子设备及计算机可读存储介质
CN116048742B (zh) 一种数据处理方法及电子设备
EP4209906A1 (en) Memory management method, electronic device, and computer-readable storage medium
CN115600676A (zh) 深度学习模型推理方法、装置、设备及存储介质
CN116680153B (zh) 应用帧率平滑方法、电子设备及存储介质
CN116578422A (zh) 资源分配方法和电子设备
EP4280060A1 (en) Power consumption control method and apparatus
CN117130773A (zh) 资源分配方法、装置和设备
CN114968540A (zh) 一种核间迁移的频率调整方法
CN116048771A (zh) 一种资源调度方法及相关设备
CN116303110B (zh) 一种内存垃圾的回收方法及电子设备
CN116361200B (zh) 一种内存垃圾的回收方法及电子设备
CN111813541A (zh) 一种任务调度方法、装置、介质和设备
CN116934572B (zh) 图像处理方法和设备
CN116320727B (zh) 一种算法调度方法及电子设备
WO2024087840A1 (zh) 资源管控方法、装置、芯片、电子设备及介质
US20230289291A1 (en) Cache prefetch for neural processor circuit
CN116664630B (zh) 一种图像处理方法和电子设备
CN116055443B (zh) 识别社交场景的方法、电子设备及计算机可读存储介质
CN116027878B (zh) 功耗调整方法和电子设备
WO2024002189A1 (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