CN102135916A - 同步方法以及图形处理系统 - Google Patents

同步方法以及图形处理系统 Download PDF

Info

Publication number
CN102135916A
CN102135916A CN2011100581792A CN201110058179A CN102135916A CN 102135916 A CN102135916 A CN 102135916A CN 2011100581792 A CN2011100581792 A CN 2011100581792A CN 201110058179 A CN201110058179 A CN 201110058179A CN 102135916 A CN102135916 A CN 102135916A
Authority
CN
China
Prior art keywords
thread
threads
synchronous
counter
execution
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
CN2011100581792A
Other languages
English (en)
Other versions
CN102135916B (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.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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 Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN102135916A publication Critical patent/CN102135916A/zh
Application granted granted Critical
Publication of CN102135916B publication Critical patent/CN102135916B/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本发明披露了一种同步方法以及图形处理系统。其是关于线程群组启动与线程同步化的系统与方法。该同步方法,用以同步在图形处理器中一般目的着色器内的多个线程。此方法包括:判断进入点以执行这些线程;在进入点执行叉路操作,以调度这些线程,其中,这些线程包括一主要线程以及一个或多个次要线程。此方法还包括根据主要线程到达一同步点来执行结合操作,以同步化这些线程。根据结合操作的完成,执行另一叉路作以恢复这些线程的并列执行。

Description

同步方法以及图形处理系统
技术领域
本发明涉及一种在图形处理单元(graphics processing unit,GPU)中的可编程图形绘图管道(programmable graphics pipeline),特别是涉及一种系统及方法,用以在GPU管道中执行多程序一般目的着色器/渲染器(shader)的启动。
背景技术
计算机图形处理系统处理大量的数据,其中包括纹理数据(texture data)。纹理是一个数字影像,通常为矩形,其具有一个(u,v)座标空间。纹理的最小可寻址单元是一纹理影像单元(texel),根据其位置分配到一特定(u,v)座标。在一纹理映射(texture mapping)操作中,当提供一图形模型来建立一目的影像时,纹理被映射在此图形模型的表面。在此目的影像中,像素设置在(x,y)座标系统上的特定座标。纹理映射的目的是在物件的表面上提供逼真的外观。
Figure BDA0000049596140000011
所提出的Direct3D 11规格定义了新类型的着色器/渲染器(shader),即已知的运算着色器(compute shader),其提供多线程(multi-thread)支持以帮助图形密集应用的发展,例如视讯游戏。运算着色器提供了对于例如在图形处理器中所使用的单指令多数据(single instruction/multiple data,SIMD)核心的运算功率与频宽的存取。运算着色器被调用作为多线程,其中,这些线程被划分为多个线程组。当存在同步化操作以提供线程执行的安排时,此同步化手段可以是频宽与存储器加强行为。
发明内容
本发明的一实施例提供一种同步方法,用以同步在图形处理器中一般目的着色器内的多个线程。此方法包括:判断一进入点以执行这些线程;在进入点执行一叉路操作,以调度这些线程,其中,这些线程包括一主要线程以及一个或多个次要线程。此方法还包括根据主要线程到达一同步点来执行一结合操作,以同步化这些线程。根据结合操作的完成,执行另一叉路作以恢复这些线程的并列执行。
本发明的另一实施例提供一种图形处理器系统,用以执行在图形管道的一般目的着色器内的多个软件线程的同步化执行。此系统包括一般目的任务建构器,其建立与一线程群组相关联的记录,其中,此线程群组包括多个线程,且此记录包括一线程群组识别符以及一线程计数器。此系统还包括一线程调度器,其藉由调用一叉路操作来调度线程群组内的这些线程,其中,这些线程包括一主要线程以及一个或多个次要线程。此系统也包括一线程监控器,其根据一结合操作来监控每一线程的执行,且监控在多个预设同步点上的到达。在此实施例中,线程计数器用来追踪在这些预设同步点上被执行的线程的数量。此外,线程调度器根据线程计数器的数值来恢复这些线程的并列执行。
附图说明
图1表示根据本发明实施例的一图形处理器系统,于其中实施根据本发明实施的一般目的(GP)着色器;
图2表示图1中图形管道的各种元件;
图3表示图2中GP着色器的一实施例;
图4表示根据本发明实施例,使用图3中各种元件的线程群组启动(kickoff)的流程图;
图5及图6表示图4中所述的叉路与结合操作的应用;以及
图7表示线程群组启动的另一实施例,藉以调用两接续的叉路操作。
附图符号说明
图1:
100~图形处理器系统;
101~系统存储器;      102~图形处理器;
103~中央处理单元(CPU);
104~计算核心;        105~纹理数据;
106~执行单元集用场(EUP)控制与顶点串流快取单元;
107~系统接口;        108~图形管道;
109~图形基元数据;
110~图形处理单元(GPU);
图2:
202~输入组译器;    204~顶点着色器;
205~外壳着色器;    206~镶嵌单元;
207~域着色器;      208~几何着色器;
210~光栅处理器;    212~像素着色器;
214~一般目的(GP)着色器;
216~显示装置;
图3:
302~一般目的(GP)任务建构器;
304~线程调度器;  306~线程监控器;
308~线程纪录;    310~线程群组识别符;
312~线程计数器;  314~线程群组;
316~线程;
图4:
402、404、406、408~方法步骤;
图6:
610、620、630、640、650~方法步骤;
图7:
710、720、730、740~方法步骤。
具体实施方式
为使本发明的上述目的、特征和优点能更明显易懂,下文特举一较佳实施例,并结合附图详细说明如下。
本文中各种实施例是在叙述在图形处理单元管道内的一般目的着色器/渲染器(general purpose(GP)shader),从等效门数(gate count)与硬件复杂度的观点来看,其以在图形硬件上相对小的改变来增加图形应用的效能。尤其是,本文叙述的各种实施例可降低对一独立应用程序接口(application programming interface,API)与相关软件堆迭的来回转变(此消耗有用的中央处理单元(central processing unit,CPU)周期)时所调用的负担。中间线程通信用来减少在图形处理单元(graphics processing unit,GPU)与系统存储器之间来回转移的数据量。所述的各种实施例提供了弹性方法给线程启动(kickoff),使得GP着色器的实施例不会依赖于(tied to)特定的输入与输出。就这点而言,在多个线程之间的线程执行与流程控制是以GP着色器作为范例来说明。
GP着色器的各种实施例是以图形系统的背景来叙述,尤其是在执行单元中,线程调用(thread invocation)与输入及输出区域脱离。此外,线程在一线程群组层上同步化,于其中,数据可于多个线程间共享。所述的实施例也根据分散操作(scatter operation)来提供随机存取写入。本领域的技术人员可了解,所述的GP着色器可用来执行一些功能,例如QTM、DBK、以及后端处理。视讯解码以及其他GP着色器应用的类的任务可能调用多程序执行。在此非限制的例子中,通过QTM/DBK技术的视讯解码可藉由将对应GP着色器的程序计数器(program counter,PC)配置给一线程群组启动所跟随的一着色器程序,而被映射到多个GP着色器。此PC被编程以对应至另一着色器等等。
根据各种实施例,线程群组启动以及线程同步化是根据叉路与结合操作的组合(combination)而被执行。一程序或线程被选择且使用作为主要程序的入口点,其中,该主要程序调用即将处理(dispatch)的多个线程群组。如一线程的例子,考虑其包含QTM期间与DBK期间的一视讯解码程序。此两期间可被映射到两个GP着色器程序,其中QTM期间将还分割为中间预测程序(inter-prediction program)与内部预测程序(intra-prediction program)。此入口点视为被处理的线程群组中主要程序的入口。
对于GP着色器的各种实施例,各种任务或线程同时地接受启动以作为一线程群组。为了揭示的目的,一叉路操作(fork operation)或叉路期间(fork phase)一般是相关于一个或多个线程的活化(activate)或调度。对于一些实施例,这可能包括活化次要线程和/或一主要线程。一结合操作(join operation)或结合期间(join phase)一般是关于次要线程到达一部份编码并分支至下一屏障(barrier)或者是一同步点的程序,藉此使得先达到屏障或同步点的次要线程悬置(suspend),直到所有的剩余线程到达。主要线程到达屏障时不会分支,反而是在此结合期间内继续执行。
对于一些实施例,一个线程群组包括上至64个执行单元(execution unit,EU)线程,或者相当于1024个软件线程。在接受启动之前,多个线程群聚在一起。对于与相同线程群组相关的线程,叉路期间与结合期间被整合用以执行线程与流程控制。关于GP着色器的一些实施例,线程执行开始于叉路期间,使得在一定义的线程群组内的所有的线程同时地接受启动。这些线程之后在一个或多个结合期间上同步,这调用结合操作与同步点。尤其是,对于一些实施例,这可能包括了将结合指令插入至指派给线程同步化的着色器编码的起点。注意到,在一实施例中,着色器是以编码(shader code)形式储存在实体媒体,例如计算机可读媒体,且由处理器来执行,详细如下所述。
当实现于硬件时,GP着色器可配置来在叉路期间内执行线程启动。在此处,第一个叉路期间后接续一结合期间。二者择一地,第一个叉路期间可之后接续另一叉路期间。对于一些结合期间的实施,利用一计数器来追踪已完成关于特定编码段落的执行的线程数量。这些已到达的线程被悬置直到剩余的线程赶上。GP着色器的实施例操作所在的系统的各种元件,将于下文叙述,之后叙述这些元件的操作。
参阅图1,其表示根据本发明实施例的一图形处理器系统,于其中实施根据本发明实施的一般目的着色器。在一些实施中,图形处理器系统100可配置为一计算机系统。图形处理器系统100包括图形处理单元(GPU)110,GPU 110还包括图形处理器102。图形处理器102也包括一多执行单元(EU)的计算核心104,在一实施例中,计算核心104为一软件可编程核心处理器。计算核心104包括此处所述的GP着色器。图形处理器102也包括一执行单元集用场(execution unit pool,EUP)控制与顶点串流(vertrex/stream)快取单元106以及一图形管道108。计算核心104包括多个执行单元的集用池,以满足与不同着色器程序相关联的着色器任务所利用的计算需求,包括顶点着色器(vertrex shader)、几何着色器(geometry shader)、和/或像素着色器(pixel shader),用来处理给图形管道108的数据。随着一实施例的GP着色器的功能主要实施在计算核心104时,则描述一实施例图形处理器102的一般叙述。
GP着色器的各种实施例可实施在硬件、软件、固件、或这些的结合。当实施在软件时,GP着色器实施为一个或多个程序,其储存在计算机可读媒体内,以给处理器执行,例如图1的图形处理器102。根据一些实施例,GP着色器以硬件或固件来实施,且包含以下技术的任何一者或结合:具有逻辑门并用来根据数据信号来执行逻辑功能的分离式逻辑电路、具有适当结合逻辑门的特殊应用集成电路(application specific integrated circuit,ASIC)、可编程门阵列(programmable gate array,PGA)、以及场可编程门阵列(field programmable gate array,FPGA),等等。图形处理器系统100也包括CPU103以及系统存储器101。CPU 103执行各种功能,包括判断信息,例如视角位置,其提供用以产生3D图形影像。系统存储器101储存各种数据,包括图形基元数据(graphics primitive data)109、显示数据、以及纹理数据(texture data)105。如图所示,CPU 103与系统存储器101通过系统接口107而与GPU 110接合。
图2表示图1中图形管道108的各种元件。具体而言,图2所表示的元件包括图形管道108的元件,其全部或部分元件与GP着色器214配合使用。图形管道108包括输入组译器202,其使用索引缓冲区来提取或一般地接收来自系统存储器101的顶点数据,并组合/组译基元以进一步在计算核心104中处理。需注意,系统存储器101可包括其他存储器次系统中的本地存储器,例如串流顶点快取列。经过组译的基元被传送至顶点着色器204。
顶点着色器204藉由执行例如转换(transformation)、愈合(skinning)、与打亮(lighting)来处理顶点。图形管道108还包括外壳着色器(hull shader)205、镶嵌单元(tessellator)206、以及域着色器(domain shader)207。一般而言,这些着色器205、207、及207是利用来增加特定表面的平滑度。简单来说,外壳着色器205是针对曲线控制点的选择,且是每一片面(patch)所需要的,其使用来自顶点着色器204的片面控制点来作为输入。在其他的功能中,外壳着色器205计算镶嵌系数,其被传送至镶嵌单元206。这提供了适合的镶嵌,可用于连续的视点相关精确度等级(view-dependent level of detail(LOD))。来自域着色器207的数据被传送至几何着色器208。
几何着色器208接收关于一全基元的多个顶点以作为输入,且能输出多个顶点以形成单一拓扑,例如三角片带(triangle strip)、直线片带(line strip)、以及点列表(point list)等等。几何着色器208执行各种功能(包括阴影锥产生(shadow volume generation)),并输出信息至光栅处理器(rasterizer)210。光栅处理器210执行剪辑与基元安排,并判断何时和/或如何去调用像素着色器212。像素着色器212调用给光栅处理器210输出的基元所包含的每一像素。GP着色器214执行例如模糊效果的后端处理,且通常被调用作为多个线程,而这些线程被分割为多个线程群组。最后,表示在一场景中物体的表面(或体积)的几何被转译为储存在讯框缓冲器的像素(图片元素),接着显示装置216上显示。
参阅图3,其表示图2中GP着色器214实施例。对于一些实施例,GP着色器214包括GP任务建构器302、线程调度器304、以及线程监控器306。GP任务建构器302定义包括多个线程316的线程群组314,且建立与线程群组314相关联的线程群组纪录308。线程纪录308包括线程群组识别符310以及线程计数器312,用来追踪在线程群组314中不同线程316的执行。在一实施例中,线程群组识别符310根据在该进入点执行该叉路操作而产生。在一实施例中,该线程计数器藉由根据该线程群组识别符而首先定位相关联的该记录(firstly locating associated record)而被初始化。线程调度器304通过叉路操作来调度线程群组314中的多个线程316,其中,这些线程316包括一个主要或领导(leading)线程以及一个或多个次要线程。根据进入GP着色器214内的执行的一结合期间,线程监控器306用来监控多个线程316的每一个的执行,且监控其在多个预设同步点的到达。
在线程群组记录308内的线程计数器312用来追踪在这些预设同步点上被执行的线程数量。根据这些线程316的同步化,线程调度器304依据线程计数器312的数值来恢复这些线程316的执行。对于一些实施例,线程计数器312初始化为线程群组314内的线程316总数量。一旦调用一结合操作时,线程监控器306于每一次一线程316到达一同步点时(即完成关于同步点的执行),减少线程计数器314的值。
就此点而言,提出一实施例给图形处理器系统100,以实现在图形管道108的GP着色器214内的多个软件线程316的同步执行。图形处理器系统100包括GP任务建构器302,用以建立关于一线程群组314的记录308,其中,线程群组314包括多个线程316,且记录308包括线程群组识别符310以及线程计数器312。图形处理器系统100还包括线程调度器304,用以通过叉路操作来调度线程群组314内的这些线程316,其中,这些线程316包括一主要线程以及一个或多个次要线程。图形处理器系统100也包括线程监控器306,其根据一结合操作来监控每一线程316的执行以及其在预设同步点上的到达。对于此实施例,线程计数器312用来追踪在预设同步点上被执行的线程数量。此外,线程调度器304根据线程计数器312的数值来恢复这些线程316的并列执行。
参阅图4,其绘示出使用图3中各种元件来同步化线程的一流程图。在一开始的步骤方块402中,GP任务建构器302判断关于在GP着色器214中这些线程316的执行的一进入点。一般而言,此进入点作为在GP着色器214的起始点,以使得线程316开始执行。在步骤方块404中,线程调度器304在进入点上执行叉路操作。这些线程316包括一主要线程以及一个或多个次要线程。关于此点,在图形管道108的GP着色器阶段的任务被启动以作为一单一线程群组314。对于一些实施例,每一线程群组314可包括上至64个EU线程,或者相当于1024个软件线程。对于一些实施例,主要或领导线程被调度于剩余次要线程之前,其中,主要线程可执行在次要线程中所共同的操作。
在步骤方块406中,线程调度器304执行一结合操作以同步化/再同步化主要线程与次要线程。在结合期间,线程监控器306不断地更新图3的线程计数器312,以追踪已经完成关于预设同步点的执行的线程316数量。如先前所述,线程计数器316可被初始化为线程316的总量,且每次一线程到达时,线程监控器316减少线程计数器312的值。首先完成执行的线程被悬置,直到剩余的线程到达(即直到线程计数器312到达零)。需注意,在一交替的实施例中,线程计数器312可被初始化为零,而不是线程的总量,且根据一线程的到达而增加计数器的值。在步骤方块408中,当所有线程316此刻都被同步化时,线程调度器304根据结合期间的完成而恢复线程316的执行。线程316可藉由调用另一叉路操作而被调度。
因此,总结来说,在多个实施例中的一实施例是提供一种同步化图形处理器102中一般目的着色器内的多个线程的方法。此方法包括判断一进入点以执行在GP着色器214内的线程316;在此进入点执行一叉路操作,藉此调度这些线程316,其中,这些线程316包括一主要线程以及一个或多个次要线程。此方法还包括执行一结合操作,藉此这些线程316根据主要线程到达一同步点而被同步化。根据结合操作的完成,一第二个叉路操作可被执行,以恢复这些线程316的并列执行。
图5及图6表示图4所述的叉路操作与结合操作。线程是以在交替的叉路与结合操作间转变的形式来显示。如先前所述,线程经历启动以作为在GP着色器214中的单一线程群组,其中,一线程群组314可包括上至64个EU线程,或者相当于1024个软件线程。在启动时,线程被GP任务建构器302分派给一线程群组。对于属于相同线程群组的线程,叉路与结合操作系被执行来同步化线程。为了简化硬件,在一些实施例中,GP着色器214可随着一叉路操作来开始。叉路与结合操作可被执行,作为在被选择的同步点上内嵌于GP着色器214编码内的指令。如由叉路期间至结合期间的转变,当调用一结合操作且结合期间开始时,只有主要或领导线程被执行。
对于一些实施例,主要或领导线程可以是在线程群组中的第一个线程,且可被分配到等于0的线程索引。在执行期间,主要线程执行与一些或所有剩余次要线程所共同的操作。剩余的次要线程绕过(bypass)主要线程对于下一同步点所执行且分支的编码部分。一旦所有的线程被再次同步时,一叉路操作被调用以活化剩余的次要线程。如流程图所示,另一结合操作可跟随着此叉路操作以恢复执行。在一线程群组的上下文中叉路与结合操作的一非限制应用,是关于视讯解码中间预测(video decoding inter-prediction),其中,每一宏区块(macroblock)使用叉路/结合操作并以一(4x4)像素区块来被处理以作为一线程。
参阅图6,一线程群组被启动,且进入叉路期间。在步骤方块610中,在以建立的线程群组中的多个线程被活化,且准备好执行。一叉路操作被调用,藉此同时调度所有的线程。为了同步化线程,于步骤方块620调用结合操作。在此情况下,只有主要或领导线程被执行,而剩余的次要线程直接地分支至下一同步点(步骤方块630)。一旦所有的线程在同步点上处理时,藉由执行另一叉路操作以再次调度线程来继续进行步骤方块640。如图所示,另一结合操作可被调用(步骤方块650),以再同步线程。再一次说明,于结合期间,只有主要或领导线程执行,而剩余的次要线程直接分支给下一同步点。
应注意到,虽然上述实施例已叙述在交替方式下调用叉路与结合操作,但也可实施其他的叉路/结合操作顺序。图7表示线程群组启动的另一实施例,藉此调用两个连续叉路操作。开始于步骤方块710,在线程群组中的所有线程被活化,且调用一叉路操作以同时调度所有的线程。对于所呈现的实施例,调用一同步操作,其中,先完成执行的线程被悬置,直到所有的剩余线程完成执行(步骤方块720)。此同步操作是根据
Figure BDA0000049596140000091
所提出的”Direct3D 11 Compute Shader Function Specification v 1.02”规格来实施,且应与所述结合操作区别。
虽然根据到达一同步点或屏障来悬置线程的观点来看,结合与同步操作是相似的,但是结合期间还包括执行编码部分的主要或领导线程而剩余次要线程直接分支给下一同步点。关于此点,应注意到,在”DX11 Compute Shader”规格中,一特定线程群组内的线程可经历一系列的同步操作。然而,此同步操作必须依序且一个接一个地被分解,藉此增加所需的计算资源。对于所述的实施例,叉路与结合操作的使用,去除了在线程接着线程(thread-by-thread)基础上分解每一线程的需求。返回至图7的实施例,应注意到,虽然显示一同步操作(根据”DX11 Compute Shader”规格),但是一叉路操作与一结合操作也可被调用(步骤方730及740)。就此点而言,多个已知同步操作的结合可与此处所述的叉路与结合操作组合,以执行在线程中的同步化。
本发明虽以较佳实施例揭示如上,然其并非用以限定本发明的范围,本领域的技术人员,在不脱离本发明的精神和范围的前提下,可做若干的更动与润饰,因此本发明的保护范围是以本发明的权利要求为准。

Claims (16)

1.一种同步方法,用以同步在一图形处理器中一一般目的着色器内的多个线程,包括:
判断一进入点以执行这些线程;
在该进入点执行一叉路操作,以同步调度这些线程,其中,这些线程包括一主要线程以及一个或多个次要线程;
根据该主要线程到达一同步点,执行一结合操作,以同步化这些线程;以及
根据该结合操作的完成,执行另一叉路操作以恢复这些线程的并列执行。
2.如权利要求1所述的同步方法,还包括,在并列调度该一个或多个次要线程之前,调度该主要线程。
3.如权利要求2所述的同步方法,还包括,该主要线程执行与这些线程中一个或多个线程共同的多个操作。
4.如权利要求3所述的同步方法,其中,执行与这些线程中一个或多个线程共同的这些操作的该步骤在一般目的着色器的一结合期间中发生。
5.如权利要求3所述的同步方法,其中,在该进入点执行该叉路操作的该步骤,是执行与这些线程中一个或多个线程共同的这些操作之后执行。
6.如权利要求1所述的同步方法,还包括,建立关于一线程群组的一记录,该线程群组包括这些线程。
7.如权利要求6所述的同步方法,其中,该记录包括:
一线程群组识别符,根据在该进入点执行该叉路操作而产生;以及
一线程计数器,用以同步化这些线程。
8.如权利要求7所述的同步方法,其中,该线程计数器被初始化为在该线程群组内的线程总量。
9.如权利要求7所述的同步方法,其中,该线程计数器在每一结合操作的起始上被初始化。
10.如权利要求7所述的同步方法,其中,该线程计数器藉由根据该线程群组识别符而首先定位相关联的该记录而被初始化。
11.如权利要求1所述的同步方法,其中,执行该结合操作的该步骤包括:
该主要线程执行在该一般目的着色器的一指定结合部分的编码;以及
剩余的这些次要线程直接分支给一下一同步点,且悬置执行直到所有剩余的这些次要线程到达该下一同步点。
12.一种图形处理器系统,用以执行在一图形管道的一一般目的着色器内的多个软件线程的同步化执行,包括:
一一般目的任务建构器,用以建立与一线程群组相关联的一记录,其中,该线程群组包括多个线程,且该记录包括一线程群组识别符以及一线程计数器;
一线程调度器,藉由调用一叉路操作来调度该线程群组内的这些线程,其中,这些线程包括一主要线程以及一个或多个次要线程;以及
一线程监控器,根据一结合操作来监控每一该线程的执行,且监控这些线程在多个预设同步点上的到达;
其中,该线程计数器用来追踪在这些预设同步点上被执行的这些线程的数量;以及
其中,该线程调度器根据该线程计数器的数值来恢复这些线程的并列执行。
13.如权利要求12所述的图形处理器系统,其中,该线程调度器在调度该一个或多个次要线程之前调度该主要线程,且该一个或多个次要线程是并列地调度。
14.如权利要求12所述的图形处理器系统,其中,该线程调度器在每一结合操作的起始初始化该线程计数器,且该线程计数器被初始化为在该线程群组内的线程总量。
15.如权利要求14所述的图形处理器系统,其中,该线程计数器藉由根据该线程群组识别符而首先定位相关联的该记录而被初始化。
16.如权利要求14所述的图形处理器系统,其中,该线程监控器根据在每一该预设同步点的线程的到达来减少该线程计数器的值。
CN201110058179.2A 2010-10-15 2011-03-10 同步方法以及图形处理系统 Active CN102135916B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/905,385 US8499305B2 (en) 2010-10-15 2010-10-15 Systems and methods for performing multi-program general purpose shader kickoff
US12/905,385 2010-10-15

Publications (2)

Publication Number Publication Date
CN102135916A true CN102135916A (zh) 2011-07-27
CN102135916B CN102135916B (zh) 2013-04-10

Family

ID=44295706

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110058179.2A Active CN102135916B (zh) 2010-10-15 2011-03-10 同步方法以及图形处理系统

Country Status (3)

Country Link
US (1) US8499305B2 (zh)
CN (1) CN102135916B (zh)
TW (1) TWI502542B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103809936A (zh) * 2012-11-05 2014-05-21 辉达公司 编译或运行时执行分叉-合并数据并行程序的系统和方法
CN103999128A (zh) * 2011-12-15 2014-08-20 高通股份有限公司 具有命令处理器的图形处理单元
US10535185B2 (en) 2012-04-04 2020-01-14 Qualcomm Incorporated Patched shading in graphics processing
CN111712793A (zh) * 2018-02-14 2020-09-25 华为技术有限公司 线程处理方法和图形处理器

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
UA103319C2 (en) 2008-05-06 2013-10-10 Глаксосмитклайн Ллк Thiazole- and oxazole-benzene sulfonamide compounds
US9009726B2 (en) * 2010-12-10 2015-04-14 Microsoft Technology Licensing, Llc Deterministic sharing of data among concurrent tasks using pre-defined deterministic conflict resolution policies
US9436502B2 (en) 2010-12-10 2016-09-06 Microsoft Technology Licensing, Llc Eventually consistent storage and transactions in cloud based environment
GB2486485B (en) 2010-12-16 2012-12-19 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
US8601485B2 (en) * 2011-05-25 2013-12-03 Arm Limited Data processing apparatus and method for processing a received workload in order to generate result data
US9092267B2 (en) * 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US10089774B2 (en) * 2011-11-16 2018-10-02 Qualcomm Incorporated Tessellation in tile-based rendering
US9390554B2 (en) * 2011-12-29 2016-07-12 Advanced Micro Devices, Inc. Off chip memory for distributed tessellation
US9542715B2 (en) 2012-05-02 2017-01-10 Nvidia Corporation Memory space mapping techniques for server based graphics processing
US9805439B2 (en) 2012-05-02 2017-10-31 Nvidia Corporation Memory space mapping techniques for server based graphics processing
US9613390B2 (en) 2012-05-02 2017-04-04 Nvidia Corporation Host context techniques for server based graphics processing
US9311169B2 (en) 2012-05-02 2016-04-12 Nvidia Corporation Server based graphics processing techniques
US9424099B2 (en) * 2012-06-01 2016-08-23 Advanced Micro Devices, Inc. Method and system for synchronization of workitems with divergent control flow
US9652815B2 (en) 2012-09-11 2017-05-16 Nvidia Corporation Texel data structure for graphics processing unit programmable shader and method of operation thereof
US10096079B2 (en) 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US10176621B2 (en) * 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
WO2015163780A1 (en) * 2014-04-23 2015-10-29 Sciensys Sas Program parallelization on procedure level in multiprocessor systems with logically shared memory
CN103995725B (zh) * 2014-04-24 2018-07-20 深圳中微电科技有限公司 在cpu上执行像素着色器的程序转换方法及装置
GB2540543B (en) * 2015-07-20 2020-03-11 Advanced Risc Mach Ltd Graphics processing
GB2540937B (en) * 2015-07-30 2019-04-03 Advanced Risc Mach Ltd Graphics processing systems
US9928117B2 (en) * 2015-12-11 2018-03-27 Vivante Corporation Hardware access counters and event generation for coordinating multithreaded processing
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
US10324844B2 (en) 2016-12-22 2019-06-18 Apple Inc. Memory consistency in graphics memory hierarchy with relaxed ordering
US10504270B2 (en) 2016-12-22 2019-12-10 Apple Inc. Resource synchronization for graphics processing
US10445852B2 (en) 2016-12-22 2019-10-15 Apple Inc. Local image blocks for graphics processing
TWI731926B (zh) * 2017-01-24 2021-07-01 香港商阿里巴巴集團服務有限公司 一種資料同步方法和裝置
US11353868B2 (en) * 2017-04-24 2022-06-07 Intel Corporation Barriers and synchronization for machine learning at autonomous machines
US11609791B2 (en) * 2017-11-30 2023-03-21 Advanced Micro Devices, Inc. Precise suspend and resume of workloads in a processing unit
US11442795B2 (en) * 2018-09-11 2022-09-13 Nvidia Corp. Convergence among concurrently executing threads
US11107263B2 (en) * 2018-11-13 2021-08-31 Intel Corporation Techniques to manage execution of divergent shaders
US11010862B1 (en) * 2019-11-14 2021-05-18 Advanced Micro Devices, Inc. Reduced bandwidth tessellation factors
US10891708B1 (en) 2019-11-25 2021-01-12 Arm Limited Shader program execution in graphics processing
CN111459591B (zh) * 2020-03-31 2023-03-28 杭州海康威视数字技术股份有限公司 待渲染对象处理方法、装置和终端
US11934867B2 (en) 2020-07-23 2024-03-19 Nvidia Corp. Techniques for divergent thread group execution scheduling
US20220036632A1 (en) * 2020-08-03 2022-02-03 Samsung Electronics Co., Ltd. Post-processing in a memory-system efficient manner
US11508124B2 (en) * 2020-12-15 2022-11-22 Advanced Micro Devices, Inc. Throttling hull shaders based on tessellation factors in a graphics pipeline
US11776085B2 (en) 2020-12-16 2023-10-03 Advanced Micro Devices, Inc. Throttling shaders based on resource usage in a graphics pipeline
US11710207B2 (en) 2021-03-30 2023-07-25 Advanced Micro Devices, Inc. Wave throttling based on a parameter buffer

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1853165A (zh) * 2003-09-30 2006-10-25 英特尔公司 用于多线程的编译器创建辅助线程的方法和装置
WO2007055889A1 (en) * 2005-11-09 2007-05-18 Sun Microsystems, Inc. Facilitating communication and synchronization between main and scout threads
CN101082982A (zh) * 2007-02-16 2007-12-05 威盛电子股份有限公司 顶点着色器、绘图处理单元及其相关的流程控制方法
CN101425175A (zh) * 2007-12-06 2009-05-06 威盛电子股份有限公司 着色器处理系统与方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5353418A (en) * 1989-05-26 1994-10-04 Massachusetts Institute Of Technology System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
US8489861B2 (en) * 1997-12-23 2013-07-16 Round Rock Research, Llc Split embedded DRAM processor
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
JP3895934B2 (ja) * 2001-01-31 2007-03-22 株式会社東芝 仕様操作装置
US20070091088A1 (en) * 2005-10-14 2007-04-26 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
US7728841B1 (en) * 2005-12-19 2010-06-01 Nvidia Corporation Coherent shader output for multiple targets
US7774765B2 (en) * 2006-02-01 2010-08-10 Ati Technologies Inc. Method and apparatus for moving area operator definition instruction statements within control flow structures
US8207975B1 (en) * 2006-05-08 2012-06-26 Nvidia Corporation Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US8212825B1 (en) * 2007-11-27 2012-07-03 Nvidia Corporation System and method for geometry shading
US20100064291A1 (en) * 2008-09-05 2010-03-11 Nvidia Corporation System and Method for Reducing Execution Divergence in Parallel Processing Architectures
US8413120B2 (en) * 2008-10-27 2013-04-02 Advanced Micro Devices, Inc. Method and system for thread monitoring

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1853165A (zh) * 2003-09-30 2006-10-25 英特尔公司 用于多线程的编译器创建辅助线程的方法和装置
WO2007055889A1 (en) * 2005-11-09 2007-05-18 Sun Microsystems, Inc. Facilitating communication and synchronization between main and scout threads
CN101082982A (zh) * 2007-02-16 2007-12-05 威盛电子股份有限公司 顶点着色器、绘图处理单元及其相关的流程控制方法
CN101425175A (zh) * 2007-12-06 2009-05-06 威盛电子股份有限公司 着色器处理系统与方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103999128A (zh) * 2011-12-15 2014-08-20 高通股份有限公司 具有命令处理器的图形处理单元
CN103999128B (zh) * 2011-12-15 2015-09-30 高通股份有限公司 具有命令处理器的图形处理单元
US10535185B2 (en) 2012-04-04 2020-01-14 Qualcomm Incorporated Patched shading in graphics processing
US10559123B2 (en) 2012-04-04 2020-02-11 Qualcomm Incorporated Patched shading in graphics processing
US11200733B2 (en) 2012-04-04 2021-12-14 Qualcomm Incorporated Patched shading in graphics processing
US11769294B2 (en) 2012-04-04 2023-09-26 Qualcomm Incorporated Patched shading in graphics processing
CN103809936A (zh) * 2012-11-05 2014-05-21 辉达公司 编译或运行时执行分叉-合并数据并行程序的系统和方法
CN111712793A (zh) * 2018-02-14 2020-09-25 华为技术有限公司 线程处理方法和图形处理器
CN111712793B (zh) * 2018-02-14 2023-10-20 华为技术有限公司 线程处理方法和图形处理器

Also Published As

Publication number Publication date
CN102135916B (zh) 2013-04-10
TW201216199A (en) 2012-04-16
TWI502542B (zh) 2015-10-01
US20120096474A1 (en) 2012-04-19
US8499305B2 (en) 2013-07-30

Similar Documents

Publication Publication Date Title
CN102135916B (zh) 同步方法以及图形处理系统
US10176546B2 (en) Data processing systems
CN103761139B (zh) 一种基于动态库拦截的通用计算虚拟化实现方法
CN103999128B (zh) 具有命令处理器的图形处理单元
JP6432894B2 (ja) グラフィックスプロセッサ実行リソースの動的スケーリング
EP3300028B1 (en) Primitive shader
US8046761B2 (en) Scalable multi-threaded media processing architecture
CN102147722B (zh) 实现中央处理器和图形处理器功能的多线程处理器及方法
US9495721B2 (en) Efficient super-sampling with per-pixel shader threads
US8978038B2 (en) Data processing apparatus and method for processing a received workload in order to generate result data
CN108694688A (zh) 用于在图形处理架构中管理数据偏置的设备和方法
US10503520B2 (en) Automatic waking of power domains for graphics configuration requests
KR101511273B1 (ko) 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
CN106358003A (zh) 一种基于线程级流水线的视频分析加速方法
CN106575449A (zh) 仅位置着色管线
CN107430523A (zh) 图形处理器的高效抢占
US11533683B2 (en) Advanced graphics power state management
US9256466B2 (en) Data processing systems
CN101702231A (zh) 绘图处理单元同步系统与方法
US11257182B2 (en) GPU mixed primitive topology type processing
KR20110049734A (ko) 병렬 세이딩 동작 수행 방법 및 장치와 컴퓨터 판독가능 매체
US9082212B2 (en) Programmable blending via multiple pixel shader dispatches
JP2021108103A (ja) 量子化した収束方向ベースのレイソーティング用の装置及び方法
US20180374187A1 (en) Method and apparatus for best effort quality of service (qos) scheduling in a graphics processing architecture
US20240045718A1 (en) Fine-grained conditional dispatching

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant