多核CPU分配方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种多核CPU分配方法、装置、电子设备及存储介质。
背景技术
随着人工智能的快速发展,人工智能赋能广告营销行业,使广告营销行业向着技术化与数字化转型,人工智能与广告营销行业的相结合已经愈发成熟。伴随着人工智能与广告营销行业的相结合,出现了AI(Artificial Intelligence,人工智能)广告这一营销模式,AI广告旨在为每一位消费者创造沉浸式的游戏化体验。
在AI广告运行的过程中,往往需要人脸/人体识别算法实时进行计算,需要读取大量AI广告中的资源文件,需要实时与服务器进行通讯,需要处理大量复杂的交互逻辑,需要实时对互动前端进行渲染等,上述都是需要大量消耗CPU资源的操作。
相关技术中,通过CPU自适应调度,与上述操作相关联的线程有可能运行在一个核心(又称为CPU核)上,或者有可能运行在多个核心上来回切换,不同线程之间相互干扰,导致AI广告运行效率较差。
发明内容
本发明实施例的目的在于提供一种多核CPU分配方法、装置、电子设备及存储介质,以实现提高AI广告运行效率的有益效果。具体技术方案如下:
在本发明实施例的第一方面,首先提供了一种多核CPU分配方法,所述方法包括:
统计AI广告中每个组件的运行耗时,以及统计所述AI广告中每个组件包含的指令数量;
根据所述运行耗时确定所述AI广告中每个组件对应的运行等级;
利用所述运行等级以及所述指令数量,计算所述AI广告中每个组件对应的运行优先级;
根据所述运行优先级,为与所述AI广告中每个组件相关联的线程分配核心,以使与所述AI广告中每个组件相关联的线程运行在对应核心上。
在一个可选的实施方式中,所述根据所述运行耗时确定所述AI广告中每个组件对应的运行等级,包括:
针对所述AI广告中每个组件,计算所述运行耗时与预设耗时阈值之间的差值;
根据所述差值确定该组件对应的运行等级。
在一个可选的实施方式中,所述根据所述差值确定该组件对应的运行等级,包括:
若所述差值的绝对值与所述耗时阈值相等,确定该组件对应的第一类运行等级;
若所述差值小于预设第一阈值,确定该组件对应的第二类运行等级;
若所述差值不小于预设第一阈值且小于预设第二阈值,确定该组件对应的第三类运行等级;
若所述差值不小于预设第二阈值,确定该组件对应的第四类运行等级。
在一个可选的实施方式中,所述利用所述运行等级以及所述指令数量,计算所述AI广告中每个组件对应的运行优先级,包括:
将所述运行等级与所述指令数量相乘,得到所述AI广告中每个组件对应的运行优先级。
在一个可选的实施方式中,所述利用所述运行等级以及所述指令数量,计算所述AI广告中每个组件对应的运行优先级,包括:
将所述运行等级与所述指令数量相加,得到所述AI广告中每个组件对应的运行优先级。
在一个可选的实施方式中,所述根据所述运行优先级,为与所述AI广告中每个组件相关联的线程分配核心,包括:
确定多核设备核心数量;
根据所述核心数量以及所述运行优先级,为与所述AI广告中每个组件相关联的线程分配核心。
在本发明实施例的第二方面,还提供了一种多核CPU分配装置,所述装置包括:
耗时统计模块,用于统计AI广告中每个组件的运行耗时;
数量统计模块,用于统计所述AI广告中每个组件包含的指令数量;
等级确定模块,用于根据所述运行耗时确定所述AI广告中每个组件对应的运行等级;
优先级计算模块,用于利用所述运行等级以及所述指令数量,计算所述AI广告中每个组件对应的运行优先级;
核心分配模块,用于根据所述运行优先级,为与所述AI广告中每个组件相关联的线程分配核心,以使与所述AI广告中每个组件相关联的线程运行在对应核心上。
在一个可选的实施方式中,所述等级确定模块包括:
差值计算子模块,用于针对所述AI广告中每个组件,计算所述运行耗时与预设耗时阈值之间的差值;
等级确定子模块,用于根据所述差值确定该组件对应的运行等级。
在本发明实施例的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面中任一所述的多核CPU分配方法。
在本发明实施例的第四方面,还提供了一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的多核CPU分配方法。
在本发明实施例的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的多核CPU分配方法。
本发明实施例提供的技术方案,通过统计AI广告中每个组件的运行耗时,以及AI广告中每个组件包含的指令数量,基于运行耗时确定AI广告中每个组件对应的运行等级,利用运行等级以及指令数量计算AI广告中每个组件对应的运行优先级,从而基于运行优先级,为与AI广告中每个组件相关联的线程分配核心,如此可以实现为与AI广告中每个组件相关联的线程动态分配核心,提高AI广告运行效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中示出的一种多核CPU分配方法的实施流程示意图;
图2为本发明实施例中示出的一种AI广告的结构示意图;
图3为本发明实施例中示出的另一种多核CPU分配方法的实施流程示意图;
图4为本发明实施例中示出的一种多核CPU分配装置的结构示意图;
图5为本发明实施例中示出的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的一种多核CPU分配方法的实施流程示意图,该方法具体可以包括以下步骤:
S101,统计AI广告中每个组件的运行耗时,以及统计所述AI广告中每个组件包含的指令数量;
在本发明实施例中,一方面,在AI广告运行的过程中统计AI广告中每个组件的运行耗时,即AI广告中每个组件从开始运行至结束运行所花费的时间。
对于AI广告中每个组件,对应于AI广告中每个模块,对于AI广告可以包括多个模块,例如如图2所示,AI广告可以包括算法模块、渲染模块、IO模块、网络模块、交互模块以及其它模块,相应的AI广告中存在组件1、组件2、组件3……,本发明实施例对此不作限定。
另一方面,在AI广告运行的过程中统计AI广告中每个组件包含的指令数量。对于AI广告中每个组件包含的指令,可以由CPU中指定核心发出,本发明实施例对此不作限定。
例如,在AI广告运行的过程中,如下表1所示,统计AI广告中如下组件的运行耗时以及包含的指令数量。
组件 |
运行耗时 |
指令数量 |
1 |
100ms |
10 |
2 |
50ms |
5 |
…… |
…… |
…… |
表1
S102,根据所述运行耗时确定所述AI广告中每个组件对应的运行等级;
针对AI广告中每个组件,根据该组件对应的运行耗时,确定该组件对应的运行等级。其中,组件的运行耗时与组件的运行等级可以成正比,即组件的运行耗时越大,组件的运行等级越高,本发明实施例对此不作限定。
例如,对于AI广告中的组件1、组件2、组件3……,根据组件1对应的运行耗时,可以确定组件1对应的运行等级3,根据组件2对应的运行耗时,可以确定组件2对应的运行等级2,以此类推,可以如下表2所示。
组件 |
运行耗时 |
运行等级 |
1 |
100ms |
3 |
2 |
50ms |
2 |
…… |
…… |
…… |
表2
S103,利用所述运行等级以及所述指令数量,计算所述AI广告中每个组件对应的运行优先级;
针对AI广告中每个组件,利用该组件对应的运行等级以及该组件对应的指令数量,计算该组件对应的运行优先级。
例如,对于AI广告中的组件1、组件2、组件3……,利用组件1对应的运行耗时以及组件1对应的指令数量,计算组件1对应的运行优先级,利用组件2对应的运行耗时以及组件2对应的指令数量,计算组件2对应的运行优先级,以此类推,可以如下表3所示。
组件 |
运行等级 |
指令数量 |
运行优先级 |
1 |
3 |
10 |
30 |
2 |
2 |
5 |
10 |
…… |
…… |
…… |
…… |
表3
S104,根据所述运行优先级,为与所述AI广告中每个组件相关联的线程分配核心,以使与所述AI广告中每个组件相关联的线程运行在对应核心上。
针对AI广告中每个组件,根据该组件对应的运行优先级,为与该组件相关联的线程分配核心,以使与该组件相关联的线程运行在该核心上。其中,对于运行优先级比较高的组件,可以为与该组件相关联的线程分配一个独立的核心,而对于运行优先级比较低的组件,可以为与该组件相关联的线程分配一个与其它组件共享的核心,本发明实施例对此不作限定。
例如,对于AI广告中组件1,如果组件1对应的运行优先级为1,表示组件1当前消耗资源较少,可以将与多个这样优先级的组件相关联的线程调度到一个核心上运行;对于AI广告中组件2,如果组件2对应的运行优先级为3,表示组件2当前消耗资源较多,可以将该组件2调度到一个独立的核心上运行。
通过上述对本发明实施例提供的技术方案的描述,通过统计AI广告中每个组件的运行耗时,以及AI广告中每个组件包含的指令数量,基于运行耗时确定AI广告中每个组件对应的运行等级,利用运行等级以及指令数量计算AI广告中每个组件对应的运行优先级,从而基于运行优先级,为与AI广告中每个组件相关联的线程分配核心,如此可以实现为与AI广告中每个组件相关联的线程动态分配核心,提高AI广告运行效率。
如图3所示,为本发明实施例提供的另一种多核CPU分配方法的实施流程示意图,该方法具体可以包括以下步骤:
S301,统计AI广告中每个组件的运行耗时,以及统计所述AI广告中每个组件包含的指令数量;
在本发明实施例中,本步骤与上述步骤S101类似,本发明实施例在此不再一一赘述。
S302,针对所述AI广告中每个组件,计算所述运行耗时与预设耗时阈值之间的差值;
在本发明实施例中,可以预先设置耗时阈值,针对AI广告中每个组件,计算该组件对应的运行耗时与该耗时阈值之间的差值。
例如,对于AI广告中的组件1、组件2、组件3……,计算组件1对应的运行耗时与耗时阈值之间的差值,计算组件2对应的运行耗时与耗时阈值之间的差值,以此类推,可以如下表4所示。
组件 |
运行耗时 |
耗时阈值 |
差值 |
1 |
100ms |
50 |
50 |
2 |
50ms |
50 |
0 |
…… |
…… |
…… |
…… |
表4
S303,根据所述差值确定该组件对应的运行等级;
针对AI广告中每个组件,计算该组件对应的运行耗时与耗时阈值之间的差值,进而可以根据该差值确定该组件对应的运行等级。
具体地,根据该差值确定该组件对应的运行等级的可选实施方式如下所示:
若所述差值的绝对值与所述耗时阈值相等,确定该组件对应的第一类运行等级;若所述差值小于预设第一阈值,确定该组件对应的第二类运行等级;若所述差值不小于预设第一阈值且小于预设第二阈值,确定该组件对应的第三类运行等级;若所述差值不小于预设第二阈值,确定该组件对应的第四类运行等级。
例如,对于AI广告中组件1,计算组件1对应的运行耗时与耗时阈值之间的差值(组件1对应的运行耗时减去耗时阈值得到差值),如果该差值的绝对值与上述耗时阈值相等,表示组件1对应的运行耗时为0,该组件1未运行,可以确定组件1对应的运行等级0。
又例如,对于AI广告中组件2,计算组件2对应的运行耗时与耗时阈值之间的差值(组件2对应的运行耗时减去耗时阈值得到差值),如果该差值小于预设第一阈值(例如负20),表示该组件对应的运行耗时远小于耗时阈值,组件2消耗的资源较少,可以确定组件2对应的运行等级1。
又例如,对于AI广告中组件3,计算组件3对应的运行耗时与耗时阈值之间的差值((组件3对应的运行耗时减去耗时阈值得到差值)),如果该差值不小于预设第一阈值(例如负20)且小于预设第二阈值(例如正20),表示组件3对应的运行耗时有可能忽高忽低,处于一定范围内,可以确定组件3对应的运行等级2。
又例如,对于AI广告中组件4,计算组件4对应的运行耗时与耗时阈值之间的差值((组件4对应的运行耗时减去耗时阈值得到差值)),如果该差值不小于预设第二阈值(例如正20),表示组件4对应的运行耗时远大于耗时阈值,组件4消耗的资源较多,可以确定组件4对应的运行等级3。
S304,利用所述运行等级以及所述指令数量,计算所述AI广告中每个组件对应的运行优先级;
针对AI广告中每个组件,利用该组件对应的运行等级以及该组件对应的指令数量,可以计算该组件对应的运行等级。
具体地,可以通过以下可选实施方式,计算该组件对应的运行等级:
1、将所述运行等级与所述指令数量相乘,得到所述AI广告中每个组件对应的运行优先级。
针对AI广告中每个组件,将该组件对应的运行等级与该组件对应的指令数量相乘,得到该组件对应的运行优先级。
例如,对于AI广告中组件1、组件2、组件3……,将组件1对应的运行等级与组件1对应的指令数量相乘,得到组件1对应的运行优先级,将组件2对应的运行等级与组件2对应的指令数量相乘,得到组件2对应的运行优先级,以此类推。
2、将所述运行等级与所述指令数量相加,得到所述AI广告中每个组件对应的运行优先级。
针对AI广告中每个组件,将该组件对应的运行等级与该组件对应的指令数量相加,得到该组件对应的运行优先级。
例如,对于AI广告中组件1、组件2、组件3……,将组件1对应的运行等级与组件1对应的指令数量相加,得到组件1对应的运行优先级,将组件2对应的运行等级与组件2对应的指令数量相加,得到组件2对应的运行优先级,以此类推。
S305,根据所述运行优先级,为与所述AI广告中每个组件相关联的线程分配核心,以使与所述AI广告中每个组件相关联的线程运行在对应核心上。
在本发明实施例中,多核是指在处理器中集成两个或两个以上完整的计算引擎(又称为CPU核或者核心),对于多核设备,可以确定多核设备核心数量,进而可以根据核心数量以及运行优先级,为与AI广告中每个组件相关联的线程分配核心,以使与AI广告中每个组件相关联的线程运行在对应核心上。
例如,对于多核设备,包括4个核心,对于AI广告中组件1,如果组件1对应的运行优先级为0,表示该组件1当前未运行,不会占用CPU资源,可以不进行处理;
对于AI广告中组件2,如果组件2对应的运行优先级为A,表示组件2当前消耗资源较少,可以将多个这样优先级的组件相关联的线程调度到一个核心上运行;
对于AI广告中组件3,如果组件3对应的运行优先级为B,可以将该组件3相关联的线程调度到一个独立的核心上运行;
对于AI广告中组件4,如果组件4对应的运行优先级为C,可以将该组件4相关联的线程调度到一个独立的核心上运行。
另外,在本发明实施例中,可以通过以上步骤继续对AI广告中每个组件的运行优先级进行分析,根据核心数量以及运行优先级,为与AI广告中每个组件相关联的线程分配核心,如此往复,可以使与AI广告中每个组件相关联的线程达到一个相对稳定的状态,避免了各个线程之间相互干扰,充分发挥CPU性能。
与上述方法实施例相对应,本发明实施例还提供了一种多核CPU分配装置,如图4所示,该装置可以包括:耗时统计模块410、数量统计模块420、等级确定模块430、优先级计算模块440、核心分配模块450。
耗时统计模块410,用于统计AI广告中每个组件的运行耗时;
数量统计模块420,用于统计所述AI广告中每个组件包含的指令数量;
等级确定模块430,用于根据所述运行耗时确定所述AI广告中每个组件对应的运行等级;
优先级计算模块440,用于利用所述运行等级以及所述指令数量,计算所述AI广告中每个组件对应的运行优先级;
核心分配模块450,用于根据所述运行优先级,为与所述AI广告中每个组件相关联的线程分配核心,以使与所述AI广告中每个组件相关联的线程运行在对应核心上。
在本发明实施例的具体实施方式中,所述等级确定模块430包括:
差值计算子模块431,用于针对所述AI广告中每个组件,计算所述运行耗时与预设耗时阈值之间的差值;
等级确定子模块432,用于根据所述差值确定该组件对应的运行等级。
在本发明实施例的具体实施方式中,所述等级确定子模块432具体用于:
若所述差值的绝对值与所述耗时阈值相等,确定该组件对应的第一类运行等级;
若所述差值小于预设第一阈值,确定该组件对应的第二类运行等级;
若所述差值不小于预设第一阈值且小于预设第二阈值,确定该组件对应的第三类运行等级;
若所述差值不小于预设第二阈值,确定该组件对应的第四类运行等级。
在本发明实施例的具体实施方式中,所述优先级计算模块440具体用于:
将所述运行等级与所述指令数量相乘,得到所述AI广告中每个组件对应的运行优先级。
在本发明实施例的具体实施方式中,所述优先级计算模块440具体用于:
将所述运行等级与所述指令数量相加,得到所述AI广告中每个组件对应的运行优先级。
在本发明实施例的具体实施方式中,所述核心分配模块450具体用于:
确定多核设备核心数量;
根据所述核心数量以及所述运行优先级,为与所述AI广告中每个组件相关联的线程分配核心。
本发明实施例还提供了一种电子设备,如图5所示,包括处理器51、通信接口52、存储器53和通信总线54,其中,处理器51,通信接口52,存储器53通过通信总线54完成相互间的通信,
存储器53,用于存放计算机程序;
处理器51,用于执行存储器53上所存放的程序时,实现如下步骤:
统计AI广告中每个组件的运行耗时,以及统计所述AI广告中每个组件包含的指令数量;根据所述运行耗时确定所述AI广告中每个组件对应的运行等级;利用所述运行等级以及所述指令数量,计算所述AI广告中每个组件对应的运行优先级;根据所述运行优先级,为与所述AI广告中每个组件相关联的线程分配核心,以使与所述AI广告中每个组件相关联的线程运行在对应核心上。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种存储介质,该存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的多核CPU分配方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的多核CPU分配方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在存储介质中,或者从一个存储介质向另一个存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。