CN113467959A - 应用于gpu的确定任务复杂度的方法、装置及介质 - Google Patents
应用于gpu的确定任务复杂度的方法、装置及介质 Download PDFInfo
- Publication number
- CN113467959A CN113467959A CN202111036976.0A CN202111036976A CN113467959A CN 113467959 A CN113467959 A CN 113467959A CN 202111036976 A CN202111036976 A CN 202111036976A CN 113467959 A CN113467959 A CN 113467959A
- Authority
- CN
- China
- Prior art keywords
- subtasks
- task
- warp
- processing core
- gpu
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明实施例公开了一种应用于GPU的确定任务复杂度的方法、装置及介质;该方法包括:接收由GPU驱动程序下发的当前被执行的任务;将所述任务划分为多个子任务,并将所述子任务轮询调度至作为可编程执行核的处理核以执行;相应于所有处理核均被对应分配子任务且剩余子任务尚未被分配,基于已分配子任务的处理核的warp执行时长预测执行所述剩余子任务的耗时;当执行所述剩余子任务的耗时满足设定的判定条件,确定所述当前被执行的任务为高复杂度任务。
Description
技术领域
本发明实施例涉及图像处理技术领域,尤其涉及一种应用于GPU的确定任务复杂度的方法、装置及介质。
背景技术
目前,图形处理器(GPU,Graphics Processing Unit)在执行CPU所下发的任务过程中,通常会需要针对各被执行的任务进行调度。一方面来说,由于各任务之间的复杂程度各不相同,高复杂度的任务通常会占用GPU更多的计算资源;因此,针对高复杂度的任务通常会通过调度来降低GPU的计算资源占用从而节省功耗。除了复杂度之外,优先级也是针对任务进行调度时所需要考虑的另一个方面;通常来说,GPU资源会更多的倾向高优先级任务,在此情况下,尽管该高优先级任务的复杂度较高,GPU仍然会倾向于向该高优先级任务提供更多的计算资源。
随着应用程序的运行,高优先级任务会因为用户的操作等外部原因降低优先级,成为低优先级任务,那么对于这类任务中复杂度较高的任务,GPU不再需要向其提供更多的计算资源,所以GPU的计算资源可以通过调度分配至由低优先级提升至高优先级的任务。基于此,为了能够更加灵活地调度GPU的计算资源,需要在应用程序的运行过程中,提供一种能够实时确定任务复杂度的方案。
发明内容
有鉴于此,本发明实施例期望提供一种应用于GPU的确定任务复杂度的方法、装置及介质;能够实时确定任务复杂度,从而为GPU 的计算资源实时调度提供依据。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供了一种GPU,所述GPU包括命令处理器以及多个处理核;其中,每个处理核包括被组织成多个线程组warp的多个核心;
所述命令处理器,经配置为接收由GPU驱动程序下发的当前被执行的任务;
以及,将所述任务划分为多个子任务,并将所述子任务轮询调度至作为可编程执行核的所述处理核以执行;
以及,相应于所有处理核均被对应分配子任务且剩余子任务尚未被分配,基于已分配子任务的处理核的warp执行时长预测执行所述剩余子任务的耗时;
以及,当执行所述剩余子任务的耗时满足设定的判定条件,确定所述当前被执行的任务为高复杂度任务。
第二方面,本发明实施例提供了一种应用于GPU的确定任务复杂度的方法,所述方法应用于第一方面所述的GPU,所述方法包括:
接收由GPU驱动程序下发的当前被执行的任务;
将所述任务划分为多个子任务,并将所述子任务轮询调度至作为可编程执行核的处理核以执行;
相应于所有处理核均被对应分配子任务且剩余子任务尚未被分配,基于已分配子任务的处理核的warp执行时长预测执行所述剩余子任务的耗时;
当执行所述剩余子任务的耗时满足设定的判定条件,确定所述当前被执行的任务为高复杂度任务。
第三方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有应用于GPU的确定任务复杂度的程序,所述应用于GPU的确定任务复杂度的程序被至少一个处理器执行时实现第二方面中所述应用于GPU的确定任务复杂度的方法步骤。
本发明实施例提供了一种应用于GPU的确定任务复杂度的方法、装置及介质;GPU在执行由处理器下发的当前任务的过程中,将当前任务拆分为多个子任务,并将这些子任务轮询调度给各处理核进行执行;如果处理核被分配完毕且还有剩余子任务没有被调度,那么剩余的子任务需要等待处理核执行完成并释放后转为空闲状态后才能被调度,由于各子任务均从属于同一任务,即子任务的类型相同,那么对于类型相同的任务,就可以利用处理核已经执行的warp所消耗的时长来推测执行剩余子任务所需要消耗的时长,那么就能够推测该任务尚未执行部分的剩余时长,并根据该剩余时长实时地确定该由处理器下发的任务的复杂度,从而为GPU的计算资源实时调度提供依据。
附图说明
图1为可实施本发明实施例一个或多个方面的计算装置的框图。
图2为说明图1中处理器、GPU和系统存储器的实例实施方案的框图。
图3为本发明实施例提供的适用于SIMD执行模式的处理核示意图。
图4为本发明实施例提供的一种应用于GPU的确定任务复杂度的方法流程示意图。
图5为本发明实施例提供的实现流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参见图1,其示出了能够实现本发明实施例技术方案的计算装置2,该计算装置2的实例包括但不限于:无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器,等。在图1的实例中,该计算装置2可以包括:处理器6、系统存储器10和GPU 12。计算装置2还可包含显示处理器14、收发器模块3、用户接口4和显示器8。收发器模块3和显示处理器14两者可为与处理器6和/或GPU 12相同的集成电路(IC)的部分,两者可在包含处理器6和/或GPU 12的一或多个IC的外部,或可形成于在包含处理器6和/或GPU 12的IC外部的IC中。
为清楚起见,计算装置2可包含图1中未图示的额外模块或单元。举例来说,计算装置2可在其中计算装置2为移动无线电话或的实例中包含扬声器和麦克风(两者均未在图1中示出)来实现电话通信,或在计算装置2为媒体播放器的情况下包含扬声器。计算装置2还可包含摄像机。此外,计算装置2中所示的各种模块和单元可能不是在计算装置2的每个实例中都是必需的。举例来说,在计算装置2为桌上型计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口4和显示器8可在计算装置2外部。
用户接口4的实例包含(但不限于)轨迹球、鼠标、键盘和其它类型的输入装置。用户接口4还可为触摸屏,并且可作为显示器8的部分并入。收发器模块3可包含电路以允许计算装置2与另一装置或网络之间的无线或有线通信。收发器模块3可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
处理器6可为微处理器,例如中央处理单元(CPU),其经配置以处理供执行的计算机程序的指令。处理器6可包括控制计算装置2的运算的通用或专用处理器。用户可将输入提供到计算装置2,以致使处理器6执行一或多个软件应用程序。在处理器6上执行的软件应用程序可包含(例如)操作系统、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,处理器6可执行用于控制GPU 12的运算的GPU驱动程序22。用户可经由一或多个输入装置(未图示) (例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。
在处理器6上执行的软件应用程序可包含一或多个图形渲染指令,其指令处理器6来致使将图形数据渲染到显示器8。在一些实例中,所述软件指令可符合图形应用程序编程接口(API) ,例如开放式图形库API、开放式图形库嵌入系统(OpenGL ES)API、Direct3DAPI、X3D API、RenderMan API、WebGL API、开放式计算语言(OpenCLT M) 、RenderScript或任何其它异构计算API,或任何其它公用或专有标准图形或计算API。所述软件指令还可为针对无渲染算法(例如计算摄影、卷积神经网络、视频处理、科学应用程序等)的指令。为了处理图形渲染指令,处理器6可向GPU 12发出一或多个图形渲染命令发(例如,通过GPU驱动程序22),以致使GPU 12执行图形数据的渲染中的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角形带等图形图元的列表。
GPU 12可经配置以执行图形运算,从而将一或多个图形图元渲染到显示器8。因此,当在处理器6上执行的软件应用中的一者需要图形处理时,处理器6可将图形命令和图形数据提供到GPU 12以用于渲染到显示器8。图形数据可包含(例如)绘制命令、状态信息、图元信息、纹理信息等。在一些情况下,GPU 12可内置有高度并行结构,其提供比处理器6高效的对复杂图形相关运算的处理。举例来说,GPU 12可包含经配置来以并行方式对多个顶点或像素进行运算的多个处理元件,例如着色器单元。在一些情况下,GPU 12的高度并行性质允许GPU 12比使用处理器6直接将场景绘制到显示器8更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器8上。
在一些情况下,可将GPU 12集成到计算装置2的母板中。在其它情况下,GPU 12可存在于图形卡上,所述图形卡安装在计算装置2的母板中的端口中,或可以其它方式并入在经配置以与计算装置2互操作的外围装置内。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 12还可包含一或多个处理器核心,使得GPU 12可被称作多核处理器。
图形存储器40可为GPU 12的一部分。因此,GPU 12可在不使用总线的情况下从图形存储器40读取数据且将数据写入到图形存储器40。换句话说,GPU 12可使用本地存储装置而不是芯片外存储器在本地处理数据。此类图形存储器40可被称作芯片上存储器。这允许GPU 12通过消除GPU 12经由总线读取和写入数据的需要来以更高效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器40可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
在一些实例中,GPU 12可将完全形成的图像存储在系统存储器10中。显示处理器14可从系统存储器10检索图像,且输出致使显示器8的像素照亮以显示所述图像的值。显示器8可为计算装置2的显示器,其显示由GPU 12产生的图像内容。显示器8可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
图2是进一步详细说明图1中处理器6、GPU 12和系统存储器10的实例实施方案的框图。如图2所示,处理器6可执行至少一个软件应用程序18、图形API 20和GPU 驱动程序22,其中的每一者可为一或多个软件应用程序或服务。在一些实例中,图形API 20和GPU驱动程序22可实施为处理器6的硬件单元。
可供处理器6和GPU 12使用的存储器可包含系统存储器10和输出缓冲器16。输出缓冲器16可为系统存储器10的部分或可与系统存储器10分离。输出缓冲器16可存储经渲染图像数据,例如像素数据,以及任何其它数据。输出缓冲器16还可被称为帧缓冲器或显存。
图形存储器40可包含片上存储装置或存储器,其物理上集成到GPU12的集成电路芯片中。如果图形存储器40是在芯片上,那么与经由系统总线从系统存储器10读取值或将值写入到系统存储器10相比,GPU 12能够更加快速地从图形存储器40读取值或将值写入到图形存储器40。
输出缓冲器16存储GPU 12的目的地像素。每个目的地像素可与唯一屏幕像素位置相关联。在一些实例中,输出缓冲器16可存储每个目的地像素的色彩分量和目的地α值。举例来说,输出缓冲器16可存储每个像素的红色、绿色、蓝色、α(RGBA)分量,其中“RGB”分量对应于色彩值,并且“A”分量对应于目的地α值(例如,用于图像合成的不透明度值)。尽管将输出缓冲器16和系统存储器10说明为单独的存储器单元,但在其它实例中,输出缓冲器16可以是系统存储器10的一部分。此外,输出缓冲器16还可能够存储除像素之外的任何合适的数据。
软件应用程序18可为利用GPU 12的功能性的任何应用程序。举例来说,软件应用程序18可为GUI应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。
软件应用程序18可包含指令GPU 12渲染图形用户接口(GUI)和/或图形场景的一或多个绘制指令。举例来说,绘制指令可包含界定将由GPU 12渲染的一组一或多个图形图元的指令。在一些实例中,绘制指令可共同地界定用于GUI中的多个窗口表面的全部或部分。在额外实例中,所述绘制指令可共同地定义图形场景的全部或部分,所述图形场景包含在由应用程序定义的模型空间或世界空间内的一或多个图形对象。
软件应用程序18可经由图形API 20调用GPU驱动程序22,以向GPU 12发出一或多个命令,以用于将一或多个图形图元渲染到可显示的图形图像中。举例来说,软件应用程序18可调用GPU驱动程序22,以向GPU 12提供图元定义。在一些情况下,图元定义可以例如三角形、矩形、三角形扇、三角形带等的绘制图元的列表的形式被提供到GPU 12。图元定义可包含指定与待呈现的图元相关联的一或多个顶点的顶点规格。所述顶点规格可包含每个顶点的位置坐标,且在一些情况下包含与顶点相关联的其它属性,例如色彩属性、法向量和纹理坐标。图元定义还可包含图元类型信息(例如,三角形、矩形、三角形扇、三角形带等)、缩放信息、旋转信息及类似者。
基于由软件应用程序18向GPU驱动程序22发出的指令,GPU驱动程序22可调配指定供GPU 12执行的一或多个运算以便渲染图元的一或多个命令。当GPU 12接收到来自处理器6的命令时,GPU 12可使用处理器集群46执行图形处理管线,以便对命令进行解码,并对图形处理管线进行配置以执行命令中所制定的操作。所以,在一些示例中,处理器集群46也可被称之为GPU 12的计算资源。
处理器集群46可包含一或多个可编程执行核24和/或一或多个固定功能执行核26。对于上述两种处理单元,可编程执行核24可包含例如被配置成执行从处理器6下载到GPU 12上的一或多个着色器程序的可编程着色器单元。在一些实例中,可编程着色器单元可被称为“着色器处理器”或“统一着色器”,且可被配置为能够至少执行顶点和片元着色操作以呈现图形;可选地,可编程着色器单元还可以被配置执行几何或其它着色操作以呈现图形。因此,处理器集群46中的可编程着色器单元可至少包含顶点着色器单元、片元着色器单元,此外,还可以包含几何着色器单元、外壳着色器单元、域着色器单元、计算着色器单元和/或统一着色器单元。在具体实施过程中,可编程着色器单元可各自包含用于提取和解码操作的一或多个组件、用于进行算术计算的一或多个ALU、一或多个存储器、高速缓存和寄存器。
并且,固定功能执行核26可包含经硬连线以执行某些功能的硬件。尽管固定功能硬件可经由例如一或多个控制信号而配置以执行不同功能,但所述固定功能硬件通常并不包含能够接收用户编译程序的程序存储器。在一些实例中,处理器集群46中的固定功能执行核26可包含例如执行图元装配的处理单元、执行光栅化操作的处理单元,像素后处理单元,所述像素后处理单元包括深度/模板测试、裁剪测试、α混合等。对于执行图元装配以及光栅化操作的处理单元来说,其能够将通过顶点着色器单元已完成着色的顶点按照原始连接关系还原出图形的网格结构,即图元,从而供后续片元着色器单元进行处理。
一般来说,GPU 12从处理器6所接收到的命令,其示例为,处理器6执行GPU驱动程序,以使得GPU驱动程序22可基于由软件应用程序18向GPU驱动程序22发出的指令产生定义用于由GPU 12执行的操作集合的命令流。所述命令流能够控制处理器集群46中可编程执行核24和固定功能执行核26(在不做区分的情况下,可统称之为“执行核”)的操作。
如上所述,GPU 12可包含可从GPU驱动程序22接收命令流的命令处理器30。命令处理器30可以是被配置成接收并处理一或多个命令流的硬件与软件的任意组合;由此,命令处理器30可在本地控制GPU资源而无需处理器6的干预。举例来说,GPU 12的命令处理器30可从处理器6接收一个或一个以上“任务”。命令处理器30可独立地调度所述任务由GPU 12的计算资源(比如处理器集群46中的一或多个可编程执行核24和/或处理器集群46中的一或多个固定功能执行核26)执行。在一个实例中,命令处理器30可以是硬件处理器。在图2中所示出的实例中,命令处理器30可包含于GPU 12中。在其它实例中,命令处理器30可以是与处理器6和GPU 12分离的单元。命令处理器30还可是被配置成接收命令和/或操作的流的任何处理器。
命令处理器30可处理一或多个命令流,其包含调度操作,所述调度操作包含于由GPU 12执行的一或多个命令流中。具体地说,命令处理器30可处理一或多个命令流,且调度所述一或多个命令流中的操作,以由处理器集群46执行。在操作中,GPU驱动程序22可向命令处理器30发送包括待由GPU 12执行的一系列操作的命令流。命令处理器30可接收包括命令流的操作流且可基于命令流中的操作次序依序地处理命令流的操作,且可调度命令流中的操作可以由处理器集群46中的一或多个执行核执行。
详细来说,命令处理器30所接收到的任务通常会被划分优先级。在一些示例中,优先级可以由该任务所涉及的软件应用程序18是否为用户当前操作对象来确定,也就是说,作为当前用户操作对象的软件应用程序,其对应的任务优先级将会高于其他软件应用程序对应的任务,高优先级的任务也将会被命令处理器30优先下发至GPU 12的计算资源执行。但是,除了优先级方面的划分以外,任务还可以基于消耗计算资源的多寡按照复杂度进行区分,比如运行大型3D游戏或者播放高清视频均需要占用大量的计算资源;对于复杂度越高的任务,其所消耗的GPU 12的计算资源也就相应增加。所以通常来说,任务的优先级会随着用户的操作对象的改变而改变,但是任务的复杂度则几乎不会进行变化。
对于图3所示,一种适用于单指令多数据流(SIMD,Single Instruction MultipleData)执行模式的处理核300示意图,在一些示例中,该处理核300能够作为图2中所示的GPU实现高度并行计算的处理器集群46中的可编程执行核24的一个,以实现并行地执行大量的线程,其中每个线程是程序的实例(instance)。在另一些示例中,该处理核300可以被实现为GPU中的流多处理器(SM,Streaming Multiprocessors)。在该处理核300中,可以包括被组织成warp 304的多个线程处理器或被称之为核心306,每个核心306均可对应一个线程。在一些示例中,相应于处理核300被实现为SM,核心306可以被实现为流处理器(SP,Streaming Processor)或也可以被称之为统一计算设备架构核心(CUDA core,ComputeUnified Device Architecture core)。该处理核300可以包含J个warp 304-1到304-J,每个warp 304具有K个核心306-1到306-K。在一些示例中,warp 304-1到304-J可以进一步地被组织成一个或多个线程块(block)302。在一些示例中,每个warp 304可具有32个核心306;在其他示例中,每个warp 304可具有4个核心306、8个核心306、16个核心306、或者多如数万个核心306;如图1所示,本发明实施例以设定每个warp 304具有8个核心306(即K=8)为例进行技术方案阐述,可以理解地,上述设定仅用于技术方案说明,并非对技术方案的保护范围进行限制,本领域技术人员可以很容易地将基于上述设定所阐述的技术方案适用于其他情况,在此不作赘述。在某些可替代的示例中,该处理核300可将核心306仅组织成warp304,省略线程块block的组织级别。
进一步来说,处理核300还可以包括管线控制单元308、共享存储器310、以及与warp 304-1到304-J相关联的本地存储器312-1到312-J的阵列。管线控制单元308通过数据总线314将任务分布到各个warp 304-1到304-J 。管线控制单元308创建、管理、调度、执行并提供机制以将warp 304-1 到304-J同步。继续参见图3所示的处理核300,warp 内的核心306相互并行地执行。warp 304-1到304-J通过存储器总线316与共享存储器310进行通信。warp 304-1到304-J通过本地总线318-1到318-J分别与本地存储器312-1到312-J进行通信。例如图3中所示,warp 304-J 以通过本地总线318-J进行通信来利用本地存储器312-J。处理核300 的某些实施例将共享存储器310的共享部分分配到每个线程块302,并允许由线程块302内的所有warp 304访问共享存储器310的共享部分。某些实施例包括仅使用本地存储器312的warp 304 。许多其他实施例包括平衡本地存储器312和共享存储器310的使用的warp 304。在一些示例中,除SIMD执行模式以外,图3所示的示意图还可以应用于单指令多线程(SIMT,Single Instruction Multiple Threads)执行模式。
需要说明的是,当处理器6基于执行软件应用程序18通过图形API 20调用GPU驱动程序22,以向GPU 12发送一或多个任务时,GPU 12通常会对这些任务按照优先级进行排序,并且优先执行高级别优先级的任务;对于一个高优先级且高复杂度的任务,若在该任务的执行过程中,藉由用户操作降低了该任务的优先级且提高了另一个任务的优先级,那么由于高复杂度任务尚未完成,从而使得GPU 12降低对优先级被提高的任务的响应速度。通常来说,目前对于高复杂度但优先级被降低了的任务,可以在用户所能接受的范围内降低其复杂度,那么相应地就能使得GPU 12加快响应优先级被提高了的任务。基于上述原因,本发明实施例提出一种能够通过实时预估当前GPU 12所执行任务的是否将会长时间占用GPU计算资源,并以此作为确定该任务复杂度的方案。
结合图2、图3及以上之阐述,为了能够实时对GPU所执行任务的复杂度进行确定,本发明实施例通过对已经执行该任务的warp所消耗的时长推测该任务尚未执行部分的剩余时长,并根据该剩余时长实时地确定该任务的复杂度。基于此,本发明实施例提供了一种应用于GPU的确定任务复杂度的方法,该方法能够应用于图2与图3所示的GPU 12的组成结构,参见图4,该方法可以包括:
S401:接收由GPU驱动程序22下发的当前被执行的任务;
S402:将所述任务划分为多个子任务,并将所述子任务轮询调度至作为可编程执行核24的处理核300以执行;
S403:相应于所有处理核300均被对应分配子任务且剩余子任务尚未被分配,基于已分配子任务的处理核300的warp执行时长预测执行所述剩余子任务的耗时;
S404:当执行所述剩余子任务的耗时满足设定的判定条件,确定所述当前被执行的任务为高复杂度任务。
对于图4所示的技术方案,在一些可能的实现方式中,所述将所述子任务轮询调度至作为可编程执行核24的处理核300以执行,包括:
将所述子任务轮询调度至对应的处理核300;
对于每个被调度的处理核300,将对应的子任务拆分并分布到处理核300内的warp进行执行。
针对上述实现方式,在一些示例中,如图5所示,GPU 12的命令处理器30在接收到由处理器6通过GPU驱动程序22下发的所述当前被执行的任务后,将所述任务划分为多个子任务,并将所有子任务轮询地调度至作为可编程执行核24的处理核300-1到300-N;对于每个处理核300-i(1≤i≤N)来说,其在执行对应的子任务过程中,会利用管线控制单元308将该子任务继续拆分并分配到其所包含的多个warp中(以m个为例),从而使得各被分配到的warp利用各自所包含的核心306进行执行计算,可以理解地,对于子任务的继续拆分及分配,可参见SIMD执行模式或SIMT执行模式的详细流程,本发明实施例对此不做限定。
在一些示例中,若子任务数量大于N,那么就出现处理核分配完毕但仍然存在剩余部分子任务无法被调度的情况发生,此时,剩余未被调度的子任务需要等待有处理核执行完毕且释放资源转为空闲状态之后才能够被调度。由于各子任务均从属于同一任务,即子任务的类型相同,那么对于类型相同的任务,就可以利用处理核300已经执行的warp所消耗的时长来推测执行剩余子任务所需要消耗的时长,那么就能够推测该任务尚未执行部分的剩余时长,进一步来说,该剩余时长能够作为一个实时地确定该任务的复杂度的一项指标。
基于此,对于图4所示的技术方案,为了能够使得命令处理器30对warp执行时长进行监测以及获取,在一些可能的实现方式中,所述方法还包括:为每个处理核对应的设置一warp时钟计数器以及为所述当前被执行的任务对应的设置一复用寄存器;
相应地,基于已分配子任务的处理核300的warp执行时长预测执行所述剩余子任务的耗时,包括:
对于每个处理核300,当其中的warp开始执行对应的子任务时,启动对应的warp时钟计数器,并在所有warp执行结束时停止所述对应warp时钟计数器;
利用每个处理核300对应的warp时钟计数器停止后的计数更新所述复用寄存器中的寄存数值;其中,所述寄存数值用于表征执行所述剩余子任务所需的耗时。
针对上述实现方式并结合前述示例,在一些示例中,GPU 12的命令处理器30为处理核300-1到300-N中的每一个处理核300-i(1≤i≤N)对应设置一warp时钟计数器,并且为当前被执行的任务对应设置一复用寄存器。以处理核300-i为例,当处理核300-i中的存在warp开始执行时,启动对应的warp时钟计数器;当处理核300-i中的所有warp均执行完毕后,停止对应的warp时钟计数器;此时,warp时钟计数器中的计数结果表示处理核300-i执行对应子任务所耗费的时间。而对于复用寄存器中的寄存数值来说,可以通过每个处理核300-i对应的warp时钟计数器中的计数结果进行更新,那么进一步对于寄存数值来说,由于已执行的子任务与剩余未执行的子任务均属于同种类型,那么所述已执行的子任务所耗费的时长就能够代表执行剩余未执行的子任务所要需要的时长,因此,复用寄存器中的寄存数值表示处理核中的warp完成已执行的子任务的时长,也就能够预估处理核中的warp执行剩余未执行的子任务所需要的时长。可以理解地,该时长就能够作为评价当前被执行的任务复杂度的一个指标;在本发明实施例中,可以设置一时长阈值,当复用寄存器中的寄存数值所表示的时长超过所述时长阈值时,就能够表征当前被执行的任务为高复杂度的任务;相应地,当复用寄存器中的寄存数值所表示的时长没有超过所述时长阈值时,就表征当前被执行的任务为低复杂度的任务。可以理解地,在一些示例中,该复用寄存器可以针对当前由GPU驱动程序所下发的任务进行计时,因此,对于不同的当前下发任务均具有复用性。
对于上述图4所示的技术方案及其实现方式和示例,需要说明的是,GPU 12在执行由处理器6下发的当前任务的过程中,将当前任务拆分为多个子任务,并将这些子任务轮询调度给各处理核300进行执行;对于每个处理核300来说,可以继续将对应的子任务拆分并分布至处理核内部的warp进行执行。如果处理核300被分配完毕且还有剩余子任务没有被调度,那么剩余的子任务需要等待处理核执行完成并释放后转为空闲状态后才能被调度。由于各子任务均从属于同一任务,即子任务的类型相同,那么对于类型相同的任务,就可以利用处理核300已经执行的warp所消耗的时长来推测执行剩余子任务所需要消耗的时长,那么就能够推测该任务尚未执行部分的剩余时长,并根据该剩余时长实时地确定该由处理器6下发的任务的复杂度,从而为GPU基于复杂度对计算资源进行实时调度提供依据。
可以理解地,图4所示的技术方案及其示例既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM, Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本实施例提供了一种计算机存储介质,所述计算机存储介质存储有应用于GPU的确定任务复杂度的程序,所述应用于GPU的确定任务复杂度的程序被至少一个处理器执行时实现上述技术方案中所述应用于GPU的确定任务复杂度的方法步骤。
需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种GPU,其特征在于,所述GPU包括命令处理器以及多个处理核;其中,每个处理核包括被组织成多个线程组warp的多个核心;
所述命令处理器,经配置为接收由GPU驱动程序下发的当前被执行的任务;
以及,将所述任务划分为多个子任务,并将所述子任务轮询调度至作为可编程执行核的所述处理核以执行;
以及,相应于所有处理核均被对应分配子任务且剩余子任务尚未被分配,基于已分配子任务的处理核的warp执行时长预测执行所述剩余子任务的耗时;
以及,当执行所述剩余子任务的耗时满足设定的判定条件,确定所述当前被执行的任务为高复杂度任务。
2.根据权利要求1所述的GPU,其特征在于,所述处理核包括管线控制单元;所述命令处理器,经配置为将所述子任务轮询调度至对应的处理核;
所述每个被调度的处理核的管线控制单元,经配置为将对应的子任务拆分并分布到处理核内的warp进行执行。
3.根据权利要求1所述的GPU,其特征在于,所述命令处理器包括为每个处理核对应的设置一warp时钟计数器以及为所述当前被执行的任务对应的设置一复用寄存器;其中,
所述warp时钟计数器,经配置为当对应的处理核中的warp开始执行对应的子任务时启动计数,并在所有warp执行结束时停止计数;
所述复用寄存器,经配置为利用每个处理核对应的warp时钟计数器停止后的计数更新寄存数值;其中,所述寄存数值用于表征执行所述剩余子任务所需的耗时。
4.一种应用于GPU的确定任务复杂度的方法,其特征在于,所述方法应用于权利要求1至3任一项所述的GPU,所述方法包括:
接收由GPU驱动程序下发的当前被执行的任务;
将所述任务划分为多个子任务,并将所述子任务轮询调度至作为可编程执行核的处理核以执行;
相应于所有处理核均被对应分配子任务且剩余子任务尚未被分配,基于已分配子任务的处理核的warp执行时长预测执行所述剩余子任务的耗时;
当执行所述剩余子任务的耗时满足设定的判定条件,确定所述当前被执行的任务为高复杂度任务。
5.根据权利要求4所述的方法,其特征在于,所述接收由GPU驱动程序下发的当前被执行的任务,包括:
通过所述GPU的命令处理器接收由处理器通过GPU驱动程序下发的所述当前被执行的任务;
相应地,所述将所述任务划分为多个子任务,并将所述子任务轮询调度至作为可编程执行核的处理核以执行,包括:
通过所述命令处理器将所述任务划分为多个子任务,并将所有子任务轮询地调度至作为可编程执行核的处理核。
6.根据权利要求4所述的方法,其特征在于,所述将所述子任务轮询调度至作为可编程执行核的处理核以执行,包括:
将所述子任务轮询调度至对应的处理核;
对于每个被调度的处理核,将对应的子任务拆分并分布到所述处理核内的warp进行执行。
7.根据权利要求6所述的方法,其特征在于,所述对于每个被调度的处理核,将对应的子任务拆分并分布到所述处理核内的warp进行执行,包括:
对于每个被调度的处理核,利用所述处理核中的管线控制单元将所述对应的子任务继续拆分并分配到所述处理核所包含的多个warp中,以使得各被分配到的warp利用各自所包含的核心执行计算。
8.根据权利要求4所述的方法,其特征在于,所述方法还包括:为每个处理核对应的设置一warp时钟计数器以及为所述当前被执行的任务对应的设置一复用寄存器;
相应地,所述基于已分配子任务的处理核的warp执行时长预测执行所述剩余子任务的耗时,包括:
对于每个处理核,当其中的warp开始执行对应的子任务时,启动对应的warp时钟计数器,并在所有warp执行结束时停止所述对应warp时钟计数器;
利用每个处理核对应的warp时钟计数器停止后的计数更新所述复用寄存器中的寄存数值;其中,所述寄存数值用于表征执行所述剩余子任务所需的耗时。
9.根据权利要求8所述的方法,其特征在于,所述为每个处理核对应的设置一warp时钟计数器以及为所述当前被执行的任务对应的设置一复用寄存器,包括:
通过所述GPU的命令处理器为每一个处理核对应设置一warp时钟计数器,并且为所述当前被执行的任务对应设置一复用寄存器。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有应用于GPU的确定任务复杂度的程序,所述应用于GPU的确定任务复杂度的程序被至少一个处理器执行时实现权利要求4至9任一项中所述应用于GPU的确定任务复杂度的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111036976.0A CN113467959A (zh) | 2021-09-06 | 2021-09-06 | 应用于gpu的确定任务复杂度的方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111036976.0A CN113467959A (zh) | 2021-09-06 | 2021-09-06 | 应用于gpu的确定任务复杂度的方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113467959A true CN113467959A (zh) | 2021-10-01 |
Family
ID=77864642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111036976.0A Pending CN113467959A (zh) | 2021-09-06 | 2021-09-06 | 应用于gpu的确定任务复杂度的方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467959A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327872A (zh) * | 2021-12-14 | 2022-04-12 | 特赞(上海)信息科技有限公司 | 多媒体异步处理方法及装置 |
CN115408227A (zh) * | 2022-11-01 | 2022-11-29 | 西安芯瞳半导体技术有限公司 | 一种基于自研显卡的gpu状态调试方法、装置及存储介质 |
CN114327872B (zh) * | 2021-12-14 | 2024-05-31 | 特赞(上海)信息科技有限公司 | 多媒体异步处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080231882A1 (en) * | 2007-03-20 | 2008-09-25 | Kabushiki Kaisha Toshiba | Digital multiple apparatus |
CN106293890A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种基于复杂度的业务处理方法和装置 |
KR20180097904A (ko) * | 2017-02-24 | 2018-09-03 | 한국전자통신연구원 | 클라우드 플랫폼 상에서의 고속 비디오 편집 방법 및 그 장치 |
CN111813523A (zh) * | 2020-07-09 | 2020-10-23 | 北京奇艺世纪科技有限公司 | 时长预估模型生成方法、系统资源调度方法、装置、电子设备和存储介质 |
CN112114877A (zh) * | 2020-09-28 | 2020-12-22 | 西安芯瞳半导体技术有限公司 | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 |
-
2021
- 2021-09-06 CN CN202111036976.0A patent/CN113467959A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080231882A1 (en) * | 2007-03-20 | 2008-09-25 | Kabushiki Kaisha Toshiba | Digital multiple apparatus |
CN106293890A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种基于复杂度的业务处理方法和装置 |
KR20180097904A (ko) * | 2017-02-24 | 2018-09-03 | 한국전자통신연구원 | 클라우드 플랫폼 상에서의 고속 비디오 편집 방법 및 그 장치 |
CN111813523A (zh) * | 2020-07-09 | 2020-10-23 | 北京奇艺世纪科技有限公司 | 时长预估模型生成方法、系统资源调度方法、装置、电子设备和存储介质 |
CN112114877A (zh) * | 2020-09-28 | 2020-12-22 | 西安芯瞳半导体技术有限公司 | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 |
Non-Patent Citations (1)
Title |
---|
童维勤等: "《数据密集型计算和模型》", 31 January 2015 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327872A (zh) * | 2021-12-14 | 2022-04-12 | 特赞(上海)信息科技有限公司 | 多媒体异步处理方法及装置 |
CN114327872B (zh) * | 2021-12-14 | 2024-05-31 | 特赞(上海)信息科技有限公司 | 多媒体异步处理方法及装置 |
CN115408227A (zh) * | 2022-11-01 | 2022-11-29 | 西安芯瞳半导体技术有限公司 | 一种基于自研显卡的gpu状态调试方法、装置及存储介质 |
CN115408227B (zh) * | 2022-11-01 | 2023-01-24 | 西安芯瞳半导体技术有限公司 | 一种基于自研显卡的gpu状态调试方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8842122B2 (en) | Graphics processing unit with command processor | |
US11874715B2 (en) | Dynamic power budget allocation in multi-processor system | |
US9092267B2 (en) | Memory sharing in graphics processing unit | |
US11481950B2 (en) | Real-time hardware-assisted GPU tuning using machine learning | |
EP3108452B1 (en) | Shader pipeline with shared data channels | |
CN111737019B (zh) | 一种显存资源的调度方法、装置及计算机存储介质 | |
US8429656B1 (en) | Thread count throttling for efficient resource utilization | |
US11803936B2 (en) | Tile assignment to processing cores within a graphics processing unit | |
KR102006584B1 (ko) | 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭 | |
CN114972607B (zh) | 加速图像显示的数据传输方法、装置及介质 | |
CN113342485A (zh) | 任务调度方法、装置、图形处理器、计算机系统及存储介质 | |
CN112991143A (zh) | 一种图元装配的方法、装置及计算机存储介质 | |
CN113467959A (zh) | 应用于gpu的确定任务复杂度的方法、装置及介质 | |
CN112988364B (zh) | 一种动态的任务调度方法、装置及存储介质 | |
US20220036498A1 (en) | Methods and apparatus for mapping source location for input data to a graphics processing unit | |
CN110832457A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211001 |