CN115827252A - 顶点数据处理方法、图形处理器、电子设备及存储介质 - Google Patents
顶点数据处理方法、图形处理器、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115827252A CN115827252A CN202310030330.4A CN202310030330A CN115827252A CN 115827252 A CN115827252 A CN 115827252A CN 202310030330 A CN202310030330 A CN 202310030330A CN 115827252 A CN115827252 A CN 115827252A
- Authority
- CN
- China
- Prior art keywords
- thread
- vertex data
- basic
- execution core
- output instruction
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000012545 processing Methods 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 9
- 238000003825 pressing Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 6
- 238000010276 construction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种顶点数据处理方法、图形处理器、设备及存储介质。该方法包括:每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程,按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源;将完成缓冲区资源申请的各标准线程通知给调度执行核心,以供调度执行核心将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点数据缓冲区地址。通过本发明的技术方案,线程构造器组建线程的数目不会受到顶点数据缓冲区空间的限制,充分利用了调度执行核心的运算资源,提高了图形处理器的工作效率。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及顶点数据处理方法、图形处理器、电子设备及存储介质。
背景技术
目前图形处理器(graphics processing unit,GPU)图形渲染流水线中,前端着色器(shader)通常包含有顶点着色器(Vertex Shader,VS)、外壳着色器(Hull Shader,HS)、域着色器(Domin Shader,DS)和几何着色器(Geometry Shader,GS)等,这些前端着色器运算完成后都会输出顶点数据,这些顶点数据需要保存在一块顶点数据缓冲区。这块顶点数据缓冲区空间大小固定,为所有前端着色器共用。图形处理器运算是多线程并行运算,一个运算任务分解后由线程构造器先构造成一个一个的线程任务,再发往调度执行核心执行运算,调度执行核心根据自身的运算能力可以并行执行多个线程。
现有技术中,线程构造器在构造一个线程时,先分配好该线程需要的顶点数据缓冲区,才能将该线程发往调度执行核心去执行。该线程执行完成后,把运算结果保存到该顶点数据缓冲区,后端模块完成顶点数据读取后,才可以释放这块顶点数据缓冲区供其他线程使用。
发明人实现本发明的过程中,发现现有技术存在如下缺陷:当前端着色器需要执行的运算任务运算量较大时,会出现线程数多,线程运算时间长以及顶点数据存储量大等情况,线程构造器由于顶点数据缓冲区存储空间的限制,不能组建更多的线程,导致调度执行核心出现运算单元空载的问题,从而降低了图形处理器的运行效率。
发明内容
本发明提供了一种顶点数据处理方法、图形处理器、设备及存储介质,以解决标准线程组建因顶点数据缓冲区储存空间不足产生阻塞的问题。
第一方面,本发明提供了一种顶点数据处理方法,该方法由图形处理器中的线程构造器执行,包括:
每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程;
按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源;
将完成缓冲区资源申请的各标准线程通知给调度执行核心,并将各标准线程的顶点数据缓冲区地址写入前端数据输出模块,以供调度执行核心将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点数据缓冲区地址。
第二方面,本发明提供了一种顶点数据处理方法,该方法由图形处理器中的调度执行核心执行,包括:
每当检测到线程构造器通知执行的基础线程时,执行基础线程;
其中,基础线程在调度执行核心中初始化设置为输出指令发射禁用状态;
每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,设置标准线程为输出指令发射使能状态;
当执行至目标线程中的目标数据输出指令时,查询目标线程是否处于输出指令发射使能状态;
若是,则将目标数据输出指令发送至前端数据输出模块,以供前端数据输出模块将针对目标线程计算得到的顶点数据,存储于线程构造器针对目标线程预先写入的顶点数据缓冲区地址中。
第三方面,本发明还提供了一种图形处理器,所述图形处理器至少包括线程构造器以及调度执行核心;
线程构造器包括:
基础线程组建模块,用于每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程;
资源申请模块,用于按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源;
标准线程处理模块,用于将完成缓冲区资源申请的各标准线程通知给调度执行核心,以供调度执行核心将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点数据缓冲区地址;
调度执行核心包括:
基础线程执行模块,用于每当检测到线程构造器通知执行的基础线程时,执行基础线程;
其中,基础线程在调度执行核心中初始化设置为输出指令发射禁用状态;
使能状态设置模块,用于每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,设置标准线程为输出指令发射使能状态;
使能状态查询模块,用于当执行至目标线程中的目标数据输出指令时,查询目标线程是否处于输出指令发射使能状态;
输出指令发送模块,用于若是,则将目标数据输出指令发送至前端数据输出模块,以供前端数据输出模块将针对目标线程计算得到的顶点数据,存储于线程构造器针对目标线程预先写入的顶点数据缓冲区地址中。
第四方面,本发明提供了一种电子设备,所述电子设备包括:
至少一个图形处理器;以及
与所述至少一个图形处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个图形处理器执行的计算机程序,所述计算机程序被所述至少一个图形处理器执行,以使所述至少一个图形处理器能够执行如本发明任一项所述的顶点数据处理。
第五方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使图形处理器执行时实现如本发明任一项所述的顶点数据处理。
本发明的技术方案,线程构造器可以在将未分配缓冲区资源的基础线程通知给调度器进行执行的同时,并行的为每个基础线程依次申请缓冲区,并将成功申请到缓冲区资源的基础线程作为标准线程再通知给调度执行核心,进而调度执行核心可以将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点数据缓冲区地址。本发明的技术方案有效解决了现有技术中的线程构造器因顶点数据缓冲区储存空间不足产生构造阻塞的问题,使得线程构造器构造线程的数目不会受到顶点数据缓冲区空间的限制,即使在顶点数据缓冲区空间不足时,保证了调度执行核心可以在顶点数据缓冲区空间不足时,也能有效的进行计算操作,充分利用了调度执行核心的运算资源,提高了图形处理器的工作效率。
应当理解,本部分所描述的内容并非旨在标识本发明的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的方法实现的一种顶点数据处理过程的交互图;
图2是根据本发明实施例一提供的一种顶点数据处理方法的流程图;
图3是本发明实施例一的方法所适用的一种顶点数据缓冲分配队列的结构示意图;
图4是根据本发明实施例二提供的一种顶点数据处理方法的流程图;
图5是本发明实施例二的方法所适用的一种输出指令发射使能表的结构示意图;
图6是根据本发明实施例二提供的方法实现的一种顶点数据处理过程的交互图;
图7是根据本发明实施例三提供的一种图形处理器的结构示意图;
图8是实现本发明实施例的顶点数据处理方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了使本技术领域的人员更好地理解本发明方案,首先将现有技术中顶点数据的完整处理过程进行简单介绍。具体的,如图1所示,图形处理器为了实现顶点数据的处理过程,需要线程构造器、调度执行核心以及前端数据输出模块共同配合执行,并同时需要一块顶点数据缓冲区。
其中,一个当前线程的构建、执行和数据写入过程可以具体包括:
1)线程构造器向调度执行核心申请待执行的当前线程的运算资源;
2)线程构造器接收该调度执行核心返回的,与当前线程匹配的线程标识和通用寄存器资源;
3)线程构造器在顶点数据缓冲区中,为当前线程申请所需的顶点数据缓冲区资源,如果缓冲区资源不足就在此等待,直到其它线程运算完成并释放足够的缓冲区资源;
4)线程构造器如果完成对当前线程的缓冲区资源的申请后,将为当前线程所分配的顶点数据缓冲区资源地址写入至前端数据输出模块后,通知调度执行核心开始执行当前线程。
5)调度执行核心在接收到线程构造器通知执行的当前线程时,执行该当前线程,生成与当前线程匹配的顶点数据;
6)调度执行核心当执行至当前线程中的数据输出指令时,向前端数据输出模块发送该数据输出指令。
7)前端数据输出模块根据该数据输出指令,将针对当前线程计算得到的顶点数据,写入至线程构造器预先发送的缓冲区资源地址中。
在现有技术中,线程构造器在为线程申请顶点数据缓冲区中的顶点数据缓冲区资源时,如果空间不足就会导致等待,直到其它线程运算完成并释放足够的缓冲区资源,才能继续组建线程。当运算任务的运算量较大时,相应线程数增多,线程运算时间变长,顶点数据存储量增大,顶点数据缓冲区的存储空间使用会更加紧张,进而会产生更多的线程等待,导致调度执行核心中的运算单元可执行的线程少,运算资源不能充分利用,形成空载,从而降低了图形处理器的运行效率。
实施例一
图2为本发明实施例一提供的一种顶点数据处理方法的流程图,本实施例可适用于图形处理器在图像显示场景中进行顶点数据处理的情况,该方法可以由图形处理器中的线程构造器执行,与图形处理器中的调度执行核心和前端数据输出模块配合使用。
相应的,如图2所示,该方法包括:
S110、每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程。
其中,一个基础线程中包含了一个顶点数据的计算任务。每当线程构造器生成一个顶点数据计算任务时,可以向调度执行核心申请一个可用的空闲线程,并通过将该顶点数据计算任务封装于该空闲线程中,得到一个基础线程。
在本实施例中,区别于现有技术的实现方案,线程构造器在完成对一个基础线程的组建后,不再等待对该基础线程的缓存器资源的成功申请完成,而是从顶点数据缓冲区中预申请与该基础线程匹配的顶点数据缓冲区地址,并将该顶点数据缓冲区地址写入前端数据输出模块后,直接将该基础线程发送至调度执行核心进行即时的执行,可以充分发挥该调度执行核心的运算性能。
其中,在顶点数据缓冲区中预申请与该基础线程匹配的顶点数据缓冲区地址的方式可以为:在完成基础线程A的构建后,获取在所述顶点数据缓冲区中最近一次预申请的顶点数据缓冲区尾地址X1。将所述顶点数据缓冲区尾地址确定为与所述基础线程A对应的顶点数据缓冲区首地址,并根据X1以及所述基础线程所需占用的存储空间大小,确定与所述基础线程A对应的顶点数据缓冲区尾地址X2。将(X1,X2)确定为基础线程A的顶点数据缓冲区地址。
其中,基础线程可以理解为图形处理器能够进行运算调度的最小单位,它被包涵在进程之中,是行程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并行多个线程,每条线程并行执行不同的顶点数据计算任务。所述调度执行核心可以用来执行基础线程所包含的顶点数据运算操作。
在本实施例的一个可选的是实施方式中,每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程,可以包括:
响应于线程组建请求,向调度执行核心申请运算资源;根据调度器反馈的线程标识和通用寄存器资源,组建得到与线程组建请求匹配的基础线程;从顶点缓冲区中,预申请与所述基础线程对应的顶点数据缓冲区地址;将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程。
其中,线程构造器每当获取到一个运算任务时,可以将该运算任务分解为多个线程任务(也即,顶点数据计算任务),并进而可以针对每个线程任务生成匹配的线程组建请求,以构建得到用于执行线程任务的基础线程。线程构造器向调度执行核心所申请的运算资源包括线程标识以及通用寄存器资源。其中,线程标识为调度执行核心向线程构造器分配的,用于执行该线程任务的空闲线程的身份识别信息。该通用寄存器资源为顶点数据计算任务的计算过程中,所能够调度使用的通用资源。
相应的,线程构造器在获取线程标识和通用寄存器资源后,可以将与该线程标识匹配的空闲线程组建得到用于执行设定顶点数据计算任务的基础线程。
S120、按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源。
在本实施例中,S110和S120可以理解为两个并行执行的操作。也即,线程构造器一方面将组建得到基础线程直接给调度执行核心执行,另一方面,依次为每个基础线程申请线程所需使用的缓冲区资源。
其中,按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源,可以理解为,如果基础线程A先于基础线程B组建得到,则线程构造器首先为基础线程A申请缓冲区资源a,并在成功申请到缓冲区资源a后,继续为基础线程B申请缓冲器资源b。也即,组建顺序相邻的两个基础线程,只有当前置的基础线程成功分配到缓冲区资源时,才会为后置的基础线程执行分配缓冲区资源的操作。
具体的,为各基础线程申请的缓冲区资源,具体是指在顶点数据缓冲区中,为基础线程申请计算得到的顶点数据的数据写入位置。
在本实施例的一个可选的实施方式中,考虑到队列具有先进先入的存储性能,线程构造器可以将顺序生成的各基础线程加入至队列中,并按照入队顺序,依次为各基础线程申请缓冲区资源。
S130、将完成缓冲区资源申请的各标准线程通知给调度执行核心,以供调度执行核心将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点数据缓冲区地址。
其中,所述标准线程为成功申请到缓冲区资源的基础线程。
其中,线程构造器将该标准线程C通知给调度执行核心的目的,是指示调度执行核心当前已经满足了将执行该标准线程C得到的顶点数据发送给前端数据输出模块的时机,因为,已经为该标准线程C分配到顶点数据的存储位置。
同时,由于线程构造器将与标准线程C对应的顶点数据缓冲区地址预先写入至前端数据输出模块中,进而前端数据输出模块在收到调度执行核心发送的标准线程C的顶点数据时,可以直接将该顶点数据写入至该顶点数据缓冲区地址中。
也即,当某一基础线程组建完成后,线程构造器将该基础线程所需的顶点数据缓冲区地址写入前端数据输出模块,前端数据输出模块根据该顶点数据缓冲区地址将调度执行核心执行该标准线程得到的顶点数据输入至顶点数据缓冲区的相应地址。需要注意的是,只有当标准线程的缓冲区资源申请完成,顶点缓冲区中相应的缓冲区资源才可以被使用,调度执行核心才会将所述顶点数据传递至前端数据输出模块。
在本实施例的一个可选的实施方式中,线程构造器将完成缓冲区资源申请的各标准线程通知给调度执行核心的方式可以包括:
每当线程构造器获取到完成缓冲区资源申请的一个标准线程时,将该标准线程的线程标识通知给调度执行核心;
或者,考虑到调度执行核心在向线程构造器分配各空闲线程时,是按照线程编号顺序(1、2、3、4、……)顺序依次进行分配的,进而,每当线程构造器获取到完成缓冲区资源申请的一个标准线程时,仅向调度执行核心通知一个标准线程构建完成的响应信息即可,调度执行核心可以通过自动累加计算的方式,确定当前执行的哪些基础线程,已经转变为标准线程了。
本发明实施例的技术方案,通过将基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度器执行基础线程,按照基础线程的组建顺序申请对应的缓冲资源,当标准线程完成缓冲区资源申请时通知调度执行核心,使调度执行核心可以将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点缓冲地址的技术方案,有效解决了现有技术中的线程构造器因顶点数据缓冲区储存空间不足产生构造阻塞的问题,使得线程构造器构造线程的数目不会受到顶点数据缓冲区空间的限制,即使在顶点数据缓冲区空间不足时,保证了调度执行核心可以在顶点数据缓冲区空间不足时,也能有效的进行计算操作,充分利用了调度执行核心的运算资源,提高了图形处理器的工作效率。
在上述各实施例的基础上,在组建得到与线程组建请求匹配的基础线程之后,还可以包括:
确定基础线程中顶点数据所需写入的顶点数据缓冲区的存储位置描述信息,并将基础线程的线程标识和存储位置描述信息作为一个队列元素,压入顶点数据缓冲区分配队列中;
相应的,按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源,可以包括:
按照入队顺序,依次从顶点数据缓冲区分配队列中获取与当前基础线程对应的当前队列元素;根据当前队列元素,申请与当前线程对应的缓冲区资源;如果成功申请到与当前线程对应的缓冲区资源,则从顶点数据缓冲区分配队列中弹出当前队列元素,并将当前线程确定为标准线程。
如前所述,在组建得到一个基础线程并指示调度执行核心执行该基础线程后,可以同步获取该基础线程中顶点数据所需写入的顶点数据缓冲区地址。的存储位置描述信息,也即,当执行该基础线程得到顶点数据后,该顶点数据写入至顶点数据缓冲区中的具体存储位置。
相应的,可以直接将上述顶点数据缓冲区地址作为顶点数据缓冲区的存储位置描述信息。
一般来说,存储位置描述信息可以直接通过顶点数据缓冲区地址中的存储首尾地址来描述,不过考虑到图形处理器中的顶点数据缓冲区的首尾地址固定,且在该顶点数据缓冲区中的数据存储方式为顺序存储,为了进一步节约有限的图形处理器资源,因此,一个基础线程的存储位置描述信息可以仅包括该基础线程在顶点数据缓冲区中的存储尾地址即可。因为该基础线程在顶点数据缓冲区中的存储首地址要么为顶点数据缓冲区的首地址,要么为与该基础线程相邻组建的前一基础线程的存储尾地址,上述两个地址均可以被唯一确定。
相应的,在得到基础线程中顶点数据所需写入的顶点数据缓冲区的存储位置描述信息之后,可以将上述基础线程的线程标识和该基础线程的存储位置描述信息组织在一起,作为一个队列元素,存储在顶点数据缓冲区分配队列中,以实现先进先出的缓冲区资源申请顺序。
进而,针对该顶点数据缓冲区分配队列,线程构造器可以按照先进先出的入队顺序,依次获取一个当前队列元素X,并获取与该队列元素X分别对应的线程标识D和存储位置描述信息。如果该存储位置描述信息为一个存储尾地址x1,则可以进一步结合上一队列元素X-1的存储尾地址x0,确定与线程标识D对应的当前线程所需申请的缓冲区资源的首尾地址分别为x0和x1。其中,上一队列元素可以通过一个指向顶点数据缓冲区当前存储位置的指针实时存储。
线程构造器基于该x0和x1进行缓冲区资源的申请,如果成功申请到匹配的缓冲区资源,则从顶点数据缓冲区分配队列中弹出当前队列元素X,并将当前线程确定为标准线程通知给调度执行核心。如果未成功申请到匹配的缓冲区资源,则可以等待一段时间后,继续基于x0和x1进行缓冲区资源的申请,直至生成申请到匹配的缓冲区资源。
在图3中示出了点数据缓冲分配队列的结构示意图。如图3所示,假设顶点数据缓冲区的首地址为0000H,则由于首个压入顶点数据缓冲区分配队列中的线程标识为001的基础线程1的存储位置描述信息为00002H,可以确定该基础线程1所需的数据缓冲区资源的存储地址范围为0000H-00002H。由于第二个压入顶点数据缓冲区分配队列中的线程标识为002的基础线程2的存储位置描述信息为00005H,则可以确定该基础线程2所需的数据缓冲区资源的存储地址范围为0002H-00005H,以此类推。
实施例二
图4为本发明实施例二提供的一种顶点数据处理方法的流程图,本实施例可适用于图形处理器在图像显示场景中进行顶点数据处理的情况,该方法可以由图形处理器中的调度执行核心执行,与图形处理器中的线程构造器和前端数据输出模块配合使用。
相应的,如图4所示,该方法包括:
S210、每当检测到线程构造器通知执行的基础线程时,执行基础线程。
其中,基础线程在调度执行核心中初始化设置为输出指令发射禁用状态。
在现有技术中,当调度执行核心检测到线程构造器通知执行的基础线程时,说明线程构造器已经为该基础线程成功申请到顶点数据缓冲区中的缓冲区资源。此时,调度执行核心在完成对该基础线程的执行后,可以直接将计算得到的顶点数据发送给前端数据输出模块,以供前端数据输出模块将接收的顶点数据写入至相应的缓冲区资源中。
相区别的,在本实施例中,由于线程构造器直接将未完成缓冲区资源申请的基础线程发送至调度执行核心,则该调度执行核心在执行一个基础线程得到相应的顶点数据后,不能直接将该顶点数据提供给前端数据输出模块,而是需要等待该基础线程转变为完成缓冲区资源申请的标准线程后,才会将该标准线程的顶点数据发送给前端数据输出模块,以保证数据写入的准确性。
为了达到上述目的,需要在调度执行核心中维护一个输出指令发射使能表,该输出指令发射使能表存储有每个被通知执行的基础线程的输出指令发射状态。如果某一基础线程的输出指令发射状态为输出指令发射禁用状态,则说明该基础线程未成功申请到缓冲区资源,如果某一基础线程的输出指令发射状态为输出指令发射使能状态,则说明该基础线程已经转换为成功申请到缓冲区资源的标准线程。
在本实施例中,可以首先根据执行基础线程计算得到的顶点数据,构建与基础线程匹配的数据输出指令,并等待发射该数据输出指令,只有在该基础线程转换为标准线程后,才会将该数据输出指令发送至前端数据输出模块。
S220、每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,设置标准线程为输出指令发射使能状态。
可选的,每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,在输出指令发射使能表中,将与该标准线程匹配的表项值设置为与输出指令发射使能状态匹配的第一指示位。
其中,输出指令发射使能表的表项数量为图形处理器支持的最大线程数,且各表项的表项值初始化设置为与输出指令发射禁止状态匹配的第二指示位。
在本实施例中,从进一步减少图形处理器存储消耗的角度考虑,可以根据图形处理器所能支持的最大线程数,设置调度执行核心中指令发射使能表的表项数量。也即,如果图形处理器所能支持的最大线程数为128,则只要在该指令发射使能表维护上述128个线程的输出指令发射状态即可。进一步的,该调度执行核心中维护的指令发射使能表中可以不包括线程标识。这是因为调度执行核心是按照线程编号顺序分配线程给线程构造器的,进而,可以使用一个指针指向该指令发射使能表中当前转换为标准线程的线程位置,该线程位置,与线程标识一一对应。
也即,指令发射使能表中的首个表项值,对应基础线程1的输出指令发射状态,第二个表项值,对应基础线程2的输出指令发射状态,以此类推。每当收到线程构造器通知的完成缓冲区资源申请的一个标准线程时,可以将该指针进行+1处理,并将+1后所指向的表项值由第二指示位调整至第一指示位,以指示该基础线程已经转换为标准线程。
在本实施例中,该输出指令发射状态使用一个二进制比特位表示,则第一指示位可以为1,第二指示位可以为0。
其中,所述输出指令发射使能表的结构图可以如图5所示。具体的,当输出指令发射使能表的某一行的表项值为1时,表示线程标识与该行数对应的基础线程,已经转换为可以进行数据输出的标准线程,则可以将与该标准线程匹配的顶点数据发送至前端数据输出模块;当输出指令发射使能表的某一行的表项值为0时,表示线程标识与该行数对应的基础线程,尚未转换为可以进行数据输出的标准线程,则暂时不能将与该标准线程匹配的顶点数据发送至前端数据输出模块。
S230、当执行至目标线程中的目标数据输出指令时,查询目标线程是否处于输出指令发射使能状态。
在本实施例中,调度执行核心执行的每个线程中都封装有多个顺序执行的指令,通过执行上述各指令,可以实现生成顶点数据的计算结果,并顶点数据发送至前端数据输出模块等操作。一般来说,每个线程中的最后一个指令即为数据输出指令,用于将该线程计算得到的顶点数据发送至前端数据输出模块进行数据写入。
在本实施例中,为了实现将完成缓冲区资源申请的标准线程的顶点数据发送给前端数据输出模块的效果,在执行到每个具体线程中的数据输出指令时,需要对该线程的输出指令发射使能状态进行监测,进而确定该线程的数据输出指令是否可以被执行。其中,当前执行至数据输出指令的线程可以理解为目标线程,目标线程中的数据输出指令可以理解为目标数据输出指令。
当执行至目标线程中的目标数据输出指令时,可以获取该目标线程的线程标识。基于该线程标识,可以查询输出指令发射使能表匹配行数下的表项值,如果该表项值为1,则确定目标线程处于输出指令发射使能状态;如果该表项值为0,则确定目标线程处于输出指令发射禁止状态。
S240、将目标数据输出指令发送至前端数据输出模块,以供前端数据输出模块将针对目标线程计算得到的顶点数据,存储于线程构造器针对目标线程预先写入的顶点数据缓冲区地址中。
可选的,在将目标数据输出指令发送至前端数据输出模块之后,还可以包括:
响应于前端数据输出模块针对目标数据输出指令反馈的完成输出响应,在输出指令发射使能表中,将与目标线程匹配的表项值设置为第二指示位。
具体的,当前端数据输出模块接收到前端数据输出模块针对某一标准线程反馈的完成输出响应时,通知调度执行核心将输出指令发射使能表中与该标准线程匹配的表项位置匹配的表项值重新设置为0。
这样设置的原因在于,由于该图形处理器中共具有128个可用线程,当第128个可用线程被分配给线程构造器后,可以重新从第1个可用线程开始重新分配。进而,每当一个输出指令发射使能表中的一个标准线程完成数据输出后,该输出指令发射使能表中匹配的表项位置需要重新设置为0,以供新一轮线程的重复使用,以避免出错。
本发明实施例的技术方案,在检测到线程构造器通知执行的基础线程时,执行基础线程,检测到线程构造器通知的完成缓冲区资源申请的标准线程时,将标准线程设置为输出指令发射使能状态,当执行至目标线程中的目标数据输出指令时,查询目标线程是否处于输出指令发射使能状态,若是,则将目标数据输出指令发送至前端数据输出模块。本发明实施例的技术方案,在顶点数据缓冲区空间不足时保证调度执行核心也能进行有效的计算操作,充分利用了调度执行核心的运算资源,提高了图形处理器的工作效率。
具体应用场景
为了更清楚的表述本发明实施例提供的技术方案,图6是本发明实施例二所适用的一种具体应用场景的流程图。
与现有技术相比,本发明实施例在线程构造器中新增顶点数据缓冲区分配队列,每组建一个线程时,把当前线程标识和该线程需要占用到的顶点数据缓冲区信息作为一个单元压入顶点数据缓冲区分配队列。当线程成功分配到顶点数据缓冲区,从顶点数据缓冲区分配队列中弹出这个单元。
在调度执行核心模块新增输出指令发射使能表,输出指令发射使能表中bit位置对应的是线程标识,当第i行的bit位置设置为第一指示位,即设置为1时,表示线程i匹配的顶点数据缓冲区已就绪,当调度执行核心执行到与线程i对应的数据输出指令时,可以把该数据输出指令发射到前端数据输出模块;当第i行的bit位置设置为第二指示位,即设置为0时,表示线程i匹配的顶点数据缓冲区未就绪,不能发送与线程i对应的数据输出指令,需要等待指令发射使能表中第i行的bit位置成功转换为第二指示位时,才能将与线程i对应的数据输出指令发射到前端数据输出模块。
进一步的,在将目标数据输出指令发送至前端数据输出模块之后,响应于前端数据输出模块针对目标数据输出指令反馈的完成输出响应,需要重新在输出指令发射使能表中,将与线程i匹配的表项值设置为第二指示位,也即,重新设置为0。
具体的,在图6中示出了根据本发明实施例二提供的方法实现的一种顶点数据处理过程的交互图,相应的,如图6所示,完成交互过程如下:
1)在线程构造器中新增顶点数据缓冲区分配队列,顶点数据缓冲区分配队列的元素由线程标识和线程要占用的顶点数据缓冲区空间的末尾地址组成;
2)在调度执行核心模块新增一个128bit的输出指令发射使能表,128对应当前一个图形处理器能够处理的顶点数目;
3)线程构造器向调度执行核心申请待执行的当前线程的运算资源,包括线程标识和通用寄存器资源;
4)线程构造器接收该调度执行核心返回的,与当前线程匹配的线程标识和通用寄存器资源,并基于上述信息组建得到当前线程;
5)线程构造器将与当前线程匹配的顶点数据缓冲区地址发送至前端数据输出模块;
6)线程构造器把当前线程标识和当前线程需要占用到的顶点数据缓冲区的末尾地址作为一个单元压入顶点数据缓冲区分配队列;
7)线程构造器对顶点数据缓冲区分配队列以压入的先后顺序遍历,依次为当前获取的单元中的线程标识申请分配顶点数据缓冲区资源,申请成功,则向调度执行核心发送请求,以设置该线程为输出指令发射使能状态,并把该单元从顶点数据缓冲区分配队列中弹出;
8)调度执行核心模块执行到某一线程的数据输出指令时,先查询指令发射使能表,当指令发射使能表中该线程为输出指令发射使能状态时,把该数据输出指令发送到前端数据输出模块,否则,该线程的数据输出指令就暂时滞留在图形处理器内部,直到该线程的输出指令发射使能状态;
9)当前端数据输出模块完成某一线程的顶点数据的写入过程时,通知调度执行核心将输出指令发射使能表中,将该线程设置为输出指令发射禁止状态。
实施例三
图7为本发明实施例三提供的一种图形处理器的结构示意图,该图形处理器至少包括线程构造器以及调度执行核心。如图7所示,该图形处理器包括:线程构造器310以及调度执行核心320;
其中,所述线程构造器310可以包括:
基础线程组建模块3101,用于每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行器执行基础线程;
资源申请模块3102,用于按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源;
标准线程处理模块3103,用于将完成缓冲区资源申请的各标准线程通知给调度执行器,以供调度执行器将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点数据缓冲区地址。
调度执行核心320包括:
基础线程执行模块3201,用于每当检测到线程构造器通知执行的基础线程时,执行基础线程;
其中,基础线程在调度执行器中初始化设置为输出指令发射禁用状态。
使能状态设置模块3202,用于每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,设置标准线程为输出指令发射使能状态;
使能状态查询模块3203,用于当执行至目标线程中的目标数据输出指令时,查询目标线程是否处于输出指令发射使能状态;
输出指令发送模块3204,用于若是,则将目标数据输出指令发送至前端数据输出模块,以供前端数据输出模块将针对目标线程计算得到的顶点数据,存储于线程构造器针对目标线程预先写入的顶点数据缓冲区地址中。
本发明实施例的技术方案,通过将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度器执行基础线程,按照基础线程的组建顺序申请对应的缓冲资源,当标准线程完成缓冲区资源申请时通知调度执行核心,使调度执行核心可以将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点缓冲地址的技术方案,有效解决了现有技术中的线程构造器因顶点数据缓冲区储存空间不足产生构造阻塞的问题,使得线程构造器构造线程的数目不会受到顶点数据缓冲区空间的限制,即使在顶点数据缓冲区空间不足时,保证了调度执行核心可以在顶点数据缓冲区空间不足时,也能有效的进行计算操作,充分利用了调度执行核心的运算资源,提高了图形处理器的工作效率。
在上述各实施例的基础上,所述基础线程组建模块3101,可以包括:
运算资源申请单元,用于响应于线程组建请求,向调度执行器申请运算资源;
基础线程匹配单元,用于根据调度器反馈的线程标识和通用寄存器资源,组建得到与线程组建请求匹配的基础线程;
从顶点缓冲区中,预申请与所述基础线程对应的顶点数据缓冲区地址;
将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行器执行基础线程。
在上述各实施例的基础上,基础线程匹配单元进一步包括:
数据压入单元,用于确定基础线程中顶点数据所需写入的顶点数据缓冲区的存储位置描述信息,并将基础线程的线程标识和存储位置描述信息作为一个队列元素,压入顶点数据缓冲区分配队列中;
相应的,资源申请模块3102可以包括:
队列元素获取单元,用于按照入队顺序,依次从顶点数据缓冲区分配队列中获取与当前基础线程对应的当前队列元素;
资源申请单元,用于根据当前队列元素,申请与当前线程对应的缓冲区资源;
线程确定单元,用于如果成功申请到与当前线程对应的缓冲区资源,则从顶点数据缓冲区分配队列中弹出当前队列元素,并将当前线程确定为标准线程。
在上述各实施例的基础上,使能状态设置模块3202可以包括:
第一指示位发射单元,用于每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,在输出指令发射使能表中,将与标准线程匹配的表项值设置为与输出指令发射使能状态匹配的第一指示位;
其中,输出指令发射使能表的表项数量为图形处理器支持的最大线程数,且各表项的表项值初始化设置为与输出指令发射禁止状态匹配的第二指示位。
在上述各实施例的基础上,输出指令发送模块3204可以包括:
第二指示位设置单元,用于响应于前端数据输出模块针对目标数据输出指令反馈的完成输出响应,在输出指令发射使能表中,将与目标线程匹配的表项值设置为第二指示位。
实施例四
图8示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图8所示,电子设备10包括至少一个图形处理器11,以及与至少一个图形处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个图形处理器11执行的计算机程序,图形处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。图形处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
图形处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。图形处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(图形处理器)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。图形处理器11执行上文所描述的各个方法和处理,例如执行由线程构造器实现的顶点数据处理方法。所述方法包括:
每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程;
按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源;
将完成缓冲区资源申请的各标准线程通知给调度执行核心,以供调度执行核心将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点数据缓冲区地址。
或者,执行由调度执行核心实现的顶点数据处理方法。所述方法包括:
每当检测到线程构造器通知执行的基础线程时,执行基础线程;
其中,基础线程在调度执行核心中初始化设置为输出指令发射禁用状态;
每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,设置标准线程为输出指令发射使能状态;
当执行至目标线程中的目标数据输出指令时,查询目标线程是否处于输出指令发射使能状态;
若是,则将目标数据输出指令发送至前端数据输出模块,以供前端数据输出模块将针对目标线程计算得到的顶点数据,存储于线程构造器针对目标线程预先写入的顶点数据缓冲区地址中。
在一些实施例中,顶点数据处理方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由图形处理器11执行时,可以执行上文描述的顶点数据处理方法的一个或多个步骤。备选地,在其他实施例中,图形处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行顶点数据处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种顶点数据处理方法,其特征在于,所述顶点数据处理方法由图形处理器中的线程构造器执行,包括:
每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程;
按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源;
将完成缓冲区资源申请的各标准线程通知给调度执行核心,以供调度执行核心将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点数据缓冲区地址。
2.根据权利要求1所述的方法,其特征在于,每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程,包括:
响应于线程组建请求,向调度执行核心申请运算资源;
根据调度器反馈的线程标识和通用寄存器资源,组建得到与线程组建请求匹配的基础线程;
从顶点缓冲区中,预申请与所述基础线程对应的顶点数据缓冲区地址;
将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程。
3.根据权利要求2所述的方法,其特征在于,在组建得到与线程组建请求匹配的基础线程之后,还包括:
确定基础线程中顶点数据所需写入的顶点数据缓冲区的存储位置描述信息,并将基础线程的线程标识和存储位置描述信息作为一个队列元素,压入顶点数据缓冲区分配队列中;
按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源,包括:
按照入队顺序,依次从顶点数据缓冲区分配队列中获取与当前基础线程对应的当前队列元素;
根据当前队列元素,申请与当前线程对应的缓冲区资源;
如果成功申请到与当前线程对应的缓冲区资源,则从顶点数据缓冲区分配队列中弹出当前队列元素,并将当前线程确定为标准线程。
4.一种顶点数据处理方法,其特征在于,所述顶点数据处理方法由图形处理器中的调度执行核心执行,包括:
每当检测到线程构造器通知执行的基础线程时,执行基础线程;
其中,基础线程在调度执行核心中初始化设置为输出指令发射禁用状态;
每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,设置标准线程为输出指令发射使能状态;
当执行至目标线程中的目标数据输出指令时,查询目标线程是否处于输出指令发射使能状态;
若是,则将目标数据输出指令发送至前端数据输出模块,以供前端数据输出模块将针对目标线程计算得到的顶点数据,存储于线程构造器针对目标线程预先写入的顶点数据缓冲区地址中。
5.根据权利要求4所述的方法,其特征在于,每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,设置标准线程为输出指令发射使能状态,包括:
每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,在输出指令发射使能表中,将与标准线程匹配的表项值设置为与输出指令发射使能状态匹配的第一指示位;
其中,输出指令发射使能表的表项数量为图形处理器支持的最大线程数,且各表项的表项值初始化设置为与输出指令发射禁止状态匹配的第二指示位。
6.根据权利要求5所述的方法,其特征在于,在将目标数据输出指令发送至前端数据输出模块之后,还包括:
响应于前端数据输出模块针对目标数据输出指令反馈的完成输出响应,在输出指令发射使能表中,将与目标线程匹配的表项值设置为第二指示位。
7.一种图形处理器,其特征在于,所述图形处理器至少包括线程构造器以及调度执行核心;
线程构造器包括:
基础线程组建模块,用于每当完成基础线程的组建时,将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程;
资源申请模块,用于按照基础线程组建顺序,依次申请与各基础线程分别对应的缓冲区资源;
标准线程处理模块,用于将完成缓冲区资源申请的各标准线程通知给调度执行核心,以供调度执行核心将执行各标准线程得到的顶点数据输出至前端数据输出模块中标准线程的顶点数据缓冲区地址;
调度执行核心包括:
基础线程执行模块,用于每当检测到线程构造器通知执行的基础线程时,执行基础线程;
其中,基础线程在调度执行核心中初始化设置为输出指令发射禁用状态;
使能状态设置模块,用于每当检测到线程构造器通知的完成缓冲区资源申请的标准线程时,设置标准线程为输出指令发射使能状态;
使能状态查询模块,用于当执行至目标线程中的目标数据输出指令时,查询目标线程是否处于输出指令发射使能状态;
输出指令发送模块,用于若是,则将目标数据输出指令发送至前端数据输出模块,以供前端数据输出模块将针对目标线程计算得到的顶点数据,存储于线程构造器针对目标线程预先写入的顶点数据缓冲区地址中。
8.根据权利要求7所述的图形处理器,其特征在于,
所述基础线程组建模块包括:
运算资源申请单元,用于响应于线程组建请求,向调度执行核心申请运算资源;
基础线程匹配单元,用于根据调度器反馈的线程标识和通用寄存器资源,组建得到与线程组建请求匹配的基础线程;
从顶点缓冲区中,预申请与所述基础线程对应的顶点数据缓冲区地址;
将所述基础线程的顶点数据缓冲区地址写入前端数据输出模块,并通知调度执行核心执行基础线程。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个图形处理器;以及
与所述至少一个图形处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个图形处理器执行的计算机程序,所述计算机程序被所述至少一个图形处理器执行,以使所述至少一个图形处理器能够执行权利要求1-3中任一项所述的顶点数据处理方法,或者,执行权利要求4-6中任一项所述的顶点数据处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使图形处理器执行时实现权利要求1-3中任一项所述的顶点数据处理方法,或者,实现权利要求4-6中任一项所述的顶点数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310030330.4A CN115827252B (zh) | 2023-01-10 | 2023-01-10 | 顶点数据处理方法、图形处理器、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310030330.4A CN115827252B (zh) | 2023-01-10 | 2023-01-10 | 顶点数据处理方法、图形处理器、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115827252A true CN115827252A (zh) | 2023-03-21 |
CN115827252B CN115827252B (zh) | 2023-05-05 |
Family
ID=85520491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310030330.4A Active CN115827252B (zh) | 2023-01-10 | 2023-01-10 | 顶点数据处理方法、图形处理器、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827252B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120036509A1 (en) * | 2010-08-06 | 2012-02-09 | Sonics, Inc | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
CN107515795A (zh) * | 2017-09-08 | 2017-12-26 | 北京京东尚科信息技术有限公司 | 基于队列的多任务并行数据处理方法、装置、介质和设备 |
US20190042410A1 (en) * | 2017-08-04 | 2019-02-07 | Microsoft Technology Licensing, Llc | Flexible buffer sizing in graphics processors |
CN109921895A (zh) * | 2019-02-26 | 2019-06-21 | 成都国科微电子有限公司 | 一种数据Hash值的计算方法及系统 |
CN110554976A (zh) * | 2018-06-01 | 2019-12-10 | 苹果公司 | 用于图形处理的存储器高速缓存管理 |
CN111476706A (zh) * | 2020-06-02 | 2020-07-31 | 长沙景嘉微电子股份有限公司 | 顶点并行处理方法、装置及计算机存储介质、电子设备 |
CN111913816A (zh) * | 2020-07-14 | 2020-11-10 | 长沙景嘉微电子股份有限公司 | Gpgpu中簇的实现方法、装置、终端及介质 |
US20200387548A1 (en) * | 2019-06-10 | 2020-12-10 | Postech Academy-Industry Foundation | Graph data processing method and apparatus thereof |
CN112905237A (zh) * | 2019-12-04 | 2021-06-04 | 北京百度网讯科技有限公司 | 指令预取方法、装置、设备和介质 |
CN114489791A (zh) * | 2021-01-27 | 2022-05-13 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法、计算设备 |
CN114928579A (zh) * | 2021-02-01 | 2022-08-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
-
2023
- 2023-01-10 CN CN202310030330.4A patent/CN115827252B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120036509A1 (en) * | 2010-08-06 | 2012-02-09 | Sonics, Inc | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
US20190042410A1 (en) * | 2017-08-04 | 2019-02-07 | Microsoft Technology Licensing, Llc | Flexible buffer sizing in graphics processors |
CN107515795A (zh) * | 2017-09-08 | 2017-12-26 | 北京京东尚科信息技术有限公司 | 基于队列的多任务并行数据处理方法、装置、介质和设备 |
CN110554976A (zh) * | 2018-06-01 | 2019-12-10 | 苹果公司 | 用于图形处理的存储器高速缓存管理 |
CN109921895A (zh) * | 2019-02-26 | 2019-06-21 | 成都国科微电子有限公司 | 一种数据Hash值的计算方法及系统 |
US20200387548A1 (en) * | 2019-06-10 | 2020-12-10 | Postech Academy-Industry Foundation | Graph data processing method and apparatus thereof |
CN112905237A (zh) * | 2019-12-04 | 2021-06-04 | 北京百度网讯科技有限公司 | 指令预取方法、装置、设备和介质 |
CN111476706A (zh) * | 2020-06-02 | 2020-07-31 | 长沙景嘉微电子股份有限公司 | 顶点并行处理方法、装置及计算机存储介质、电子设备 |
CN111913816A (zh) * | 2020-07-14 | 2020-11-10 | 长沙景嘉微电子股份有限公司 | Gpgpu中簇的实现方法、装置、终端及介质 |
CN114489791A (zh) * | 2021-01-27 | 2022-05-13 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法、计算设备 |
CN114928579A (zh) * | 2021-02-01 | 2022-08-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
阙恒等: "一种新的低功耗高性能绘图芯片 GPU 设计方案" * |
Also Published As
Publication number | Publication date |
---|---|
CN115827252B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9501318B2 (en) | Scheduling and execution of tasks based on resource availability | |
US8310492B2 (en) | Hardware-based scheduling of GPU work | |
CN104714785A (zh) | 任务调度装置、方法及并行处理数据的设备 | |
CN113172625A (zh) | 一种机器人调度方法、装置、设备及存储介质 | |
CN109840149B (zh) | 任务调度方法、装置、设备及存储介质 | |
US20160371123A1 (en) | Data Processing Method and Apparatus | |
JP5660149B2 (ja) | 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム | |
CN110673959A (zh) | 用于处理任务的系统、方法和装置 | |
CN112860401B (zh) | 任务调度方法、装置、电子设备和存储介质 | |
CN114579323A (zh) | 一种线程处理方法、装置、设备及介质 | |
US11711795B2 (en) | Apparatus and method for altruistic scheduling based on reinforcement learning | |
CN114816777A (zh) | 命令处理装置、方法、电子设备以及计算机可读存储介质 | |
CN110515749B (zh) | 信息发送的队列调度的方法、装置、服务器和存储介质 | |
CN110825502B (zh) | 神经网络处理器和用于神经网络处理器的任务调度方法 | |
CN115827252B (zh) | 顶点数据处理方法、图形处理器、电子设备及存储介质 | |
CN112486638A (zh) | 用于执行处理任务的方法、装置、设备和存储介质 | |
US10678744B2 (en) | Method and system for lockless interprocessor communication | |
CN116243983A (zh) | 处理器、集成电路芯片、指令处理方法、电子设备和介质 | |
CN113377295B (zh) | 多生产者单消费者的数据存储和读取方法、装置、设备 | |
CN116795503A (zh) | 任务调度方法、任务调度装置、图形处理器及电子设备 | |
CN115658311A (zh) | 一种资源的调度方法、装置、设备和介质 | |
CN114579187A (zh) | 一种指令分配方法、装置、电子设备及可读存储介质 | |
CN114637594A (zh) | 多核处理设备、任务分配方法、装置及存储介质 | |
CN112114967A (zh) | 一种基于服务优先级的gpu资源预留方法 | |
CN116974767A (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 |