发明内容
本申请能够提升图形处理单元中图形渲染的效率。
为了达到上述目的,本申请提供了以下技术方案:
第一方面,本申请提供了一种图形处理器,图形处理器包括全局任务调度器和多个图形处理器集群,每一图形处理器集群包括:核心,包括多个处理单元;张量核心阵列组,包括一个或多个张量核心阵列;所述图形处理器还包括:全局缓存,用于接收所述张量核心阵列组的第二栅栏信息,所述第二栅栏信息用于指示所述张量核心阵列组完成超分辨率操作,并转发至所述全局任务调度器;第二栅栏信息控制中心,用于接收所述全局缓存转发的所述第二栅栏信息,合并来自多个张量核心阵列组多个图形处理器集群的相同的第二栅栏信息,并返回所述第二栅栏信息至所述全局任务调度器,响应于所述第二栅栏信息,所述全局任务调度器为所述图形处理器集群分发新的超分辨率任务或者将数据送到显示模块进行显示;其中,响应于第一栅栏信息,所述全局任务调度器调度所述张量核心阵列组执行所述第n帧的超分辨率操作以及同时调度所述核心执行第n+1帧的渲染操作,其中,所述第一栅栏信息用于指示所述核心完成第n帧的渲染操作,n为大于等于0的整数。
可选的,所述图形处理器集群还包括局部任务调度器;所述全局任务调度器将张量核心阵列组命令经由所述局部任务调度器传输至所述张量核心阵列组,所述张量核心阵列组命令用于指示执行超分辨率操作。
可选的,所述局部任务调度器包括:命令解析器,用于解析来自所述全局任务调度器的任务;内存控制单元,用于控制数据的读取;张量核心阵列控制器,用于控制所述张量核心阵列组执行矩阵运算。
可选的,所述局部任务调度器还包括:输入缓存,用于存储来自所述内存控制单元所读取的数据;数据扩展缓存,用于将图形数据转换为阵列数据;数据/权重输入缓存,用于存储输入至所述张量核心阵列组的阵列数据和/或权重数据。
可选的,所述图形处理器还包括:渲染缓存,用于接收并存储渲染命令;着色器缓存,用于接收并存储张量核心阵列组命令,所述张量核心阵列组命令用于指示执行超分辨率操作。
可选的,响应于接收到所述第一栅栏信息,所述全局任务调度器从所述着色器缓存中调取所述张量核心阵列组命令。
可选的,用于控制执行所述第n帧的超分辨率操作的命令描述中包括着色器标识,所述着色器标识指示的着色器用于接收所述张量核心阵列组的输出结果。
第二方面,本申请还公开一种图形渲染方法,图形渲染方法包括:驱动接收渲染请求;全局任务调度器调度核心执行第n帧的渲染操作;所述全局任务调度器调度张量核心阵列组执行所述第n帧的超分辨率操作以及同时调度所述核心执行第n+1帧的渲染操作,每一图形处理器集群包括所述核心以及所述张量核心阵列组,其中,所述第一栅栏信息用于指示所述核心完成第n帧的渲染操作,n为大于等于0的整数;全局缓存接收所述张量核心阵列组的第二栅栏信息,所述第二栅栏信息用于指示所述张量核心阵列组完成超分辨率操作,并转发至所述全局任务调度器;第二栅栏信息控制中心接收所述全局缓存转发的所述第二栅栏信息,合并来自多个图形处理器集群的相同的第二栅栏信息,并返回所述第二栅栏信息至所述全局任务调度器,响应于所述第二栅栏信息,所述全局任务调度器为所述图形处理器集群分发新的超分辨率任务或者将数据送到显示模块进行显示。
可选的,所述全局任务调度器调度所述张量核心阵列组执行所述第n帧的超分辨率操作以及调度所述核心执行第n+1帧的渲染操作包括:所述全局任务调度器接收所述张量核心阵列组的第一栅栏信息;所述全局任务调度器从着色器缓存中调取张量核心阵列组命令;所述全局任务调度器将所述张量核心阵列组命令转发至局部任务调度器;所述局部任务调度器将所述张量核心阵列组命令发送至各个调度所述张量核心阵列组,以供所述张量核心阵列组执行所述超分辨率操作。
可选的,所述全局任务调度器接收来自全局缓存的第二栅栏信息,所述第二栅栏信息用于指示所述张量核心阵列组完成超分辨率操作。
第三方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行所述图形渲染方法的步骤。
第四方面,本申请提供了一种终端设备,其特征在于,包括第一方面所述的图形处理单元。
与现有技术相比,本申请技术方案具有以下有益效果:
本申请技术方案中,图形处理器包括全局任务调度器和多个图形处理器集群,每一图形处理器集群包括相互独立的核心和张量核心阵列组。通过使张量核心阵列独立于核心,能够减少核心对张量核心阵列的影响,使待处理数据无需向更细粒度的核心传输,减小了数据带宽,为后续多任务并行奠定了基础。在核心完成第n帧的渲染后,全局任务调度器调度张量核心阵列组执行第n帧的超分辨率操作以及同时调度核心执行第n+1帧的渲染操作,从而实现渲染操作与超分辨率操作的完全并行,提升图形渲染效率,进而提升图形处理器的运行效率。
此外,对于需要做后续处理的过程,传输的也仅仅是最终的数据,而无需传输待处理数据和权重数据等信息,从而能够更好的共享卷积中的数据和权重数据,减少了数据的内部传输。
进一步地,本申请中图形处理器集群还包括局部任务调度器,也即每一图形处理器集群通过独立的局部任务调度器来进行任务的调度。通过独立的调度管理系统,能够有效的完成多个张量核心阵列之间的同步,进一步提升执行效率。
进一步地,本申请中,超分辨率操作的命令描述中包括着色器标识,着色器标识指示的着色器用于接收张量核心阵列组的输出结果。本申请中图形处理器集群能够灵活地与着色器进行数据交换,同步等操作,从而保证了图形处理器的兼容性。
具体实施方式
如背景技术中所述,现有超分辨率过程中数据需要利用核心读入流多处理器,每个流均需要计算自己要处理的数据地址和权重地址,同样的数据可能会被读取多次,导致占用不少的通用计算单元用于各类后处理,地址计算等,占用了通用计算单元的时间以及寄存器接口,运行效率较低,导致游戏渲染时间增长。
本申请技术方案中,图形处理器包括全局任务调度器和多个图形处理器集群,每一图形处理器集群包括相互独立的核心和张量核心阵列组。通过使张量核心阵列独立于核心,能够减少核心对张量核心阵列的影响,使待处理数据无需向更细粒度的核心传输,减小了数据带宽,为后续多任务并行奠定了基础。在核心完成第n帧的渲染后,全局任务调度器调度张量核心阵列组执行第n帧的超分辨率操作以及同时调度核心执行第n+1帧的渲染操作,从而实现渲染操作与超分辨率操作的完全并行,提升图形渲染效率,进而提升图形处理器的运行效率。
本发明实施例所称超分辨率(Super-Resolution)操作是指,通过一系列低分辨率的图形来得到一幅高分辨率的图形的过程,以提高原有图形的分辨率。
为使本申请的上述目的、特征和优点能够更为明显易懂,下面结合附图对本申请的具体实施例做详细的说明。
参见图1,图形处理器可以包括全局任务调度器101和多个图形处理器集群(Graphic Processor Cluster, GPC)102。
其中,每一图形处理器集群102包括核心(core)1021和张量核心阵列组1022。核心1021包括多个处理单元(Processor Element, PE),每一处理单元包括多个通用处理单元、纹理以及数据读写单元等。
张量核心阵列组102包括一个或多个张量核心阵列。张量核心阵列可以以实现各类的矩阵的加速功能、矢量的加速功能。具体地,张量核心阵列可以获取待处理数据以及权重数据,并根据权重数据对待处理数据进行图形处理。例如,张量核心阵列对待处理数据进行点积阵列(Dot Product array,DP)运算,以得到待累加数据。
需要说明的是,核心1021也可以称为内核,计算单元(Compute unit, CU)等,张量核心阵列可以称为加速单元等,本申请对此不作限制。
具体地,张量核心阵列组1022可以包括在图形处理器集群102中,也可以包括在图形处理器集群102和固定功能集群(Fix function Cluster, FUC)的大模块中。
相对于现有技术中张量核心阵列设置于处理单元中,本发明实施例中,张量核心阵列独立于核心1021,也即张量核心阵列独立于处理单元,能够减少核心对张量核心阵列的影响,使待处理数据无需向更细粒度的核心传输,减小了数据带宽,为后续多任务并行奠定了基础。
此外,基于张量核心阵列执行矩阵运算,可以有效降低现有技术中分散在处理单元内部的大量地址计算,能够进一步提升数据处理效率。
在图形渲染过程中,全局任务调度器101会先调度核心1021执行图形的渲染操作,再调度张量核心阵列组1022该图形的超分辨率操作。
在本申请实施例中,全局任务调度器101调度核心1021完成第n帧的渲染操作后,核心1021会发送第一栅栏信息(fence) ,也可以称为屏障(barrier)至全局任务调度器101。响应于该第一栅栏信息,全局任务调度器101调度张量核心阵列组1022执行第n帧的超分辨率操作以及同时调度核心1021执行第n+1帧的渲染操作。换言之,通过上述步骤实现第n帧的超分辨率操作与第n+1帧的渲染操作的完全并行。
如图2所示,在帧0的渲染操作完成后,开始执行帧0的超分辨率操作,同时执行帧1的渲染操作,以此类推,执行帧1的超分辨率操作的同时执行帧2的渲染操作。
通过上述相邻帧之间渲染操作与超分辨率操作的完全并行,能够提升渲染效率,从而提升GPU的性能。
在一个非限制性的实施例中,请参照图3,图3示出了图形处理器集群的具体结构。
一并参照图1,图形处理器集群102除了包括核心1021和张量核心阵列组1022之外,还可以包括局部任务调度器1023。
在渲染过程中,全局任务调度器101将张量核心阵列组命令经由局部任务调度器1023传输至张量核心阵列组1022,张量核心阵列组1022根据张量核心阵列组命令执行超分辨率操作。
具体地,核心1021包括处理单元10211,还可以包括光线追踪单元(Ray TracingUnit, RTU)10212。
继续参照图3,图形处理器集群102还可以包括固定功能集群FUC。
具体地,张量核心阵列组1022中可以包括多个张量核心阵列,多个张量核心阵列可以以任意可实施的连接方式进行连接,例如,串联和/或并联等,以适应不同GPU的架构,从而提升GPU的兼容性和灵活性。
本实施例中,通过局部任务调度器1023为超分辨率操作设置响应的命令队列,与现有的渲染操作/着色命令相独立,结合张量核心阵列组1022也与处理单元10211相独立,也就意味着超分辨率操作不会占用渲染操作/着色命令的计算单元,进一步提升渲染效率。
进一步地,请参照图4,局部任务调度器1023可以包括命令解析器10231、内存控制单元10232和张量核心阵列控制器10233。
其中,命令解析器10231用于解析来自全局任务调度器101的任务,完成任务分割,地址计算,协调调度内存控制单元10232,张量核心阵列控制器10233,以及任务同步。
内存控制单元10232用于控制从存储器GL1中读取数据,并通知张量核心阵列控制器10233数据已准备好,可以开始计算。当数据已进入图形处理器集群102中的输入缓存后,张量核心阵列控制器10233利用张量核心阵列10221执行矩阵计算,并将结果写入累加器(accumulator, ACC)1025中。累加器1025用于对张量核心阵列10221的运算结果执行累加运算。
根据不同的后处理设置,累加器1025中的结果存在以下两种处理方式:
方式A: 送往固定流水线,完成批量标准化(Batch Normalization)、激活(Activation)、池化(Pooling)、缩放(scale)、偏差(bias)等操作,然后将运算结果写到全局缓存GL2。
方式B: 送往着色器,完成后续的各类操作,然后通过处理单元写到全局缓存GL2中。
具体地,当激活函数以及输出是默认的传统模式时,数据走固定流水线,以减少对GPU逻辑的依赖。需要自定义后续操作时,则将数据先写入到任务输入队列,GPC局部任务生成器根据任务输入队列内的数据构建新的异步运行着色器任务,PE着色器单元会根据预先定义的着色程序,对数据进行处理,并通过加载存储单元将数据写入到全局缓存GL2中。
继续参照图4,局部任务调度器1023可以包括输入缓存10234、数据扩展缓存10235以及数据/权重输入缓存10236。
其中,输入缓存10234用于存储来自内存控制单元10232请求读取的数据。数据扩展缓存10235用于将图形数据转换为阵列数据(image to column), 以减少传输的带宽和存储带宽。
数据/权重输入缓存10236用于存放排好的输入数据,也即用于输入至张量核心阵列组1022的阵列数据和/或权重数据。
在一个非限制性的实施例中,由于一副较大的图形,例如较大的游戏画面,需要多个图形处理器集群102同时协作,所以当每一个图形处理器集群102的张量核心阵列组1022完成当前的任务之后,图形处理器集群102会将自己的第二栅栏信息(fence) ,也可以称为屏障(barrier),送往全局缓存GL2。第二栅栏信息用于指示完成超分辨率操作。
当全局缓存GL2收到来自于不同图形处理器集群102的第二栅栏信息之后,会转发到第二栅栏信息控制中心,第二栅栏信息控制中心会合并来自于多个图形处理器集群102的相同第二栅栏信息,并将其返回全局任务调度器101,全局任务调度器101会在收到第二栅栏信息通知后,决定为图形处理器集群102分发新的超分辨率任务或者将数据送到显示模块进行显示。
在一个非限制性的实施例中,请参照图5,图形处理器还可以包括渲染缓存103和着色器缓存104。
具体地,渲染缓存103和着色器缓存104可以是环形缓存器(ring buffer)。
其中,渲染缓存103用于接收并存储渲染命令,例如三维渲染命令。着色器缓存104用于接收并存储张量核心阵列组命令,所述张量核心阵列组命令用于指示执行超分辨率操作。此外,着色器缓存104还包括多个队列,用于异步计算。
进一步地,全局任务调度器101响应于接收到第一栅栏信息,全局任务调度器101从着色器缓存中调取张量核心阵列组命令。具体地,全局任务调度器101还用于调度多个渲染缓存103和着色器缓存104之间的同步以及任务的分配。
在一个非限制性的实施例中,张量核心阵列组命令的命令描述中包括着色器标识,所述着色器标识指示的着色器用于接收所述张量核心阵列组的输出结果。
具体地,通过在张量核心阵列组命令的命令描述中携带着色器标识,能够在张量核心阵列组完成矩阵运算获得运算结果后,由着色器标识指示的着色器进行后续对运算结果的处理。具体地,通过着色器任务构造函数(task constructor),将张量核心阵列的输出打包成可以在核心执行的格式,并通过局部任务调度器均衡地分配到不同的核心。
本实施例中图形处理器集群能够灵活地与着色器进行数据交换,同步等操作,从而保证了图形处理器的兼容性。
在图形处理器具有上述结构的基础上,图形处理器可以执行图形渲染,图形渲染方法的具体步骤如图6所示。
在步骤601中,图形处理器的驱动(driver)接收渲染请求。
在步骤602中,图形处理器的全局任务调度器101调度核心1021执行第n帧的渲染操作。
在步骤603中,响应于第一栅栏信息,图形处理器的全局任务调度器101调度张量核心阵列组1022执行第n帧的超分辨率操作以及调度核心1021执行第n+1帧的渲染操作。
进一步地,在步骤603的具体实施中,全局任务调度器101接收来自核心的第一栅栏信息,从着色器缓存中调取张量核心阵列组命令。全局任务调度器101将张量核心阵列组命令发送至局部任务调度器1023。局部任务调度器1023将张量核心阵列组命令分发至多个张量核心阵列组1022,张量核心阵列组1022执行该张量核心阵列组命令,以执行第n帧的超分辨率操作。
进一步地,全局任务调度器101接收所述张量核心阵列组1022的第二栅栏信息,所述第二栅栏信息用于指示完成超分辨率操作。
本实施例通过合理的调度方式,实现渲染操作与超分辨率操作的完全并行,提升图形渲染效率,进而提升图形处理器的运行效率。
下面结合一个具体的应用场景对图形渲染的过程进行说明。
步骤1、用户可以在应用程序,例如游戏通过设置启用超分辨率加速渲染,并通过选择模式启用不同的网络结构。
步骤2、GPU驱动收到来自于应用程序的设置和渲染请求,GPU驱动会生成对应的加速命令,如张量核心阵列组命令。
步骤3、GPU驱动将渲染命令传输至渲染缓存,并将张量核心阵列组命令传输至着色器缓存。
步骤4、GPU驱动将小分辨率的帧渲染请求送到GPU的硬件队列。
步骤5、GPU驱动在异步运行的队列中,插入相应的超分辨率任务,并利用第一栅栏信息,完成超分辨率任务和渲染队列的任务的同步。具体可参照步骤6至步骤8。
步骤6、当GPU完成当前小分辨率游戏的渲染,全局任务调度器会收到相应的第一栅栏信息,根据第一栅栏信息开始向多个张量核心阵列组提交相应子任务。
具体地,全局调度器解析渲染缓存并调度核心完成三维渲染,当完成第一个帧之后,如果渲染缓存不是空的,继续执行第二个帧的渲染。与此同时,当全局调度器发现张量核心阵列组命令的执行条件已经满足,全局调度器会调度张量核心阵列组执行张量核心阵列命令。
步骤7、当所有的张量核心阵列组完成子任务之后,返回第一栅栏信息给全局任务调度器。
步骤8、全局任务调度器根据模式的设定确定是否执行后续的任务,还是可以直接送给显示模块进行显示操作。
可以理解的是,在具体实施中,上述方法的各个步骤可以采用软件程序的方式实现,该软件程序运行于芯片或芯片模组内部集成的处理器中。该方法也可以采用软件结合硬件的方式实现,本申请不作限制。
关于上述实施例中描述的各个装置、产品包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端设备的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端设备内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端设备内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。
本申请实施例还公开了一种存储介质,所述存储介质为计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时可以执行前述实施例中所示方法的步骤。所述存储介质可以包括只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁盘或光盘等。存储介质还可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器等。
本申请实施例还公开了一种终端设备,所述终端设备包括前述的图形处理单元;或者,终端设备包括存储器和处理器,存储器上存储有可在处理器上运行的计算机程序,处理器运行计算机程序时执行前述方法的步骤。或者,上述终端设备包括前述实施例中的图形处理器。
本申请实施例中出现的“多个”是指两个或两个以上。
本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和系统,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的部分步骤。
虽然本申请披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。