用于在多处理器上进行数据并行计算的应用编程接口的制作方法

文档序号:8942920阅读:549来源:国知局
用于在多处理器上进行数据并行计算的应用编程接口的制作方法【专利说明】[0001]本申请是申请日为2009年4月20日申请号为200980128250.0(国际【申请号】PCT/US2009/041152)发明名称为"用于在多处理器上进行数据并行计算的应用编程接口"的发明专利申请的分案申请。
技术领域
[0002]本发明一般涉及数据并行计算。更具体地,本发明涉及用于跨CPU(中央处理单元)和GPU(图形处理单元)进行数据并行计算的应用编程接口(API)。【
背景技术
】[0003]随着GPU继续发展成高性能并行计算装置,编写了越来越多的应用程序以在类似于通用计算装置的GPU中执行数据并行计算。目前,这些应用程序被设计成利用厂家特有的接口在特定的GPU上运行。从而,即使当在数据处理系统中,既有GPU又有CPU可用时,这些应用程序也不能利用CPU的处理资源。也不能跨越运行这种应用程序的不同厂家的GPU来利用处理资源。[0004]不过,随着越来越多的CPU包含多个核芯以执行数据并行计算,越来越多的处理任务可由CPU和/或GPU(只要任一个可用)支持。按照惯例,GPU和CPU是通过彼此不兼容的独立编程环境来配置的。多数GPU需要厂家特有的专用程序。结果,应用程序很难利用CPU和GPU两者的处理资源,例如,利用具有数据并行计算能力的GPU以及多芯CPU的处理资源。[0005]因此,在现代数据处理系统中,需要克服上述问题,以使应用程序能够通过利用能够执行任务的任何可用处理资源,诸如CPU和一个或多个GPU,来执行所述任务。【
发明内容】[0006]本发明的实施例包括用于调用主处理器中的API以在计算单元之间并行执行数据处理任务的并行计算程序的方法和设备,所述计算单元包括耦接到主处理器的GPU(图形处理单元)和CPU(中央处理单元)。按照API调用在耦接到主处理器的存储器中产生与数据处理任务的源代码相对应的程序对象。按照API调用由程序对象产生针对计算单元的可执行代码以便载入以在计算单元之间同时执行从而执行数据处理任务。[0007]根据附图和下面的详细说明,本发明的其它特征将是显而易见的。【附图说明】[0008]附图中非限制性地举例说明了本发明,其中相同的附图标记指示相同的元件,其中:[0009]图1是图解说明配置包括CPU和/或GPU的计算装置以便为应用程序执行数据并行计算的系统的一个实施例的方框图;[0010]图2是图解说明具有用以同时执行多个线程的并行操作的多个计算处理器的计算装置的一个例子的方框图;[0011]图3是图解说明利用计算装置标识符的、被配置成一个逻辑计算装置的多个物理计算装置的一个实施例的方框图;[0012]图4是图解说明通过匹配从应用程序接收的能力要求用计算装置标识符配置多个物理计算装置的处理过程的实施例的流程图;[0013]图5是图解说明在逻辑计算装置中执行计算可执行代码的处理过程的实施例的流程图;[0014]图6是图解说明载入可执行代码的运行时处理过程的实施例的流程图,其中包括编译为执行该可执行代码而确定的一个或多个物理计算装置的源代码;[0015]图7是图解说明从执行队列中选择计算内核执行实例以便在和与执行实例相关的逻辑计算装置对应的一个或多个物理计算装置中执行的处理过程的一个实施例的流程图;[0016]图8是图解说明确定最佳的线程组大小以便在多个计算单元之间同时执行计算内核对象的处理过程的一个实施例的流程图;[0017]图9A是图解说明通过按照多个物理计算装置把一个或多个API的源代码和多个可执行代码保存在API库中来构建API(应用编程接口)库的处理过程的一个实施例的流程图;[0018]图9B是图解说明应用程序基于API请求执行从API库获取的多个可执行代码之一连同对应的源代码的处理过程的一个实施例的流程图;[0019]图10是图解说明要在多个物理计算装置中执行的计算内核可执行代码的计算内核源代码的例子的样本源代码;[0020]图IIA-IIC包括图解说明通过调用API来配置在多个物理计算装置中执行多个可执行代码之一的逻辑计算装置的例子的样本源代码;以及[0021]图12图解说明具有可与这里描述的实施例一起使用的多个CPU和GPU(图形处理单元)的典型计算机系统的一个例子。【具体实施方式】[0022]这里描述一种用于多处理器上的数据并行计算的方法和设备。在下面的说明中,陈述了众多的具体细节,以便更透彻地说明本发明的实施例。不过,对本领域普通技术人员来说,显然可在没有这些具体细节的情况下实践本发明的实施例。在其它情况下,未详细说明公知的组件、结构和技术,以避免模糊对本发明的理解。[0023]说明书中对"一个实施例"或"实施例"的引用意味着结合该实施例描述的特定特征、结构或特性可被包括在本发明的至少一个实施例中。在说明书中的各个地方出现的短语"在一个实施例中"不一定都指的是同一个实施例。[0024]在下面的附图中描述的处理由包含硬件(例如,电路、专用逻辑等)和/或软件(诸如,在通用计算机系统或专用机器上运行的软件)的处理逻辑执行。尽管下面是利用一些顺序操作说明所述处理的,但是应认识到这些操作中的一些可按照不同的顺序执行。此外,一些操作可并行执行,而不是顺序执行。[0025]图形处理单元(GPU)是实现高效图形操作,诸如2D、3D图形操作和/或与数字视频相关功能,的专用图形处理器。GPU可包括执行图形操作一一例如绘图处理器(blitter)操作、纹理映射、多边形渲染、像素阴影和顶点阴影一一的专用(可编程)硬件。已知GPU从帧缓冲器获取数据,并把像素混合在一起,以把图像渲染回到帧缓冲器以便显示。GPU还可控制帧缓冲器,允许帧缓冲器用于刷新显示器,例如CRT或IXD显示器。CRT或IXD显示器是要求以至少为20Hz的速率进行刷新(例如,每1/30秒,用来自帧缓冲器的数据刷新显示器)的短余辉显示器。通常,GPU可从与GPU耦接的CPU获得图形处理任务,以通过显示控制器向显示装置输出光栅图形图像。说明书中对"GPU"的引用可以是如在Lindholdm等人的美国专利No.7015913,"MethodandApparatusforMultitheradedProcessingofDataInaProgrammableGraphicsProcessor",和Swan等人的美国专利No.6970206,"MethodforDeinterlacingInterlacedVideobyAGraphicsProcessor"中描述的图形处理器或可编程图形处理器,这两件美国专利在此引为参考。[0026]在一个实施例中,多个不同类型的处理器,诸如CPU或GPU可同时执行一个或多个应用程序的数据并行处理任务,以提高数据处理系统中的可用处理资源的利用效率。数据处理系统的处理资源可基于多个物理计算装置,诸如CPU或GPU。物理计算装置可包括一个或多个计算单元。在一个实施例中,数据并行处理任务(或者数据并行任务)可被委托给多种类型的处理器,例如能够执行所述任务的CPU或GPU。数据并行任务可能向处理器要求某些特定的处理能力。例如,处理能力可以是专用纹理化硬件支持,双精度浮点运算,专用局部存储器,流式数据高速缓存或者同步原语。不同类型的处理器可提供不同然而重叠的多组处理能力。例如,CPU和GPU都能够执行双精度浮点计算。在一个实施例中,应用程序能够利用CPU或GPU(不论哪一个可用)来执行数据并行处理任务。[0027]在另一个实施例中,为数据并行处理任务选择和分配多个不同类型的处理资源可在运行时期间内自动执行。应用程序可通过API向数据处理系统的运行时平台发送包括数据处理任务的能力要求的期望列表的提示。按照收到的提示,运行时平台可确定具有能力与收到的提示匹配的多个目前可用的CPU和/或GPU,以委派应用程序的数据处理任务。在一个实施例中,能力要求的列表可取决于基础的数据处理任务。能力要求列表可适用于不同组的处理器或计算单元,例如包括不同厂家和不同版本的GPU和多核芯CPU。从而,可以使应用程序与提供以特定类型的计算单元,诸如CPU或GPU为目标的程序隔离。[0028]此外,在另一个实施例中,可按照数据并行任务的基础问题空间,进行在所选择的计算单元之间分配和分组并行执行的多个线程。分析将在所选计算单元中执行的源代码的表示可确定应如何最佳地划分处理任务和在所选计算单元之间分配该处理任务。API接口可允许应用程序指定应如何通过在所选计算单元之间用线程组执行可执行代码(executable)而执行数据并行任务。另外,通过利用API,应用程序可根据在所选计算单元之间执行数据并行任务的资源要求,获取关于数据并行任务的最佳划分的建议。[0029]图1是图解说明配置包括CPU和/或GPU的计算装置以便为应用程序执行数据并行计算的系统100的一个实施例的方框图。系统100可实现并行计算体系结构。在一个实施例中,系统100可以是包括通过数据总线113与一个或多个中央处理器117和诸如媒体处理器115之类的一个或多个其它处理器耦接的一个或多个主处理器的图形系统。所述多个主处理器可在主系统101中被联网在一起。所述多个中央处理器117可包括来自不同厂家的多核芯CPU。计算处理器或计算单元,诸如CPU或GPU,可以与一组能力相关联。例如,媒体处理器可以是具有专用纹理渲染硬件的GPU。另一种媒体处理器可以是支持专用纹理植染硬件和双精度浮点运算的GPU。对于可升级连接界面(ScalableLinkInterface,SLI)或交叉火力(CrossFire)配置来说,多个GPU可被连接在一起。[0030]在一个实施例中,主系统101可支持软件栈。软件栈可包括软件栈组件,诸如应用程序103,计算平台层111,例如,OpenCL(开放式计算语言)平台,计算运行时层109,计算编译器107和计算应用程序库105。应用程序103可通过API调用与其它栈组件接口。对于主系统101中的应用程序103,一个或多个线程可当前第1页1 2 3 4 5 6 
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1