CN115437776A - 绘图线程排程方法、装置及计算机设备 - Google Patents
绘图线程排程方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN115437776A CN115437776A CN202110614443.XA CN202110614443A CN115437776A CN 115437776 A CN115437776 A CN 115437776A CN 202110614443 A CN202110614443 A CN 202110614443A CN 115437776 A CN115437776 A CN 115437776A
- Authority
- CN
- China
- Prior art keywords
- thread
- threads
- slave
- master
- processor core
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
Abstract
本申请实施例提供了一种绘图线程排程方法、装置及计算机设备,其中方法包括:获取当前待处理的各绘图线程之间的主从依赖关系;根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核;将各绘图线程排入对应的目标处理器核的线程队列。这样,可以根据绘图线程之间的主从依赖关系合理分配处理器核,以减少绘图线程之间的依赖等待时间,优化绘图进程。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种绘图线程排程方法、装置及计算机设备。
背景技术
目前计算机设备的系统例如Android系统,通常有两个3D图形的应用程序接口(Application Programming Interface,简称API)规格:(1)OpenGL;(2)Vulkan。这两者上在图形界面订定不同API界面,利用拦截hook关键API方式来改善绘图线程的中央处理器(Central Processing Unit,简称CPU)负载计算。由于手机等计算机设备运算能力逐年提高,游戏应用程序也从过往单线程绘图线程,如今已变成多线程绘图线程。
目前游戏引擎的多线程架构为主从(Master、Slave)架构,即有一个主要的绘图线程、及多个从属的绘图线程,从属的线程可能还有自己的子属线程,从绘图线程的计算结果,会被主要绘图线程使用,因此彼此之间有依赖关系Dependency。
例如某线程负责画2D小地图,主要线程则将这张2D小地图放置目前3D画面的右上角之类的,以让玩家识别目前所在区域。由于依赖关系,绘图线程之间就会同步等待发生。目前Kernel Load Tracking算法不考虑绘图线程之间的依赖关系,而只针对某一线程的执行时间作调度实体负载计算,那就会发生某一线程被计算负载小,而被分配到小核,而另一个线程分配到大核,大小核CPU频率不同,由于大核执行速度快,但却要等待小核线程完成的结果,才可以继续执行,进而影响整体游戏的效能。
可见,现有的绘图线程排程方案存在等待时间较长影响绘图进程的技术问题。
发明内容
为了解决上述技术问题,本发明实施例提供了一种绘图线程排程方法、装置及计算机设备。
第一方面,本发明实施例提供了一种绘图线程排程方法,包括:
获取当前待处理的各绘图线程之间的主从依赖关系;
根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核;
将各绘图线程排入对应的目标处理器核的线程队列。
根据本公开的一种具体实施方式,所述获取当前待处理的各绘图线程之间的主从依赖关系,根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核的步骤,包括:
确定存在主从依赖关系的主绘图线程和至少一个从绘图线程,其中,主绘图线程的需求算力大于从绘图线程的需求算力,且主绘图线程依赖从绘图线程的绘图结果;
根据各处理器核的当前算力,查找满足主绘图线程的需求算力的备用处理器核;
从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核。
根据本公开的一种具体实施方式,所述从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核的步骤,包括:
判断所述备用处理器核的数量是否大于或者等于绘图线程总数,其中,所述绘图线程总数为主绘图线程和从绘图线程的总数量;
在所述备用处理器核的数量大于或者等于绘图线程总数的情况下,为所述主绘图线程和所述从绘图线程分别分配一个所述备用处理器核作为对应的目标处理器核。
根据本公开的一种具体实施方式,处理器核的算力级别包括依次增大的第一级别、第二级别和第三级别;
所述从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核的步骤,包括:
在所述备用处理器核的算力级别小于或者等于所述第二级别的情况下,为所述主绘图线程分配所述备用处理器核作为对应的目标处理器核;
为每个从绘图线程均分配一个对应的目标处理器核或者为全部从绘图线程分配同一个目标处理器核,其中,从绘图线程对应的目标处理器核的算力级别大于或者等于所述备用处理器核的算力级别。
根据本公开的一种具体实施方式,所述确定存在主从依赖关系的主绘图线程和至少一个从绘图线程的步骤,包括:
从当前待处理的各绘图线程中确定主绘图线程;
查找与所述主绘图线程存在依赖关系的全部从绘图线程。
根据本公开的一种具体实施方式,所述从当前待处理的各绘图线程中确定主绘图线程,查找与所述主绘图线程存在依赖关系的全部从绘图线程的步骤,包括:
获取预先存储的线程白名单;
根据所述线程白名单,从当前待处理的各绘图线程中筛选出全部主绘图线程以及与各主绘图线程关联的全部从绘图线程。
根据本公开的一种具体实施方式,绘图线程的需求算力的获取方式包括:
获取所述绘图线程的调度实体在单位时间内执行时间的占比;
根据所述调度实体的历史执行实际以及执行时间的占比,利用预设负载跟踪算法换算所述调度实体的负载;
根据所述调度实体的负载计算所述绘图线程的需求算力。
第二方面,本发明实施例提供了一种绘图线程排程装置,包括:
获取模块,用于获取当前待处理的各绘图线程之间的主从依赖关系;
分配模块,用于根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核;
排程模块,用于将各绘图线程排入对应的目标处理器核的线程队列。
根据本公开的一种具体实施方式,所述分配模块用于:
确定存在主从依赖关系的主绘图线程和至少一个从绘图线程,其中,主绘图线程的需求算力大于从绘图线程的需求算力,且主绘图线程依赖从绘图线程的绘图结果;
根据各处理器核的当前算力,查找满足主绘图线程的需求算力的备用处理器核;
从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核。
根据本公开的一种具体实施方式,所述分配模块用于:
判断所述备用处理器核的数量是否大于或者等于绘图线程总数,其中,所述绘图线程总数为主绘图线程和从绘图线程的总数量;
在所述备用处理器核的数量大于或者等于绘图线程总数的情况下,为所述主绘图线程和所述从绘图线程分别分配一个所述备用处理器核作为对应的目标处理器核。
根据本公开的一种具体实施方式,处理器核的算力级别包括依次增大的第一级别、第二级别和第三级别;
所述分配模块用于:
在所述备用处理器核的算力级别小于或者等于所述第二级别的情况下,为所述主绘图线程分配所述备用处理器核作为对应的目标处理器核;
为每个从绘图线程均分配一个对应的目标处理器核或者为全部从绘图线程分配同一个目标处理器核,其中,从绘图线程对应的目标处理器核的算力级别大于或者等于所述备用处理器核的算力级别。
根据本公开的一种具体实施方式,所述分配模块用于:
从当前待处理的各绘图线程中确定主绘图线程;
查找与所述主绘图线程存在依赖关系的全部从绘图线程。
根据本公开的一种具体实施方式,所述分配模块用于:
获取预先存储的线程白名单;
根据所述线程白名单,从当前待处理的各绘图线程中筛选出全部主绘图线程以及与各主绘图线程关联的全部从绘图线程。
根据本公开的一种具体实施方式,所述分配模块用于:
获取所述绘图线程的调度实体在单位时间内执行时间的占比;
根据所述调度实体的历史执行实际以及执行时间的占比,利用预设负载跟踪算法换算所述调度实体的负载;
根据所述调度实体的负载计算所述绘图线程的需求算力。
第三方面,本发明实施例提供了一种计算机设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器运行时执行第一方面中任一项所述的绘图线程排程方法。
第三方面,本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行第一方面中任一项所述的绘图线程排程方法。
上述本申请提供的一种绘图线程排程方法、装置及计算机设备,通过获取当前待处理的各绘图线程之间的主从依赖关系,再根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核,接着将各绘图线程排入对应的目标处理器核的线程队列。这样,可以根据绘图线程之间的主从依赖关系合理分配处理器核,以减少绘图线程之间的依赖等待时间,优化绘图进程。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本申请实施例提供的一种绘图线程排程方法的流程示意图;
图2示出了本申请实施例提供的绘图线程排程方法所涉及的主从绘图线程示意图;
图3示出了本申请实施例提供的绘图线程排程方法的另一种流程示意图;
图4示出了本申请实施例提供的一种绘图线程排程装置的模块框图;
图5示出了本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
实施例1
参见图1,为本申请实施例提供的一种绘图线程排程方法的流程示意图。如图1所示,所述方法主要包括以下步骤:
S101,获取当前待处理的各绘图线程之间的主从依赖关系;
本实施例提供的绘图线程排程方法,应用于多核处理器,用于实现多绘图线程场景的合理排程方案。当然,此这对绘图线程的排程方案也可以适用于存在同样依赖等待问题的其他作业线程的排程方案中。
游戏引擎的多线程架构为主从(Master、Slave)架构,包括一个主要的绘图线程及多个从属的绘图线程,从属的线程可能还有自己的子属线程。通常的,主绘图线程的需求算力大于从绘图线程的需求算力,且主绘图线程依赖从绘图线程的绘图结果。即从绘图线程的计算结果,会被主要绘图线程使用,因此彼此之间有依赖关系Dependency。
如图2所示,在一应用程序中存在6个待处理的绘图线程,其中一个主绘图线程Main Render Thread负责绘制整个场景的图,5个从绘图线程Slave或称Worker RenderThread,即thread1至thread5负责执行绘制小范围的图像结果。主绘图线程需要将5个Worker Render Thread的结果贴到主画面上,因此主画面的Main Render Thread需要等待5个worker thread图像结果的完成,即Main Render Thread与Worker Render Thread之间存在主从依赖关系。
S102,根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核;
在多核系统的计算机设备内,各处理器核的算力级别不同,当前可用的算力也不同,在进行排程时,需要考虑各处理器核的当前算力,以保证为各绘图线程分配的处理器核的当前算力至少满足等于或者大于绘图线程的需求算力。
此外,为减少绘图线程之间的依赖等待,在进行排程时,还要考虑各绘图线程之间的主从依赖关系,即将存在主从依赖关系的绘图线程关联分配处理器核,以使得被依赖等待的绘图线程能够被优先处理,以使得其他的绘图线程无需等待或者较少等待该被依赖等待的绘图线程的绘图结果。
另外,将为各绘图线程分配的处理器核定义为与该绘图线程对应的目标处理器核。需要说明的是,不同的绘图线程之间可以分配同一个或者不同的处理器核,不作限定。
当Kernel作任务task负载计算时,若此线程负载计算上有额外自定义计算方式,Kernel知道此线程可能是一个关键绘图线程。当处理关键绘图线程时,使此线程负载再额外加大,减少绘图线程因依赖关系而等待状况。将CPU排程确实达到平行化,且线程排到的CPU的主频不能太低,例如考虑将从绘图线程移至中大核处理。
进一步的,所述绘图线程的需求算力的获取方式可以包括:
获取所述绘图线程的调度实体在单位时间内执行时间的占比;
根据所述调度实体的历史执行实际以及执行时间的占比,利用预设负载跟踪算法换算所述调度实体的负载;
根据所述调度实体的负载计算所述绘图线程的需求算力。
负载跟踪Load Tracking为Kernel CFS排程器针对调度实体Sched Entity作负载计算,调度实体可能是一个任务task或是一组任务task,即task group,目前负载跟踪算法有PELT(Per Entity Load Tracking)、WALT(Window Assisted Load Tracking),负载跟踪算法以单位时间内此调度实体执行时间的占比,根据历史执行时间,进而换算估计此调度实体的负载。
S103,将各绘图线程排入对应的目标处理器核的线程队列。
在依据上述步骤为各绘图线程分配对应的目标处理器核后,即可将各绘图线程排入对应的线程队列,等待被调度实体调度执行。这样,即为完成了针对存在主从依赖关系的多绘图线程的优化排程方案。
上述本申请实施例提供的绘图线程排程方法,通过获取当前待处理的各绘图线程之间的主从依赖关系,为存在主从依赖关系的绘图线程分配对应的目标处理器核。这样,可以根据绘图线程之间的主从依赖关系合理分配处理器核,以减少绘图线程之间的依赖等待时间,优化绘图进程。
在上述实施例的基础上,根据本公开的一种具体实施方式,如图3所示,所述获取当前待处理的各绘图线程之间的主从依赖关系,根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核的步骤,可以具体包括以下步骤:
S301,确定存在主从依赖关系的主绘图线程和至少一个从绘图线程;
在进行排程时,先找出各应用程序内的主从依赖关系,确定主绘图线程和全部从绘图线程,从绘图线程的数量为一个或者多个。主绘图线程的需求算力大于从绘图线程的需求算力,对应的可分配的处理器核的算力级别也不同。
以实际TOP游戏应用,大致上有三个绘图线程:一个主绘图线程Master和两个从绘图线程Slave或称Worker thread线程,两个从绘图线程彼此没有关联,只跟主绘图线程有依赖关系。主线程绘图时,需等待两个从绘图线程的绘图资源完成,才能继续绘图。
假设所应用的芯片包括四个小核、三个中核和一个大核,小中大核各自有不同CPU算力,此处的小核可以理解为第一级别算力的处理器核,中核为第二级别算力的处理器核,大核为第三级别算力的处理器核。小核算力为351 CPU capacity,主频max freq1804800Hz;中核算力为871 CPU capacity,主频max freq 2419200Hz;大核算力为1024CPU capacity,主频max freq 2841600Hz。根据上述游戏应用的线程状况,由于两个从绘图线程负载较低,可能只有50到150的CPU负载,假设两个从绘图线程负载为75。
按照传统分配方案,如果当前有一个空闲的小核,则可能配置为两个从绘图线程配置到同一个小核,351>75+75=>351>150=>代表还剩下201的算力可分配。或是有两个小核各自剩下算力为100多,则会将两个从绘图线程配置到两个不同小核。主绘图线程由于负载高往往都会配置到中大核,假设配到中核则可能配置为:两个从绘图线程分配到同一个小核,或是两个从绘图线程分配到两个不同小核,而主线程在中核。由于从绘图线程负载低,因此小核的CPU频率相对比中核低,造成从绘图线程完成时间较久。此状况就会发生主线程已经把自己的工作做完,而在等待从绘图线程的绘图资源完成,而多花费了等待时间。
S302,根据各处理器核的当前算力,查找满足主绘图线程的需求算力的备用处理器核;
本实施方式中,考虑到主绘图线程的需求算力较大,先找出来能够满足朱绘图线程的需求算力的处理器核作为备用处理器核,备用处理器核通常为中核或者大核。
S303,从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核。
在依据上述步骤选出备用处理器核之后,直接从该部分备用处理器核中为主绘图线程和从绘图线程分配对应的目标处理器核。这样,可以保证从绘图线程分配的目标处理器核的算力级别等于或者超过其需求算力,保证从绘图线程能够被优先执行或者优先结束。
在选出备用处理器核之后,再从中选择目标处理器核的方式可以有多种,例如分配同一算力级别或者不同算力级别的处理器核等,下面将分别进行阐述。
根据本公开的一种具体实施方式,所述从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核的步骤,可以包括:
判断所述备用处理器核的数量是否大于或者等于绘图线程总数,其中,所述绘图线程总数为主绘图线程和从绘图线程的总数量;
在所述备用处理器核的数量大于或者等于绘图线程总数的情况下,为所述主绘图线程和所述从绘图线程分别分配一个所述备用处理器核作为对应的目标处理器核。
本实施方式中,为主绘图线程和从绘图线程分配同一算力级别的备用处理器核作为对应的目标处理器核,以保证主绘图线程和从绘图线程都能被尽快且快速调度执行。
具体的,先判断当前可用的备用处理器核的总数是否满足绘图线程总数,若满足则从备用处理器中为各绘图线程分配一目标处理器核,此处可以不区分所分配的处理器核的算力级别。
继续上述示例中的3个绘图线程,传统分配方案如表1所示,将Slave1和Slave2分成两个小核执行,也有可能放在同一个小核执行。本实施方式的方案则如表2所示,均放在各中核处理。Kernel可以知道这三个线程,有相同重要性,且从线程Worker Thread跟主线程Main Thread相关,将三个线程配到不同的中核,使三个线程使用相同的中核cluster频率平行执行,有效减少等待时间。
表1
表2
根据本公开的另一种具体实施方式,处理器核的算力级别包括依次增大的第一级别、第二级别和第三级别;
所述从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核的步骤,包括:
在所述备用处理器核的算力级别小于或者等于所述第二级别的情况下,为所述主绘图线程分配所述备用处理器核作为对应的目标处理器核;
为每个从绘图线程均分配一个对应的目标处理器核或者为全部从绘图线程分配同一个目标处理器核,其中,从绘图线程对应的目标处理器核的算力级别大于或者等于所述备用处理器核的算力级别。
本实施方式中,为被依赖等待的从绘图线程分配算力级别相对较大的处理器核,以保证从绘图线程被优先且快速执行。
示例为某芯片包括六个小核,一个中核,一个大核。其中,小中大核各自有不同CPU算力,小核算力为452 CPU capacity,主频max freq 1804800Hz,中核算力为942 CPUcapacity,主频max freq 2208000Hz,大核算力为1024 CPU capacity,主频max freq2400000Hz。如表3所示为传统排程方案,即主绘图线程放置中核,但从绘图线程仍放到小核则同样会有之前的依赖等待的问题。本实施方式的过程则如表4所示,考虑到中核只有一个,将两个从绘图线程放至同一个大核来做运作,减少主线程等待从绘图线程时间。另外如果这三个绘图线程CPU负载都很低,如表5所示,也可以全都平行放置在小核,且不会影响帧率下降也可由于给予Kernel hint,当然此情况很少发生基本上主线程负载都很高。Kernel对线程分配适当的CPU时,能够更精准的决定,该如何放置才能让游戏达到更好的帧率,减少因线程依赖而增加等待时间。
表3
表4
表5
在上述各实施方式的基础上,根据本公开的一种具体实施方式,所述确定存在主从依赖关系的主绘图线程和至少一个从绘图线程的步骤,可以具体包括:
从当前待处理的各绘图线程中确定主绘图线程;
查找与所述主绘图线程存在依赖关系的全部从绘图线程。
在确定主从绘图线程时,考虑到从绘图线程彼此没有关联,只跟主绘图线程有依赖关系,可以先确定主绘图线程,再依据主绘图线程和从绘图线程之间的依赖关系查找出从绘图线程。
具体的,所述从当前待处理的各绘图线程中确定主绘图线程,查找与所述主绘图线程存在依赖关系的全部从绘图线程的步骤,包括:
获取预先存储的线程白名单;
根据所述线程白名单,从当前待处理的各绘图线程中筛选出全部主绘图线程以及与各主绘图线程关联的全部从绘图线程。
本实施方式中,通过限定线程白名单的方式来进行绘图线程筛选,即根据历史线程调度过程来确定各主从线程之间的可能依赖关系,并形成白名单文档,定义为线程白名单。线程白名单的主从依赖关系可以包括但不限于以下内容:
第一类,OpenGL Spec。
1.1、Buffer相关API:
glGenBuffers、glBindBuffer、glBufferData、glBufferSubData、glDeleteBuffers。
1.2、Texture相关API:
glGenTextures、glBindTexture、glTexImage2d、glTexSubImage2d、glCompressedTexImage2d、glCompressedTexSubImage2D、glDeleteTextures。
1.3、FrameBuffer相关API:
glCreateFrameBuffers、glBindFrameBuffer、glDeleteFrameBuffers。
1.4、Copy相关API:
glBlitFramebuffer、glBlitNamedFramebuffer。
1.5、Context相关API
eglCreateContext。
第二类,Vulkan Spec。
2.1、Buffer相关API:
vkCreateBuffer、vkDestroyBuffer、vkCreateBufferView、vkDestroyBufferView。
2.2、Image相关API:
vkCreateImage、vkDestroyImage、vkCreateImageView、vkDestroyImageView。
2.3、FrameBuffer相关API:
vkCreateFrameBuffer、vkDestroyFrameBuffer。
2.4、Copy相关API:
vkCmdCopyBuffer、vkCmdCopyImage、vkCmdCopyBufferToImage、vkCmdCopyImageToBuffer、vkCmdBlitImage。
2.5、RenderPass相关API:
vkCmdBeginRenderPass、vkCmdNextSubpass、vkCmdEndRenderPass。
2.6、Command buffer相关API:
BeginCommandBuffer。
在针对某一绘图线程排程时,可以通过上述白名单上的从属关系,查找该绘图线程与其他线程的依赖性关系,再结合前述实施例提供的排程策略,根据依赖关系获取高效的排程方案。
本实施方式提供的绘图线程排程方法,通过拦截关键图形API,帮助绘图线程负载计算,减少因线程依赖关系而等待情形,提升游戏效能。
实施例2
参见图4,为本发明实施例提供的一种绘图线程排程装置的模块框图。如图4所示,所述线程排程装置400主要包括:
获取模块401,用于获取当前待处理的各绘图线程之间的主从依赖关系;
分配模块402,用于根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核;
排程模块403,用于将各绘图线程排入对应的目标处理器核的线程队列。
根据本公开的一种具体实施方式,所述分配模块402用于:
确定存在主从依赖关系的主绘图线程和至少一个从绘图线程,其中,主绘图线程的需求算力大于从绘图线程的需求算力,且主绘图线程依赖从绘图线程的绘图结果;
根据各处理器核的当前算力,查找满足主绘图线程的需求算力的备用处理器核;
从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核。
根据本公开的一种具体实施方式,所述分配模块402用于:
判断所述备用处理器核的数量是否大于或者等于绘图线程总数,其中,所述绘图线程总数为主绘图线程和从绘图线程的总数量;
在所述备用处理器核的数量大于或者等于绘图线程总数的情况下,为所述主绘图线程和所述从绘图线程分别分配一个所述备用处理器核作为对应的目标处理器核。
根据本公开的一种具体实施方式,处理器核的算力级别包括依次增大的第一级别、第二级别和第三级别;
所述分配模块402用于:
在所述备用处理器核的算力级别小于或者等于所述第二级别的情况下,为所述主绘图线程分配所述备用处理器核作为对应的目标处理器核;
为每个从绘图线程均分配一个对应的目标处理器核或者为全部从绘图线程分配同一个目标处理器核,其中,从绘图线程对应的目标处理器核的算力级别大于或者等于所述备用处理器核的算力级别。
根据本公开的一种具体实施方式,所述分配模块402用于:
从当前待处理的各绘图线程中确定主绘图线程;
查找与所述主绘图线程存在依赖关系的全部从绘图线程。
根据本公开的一种具体实施方式,所述分配模块402用于:
获取预先存储的线程白名单;
根据所述线程白名单,从当前待处理的各绘图线程中筛选出全部主绘图线程以及与各主绘图线程关联的全部从绘图线程。
根据本公开的一种具体实施方式,所述分配模块用于:
获取所述绘图线程的调度实体在单位时间内执行时间的占比;
根据所述调度实体的历史执行实际以及执行时间的占比,利用预设负载跟踪算法换算所述调度实体的负载;
根据所述调度实体的负载计算所述绘图线程的需求算力。
此外,本发明实施例提供了一种计算机设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器运行时执行上述实施例提供的绘图线程排程方法。
另外,本发明实施例还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行上述实施例提供的绘图线程排程方法。
所提供的绘图线程排程装置、计算机设备及计算机可读存储介质的具体实施过程,可以参见上述图1至图3所示的绘图线程排程方法的具体实施过程,在此不再一一赘述。
具体的,如图5所示,为实现本发明各个实施例的一种计算机设备,该计算机设备500包括但不限于:射频单元501、网络模块502、音频输出单元503、输入单元504、传感器505、显示单元506、用户输入单元507、接口单元508、存储器509、处理器510、以及电源511等部件。本领域技术人员可以理解,图5中示出的计算机设备结构并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,计算机设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
应理解的是,本发明实施例中,射频单元501可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器510处理;另外,将上行的数据发送给基站。通常,射频单元501包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元501还可以通过无线通信系统与网络和其他设备通信。
计算机设备通过网络模块502为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元503可以将射频单元501或网络模块502接收的或者在存储器509中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元503还可以提供与计算机设备500执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元503包括扬声器、蜂鸣器以及受话器等。
输入单元504用于接收音频或视频信号。输入单元504可以包括图形处理器(Graphics Processing Unit,简称GPU)5041和麦克风5042,图形处理器5041对在视频捕获模式或图像捕获模式中由图像捕获计算机设备(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以视频播放在显示单元506上。经图形处理器5041处理后的图像帧可以存储在存储器509(或其它存储介质)中或者经由射频单元501或网络模块502进行发送。麦克风5042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元501发送到移动通信基站的格式输出。
计算机设备500还包括至少一种传感器505,至少包含上述实施例提到的气压计。此外,传感器505还可以为其他传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板5061的亮度,接近传感器可在计算机设备500移动到耳边时,关闭显示面板5061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别计算机设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器505还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元506用于视频播放由用户输入的信息或提供给用户的信息。显示单元506可包括显示面板5061,可以采用液晶视频播放器(Liquid Crystal Display,简称LCD)、有机发光二极管(Organic Light-Emitting Diode,简称OLED)等形式来配置显示面板5061。
用户输入单元507可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元507包括触控面板5071以及其他输入设备5072。触控面板5071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板5071上或在触控面板5071附近的操作)。触控面板5071可包括触摸检测计算机设备和触摸控制器两个部分。其中,触摸检测计算机设备检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测计算机设备上接收触摸信息,并将它转换成触点坐标,再送给处理器510,接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板5071。除了触控面板5071,用户输入单元507还可以包括其他输入设备5072。具体地,其他输入设备5072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板5071可覆盖在显示面板5061上,当触控面板5071检测到在其上或附近的触摸操作后,传送给处理器510以确定触摸事件的类型,随后处理器510根据触摸事件的类型在显示面板5061上提供相应的视觉输出。虽然在图5中,触控面板5071与显示面板5061是作为两个独立的部件来实现计算机设备的输入和输出功能,但是在某些实施例中,可以将触控面板5071与显示面板5061集成而实现计算机设备的输入和输出功能,具体此处不做限定。
接口单元508为外部计算机设备与计算机设备500连接的接口。例如,外部计算机设备可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的计算机设备的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元508可以用于接收来自外部计算机设备的输入(例如,数据信息、电力等等)并且将接收到的输入传输到计算机设备500内的一个或多个元件或者可以用于在计算机设备500和外部计算机设备之间传输数据。
存储器509可用于存储软件程序以及各种数据。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器510是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器509内的软件程序和/或模块,以及调用存储在存储器509内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。处理器510可包括一个或多个处理单元;优选的,处理器510可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器510中。
计算机设备500还可以包括给各个部件供电的电源511(比如电池),优选的,电源511可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,计算机设备500包括一些未示出的功能模块,在此不再赘述。
所述存储器用于存储计算机程序,所述计算机程序在所述处理器运行时执行上述的绘图线程排程方法。
另外,本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行上述的绘图线程排程方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种绘图线程排程方法,其特征在于,包括:
获取当前待处理的各绘图线程之间的主从依赖关系;
根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核;
将各绘图线程排入对应的目标处理器核的线程队列。
2.根据权利要求1所述的方法,其特征在于,所述获取当前待处理的各绘图线程之间的主从依赖关系,根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核的步骤,包括:
确定存在主从依赖关系的主绘图线程和至少一个从绘图线程,其中,主绘图线程的需求算力大于从绘图线程的需求算力,且主绘图线程依赖从绘图线程的绘图结果;
根据各处理器核的当前算力,查找满足主绘图线程的需求算力的备用处理器核;
从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核。
3.根据权利要求2所述的方法,其特征在于,所述从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核的步骤,包括:
判断所述备用处理器核的数量是否大于或者等于绘图线程总数,其中,所述绘图线程总数为主绘图线程和从绘图线程的总数量;
在所述备用处理器核的数量大于或者等于绘图线程总数的情况下,为所述主绘图线程和所述从绘图线程分别分配一个所述备用处理器核作为对应的目标处理器核。
4.根据权利要求3所述的方法,其特征在于,处理器核的算力级别包括依次增大的第一级别、第二级别和第三级别;
所述从全部备用处理器核中,为所述主绘图线程和所述从绘图线程分别选择对应的目标处理器核的步骤,包括:
在所述备用处理器核的算力级别小于或者等于所述第二级别的情况下,为所述主绘图线程分配所述备用处理器核作为对应的目标处理器核;
为每个从绘图线程均分配一个对应的目标处理器核或者为全部从绘图线程分配同一个目标处理器核,其中,从绘图线程对应的目标处理器核的算力级别大于或者等于所述备用处理器核的算力级别。
5.根据权利要求2至4中任一项所述的方法,其特征在于,所述确定存在主从依赖关系的主绘图线程和至少一个从绘图线程的步骤,包括:
从当前待处理的各绘图线程中确定主绘图线程;
查找与所述主绘图线程存在依赖关系的全部从绘图线程。
6.根据权利要求5所述的方法,其特征在于,所述从当前待处理的各绘图线程中确定主绘图线程,查找与所述主绘图线程存在依赖关系的全部从绘图线程的步骤,包括:
获取预先存储的线程白名单;
根据所述线程白名单,从当前待处理的各绘图线程中筛选出全部主绘图线程以及与各主绘图线程关联的全部从绘图线程。
7.根据权利要求2所述的方法,其特征在于,绘图线程的需求算力的获取方式包括:
获取所述绘图线程的调度实体在单位时间内执行时间的占比;
根据所述调度实体的历史执行实际以及执行时间的占比,利用预设负载跟踪算法换算所述调度实体的负载;
根据所述调度实体的负载计算所述绘图线程的需求算力。
8.一种绘图线程排程装置,其特征在于,包括:
获取模块,用于获取当前待处理的各绘图线程之间的主从依赖关系;
分配模块,用于根据各处理器核的当前算力,为存在主从依赖关系的绘图线程分配对应的目标处理器核;
排程模块,用于将各绘图线程排入对应的目标处理器核的线程队列。
9.一种计算机设备,其特征在于,包括存储器以及处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器运行时执行权利要求1至7中任一项所述的绘图线程排程方法。
10.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序在处理器上运行时执行权利要求1至7中任一项所述的绘图线程排程方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110614443.XA CN115437776A (zh) | 2021-06-02 | 2021-06-02 | 绘图线程排程方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110614443.XA CN115437776A (zh) | 2021-06-02 | 2021-06-02 | 绘图线程排程方法、装置及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437776A true CN115437776A (zh) | 2022-12-06 |
Family
ID=84271910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110614443.XA Pending CN115437776A (zh) | 2021-06-02 | 2021-06-02 | 绘图线程排程方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437776A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130766A (zh) * | 2023-01-17 | 2023-11-28 | 荣耀终端有限公司 | 一种线程处理方法及电子设备 |
-
2021
- 2021-06-02 CN CN202110614443.XA patent/CN115437776A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130766A (zh) * | 2023-01-17 | 2023-11-28 | 荣耀终端有限公司 | 一种线程处理方法及电子设备 |
CN117130766B (zh) * | 2023-01-17 | 2024-06-07 | 荣耀终端有限公司 | 一种线程处理方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304265B (zh) | 内存管理方法、装置及存储介质 | |
CN110134521B (zh) | 资源分配的方法、装置、资源管理器及存储介质 | |
CN108073458B (zh) | 内存回收方法、移动终端及计算机可读存储介质 | |
WO2015035870A1 (zh) | 多cpu调度方法及装置 | |
KR20220092937A (ko) | 화면 표시의 제어 방법 및 전자기기 | |
CN110119305B (zh) | 任务执行方法、装置、计算机设备及存储介质 | |
CN111338745B (zh) | 一种虚拟机的部署方法、装置及智能设备 | |
CN110673944B (zh) | 执行任务的方法和装置 | |
CN109995862B (zh) | 一种资源调度方法及终端 | |
CN109639887B (zh) | 一种控制方法及终端设备 | |
WO2019071600A1 (zh) | 一种图像处理方法及装置 | |
CN108601048B (zh) | 一种流量控制方法及移动终端 | |
CN109104573B (zh) | 一种确定对焦点的方法及终端设备 | |
CN115437776A (zh) | 绘图线程排程方法、装置及计算机设备 | |
CN111459410B (zh) | 内存空间分配方法、装置、电子设备及存储介质 | |
CN111862972B (zh) | 语音交互服务方法、装置、设备及存储介质 | |
CN110971840B (zh) | 视频贴图方法及装置、计算机设备及存储介质 | |
CN115562878B (zh) | Gpu计算资源的管理方法、装置、电子设备及可读存储介质 | |
CN111914985B (zh) | 深度学习网络模型的配置方法、装置及存储介质 | |
CN113949678B (zh) | 流量控制方法、装置、电子设备及计算机可读存储介质 | |
CN113448692B (zh) | 分布式图计算的方法、装置、设备及存储介质 | |
CN113469322B (zh) | 确定模型的可执行程序的方法、装置、设备及存储介质 | |
CN115315008A (zh) | 一种基站定位信道配置方法、设备及计算机可读存储介质 | |
CN112860365A (zh) | 内容显示方法、装置、电子设备和可读存储介质 | |
CN112817768B (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 |