CN116185640A - 基于多gpu的图像命令处理方法、装置、存储介质及芯片 - Google Patents

基于多gpu的图像命令处理方法、装置、存储介质及芯片 Download PDF

Info

Publication number
CN116185640A
CN116185640A CN202310431386.0A CN202310431386A CN116185640A CN 116185640 A CN116185640 A CN 116185640A CN 202310431386 A CN202310431386 A CN 202310431386A CN 116185640 A CN116185640 A CN 116185640A
Authority
CN
China
Prior art keywords
gpu
gpus
buffer
output
image
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
Application number
CN202310431386.0A
Other languages
English (en)
Other versions
CN116185640B (zh
Inventor
方明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Lichi Semiconductor Co ltd
Original Assignee
Shanghai Lichi Semiconductor Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Lichi Semiconductor Co ltd filed Critical Shanghai Lichi Semiconductor Co ltd
Priority to CN202310431386.0A priority Critical patent/CN116185640B/zh
Publication of CN116185640A publication Critical patent/CN116185640A/zh
Application granted granted Critical
Publication of CN116185640B publication Critical patent/CN116185640B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Processing (AREA)

Abstract

本申请公开了一种基于多GPU的图像命令处理方法、装置、存储介质及芯片。该方法将至少一个图像命令拆分为多组子任务,分别发送给同一片上集成系统芯片(SOC)上的多个GPU处理;之后,获取每个GPU的输出缓冲,并根据各子任务的依赖关系,对N个GPU中每个GPU的输出缓冲进行合并,得到与至少一个图像命令对应的输出图像。如此,可充分利用多个GPU的处理能力,并发处理多个图像命令,更为高效。

Description

基于多GPU的图像命令处理方法、装置、存储介质及芯片
技术领域
本申请涉及图像处理器(Graphics Processing Unit,GPU)领域,尤其涉及一种基于多GPU的图像命令处理方法、装置、存储介质及芯片。
背景技术
目前,在片上集成系统中,对 GPU 的图像需求越来越多,可能会在某时刻产生多个图像处理任务。例如,单个应用发出多个图像命令。
当片上集成系统芯片上有多个GPU 的时候,驱动程序往往会将单个应用的多个图像任务分配给同一个GPU,而导致其他GPU闲置,从而无法将多个图像命令平均分配给多个GPU以充分利用GPU资源;另一方面,也会导致多个GPU在某时刻只能处理某一图像命令,而其他命令必须等待当前图像命令处理完毕后才能得到处理的情况。
发明内容
本发明创造性地提供一种基于多GPU的图像命令处理方法、装置、计算机可读存储介质、片上集成系统芯片、半导体集成面板、电子部件和交通工具。
根据本申请实施例第一方面,提供一种基于多GPU的图像命令处理方法,其中,多GPU位于同一片上集成系统芯片,该方法包括在多GPU并行工作模式下,接收到至少一个图像命令时,执行以下操作:将至少一个图像命令拆分为N组子任务,其中,N小于等于多GPU的数量,N为自然数;将N组子任务,分别发送给N个GPU处理,使得N个GPU中每个GPU处理一组不同的子任务;获取N个GPU中每个GPU的输出缓冲,输出缓冲包括混合缓冲,混合缓冲用于对多个指定类别的缓冲信息进行合并处理;根据各子任务的依赖关系,对N个GPU中每个GPU的输出缓冲进行合并,得到与至少一个图像命令对应的输出图像。
根据本申请实施例第二方面,提供一种基于多GPU的图像命令处理装置,多GPU位于同一片上集成系统芯片,该装置包括:命令拆分模块,用于将至少一个图像命令拆分为N组子任务,其中,N小于等于多GPU的数量,N为自然数;命令分配模块,用于将N组子任务,分别发送给N个GPU处理,使得N个GPU中每个GPU处理一组不同的子任务;缓冲获取模块,用于获取N个GPU中每个GPU的输出缓冲,输出缓冲包括混合缓冲,混合缓冲用于对多个指定类别的缓冲信息进行合并处理;缓冲合并模块,用于根据各子任务的依赖关系,对N个GPU中每个GPU的输出缓冲进行合并,得到与至少一个图像命令对应的输出图像。
根据本申请实施例第三方面,提供一种存储有计算机指令的计算机可读存储介质,其中,计算机指令用于使计算机执行上述任一项基于多GPU的图像命令处理方法。
根据本申请实施例第四方面,提供一种片上集成系统芯片,该片上集成系统芯片设置有多GPU,芯片在多GPU并行工作模式下,执行上述任一项的基于多GPU的图像命令处理方法。
根据本申请实施例第五方面,提供一种半导体集成面板,该半导体集成面板设置有上述片上集成系统芯片。
根据本申请实施例第六方面,提供一种电子部件,该电子部件设置有上述半导体集成面板。
根据本申请实施例第七方面,提供一种交通工具,该交通工具设置有上述电子部件。
本申请提供了一种基于多GPU的图像命令处理方法、装置、计算机可读存储介质、片上集成系统芯片、半导体集成面板、电子部件和交通工具,该方法将至少一个图像命令拆分为多组子任务,分别发送给同一片上集成系统芯片上的多个GPU处理;之后,获取每个GPU的输出缓冲,并根据各子任务的依赖关系,对N个GPU中每个GPU的输出缓冲进行合并,得到与至少一个图像命令对应的输出图像。如此,可充分利用多个GPU的处理能力,并发处理多个图像命令,更为高效。
需要理解的是,本申请的实施并不需要实现上面的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本申请的其他实施方式还能够实现上面未提到的有益效果。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1为本申请第一实施例实现基于多GPU的图像命令处理方法的流程示意图;
图2为本申请第二实施例应用基于多GPU的图像命令处理方法的流程示意图;
图3为本申请第三实施例应用基于多GPU的图像命令处理方法的流程示意图;
图4为本申请第四实施例应用基于多GPU的图像命令处理方法的流程示意图;
图5为本申请第五实施例应用基于多GPU的图像命令处理方法的流程示意图;
图6为本申请实施例基于多GPU的图像命令处理装置的结构示意图。
具体实施方式
为使本申请的目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请中,片上集成系统芯片指有一个或多个计算单元(包括GPU)、内存、电源控制器、时钟控制器、中断控制器等部件的芯片,可配合嵌入软件执行一套完整的系统功能。
片上集成系统指基于片上集成系统芯片上的各部件,建立的用于实现特定功能的一套完整系统,包括:操作系统(OS),以及运行在操作系统之上的一系列应用。
在本申请基于多GPU的图像命令处理方法,主要应用于片上集成系统内,而用于处理图像命令的多GPU则位于片上集成系统所在的同一片上集成系统芯片上。
图1示出了本申请一实施例实现基于多GPU的图像命令处理方法的主要流程。如图1所示,该方法包括在多GPU并行工作模式下,接收到至少一个图像命令时,执行以下操作:
操作S110,将至少一个图像命令拆分为N组子任务,其中,N小于等于多GPU的数量,N为自然数。
其中,多GPU的数量大于等于2。图像命令指GPU可以执行的用于对图像进行处理的各种命令,包括但不限于:渲染调用命令(DrawCall)中的glDrawArrays、glDrawBuffers、glDrawElements等。
子任务指可独立执行的图像操作,可以是单个图像命令,也可以是从单个图像命令中拆分出来的元操作。元操作指可以独立执行的最小操作。
在对至少一个图像命令进行拆分时,可采取任何适用的方式。例如,假设有5个GPU可用,如果接收到4个图像命令,则可以将4个图像命令分成4组子任务,每组子任务包括一个图像命令;如果接收到5个图像命令,则可以将5图像命令分成5组子任务,每组子任务包括一个图像命令;如果接收到6个图像命令,则可以将6个图像命令分成5组子任务,第一组子任务包括两个图像命令,其他4组子任务中的每组子任务包括一个图像命令;如果接收到1个图像命令,而该图像命令用于对一大片区域进行相同操作,则可以将要操作的区域拆分为5个子区域,并根据拆分得到的子区域,将1个图像命令拆分为5组子任务,使得每组子任务分别处理1个不同的子区域;如果接收到1个图像命令,而该图像命令可以拆分为多个独立的元操作,则可以将该图像命令拆分为多组子任务,每组子任务包括一个或多个元操作等。
图像命令的拆分将决定每个GPU的工作负荷和各个GPU工作负荷均衡程度,实施者可根据实施需要制定相应的拆分策略。
操作S120,将N组子任务,分别发送给N个GPU处理,使得N个GPU中每个GPU处理一组不同的子任务。
操作S130,获取N个GPU中每个GPU的输出缓冲,输出缓冲包括混合缓冲,混合缓冲用于对多个指定类别的缓冲信息进行合并处理。
通常GPU的输出缓冲包括以下类别的缓冲:颜色缓冲(color buffer)、深度缓冲(depth buffer )和模板缓冲(stencil buffer)。但并不是每个GPU都会输出所有类别的缓冲。例如,有些GPU只输出颜色缓冲而并不输出深度缓冲和模板缓冲。每个GPU具体输出哪些类别的缓冲通常由驱动程序根据图像命令调用者(例如,应用、程序、系统)的需求来设置。因此,如果某个GPU的缓冲信息是不完整的,或只包括某种类别的缓冲而不包括其他类别的缓冲,就很难对各个GPU的缓冲信息进行融合。即使勉强完成融合,也可能会使得融合出现遗漏或偏差。如此会导致混合结果出现错误,使得图像得呈现效果不佳。
为此,本申请实施例还增设了一种混合缓冲,该混合缓冲可以用于以自定义的格式对多个指定类别的缓冲信息进行合并处理,以强制GPU输出指定类别的缓冲信息。
如此,至少可以确保可获取所需的全部缓冲信息。此外,由于混合缓冲对图像命令调用者是不可见的,故而在混合缓冲中,还可以通过压缩或损失部分精度的方式,对混合缓冲进行压缩处理,以减少数据传输带宽。之后,再进行相应的解压即可,从而使图像处理更高效。
混合缓冲的使用和设置可以通过驱动程序根据图像命令调用者的具体需要来确定,混合缓冲所使用的内存区域也可由驱动程序来设置。
操作S140,根据各子任务的依赖关系,对N个GPU中每个GPU的输出缓冲进行合并,得到与至少一个图像命令对应的输出图像。
其中,各子任务的依赖关系主要指执行顺序和输入输出的依赖。例如,第二图像命令需要在执行第一图像命令的之后执行,则需要先执行第一图像命令,再执行第二图像命令;第三图像命令的输入,正好是第二图像命令的输出,则需要先执行第二图像命令,等待第二图像命令完成后,才能执行第三图像命令。
在本申请中,可以并行处理的至少一个图像命令通常来自同一图像命令调用者,因此可将N个GPU中输出缓冲进行合并,得到相应的输出图像。
本申请实施例将同一片上集成系统接收到的至少一个图像命令拆分为多组子任务,分别发送给同一片上集成系统芯片上的多个GPU,每个GPU都会用来处理一组不同的子任务,从而使多个GPU的工作负荷更为均匀,能够更充分地利用多个GPU进行并发的图像处理,进而使图像处理的速度得到大幅提升。
图2示出了本申请一实施例对来自不同应用的至少一个图像命令的处理过程。
如图2所示,在本实施例中,片上集成系统芯片上有N个GPU,在某时段收到了至少一个图像命令。其中,N为大于等于2的自然数,收到的至少一个图像命令为基于嵌入式系统的 OpenGL ES的N个渲染调用命令。在N个渲染调用命令中,渲染调用命令1和渲染调用命令2来自应用1,渲染调用命令N来自应用2。
在本实施例中,渲染调用命令是由驱动程序来拆分并发送给各个GPU的。由于各个应用主要是通过调用驱动程序提供的调用接口来发送各种图像命令的,而图像命令的分发机制和策略均由驱动程序来处理,因此,由驱动程序来拆分并渲染调用命令并发送给各个GPU,使得各个应用无需修改原来的图像命令调用就可实现本申请基于多GPU的图像命令处理方法,对应用更为友好。
具体地,驱动程序将N个渲染命令分为N组,每组一个渲染命令,分别发送给GPU1、GPU2、……和GPUN。
之后,各个GPU分别对各自接收到的图像命令进行处理。
对于都是来自应用1的渲染调用命令1和渲染调用命令2,则需要对用于处理渲染调用命令1 的GPU1和用于处理和渲染调用命令2的GPU2的输出缓冲进行合并。
其中,GPU1和GPU 2的缓冲设置为仅输出颜色缓冲,但应用1在特定场景下,仍需在执行完渲染调用命令后,根据深度信息和模板信息进行附加计算,例如对颜色缓冲进行修正。在渲染调用命令1和渲染调用命令2全部发送给单个GPU的情况下,该附加计算可由GPU在内部流水线中完成,而无需将深度信息放入深度缓冲,也无需将模板信息放入模板缓冲。而在本实施例中,由于渲染调用命令1和渲染调用命令2分别发送给GPU1和GPU2来处理,GPU1和GPU2都不会输出深度缓冲和模板缓冲,因此在执行完各渲染调用命令后,就无法获取相应的深度信息和模板信息,也就不能根据深度信息和模板信息进行其他附加计算。
为此,本实施例在获取GPU1和GPU2的输出缓冲之前,还通过发送GPU指令和设置GPU输出缓存的方式,为GPU1和GPU2增设了一个混合缓冲,并控制GPU1和GPU2执行以下操作:对深度信息和模板信息进行合并处理,得到混合缓冲项;将混合缓冲项输出到GPU的混合缓冲。
此外,本实施例中,还增设了一个混合器硬件,用于读取GPU1和GPU2的输出缓冲,并对GPU1和GPU2的输出缓冲:颜色/混合缓冲 1和颜色/混合缓冲 2进行合并,然后将合并后的混合缓冲恢复为所需的深度信息和模板信息,之后根据深度信息和模板信息对合并后的颜色缓冲进行调整,得到返回给应用1的颜色缓冲。
其中,如果混合缓冲是压缩格式的,则混合器硬件还会根据应用的需要对混合缓冲进行解压。例如,如果应用需要由CPU直接访问混合缓冲,或是应用需要将混合缓冲交给别的不支持解压缩格式的硬件时,则混合器硬件会对混合缓冲进行解压,然后再输出到指定的缓冲;如果应用请求的就是压缩格式的缓冲,则混合器硬件不再对混合缓冲进行解压,而是直接将压缩格式的混合缓冲输出到指定的缓冲。如此,可进一步节省带宽。
对于来自应用2的渲染调用命令N,需要等待应用1的渲染调用命令1-2执行完毕再进行拆分由多个GPU来执行。在GPU1和GPU2工作时,GPU N会处于空闲状态,因此无须为GPUN增设混合缓冲。混合器硬件在获取GPUN的输出缓冲时,由于未发现任何输出缓冲,也不再对GPUN的输出缓冲进行混合。
如此,在使用多GPU并发处理来自多个不同应用的图像处理命令时,虽然仍然会使得其他应用等待,但由于可并行处理当前应用的图像处理命令,大大缩短当前应用执行命令的时间,从而也会使其他应用的等待时间减少,进而使处理多个应用的图像处理的速度得到提高。
图3示出了本申请一实施例对来自相同应用且互不依赖的至少一个图像命令的处理过程。
如图3所示,在本实施例中,片上集成系统芯片上有N个GPU,在某时段收到了至少一个图像命令。其中,N为大于等于2的自然数,至少一个图像命令为基于 GLES 的N+10个渲染调用命令:渲染调用命令1、渲染调用命令2、……、渲染调用命令N、……渲染调用命令N+10(图3中未示出),均来自应用1。
在本实施例中,渲染调用命令也是由驱动程序来拆分并发送给各个GPU的,但在将至少一个图像命令拆之前,驱动程序会对至少一个图像命令进行去重和合并,以减少图像处理操作。例如,渲染调用命令x要画一个圆,而渲染调用命令y所渲染的图像会将该圆覆盖掉,则可以删除渲染调用命令x。渲染调用命令z和渲染调用命令t操作相同,则可以删除渲染调用命令t。
假设,在对N+10个渲染调用命令进行去重和合并后,得到了N个渲染调用命令。之后,驱动程序将N个渲染命令分为N组,每组一个不同的渲染调用命令,分别发送给GPU1、GPU2、……和GPUN。
之后,各个GPU分别对各自接收到的图像命令进行处理(例如,渲染调用命令1、渲染调用命令2或渲染调用命令N)。
其中,GPU1、GPU2、……和GPUN都被设置为只输出深度缓冲,但应用1还需使用颜色信息和模板信息。
为此,本实施例在获取各个GPU的输出缓冲之前,还通过发送GPU指令和设置GPU输出缓存的方式,为每个GPU增设了一个混合缓冲,并控制每个GPU执行以下操作:对深度信息和模板信息进行合并处理,得到混合缓冲项;将混合缓冲项输出到GPU的混合缓冲。
此外,在本实施例中,混合器硬件是利用GPU1中已有的内部混合器来实现的。该内部混合器本用于对GPU1内部的缓冲进行合并。在本实施例中,则被驱动程序用于合并GPU1之外的其他各个GPU输出缓冲:深度/混合缓冲1、深度/混合缓冲 2、……和深度/混合缓冲N,并将合并后的混合缓冲解压恢复为所需的颜色信息和模板信息。之后,将颜色信息放入颜色缓冲,将模板信息放入模板缓冲,得到返回给应用1的输出缓冲:颜色缓冲、深度缓冲和模板缓冲。
如此,可使用多GPU并发处理来自同一应用的图像处理命令,使图像处理的效率更高。
此外,在本实施例中,驱动程序在将至少一个图像命令拆分为N组子任务之前,还对至少一个图像命令进行去重和合并,如此可大大减少图像处理操作,节约计算资源。
而且,在本实施例中,利用GPU携带的内部混合器来实现用于混合各个GPU输出缓冲的混合器硬件,可基于已有硬件进行改造,大大节约硬件成本。
图4示出了本申请一实施例对来自相同应用,但存在依赖关系的至少一个图像命令的处理过程。
如图4所示,在本实施例中,片上集成系统芯片上有N个GPU,在某时刻收到了至少一个图像命令。其中, N为大于等于2的自然数,至少一个图像命令为基于 GLES 的N个渲染调用命令:渲染调用命令1、渲染调用命令2、……、渲染调用命令N,均来自应用1。渲染调用命令1的输出是渲染调用命令2的输入。
在本实施例中,驱动程序将N个渲染命令分为N组,每组一个,分别发送给GPU1、GPU2、……和GPUN。
之后,各个GPU分别对各自接收到的图像命令进行处理。其中,GPU1、GPU2、……和GPUN都被设置为可输出颜色缓冲、深度缓冲和模板缓冲。但由于输出全部缓冲会占用很大带宽,故而本实施例在获取各个GPU的输出缓冲之前,还通过发送GPU指令和设置GPU输出缓存的方式,为每个GPU增设了一个混合缓冲,并控制每个GPU执行以下操作:对颜色信息、深度信息和模板信息进行合并处理,得到混合缓冲项;将混合缓冲项输出到GPU的混合缓冲并对混合缓冲进行压缩处理,以节省后续数据传输所占用的带宽。
由于渲染调用命令2的输入依赖于渲染调用命令1的输出,执行渲染调用命令2的GPU2会等待GPU1,直至渲染调用命令1被执行完毕。例如,可不停检测混合缓冲1中是否有数据,如果无则继续等待,如果有结束等待。之后,读取渲染调用命令1在GPU1中生成的颜色/深度/模板混合缓冲1,将混合缓冲1中的信息作为输入,执行渲染调用命令2,然后将混合缓冲2作为输出缓冲。
在GPU2读取混合缓冲1中的混合缓冲项后,可删除相应的混合缓冲项,或将相应的混合缓冲项标记为已读,从而使得混合器硬件对各个GPU的输出缓冲进行合并时,不会再次合并混合缓冲1中混合缓冲项。
之后,混合器硬件对合并后的混合缓冲项进行解压,得到返回给应用1的颜色信息、深度信息和模板信息,并分别放入相应的颜色缓冲、深度缓冲和模板缓冲。
如此,可使用多GPU并发处理来自同一应用但具有依赖关系的多个图像处理命令,使图像处理的效率更高。
此外,在本实施例中,虽然各个GPU均可输出颜色缓冲、深度缓冲和模板缓冲,但通过使用混合缓冲,大幅节约了数据传输带宽。
图5示出了本申请一实施例对来一个图像命令的处理过程。
如图5所示,在本实施例中,片上集成系统芯片上有N个GPU,在某时段收到了一个包含多个元操作的图像命令。其中,N为大于等于2的自然数,元操作为可独立执行的最小操作集。
在本实施例中,驱动程序将该图像命令的多个元操作分为N组子任务,每组子任务包括一个元操作,分别发送给GPU1、GPU2、……和GPUN。
之后,各个GPU分别对各自接收到的元操作进行处理。
其中,每个GPU均可输出相应的颜色缓冲、深度缓冲、模板缓冲,但应用1还需要获取一些除上述缓冲信息之外的其他缓冲信息,故而本实施例在获取各个GPU的输出缓冲之前,还通过发送GPU指令和设置GPU输出缓存的方式,为每个GPU增设了一个混合缓冲,并控制每个GPU执行以下操作:对颜色缓冲、深度缓冲、模板缓冲和其他缓冲信息进行合并处理,得到混合信息;将混合缓冲项输出到GPU的混合缓冲,形成混合缓冲项。
之后,混合器硬件对各GPU的输出缓冲:颜色/深度/模板/混合缓冲1、颜色/深度/模板/混合缓冲2、……和颜色/深度/模板/混合缓冲N,得到返回给应用1的颜色信息、深度信息、模板信息和其他信息,分别放入相应的颜色缓冲、深度缓冲、模板缓冲和其他缓冲。
如此,可使用多GPU并发处理来单个图像处理命令,使图像处理的效率更高。
此外,在本实施例中,混合缓冲还可以用于扩展现有的缓冲,以输出更多信息。
进一步地,本申请实施例还提供一种基于多GPU的图像命令处理装置,多GPU位于同一片上集成系统芯片。如图6所示,该装置60包括:命令拆分模块601,用于将至少一个图像命令拆分为N组子任务,其中,N小于等于多GPU的数量,N为自然数;命令分配模块602,用于将N组子任务,分别发送给N个GPU处理,使得N个GPU中每个GPU处理一组不同的子任务;缓冲获取模块603,用于获取N个GPU中每个GPU的输出缓冲,输出缓冲包括混合缓冲,混合缓冲用于对多个指定类别的缓冲信息进行合并处理;缓冲合并模块604,用于根据各子任务的依赖关系,对N个GPU中每个GPU的输出缓冲进行合并,得到与至少一个图像命令对应的输出图像。
根据本申请一实施例,该装置60还包括:混合缓冲设置模块,用于控制GPU执行以下操作:对多个指定类别的缓冲信息进行合并处理,得到混合缓冲项;将混合缓冲项输出到GPU的混合缓冲。
根据本申请一实施例,该装置60还包括混合缓冲项压缩模块:用于对混合缓冲进行压缩处理。
根据本申请一实施例,N组子任务中的第一子任务由第一GPU处理,第二子任务由第二GPU处理,第二子任务依赖于第一子任务;相应地,缓冲合并模块604包括:GPU等待子模块,用于控制第二GPU等待第一GPU处理第一子任务,直至第一子任务被处理完毕;GPU缓冲读取子模块,用于控制第二GPU读取第一GPU的输出缓冲;GPU执行子模块,用于控制第二GPU根据第一GPU的输出缓冲,对第二子任务进行处理,将输出结果放入第二GPU的输出缓冲;缓冲合并子模块用于第二GPU和N个GPU中除第一GPU以外的其他GPU的输出缓冲进行合并,得到与至少一个图像命令对应的输出图像。
根据本申请一实施例,N组子任务中的第一子任务由第一GPU处理,第二子任务由第二GPU处理,第一子任务和第二子任务之间不存在依赖关系;相应地,缓冲合并模块604包括:GPU执行子模块,用于控制第一GPU对第一子任务进行处理,将处理结果放入第一GPU的输出缓冲;GPU执行子模块,还用于控制第二GPU对第二子任务进行处理,将处理结果放入第二GPU的输出缓冲;缓冲合并子模块,用于对第一GPU、第二GPU和N个GPU中其他GPU的输出缓冲进行合并,得到至少一个图像命令对应的输出图像。
根据本申请一实施例,该装置60还包括:命令去重模块,用于对至少一个图像命令进行去重和合并。
根据本申请一实施例,命令拆分模块601具体用于通过驱动程序,将至少一个图像命令拆分为N组子任务。
本申请实施例还提供一种存储有计算机指令的计算机可读存储介质,其中,计算机指令用于使计算机执行上述任一项基于多GPU的图像命令处理方法。
本申请实施例还提供一种片上集成系统芯片,该片上集成系统芯片设置有多GPU,芯片在多GPU并行工作模式下,执行上述任一项的基于多GPU的图像命令处理方法。
根据本申请一实施例,片上集成系统芯片还包括:混合器硬件,混合器硬件用于对多GPU中每个GPU的混合缓冲进行合并,混合缓冲用于对多个指定类别的缓冲信息进行合并处理。
本申请实施例还提供一种半导体集成面板,该半导体集成面板设置有上述片上集成系统芯片。
本申请实施例还提供一种电子部件,该电子部件设置有上述半导体集成面板。
本申请实施例还提供一种交通工具,该交通工具设置有上述电子部件。
这里需要指出的是:以上针对实施例基于多GPU的图像命令处理装置的描述、以上针对计算机存储介质实施例的描述、以上针对片上集成系统芯片实施例的描述、以上针对半导体集成面板实施例的描述、以上电子部件实施例的描述和以上针对交通工具实施例的描述,与前述方法实施例的描述是类似的,具有同前述方法实施例相似的有益效果,因此不做赘述。对于本申请对实施例基于多GPU的图像命令处理装置的描述、以上对计算机存储介质实施例的描述、以上对片上集成系统芯片实施例的描述、以上对半导体集成面板实施例的描述、以上电子部件实施例的描述和以上对交通工具实施例的描述尚未披露的技术细节,请参照本申请前述方法实施例的描述而理解,为节约篇幅,因此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以利用硬件的形式实现,也可以利用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储介质、只读存储器(ReadOnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例方法的全部或部分。而前述的存储介质包括:移动存储介质、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (15)

1.一种基于多GPU的图像命令处理方法,所述多GPU位于同一片上集成系统芯片,所述方法包括在所述多GPU并行工作模式下,接收到至少一个图像命令时,执行以下操作:
将所述至少一个图像命令拆分为N组子任务,其中, N小于等于所述多GPU的数量,N为自然数;
将所述N组子任务,分别发送给N个GPU处理,使得所述N个GPU中每个GPU处理一组不同的子任务;
获取所述N个GPU中每个GPU的输出缓冲,所述输出缓冲包括混合缓冲,所述混合缓冲用于对多个指定类别的缓冲信息进行合并处理;
根据各子任务的依赖关系,对所述N个GPU中每个GPU的输出缓冲进行合并,得到与所述至少一个图像命令对应的输出图像。
2.根据权利要求1所述的方法,还包括控制GPU执行以下操作:
对所述多个指定类别的缓冲信息进行合并处理,得到混合缓冲项;
将所述混合缓冲项输出到所述GPU的混合缓冲。
3.根据权利要求1所述的方法,还包括:
对所述混合缓冲进行压缩处理。
4.根据权利要求1所述的方法,所述N组子任务中的第一子任务由第一GPU处理,第二子任务由第二GPU处理,所述第二子任务依赖于所述第一子任务;
相应地,所述根据各子任务的依赖关系,对所述N个GPU中每个GPU的输出缓冲进行合并,得到与所述至少一个图像命令对应的输出图像,包括:
控制所述第二GPU等待所述第一GPU处理所述第一子任务,直至所述第一子任务被处理完毕;
控制所述第二GPU读取所述第一GPU的输出缓冲;
控制所述第二GPU根据所述第一GPU的输出缓冲,对所述第二子任务进行处理,将处理结果放入所述第二GPU的输出缓冲;
对所述第二GPU和所述N个GPU中除所述第一GPU以外的其他GPU的输出缓冲进行合并,得到与所述至少一个图像命令对应的输出图像。
5.根据权利要求1所述的方法,所述N组子任务中的第一子任务由第一GPU处理,第二子任务由第二GPU处理,所述第一子任务和所述第二子任务之间不存在依赖关系;
相应地,根据各子任务的依赖关系,对所述N个GPU中每个GPU的输出缓冲进行合并,得到与所述至少一个图像命令对应的输出图像,包括:
控制所述第一GPU对所述第一子任务进行处理,将处理结果放入所述第一GPU的输出缓冲;
控制所述第二GPU对所述第二子任务进行处理,将处理结果放入所述第二GPU的输出缓冲;
对所述第一GPU、第二GPU和所述N个GPU中其他GPU的输出缓冲进行合并,得到与所述至少一个图像命令对应的输出图像。
6.根据权利要求1所述的方法,在所述将所述至少一个图像命令拆分为N组子任务之前,还包括:
对所述至少一个图像命令进行去重和合并。
7.根据权利要求1所述的方法,所述将所述至少一个图像命令拆分为N组子任务,包括:
通过驱动程序,将所述至少一个图像命令拆分为N组子任务。
8.根据权利要求1-7任一项所述的方法,所述图像命令包括渲染调用命令。
9.一种基于多GPU的图像命令处理装置,所述多GPU位于同一片上集成系统芯片,所述装置包括:
命令拆分模块,用于将至少一个图像命令拆分为N组子任务,其中, N小于等于所述多GPU的数量,N为自然数;
命令分配模块,用于将所述N组子任务,分别发送给N个GPU处理,使得所述N个GPU中每个GPU处理一组不同的子任务;
缓冲获取模块,用于获取所述N个GPU中每个GPU的输出缓冲,所述输出缓冲包括混合缓冲,所述混合缓冲用于对多个指定类别的缓冲信息进行合并处理;
缓冲合并模块,用于根据各子任务的依赖关系,对所述N个GPU中每个GPU的输出缓冲进行合并,得到与所述至少一个图像命令对应的输出图像。
10.一种存储有计算机指令的计算机可读存储介质,其中,所述计算机指令用于使计算机执行权利要求1-7任一项所述的基于多GPU的图像命令处理方法。
11.一种片上集成系统芯片,所述片上集成系统芯片设置有多GPU,所述芯片在所述多GPU并行工作模式下,执行权利要求1-7任一项所述的基于多GPU的图像命令处理方法。
12.根据权利要求11所述的片上集成系统芯片,还包括:
混合器硬件,所述混合器硬件用于对所述多GPU中每个GPU的混合缓冲进行合并,所述混合缓冲用于对多个指定类别的缓冲信息进行合并处理。
13.一种半导体集成面板,所述半导体集成面板设置有权利要求12所述的芯片。
14.一种电子部件,所述电子部件设置有权利要求13所述的半导体集成面板。
15.一种交通工具,所述交通工具设置有权利要求14所述的电子部件。
CN202310431386.0A 2023-04-20 2023-04-20 基于多gpu的图像命令处理方法、装置、存储介质及芯片 Active CN116185640B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310431386.0A CN116185640B (zh) 2023-04-20 2023-04-20 基于多gpu的图像命令处理方法、装置、存储介质及芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310431386.0A CN116185640B (zh) 2023-04-20 2023-04-20 基于多gpu的图像命令处理方法、装置、存储介质及芯片

Publications (2)

Publication Number Publication Date
CN116185640A true CN116185640A (zh) 2023-05-30
CN116185640B CN116185640B (zh) 2023-08-08

Family

ID=86449189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310431386.0A Active CN116185640B (zh) 2023-04-20 2023-04-20 基于多gpu的图像命令处理方法、装置、存储介质及芯片

Country Status (1)

Country Link
CN (1) CN116185640B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110157193A1 (en) * 2009-12-29 2011-06-30 Nvidia Corporation Load balancing in a system with multi-graphics processors and multi-display systems
US8149247B1 (en) * 2007-11-06 2012-04-03 Nvidia Corporation Method and system for blending rendered images from multiple applications
US20150109293A1 (en) * 2013-10-23 2015-04-23 Qualcomm Incorporated Selectively merging partially-covered tiles to perform hierarchical z-culling
CN106575228A (zh) * 2014-08-21 2017-04-19 高通股份有限公司 图形处理中的渲染目标命令重新排序
US20210241414A1 (en) * 2020-02-03 2021-08-05 Sony Interactive Entertainment Inc. System and method for efficient multi-gpu rendering of geometry by pretesting against screen regions using configurable shaders
WO2021158468A1 (en) * 2020-02-03 2021-08-12 Sony Interactive Entertainment Inc. System and method for efficient multi-gpu rendering of geometry by geometry analysis while rendering
CN113313802A (zh) * 2021-05-25 2021-08-27 完美世界(北京)软件科技发展有限公司 图像渲染方法、装置、设备及存储介质
CN113521735A (zh) * 2020-09-02 2021-10-22 北京蔚领时代科技有限公司 一种基于多gpu的单帧画面实时渲染方法
CN114612579A (zh) * 2020-12-18 2022-06-10 完美世界(北京)软件科技发展有限公司 图像渲染方法、装置、计算机设备及可读存储介质
CN115775198A (zh) * 2021-09-08 2023-03-10 想象技术有限公司 多核gpu中的重叠几何形状处理

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8149247B1 (en) * 2007-11-06 2012-04-03 Nvidia Corporation Method and system for blending rendered images from multiple applications
US20110157193A1 (en) * 2009-12-29 2011-06-30 Nvidia Corporation Load balancing in a system with multi-graphics processors and multi-display systems
US20150109293A1 (en) * 2013-10-23 2015-04-23 Qualcomm Incorporated Selectively merging partially-covered tiles to perform hierarchical z-culling
CN106575228A (zh) * 2014-08-21 2017-04-19 高通股份有限公司 图形处理中的渲染目标命令重新排序
US20210241414A1 (en) * 2020-02-03 2021-08-05 Sony Interactive Entertainment Inc. System and method for efficient multi-gpu rendering of geometry by pretesting against screen regions using configurable shaders
WO2021158468A1 (en) * 2020-02-03 2021-08-12 Sony Interactive Entertainment Inc. System and method for efficient multi-gpu rendering of geometry by geometry analysis while rendering
CN113521735A (zh) * 2020-09-02 2021-10-22 北京蔚领时代科技有限公司 一种基于多gpu的单帧画面实时渲染方法
CN114612579A (zh) * 2020-12-18 2022-06-10 完美世界(北京)软件科技发展有限公司 图像渲染方法、装置、计算机设备及可读存储介质
CN113313802A (zh) * 2021-05-25 2021-08-27 完美世界(北京)软件科技发展有限公司 图像渲染方法、装置、设备及存储介质
CN115775198A (zh) * 2021-09-08 2023-03-10 想象技术有限公司 多核gpu中的重叠几何形状处理

Also Published As

Publication number Publication date
CN116185640B (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
JP6207818B2 (ja) システムオンチップ及びその動作方法並びに携帯用装置
CN114612579B (zh) 图像渲染方法、装置、计算机设备及可读存储介质
US20080198166A1 (en) Multi-threads vertex shader, graphics processing unit, and flow control method
CN114025238B (zh) 基于Linux服务器原生安卓应用云端虚拟化方法
CN111681157B (zh) 图像渲染方法及系统
CN114528090A (zh) 基于Vulkan实现图形渲染的方法及相关装置
CN116382880B (zh) 任务执行方法、装置、处理器、电子设备及存储介质
JP2012006202A (ja) 印刷画像処理装置及びプログラム
US20130120381A1 (en) Fast rendering of knockout groups using a depth buffer of a graphics processing unit
US20150145872A1 (en) Scheduling, interpreting and rasterising tasks in a multi-threaded raster image processor
CN115357310A (zh) 系统启动方法、装置、电子设备和存储介质
CN117112165A (zh) 虚拟现实应用任务的处理方法、装置、虚拟现实系统
CN116185640B (zh) 基于多gpu的图像命令处理方法、装置、存储介质及芯片
JP2006268377A (ja) プログラム起動制御装置及びプログラム起動制御方法
JP3606729B2 (ja) リッチテキスト素材の表示方法及び映像情報提供システム
CN104348886A (zh) 一种信息处理的方法及一种电子设备
CN1955933A (zh) 数据处理设备和方法
CN111813541A (zh) 一种任务调度方法、装置、介质和设备
CN114116220B (zh) 一种gpu共享控制方法、gpu共享控制装置及存储介质
CN111243069B (zh) 一种Unity3D引擎的场景切换方法和系统
US20090300648A1 (en) Continuation-Based Runtime Callback Invocation
JP4964219B2 (ja) 画像処理装置、方法及びプログラム
JP2016206934A (ja) 画像処理装置、画像処理方法及びプログラム
CN113419806A (zh) 图像处理方法、装置、计算机设备和存储介质
JP7014173B2 (ja) 分散処理システム

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