《用于异构CPUGPU计算的执行模型.pdf》由会员分享,可在线阅读,更多相关《用于异构CPUGPU计算的执行模型.pdf(26页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104137070A43申请公布日20141105CN104137070A21申请号201380010528022申请日2013022761/603,77120120227US13/777,66320130226USG06F9/45200601G06F9/44200601G06F9/5420060171申请人高通股份有限公司地址美国加利福尼亚州72发明人阿列克谢V布尔德威廉F托尔泽弗斯基74专利代理机构北京律盟知识产权代理有限责任公司11287代理人宋献涛54发明名称用于异构CPUGPU计算的执行模型57摘要技术一般涉及在图形处理单元GPU上实施数据处理算法的管线拓扑。开发者。
2、可以平台独立的方式界定所述管线拓扑。处理器可接收所述管线拓扑的指示且产生界定将在所述GPU上实施所述管线拓扑的平台相依的方式的指令。30优先权数据85PCT国际申请进入国家阶段日2014082286PCT国际申请的申请数据PCT/US2013/0280292013022787PCT国际申请的公布数据WO2013/130614EN2013090651INTCL权利要求书3页说明书18页附图4页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书18页附图4页10申请公布号CN104137070ACN104137070A1/3页21一种用于异构计算的方法,所述方法包括使用处理器接收。
3、以平台独立的方式界定数据处理算法的执行模型的管线拓扑;使用所述处理器产生指示将在图形处理单元GPU上实施所述执行模型的所述管线拓扑的平台相依的方式的指令,其中将在所述GPU上实施所述执行模型的所述管线拓扑的所述平台相依的方式是基于所述GPU的平台;及使用所述处理器将所述指令传输到所述GPU。2根据权利要求1所述的方法,其中产生指令包括编译指定所述执行模型的所述管线拓扑的命令列表以产生所述指令。3根据权利要求2所述的方法,其中编译所述命令列表包括至少基于所述GPU的配置信息来编译所述命令列表以产生界定将在所述GPU上实施所述执行模型的所述管线拓扑的所述平台相依的方式的所述指令。4根据权利要求3所。
4、述的方法,其中所述GPU的所述配置信息包括以下各者中的一或多者所述GPU内的可编程计算单元的数目;及所述GPU中的数据通道的数目。5根据权利要求2所述的方法,其中编译所述命令列表包括至少基于以下各者中的一或多者来编译所述命令列表所述执行模型的所述管线拓扑中所识别的缓冲器的大小;及所述执行模型的所述管线拓扑中所识别的内核的重要性。6根据权利要求1所述的方法,其中接收所述管线拓扑包括接收命令列表,所述命令列表指示经互连以形成所述管线拓扑的一或多个内核及一或多个缓冲器。7一种设备,其包括图形处理单元GPU;及处理器,其经配置以接收以平台独立的方式界定数据处理算法的执行模型的管线拓扑的指示;产生指示将。
5、在所述GPU上实施所述执行模型的所述管线拓扑的平台相依的方式的指令,其中将在所述GPU上实施所述执行模型的所述管线拓扑的所述平台相依的方式是基于所述GPU的平台;及将所述指令传输到所述GPU。8根据权利要求7所述的设备,其中,为了产生所述指令,所述处理器经配置以编译指定所述执行模型的所述管线拓扑的命令列表。9根据权利要求8所述的设备,其中,为了编译所述命令列表,所述处理器经配置以至少基于所述GPU的配置信息来编译所述命令列表以产生界定将在所述GPU上实施所述执行模型的所述管线拓扑的所述平台相依的方式的所述指令。10根据权利要求9所述的设备,其中所述GPU的所述配置信息包括以下各者中的一或多者所。
6、述GPU内的可编程计算单元的数目;及所述GPU中的数据通道的数目。权利要求书CN104137070A2/3页311根据权利要求8所述的设备,其中,为了编译所述命令列表,所述处理器经配置以至少基于以下各者中的一或多者来编译所述命令列表所述执行模型的所述管线拓扑中所识别的缓冲器的大小;及所述执行模型的所述管线拓扑中所识别的内核的重要性。12根据权利要求7所述的设备,其中,为了接收所述管线拓扑,所述处理器经配置以接收命令列表,所述命令列表指示经互连以形成所述管线拓扑的一或多个内核及一或多个缓冲器。13根据权利要求7所述的设备,其中所述设备包括以下各者中的一者媒体播放器;机顶盒;无线手持机;桌上型计算。
7、机;膝上型计算机;游戏控制台;视频会议单元;及平板计算装置。14一种计算机可读存储媒体,所述计算机可读存储媒体上存储有指令,所述指令在由一或多个处理器执行时致使所述一个或多个处理器接收以平台独立的方式界定数据处理算法的执行模型的管线拓扑;产生指示将在图形处理单元GPU上实施所述执行模型的所述管线拓扑的平台相依的方式的指令,其中将在所述GPU上实施所述执行模型的所述管线拓扑的所述平台相依的方式是基于所述GPU的平台;及将所述指令传输到所述GPU。15根据权利要求14所述的计算机可读存储媒体,其中所述致使所述一或多个处理器产生指令的指令包括致使所述一或多个处理器编译指定所述执行模型的所述管线拓扑的。
8、命令列表以产生所述指令的指令。16根据权利要求15所述的计算机可读存储媒体,其中所述致使所述一或多个处理器编译所述命令列表的指令包括致使所述一或多个处理器至少基于所述GPU的配置信息来编译所述命令列表以产生界定将在所述GPU上实施所述执行模型的所述管线拓扑的所述平台相依的方式的所述指令的指令。17根据权利要求16所述的计算机可读存储媒体,其中所述GPU的所述配置信息包括以下各者中的一或多者所述GPU内的可编程计算单元的数目;及所述GPU中的数据通道的数目。18根据权利要求15所述的计算机可读存储媒体,其中所述致使所述一或多个处理器编译所述命令列表的指令包括致使所述一或多个处理器至少基于以下各者。
9、中的一或多者来编译所述命令列表的指权利要求书CN104137070A3/3页4令所述执行模型的所述管线拓扑中所识别的缓冲器的大小;及所述执行模型的所述管线拓扑中所识别的内核的重要性。19一种设备,其包括图形处理单元GPU;及处理器,其包括用于接收以平台独立的方式界定数据处理算法的执行模型的管线拓扑的装置;用于产生指示将在所述GPU上实施所述执行模型的所述管线拓扑的平台相依的方式的指令的装置,其中将在所述GPU上实施所述执行模型的所述管线拓扑的所述平台相依的方式是基于所述GPU的平台;及用于将所述指令传输到所述GPU的装置。20根据权利要求19所述的设备,其中所述用于产生指令的装置包括用于编译指。
10、定所述执行模型的所述管线拓扑的命令列表以产生所述指令的装置。权利要求书CN104137070A1/18页5用于异构CPUGPU计算的执行模型0001本申请案主张2012年2月27日申请的美国临时申请案61/603,771的权益,所述申请案的全部内容在此以全文引用的方式并入本文中。技术领域0002本发明涉及应用的执行,且更确切地说,涉及各种处理单元中的应用的执行。背景技术0003图形处理单元GPU正用于除图形处理之外的目的。举例来说,非图形相关应用可通过采用GPU的大量并行度而以增加的速度执行。此已导致提供额外的非图形相关处理功能性并且被称作通用GPUGPGPU的GPU。举例来说,GPGPU包含。
11、一或多个着色器核心,并且所述着色器核心经配置以执行例如图形相关应用以及非图形相关应用等应用。发明内容0004一般来说,本发明涉及用于产生用于实施计算管线的执行模型的技术。举例来说,多个数据处理算法可表示为计算管线,其中所述管线的一个单元接收并处理数据,并输出所述经处理数据以供所述管线的另一单元进一步处理。本发明中描述的技术可允许以一种方式表示所述计算管线,使得其可在各种类型的平行计算装置上有效地被执行,其一实例是图形处理单元GPU。举例来说,所述技术可以平台独立的方式表示所述计算管线例如,不取决于将实施所述计算管线的计算装置。0005通过所述计算管线的表示,所述技术可利用平台相依的编译来产生可。
12、用的计算装置专有的指令,例如可用的GPU或甚至中央处理单元CPU。举例来说,所述计算管线可以平台独立的方式来界定并且编译器产生将在其上实施所述计算管线的平台专有的指令。0006在一个实例中本发明描述一种用于异构计算的方法。所述方法包含使用处理器接收以平台独立的方式界定数据处理算法的执行模型的管线拓扑。所述方法还包含使用所述处理器产生指令,所述指令指示将在图形处理单元GPU上实施所述执行模型的管线拓扑的平台相依的方式。在此实例中,将在所述GPU上实施所述执行模型的管线拓扑的所述平台相依的方式是基于GPU的平台。所述方法还包含使用所述处理器将所述指令传输到所述GPU。0007在一个实例中,本发明描。
13、述一种设备。所述设备包含图形处理单元GPU和处理器。所述处理器经配置以接收以平台独立的方式界定数据处理算法的执行模型的管线拓扑的指示。所述处理器还经配置以产生指令,所述指令指示将在GPU上实施所述执行模型的管线拓扑的平台相依的方式。在此实例中,将在所述GPU上实施所述执行模型的管线拓扑的所述平台相依的方式是基于GPU的平台。所述处理器还经配置以将所述指令传输到所述GPU。0008在一个实例中,本发明描述一种计算机可读存储媒体,所述计算机可读存储媒体具有储存在其上的指令,所述指令在由一或多个处理器执行时致使所述一个或多个处理器说明书CN104137070A2/18页6接收以平台独立的方式界定数据。
14、处理算法的执行模型的管线拓扑。所述指令还致使所述一个或多个处理器产生指令,所述指令指示将在图形处理单元GPU上实施所述执行模型的所述管线拓扑的平台相依的方式。在此实例中,将在所述GPU上实施所述执行模型的管线拓扑的所述平台相依的方式是基于GPU的平台。所述指令还致使所述一个或多个处理器将所述指令传输到所述GPU。0009在一个实例中,本发明描述一种设备。所述设备包含图形处理单元GPU和处理器。所述处理器包含用于接收以平台独立的方式界定数据处理算法的执行模型的管线拓扑的装置。所述处理器还包含用于产生指令的装置,所述指令指示将在GPU上实施所述执行模型的管线拓扑的平台相依的方式。在此实例中,将在所。
15、述GPU上实施所述执行模型的管线拓扑的所述平台相依的方式是基于GPU的平台。所述处理器还包含用于将所述指令传输到所述GPU的装置。所述处理器还包含用于将所述指令传输到所述GPU的装置。0010一个或一个以上实例的细节陈述于附图及以下描述中。其它特征、目标和优点将从所述描述和图式以及权利要求书而显而易见。附图说明0011图1是说明执行模型的实例的概念图。0012图2是说明根据本发明中所描述的一或多个实例的装置的实例的框图。0013图3是说明根据本发明所描述的一或多个实例的实例技术的流程图。0014图4是进一步详细地说明图2的装置的框图。具体实施方式0015图形处理单元GPU可经配置以并行地快速并。
16、且有效地处理数据。开发者可以在GPU上执行的应用的形式开发数据处理算法。举例来说,GPU可包含着色器处理器,其经配置以执行一或多个应用。这些应用的实例包含着色器程序,例如顶点着色器、壳着色器、几何着色器、以及与图形处理相关的其它此类应用。0016此外,某些应用开发者可认为采用GPU的大型并行度且在GPU上执行非图形相关应用是有益的。举例来说,由GPU提供的处理平行度可适合于执行并行矩阵操作,甚至当所述矩阵操作与图形处理不相关时也如此。非图形相关应用的其它实例包含与流体动力学或线性代数相关的技术,其中并行操作的快速执行可为有益的。所述非图形相关应用还可在所述着色器处理器上执行。0017能够执行此。
17、类非图形相关应用的GPU可被视为通用GPUGPGPU。举例来说,当GPU执行非图形相关应用时相关申请案所述GPU充当GPGPU。大部分GPU可经配置以充当GPGPU。0018出于说明的目的,本发明相对于充当GPGPU的GPU描述多种技术。然而,所述技术不限于其中GPU充当GPGPU即,执行非图形相关应用的例子,并且所述技术还可适用于其中GPU执行图形相关应用的例子。此外本发明中描述的技术可由任何类型的处理单元实施,例如中央处理单元CPU、加速器、或任何其它定制的装置。虽然相对于GPU所述技术,但应理解,所述技术可扩展到其它类型的处理单元。0019GPU内的着色器处理器可包含多个着色器核心还被称。
18、作可编程计算单元以指示说明书CN104137070A3/18页7这些核心可执行用于图形及非图形相关应用两者的指令。所述可编程计算单元中的每一者可包含为了将由所述可编程计算单元执行的指令以及由指令的执行而产生的数据例如,在指令的执行期间而产生的中间结果而保留的本地存储器。所述可编程计算单元的本地存储器可能不可由其它可编程计算单元存取。在一些情况下,将在GPU上执行的不同应用可由不同可编程计算单元执行。0020在本发明中描述的技术中,图形相关应用被称作着色器,并且非图形相关应用被称作内核。举例来说,着色器即,图形相关应用的实例包含但不限于顶点着色器、片段着色器及几何着色器。内核即,非图形相关应用的。
19、实例包含用以执行矩阵操作、流体动力学、图像处理操作、视频处理操作及类似者的应用。0021此外,所述内核不一定需要限于仅由执行的应用,而是还包含GPU的固定功能单元即,非可编程单元。仅出于说明的目的,本发明中描述的技术是相对于所述内核是在GPU上执行的应用来描述的。举例来说,所述技术是相对于在GPU的着色器处理器上执行的非图形相关应用来描述的,使得GPU充当GPGPU。0022内核可包含工作群组、任务或线程其全部在本发明中同义地使用。举例来说,线程可为所述内核的可与所述内核的另一线程独立地执行的一组指令。在一些实例中,为了执行内核,可编程计算单元中的一或多者可各自执行所述内核的一或多个线程。举例。
20、来说第一可编程计算单元可执行所述内核的第一线程,并且第二可编程计算机单元可执行同一内核的第二线程。在一些实例中,一个可编程计算单元可执行一个内核的一或多个线程,而另一可编程计算单元执行另一内核的一或多个线程。在一些实例中,所述两者的组合可为可能的即,某些可编程计算单元执行同一内核的不同线程,而某些其它可编程计算单元执行不同内核的线程。0023虽然GPU提供处理的大规模平行度,但例如内核的开发者等开发者可认为难以开发在各种类型的GPU上以管线方式有效地执行的内核。以管线方式执行内核意味着执行内核以使得由一个内核产生的数据由另一内核消耗。作为另一实例,以管线方式执行内核意味着执行内核的线程,其产生。
21、将由同一内核的另一线程消耗的数据。在本发明中,产生所述数据的线程可被称为产生者线程并且接收所述数据的线程可被称为消费者线程。0024在一些实例中,所述产生者线程及所述消费者线程可为同一内核的线程。在一些实例中,所述产生者线程及所述消费者线程可为不同内核的线程。在这些实例中,包含所述产生者线程的内核可被称为产生者内核,并且包含所述消费者线程的内核可被称为消费者内核。0025作为一个实例,为了实施数据处理算法,例如图像处理或视频处理,开发者可开发多个内核,其中每一内核实施整个算法的一部分。第一内核可接收待处理的数据例如,非图形相关数据、处理所述数据,并且输出所述数据以供第二内核消耗。所述第二内核可。
22、接收由所述第一内核输出的数据、进一步处理所述数据,并且输出所述数据以供第三内核消耗,以此类推。0026在此实例中,所述第一、第二和第三内核可被设想为形成管线,借此第一内核例如,产生者内核产生将由第二内核例如,从第一内核的角度的消费者内核消耗的数据。所述第二内核产生将由第三内核消耗的数据。在此实例中,所述第二内核是从所述第三内核的角度的产生者内核,并且所述第三内核是消费者内核。以此方式,GPU可以管线方说明书CN104137070A4/18页8式执行所述第一、第二和第三内核。0027在一些实例中,以管线方式执行内核可意味着依序执行所述内核例如,执行第一内核,接着执行第二内核,接着执行第三内核,以。
23、此类推。然而,本发明中描述的技术不限于此。在一些实例中,以管线方式执行内核可意味着并行地例如,同时或在实际上重叠执行内核。举例来说,GPU可同时执行所述第一、第二和第三内核中的两者或更多者,即使第二内核是第一内核的消费者内核,并且第三内核是第二内核的消费者内核也如此。0028虽然开发者可能够开发以管线方式执行以实施数据处理算法的内核,但开发者可能不能够确保所述内核跨各种类型的GPU的最佳执行。举例来说,开发者可编写在处理器上执行的指令。这些指令致使处理器指令所述GPU何时执行内核。如上文所描述,所述内核可在一或多个计算单元上执行;然而,开发者可能不知道特定GPU上可用的计算单元的数目,或更一般。
24、来说,不知道特定GPU的并行处理能力。0029在此情况下,开发者可不能够预先确定内核应何时执行,因为开发者不知晓所述GPU的处理能力。此可导致开发者编写不同指令,所述指令各自指定给不同类型的GPU。举例来说,开发者可编写在所述处理器上执行的第一组指令,所述指令特定针对于第一GPU类型。举例来说,如果第一类型包含三个计算单元,那么所述第一组指令可界定将在GPU上使用三个计算单元执行内核的方式。开发者还可编写在处理器上执行的第二组指令,所述指令特定针对于第二GPU类型。举例来说,如果第二类型包含四个计算单元,那么所述第二组指令可界定将在GPU上使用四个计算单元执行内核的方式。0030在一些实例中,。
25、不针对不同的GPU类型编写指令,开发者可仅针对一种类型的GPU例如,假定最差情况情境GPU编写指令。在这些实例中,仅一种类型的GPU可能够有效地实施数据处理算法,并且其它GPU类型可能不有效地实施所述数据处理算法。0031换句话说,可能不存在开发者可编写指令的致使内核以有效方式在GPU上执行的平台独立方式。而是,开发者可能编写在其它GPU类型上低效地执行的通用指令例如,其不取决于GPU类型。否则,开发者可编写产生非便携指令的平台相依的指令。举例来说,开发者可能必须针对不同GPU类型中的每一者编写单独的指令,其可为过度繁琐的。0032本发明中描述的技术允许有效地执行内核而以平台独立方式实施数据处。
26、理算法即,用于异构计算。在本发明中描述的技术中,异构计算涉及以平台独立方式进行计算。如更详细描述的,根据本发明中描述的技术,开发者指定内核的管线执行模型来用于实施所述数据处理算法。0033为了指定所述管线执行模型,开发者可界定所述管线的拓扑。所述管线的拓扑可被视为包含互连的内核及缓冲器的执行图表。举例来说,如果第一内核将产生将由第二内核消耗的数据。开发者可界定所述拓扑以使得所述第一内核耦合到缓冲器,例如先入先出FIFO缓冲器,并且所述缓冲器耦合到所述第二内核。在此实例中,所述执行图表可指示第一内核将把数据输出到缓冲器,并且第二内核将从缓冲器接收数据。0034除了界定所述拓扑之外,开发者还可界定。
27、所述拓扑的特征以作为执行模型的一部分。作为一个实例,开发者可界定每一内核的放大因数。所述放大因数可指示所述内核将针对所述内核将接收的给定量的数据而产生的最大量的数据。举例来说,如果所述放大因数对于内核是五,并且所述内核接收两个数据包,那么所述内核将产生的最大量的数据是十个数据包。说明书CN104137070A5/18页90035作为另一实例,开发者可界定所述缓冲器的大小。举例来说,开发者可界定缓冲器的宽度例如,可存储在缓冲器的存储位置内的数据的量及缓冲器的长度例如,缓冲器内的存储位置的数目。0036以此方式,开发者可界定用于数据处理算法的平台独立的执行模型。举例来说,开发者可不需要顾及将在其上。
28、实施数据处理算法的特定GPU。而是,每一GPU类型的执行模型可为相同的。0037本发明中描述的技术可允许开发者以有限制的方式界定执行模型。举例来说,开发者可充分界定需要哪些内核,且哪些内核形成为产生者内核及哪些内核形成为消费者内核。以有限制的方式界定所述执行模型可被视为界定静态执行模型例如,在执行之前界定的执行模型。0038以有限制的方式界定所述执行模型与以无限制的方式界定执行模型相比可实现计算效率上的增益。在执行模型的无限制的界定中,开发者在执行之前可不界定将需要的内核的数目,或哪些内核将是产生者内核及哪些内核将是消费者内核即,不界定所述内核之间的互连。与有限制的执行模型相比,此可产生无限制。
29、的执行模型的次最佳性能。0039举例来说,在本发明中描述的技术中,处理器可接收执行模型且可将所述执行模型编译为可由GPU处理的目标代码即,二进制代码。所述编译步骤可为平台相依的步骤。举例来说,处理器可被预先配置有信息,所述信息指示将在其上实施数据处理算法的GPU的处理能力。作为一个实例,处理器可被预先配置有指示GPU内的计算单元的数目的信息。0040在编译步骤中,处理器可产生用于元调度器的指令。元调度器可为在GPU上执行的软件或可为GPU内的硬件。用于所述元调度器的指令可界定将执行所述执行模型的方式。在此实例中,因为所述执行模型可为有限制的例如,内核的数目及内核的互连是已知的且处理器可被预先配。
30、置有指示的处理能力的信息,所以编译器可能够界定用于所述元调度器的指令,所述指令优化GPU实施所述执行模型的方式。对于无限制的执行模型,内核的数目及其相应的互连可不是已知的,且编译器可不能够恰当地优化GPU上的执行模型的执行。0041图1是说明执行模型的实例的概念图。举例来说,图1说明执行模型10。开发者可界定用以实施数据处理算法的执行模型10。举例来说,开发者可界定用以实施图像处理、视频处理、线性代数操作,或计算流体动力学的算法的执行模型10。一般来说开发者可界定用以实施任何数据处理算法的执行模型10,所述数据处理算法利用由图形处理单元GPU提供的大规模并行计算效率,包含用于非图形相关目的。在。
31、其中GPU实施非图形相关算法的实例中,GPU可被视为像通用GPUGPGPU一样起作用。0042如所说明,执行模型10包含缓冲器12A到12D及内核14A到14C。在一些实例中,可存在比图1中说明的缓冲器及内核更多或更少的缓冲器及内核。缓冲器12A到12D的实例包含但不限于先入先出FIFO缓冲器及环形缓冲器。0043内核14A14C的实例包含由开发者开发的应用,所述应用实施执行模型10经界定以实施的整个数据处理算法的至少一部分。开发者可利用任何编程语言来开发内核14A到14C。0044可存在开发者可界定执行模型10的各种方式。作为一个实例,开发者可在例如桌说明书CN104137070A6/18页。
32、10上型计算机或膝上型计算机等计算装置上界定执行模型。开发者可在呈现图形用户接口GUI的计算装置上执行应用。开发者可利用所述GUI以图1中所说明的方式将缓冲器12A到12D及内核14A到14C互连。此外,开发者可利用所述GUI界定缓冲器12A到12D及内核14A到14D的特性。0045作为另一实例,开发者可根据特定应用处理接口API来界定利用命令的执行模型。此类API的实例包含的API、KHRONOS集团的,及KHRONOS集团的;然而,本发明的方面不限于DIRECTX、OPENGL或OPENCLAPI,而是可扩展到已经开发、当前正在开发,或将来待开发的其它类型的API。此外,不需要本发明中描。
33、述的技术根据API而起作用。0046举例来说,命令可包含指示开发者正在界定执行模型的命令。所述命令还可包含允许开发者界定缓冲器12A到12D及内核14A到14C属于执行模型10且界定将缓冲器12A到12D及内核14A到14C互连的方式的命令。0047在任一实例即,基于GUI或基于命令中,在其上开发者界定的执行模型10可转换执行模型10的计算装置包含指定执行模型10的拓扑的命令列表。举例来说,如所说明,内核14A接收来自缓冲器12A的数据、处理所述数据,且将所述数据存储在缓冲器12B及12C中。内核14B接收来自缓冲器12B的数据、处理所述数据,且将所述数据存储在缓冲器12D中。内核14C接收来。
34、自缓冲器12D及12C的数据且处理所述数据。0048以此方式,缓冲器12A到12D以及内核14A到14C经配置为计算管线。举例来说,内核14A是内核14B和14C的产生者内核。内核14B是内核14A的消费者内核及内核14C的产生者内核。内核14C是内核14A和14B两者的消费者内核。0049为了辅助理解,图1可被视为说明执行模型10的管线拓扑。举例来说,开发者可被视为界定执行图表,所述执行图表界定执行模型10的管线拓扑。在此执行图表中,内核14A到14C可被视为与缓冲器12A到12D互连的节点。0050在一些实例中,开发者还可将不同的执行模型互连。举例来说,不是界定用于数据处理算法的一个执行模。
35、型,开发者可开发多个执行模型,其中每一执行模型实施数据处理算法的一部分。在这些实例中,执行模型中的每一者内的内核可实施整个数据处理算法的所述部分的子部分。开发者可以类似于将内核14A到14C及缓冲器12A到12D互连的方式将实施执行模型互连。举例来说,开发者可将缓冲器12A互连到另一执行模型且/或将内核14C互连到另一执行模型。0051界定多个执行模型可为有益的。如更详细地描述,处理器可将例如执行模型10等执行模型编译为目标代码且存储所得的目标代码。在其中执行模型10是多个执行模型中的一者的实例中,处理器可能不需要重新编译执行模型10。换句话说,可将执行模型视为用于整个数据处理算法的建筑块,或。
36、可界定数据处理算法的整体。于是不需要针对其中使用执行模型的每个例子重新编译通常使用的执行模型。0052除了界定执行模型10的拓扑之外,开发者还可界定缓冲器12A到12D及内核14A到14D的特性。开发者可使用上文所描述的GUI或基于命令的格式来界定所述特性。开发者可界定缓冲器12A到12D内的存储位置的数目即,缓冲器12A到12D的长度。开发者还可界定可存储于缓冲器12A到12D的每一存储位置内的数据量即,缓冲器12A到12D的宽度。说明书CN104137070A107/18页110053在一些实例中,开发者可界定缓冲器12A到12D的尺寸。举例来说,例如卷积等一些图像处理技术发生在像素块例如。
37、,77像素块上。在这些实例中,缓冲器12A到12D是二维缓冲器从而以块形式存储像素可为有益的。举例来说,如果像素块是77像素块,那么缓冲器12A到12D中的一或多者可被配置有77个存储位置即,配置为二维缓冲器,而不是具有49个存储位置的线性缓冲器。0054对于内核14A到14C,作为一个实例,开发者可界定放大因数。所述放大因数可指示所述内核针对所述内核所消耗的给定数据量而产生的最大数据量。举例来说,如果内核14B的所述放大因数是二,并且内核14B从缓冲器12B接收五个数据包,那么内核14B将产生的最大数据量是十个数据包。作为另一实例,对于内核14A到14C中的一或多者,开发者还可界定内核将产生。
38、的最大数据量例如,独立于所接收的数据量。0055作为又另一实例,开发者可将相对重要性指派给内核14A到14C。举例来说,所述重要性可指示内核14A到14C中的哪一者应无中断地执行,使得内核14A到14C中的更重要的内核无中断地执行,而内核14A到14C中的较不重要的内核可无中断地或中断地执行即,间歇地暂停所述执行以可用于其它执行。0056内核14A到14C及缓冲器12A到12D的特性是出于说明的目的而描述,切不应被视为是限制性的。开发者可能不需要界定上文所描述的所有实例特性。举例来说,开发者可能界定缓冲器12A到12D的大小例如,长度和宽度,且不界定内核14A到14C的任何特性。在这些实例中,。
39、内核14A到14C产生或消耗的数据量可为不重要的,因为缓冲器12A到12D的大小已经界定。作为另一实例,开发者可界定内核14A到14C产生的数据的放大因数或最大量,且不界定缓冲器12A到12D的任何特性。在这些实例中,编译执行模型10的处理器可能够基于内核14A到14C产生的数据的所述放大因数和/或最大量而确定缓冲器12A到12D的大小。而且,在这些实例中,编译执行模型10的处理器可能够确定缓冲器12A到12D是应为一维即,线性缓冲器还是多维缓冲器。0057一般来说,开发者或处理器可确定内核14A到14C和缓冲器12A到12D的特性以避免“死锁”情形,同时确保缓冲器12A到12D不过大。当消费。
40、者内核期望未存储于消费者内核从其接收数据的缓冲器中的数据时,或当缓冲器数据溢出时因为产生者内核比消费者内核消耗数据更快地存储数据,可发生死锁情形。在死锁情形中,内核可“悬挂”,且停止实施数据处理算法,除非采取额外的步骤来确保内核不在死锁情形中悬挂。在一些例子中,界定内核14A到14C及缓冲器12A到12D的特性可为较佳的,使得不发生死锁,而不是配置GPU来实施额外的任务来避免在发生死锁时悬挂。0058开发者或处理器界定大小相对大的缓冲器12A到12D来减轻死锁可为可能的。然而,如果缓冲器12A到12D的大小不必要地大,那么处理器可能要比所需的存储器空间为缓冲器12A到12D保留多得多的存储器空。
41、间,这可导致低效的存储器使用。0059因此,通过界定缓冲器12A到12D和/或内核14A到14C的特性,开发者可能够界定执行模型10,使得降低死锁的机会,同时有效地使用存储器。以此方式,开发者可界定完全有限制的静态执行模型10。举例来说,开发者可在实施之前界定实施执行模型10所需的内核14A到14C及缓冲器12A到12D的数目以及缓冲器12A到12D和/或内核14A到14C的特性,而不是动态地即,在实施期间界定实施执行模型10所需的内核和缓冲器的数目。说明书CN104137070A118/18页120060开发者可将执行模型10存储在包含实施数据处理算法的GPU的装置上。举例来说,开发者可存储。
42、命令列表,所述命令列表指定包含GPU的装置上的执行模型10的管线拓扑。在一些实例中,开发者不将执行模型10存储在装置上,装置的用户可下载执行模型10以供存储在装置上。一般来说,包含实施数据处理算法的GPU的装置存储执行模型10的方式可不是对本发明中所描述的技术的约束。换句话说,可利用任何技术将执行模型10例如,执行模型10的命令的列表存储在包含将在其上实施数据处理算法的GPU的装置上。举例来说,开发者在其上界定执行模型10的计算装置是包含将实施数据处理算法的GPU的相同计算装置可甚至是可能的。0061如更详细地描述,包含GPU的装置还可包含处理器。所述处理器可接收执行模型10且将执行模型10编。
43、译为目标代码,GPU将执行所述目标代码来实施由执行模型10界定的数据处理算法。根据本发明中所描述的技术,处理器可在虑及GPU的处理能力的情况下编译执行模型10。0062因此,开发者可以平台独立的方式界定执行模型10的管线拓扑即,不考虑将实施数据处理算法的GPU的类型。包含GPU的装置的处理器可基于执行模型10产生指令,所述指令界定GPU将实施执行模型10的方式。举例来说,处理器可编译执行模型10,且产生指令以作为所述编译的部分。在执行模型10的编译期间,处理器可虑及GPU的处理能力。以此方式,处理器可优化执行模型10以用于在GPU上实施。这可允许开发者将执行模型10开发为产生高度便携的执行模型。
44、的灵活且容易理解的方式即,可有效地实施于不同类型的GPU上以用于异构计算的模型。开发者可不需要在GPU的平台专有或实施方案界定的行为中关注自身。0063此外,以有限制的方式界定孩子厦门行10可允许对执行模型10进行某一内置的调试。作为一个实例,界定执行模型10可减少死锁的机会,如上文所描述。另外,对于无限制的执行模型,以下情况可为可能的开发者界定第一内核以输出将由第二内核消耗的数据,且在实施期间无意地界定第二内核以致使第一内核执行,使得所述第一内核消耗由第二内核产生的数据。这实际上产生无限循环。对于无限制的执行模型,可不存在在实施之前确定此情形存在的方式。0064然而,在有限制的执行模型10的。
45、情况下,开发者可能够容易地避免产生此类无限循环。举例来说,开发者可能够在GUI上查看他或她曾创建此无限循环。作为另一实例,当应用将执行模型10的管线拓扑转换为执行模型10的命令列表时,所述应用可能够确定是否存在任何此类无限循环。0065图2是说明根据本发明中所描述的一或多个实例的装置的实例的框图。举例来说,图2说明装置16。装置16的实例包含,但不限于,例如媒体播放器等视频装置、机顶盒、例如移动电话等无线手持机、个人数字助理PDA、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置等。装置16可包含除了图2中所说明的组件之外的组件。0066如所说明,装置16包含集成电路IC18。
46、和全局存储器20。全局存储器20可被视为装置16的存储器。举例来说,全局存储器20可在IC18的外部,且IC18和全局存储器20可经由系统总线36进行通信。存储装置20可包括一或多个计算机可读存储媒体。全局存储器20的实例包含,但不限于,随机存取存储器RAM,或可用于以指令和/或数据结构的形式携载或存储所需的程序代码且可由计算机或处理器存取的任何其它媒体。说明书CN104137070A129/18页130067在一些方面中,全局存储器20可包含致使处理器22和/或图形处理单元GPU24执行归于本发明中的处理器22和GPU24的功能的指令。因此,全局存储器20可为其上存储有指令的计算机可读存储媒。
47、体,所述指令在被执行时致使一或多个处理器例如,处理器22和GPU24执行各种功能。0068在一些实例中,全局存储器20可被视为非暂时性存储媒体。术语“非暂时性”可指示所述存储媒体未体现于载波或所传播信号中。然而,术语“非暂时性”不应被解释为意味着全局存储器20是非可移动的或其内容是静态的。作为一个实例,全局存储器20可从装置16被移除,且移动到另一装置。作为另一实例,大体上类似于全局存储器20的全局存储器可插入到装置16中。在某些实例中,非暂时性存储媒体可存储可随着时间改变的数据例如,在RAM中。0069IC18包含处理器22和图形处理单元GPU24。IC18可包含额外的组件,例如用以与全局存。
48、储器20通信的接口单元、用以管理全局存储器20内的存储器的单元,及例如显示器处理器等其它处理单元。IC18可为收容或形成处理器22和GPU24的任何类型的集成电路。举例来说,IC18可被视为芯片封装内的处理芯片。0070虽然处理器22和GPU24被说明为单个IC18的部分,但本发明的方面不限于此。在一些实例中,处理器22和GPU24可被收容在不同的集成电路即,不同的芯片封装中。0071处理器22和GPU24的实例包含,但不限于,数字信号处理器DSP、通用微处理器、专用集成电路ASIC、现场可编程逻辑阵列FPGA或其它等效集成或离散逻辑电路。在一些实例中,GPU24可为专用硬件,其包含向GPU2。
49、4提供适合于图形处理的大规模并行处理能力的集成和/或离散逻辑电路。在一些例子中,GPU24还可在实施通用处理任务即,非图形相关任务时包含通用处理,且可被称作通用GPUGPGPU。0072处理器22有时被称作主机可为装置16的中央处理单元CPU。处理器22可执行各种类型的应用。所述应用的实例包含网络浏览器、电子阅读器、电子邮件应用、电子表格、视频游戏、视频回放、音频回放、文字处理、产生可观看的对象以供显示的其它应用,或任何其它类型的应用。全局存储器20可存储用于执行一或多个应用的指令。0073在一些实例中,处理器22可将处理任务卸载到GPU24,例如需要大规模并行操作的任务。作为一个实例,图形处。
50、理需要大规模并行操作,且处理器22可将此些图形处理任务卸载到GPU24。在一些实例中,处理器22可将与图形处理无关的任务卸载到GPU24。举例来说,例如矩阵操作、图像处理及视频处理等数据处理算法需要并行操作,且GPU24与处理器22相比可更好地适合于实施此些操作。0074为了实施任务,GPU24可经配置以执行一或多个应用。举例来说,对于图形相关处理,GPU24可执行例如顶点着色器、片段着色器和几何着色器等应用。对于非图形相关应用,GPU24可执行针对此处理设计的应用例如,用于实施矩阵操作的应用或用于流体动力学的应用。对于任一实例例如,图形相关处理或非图形相关处理,处理器22可指令GPU24执行。