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

文档序号:8942920阅读:来源:国知局
同时运行。计算平台层111可保持数 据结构,或者计算装置数据结构,从而保存每个附接的物理计算装置的处理能力。在一个实 施例中,应用程序可通过计算平台层111,获取与主系统101的可用处理资源有关的信息。 应用程序可通过计算平台层111,选择和指定执行处理任务的能力要求。因此,计算平台层 111可确定物理计算装置的配置,以为处理任务分配和初始化源自于附接的CPU 117和/或 GPU 115的处理资源。在一个实施例中,计算平台层111可产生与所配置的一个或多个实际 的物理计算装置对应的用于应用程序的一个或多个逻辑计算装置。
[0031] 计算运行时层109可按照所配置的用于应用程序103的处理资源,例如,基于一个 或多个逻辑计算装置,管理处理任务的执行。在一个实施例中,执行处理任务可包括创建代 表所述处理任务的计算程序对象,和分配用于保持可执行代码、输入/输出数据等的存储 资源。为计算程序对象载入的可执行代码可以是计算程序可执行代码。计算程序可执行代 码可被包括在将在计算处理器或计算单元,诸如CPU或GPU,中执行的计算程序对象中。计 算运行时层109可与所分配的物理装置交互,以实现处理任务的实际执行。在一个实施例 中,计算运行时层109可按照为处理任务配置的每个处理器,诸如CPU或GPU,的运行时状 态,协调执行来自不同应用程序的多个处理任务。计算运行时层109可根据所述运行时状 态,从被配置成执行处理任务的物理计算装置中选择一个或多个处理器。执行处理任务可 包括同时在多个物理计算装置中执行一个或多个可执行代码的多个线程。在一个实施例 中,计算运行时层109可通过监控每个处理器的运行时执行状态,跟踪每个所执行的处理 任务的状态。
[0032] 运行时层可从应用程序103载入作为与处理任务对应的计算程序可执行代码的 一个或多个可执行代码。在一个实施例中,计算运行时层109自动从计算应用程序库105 载入执行处理任务所需的其它可执行代码。计算运行时层109可从应用程序103或计算应 用程序库105载入计算程序对象的可执行代码及与可执行代码对应的源程序。计算程序对 象的源程序可以是计算程序源代码(source)。可按照被配置成包括多个类型和/或不同版 本的物理计算装置的逻辑计算装置,载入基于单一计算程序源代码的多个可执行代码。在 一个实施例中,计算运行时层109可激活计算编译器107,以在线把载入的源程序编译成为 被配置成执行可执行代码的目标处理器(例如CPU或GPU)优化的可执行代码。
[0033] 除了按照对应的源程序的现有可执行代码之外,还可保存在线编译的可执行代码 以供未来调用。另外,可执行代码可被离线编译,并利用API调用被载入到计算运行时层 109。计算应用程序库105和/或应用程序103可响应于来自应用程序的库API请求,载入 相关的可执行代码。可为计算应用程序库105或者为应用程序103,动态更新新编译的可执 行代码。在一个实施例中,对于新升级版本的计算装置,计算运行时层109可用通过计算编 译器107在线编译的新的可执行代码,替换应用程序中的现有计算程序可执行代码。计算 运行时层109可插入在线编译的新的可执行代码,以更新计算应用程序库105。在一个实施 例中,当载入处理任务的可执行代码时,计算运行时109可调用计算编译器107。在另一个 实施例中,计算编译器107可被离线调用,以建立计算应用程序库105的可执行代码。计算 编译器107可编译和链接计算内核程序,以产生计算程序可执行代码。在一个实施例中,计 算应用程序库105可包括支持例如开发工具包和/或图像处理的多个函数。每个库函数可 对应于多个物理计算装置的计算程序源代码和保存在计算应用程序库105中的一个或多 个计算程序可执行代码。
[0034] 图2是图解说明具有并行操作以同时执行多个线程的多个计算处理器(例如,计 算单元)的计算装置的一个例子的方框图。每个计算处理器可并行(或者同时)执行多个 线程。可在一个计算处理器或计算单元中并行执行的线程可被称为线程组。一个计算装置 可具有能够被并行执行的多个线程组。例如,图中表示了 M个线程,以作为一个线程组在计 算装置205中执行。多个线程组,例如计算处理器_1 205的线程1和计算处理器_L 203 的线程N可跨一个计算装置上的不同计算处理器或者跨多个计算装置而并行执行。跨多个 计算处理器的多个线程组可并行执行计算程序可执行代码。多于一个的计算处理器可以单 芯片,诸如ASIC(专用集成电路)装置为基础。在一个实施例中,可以跨多个芯片,在多于 一个的计算处理器中同时执行来自应用程序的多个线程。
[0035] 计算装置可包括一个或多个计算处理器或计算单元,诸如处理器_1 205和处理 器_1^ 203。局部存储器可以与计算处理器耦接。在运行于计算处理器中的单个线程组中的 线程之间共用的局部存储器可由与计算处理器耦接的局部存储器支持。来自不同线程组的 多个线程,诸如线程1 213和线程N 209可共用保存在与计算装置201耦接的计算装置存 储器217中的计算存储对象,诸如流。计算装置存储器217可包括全局存储器和常数存储 器。全局存储器可被用于分配计算存储对象,诸如流。计算存储对象可包括可由计算程序 可执行代码操作的数据元素集合。计算存储对象可代表图像,纹理,帧缓冲器,一组标量数 据类型,一组用户定义的结构,或者变量等等。常数存储器可以是保存计算程序可执行代码 经常使用的常数变量的只读存储器。
[0036] 在一个实施例中,用于计算处理器或计算单元的局部存储器可被用于分配由线程 组中的所有线程或者线程组共用的变量。局部存储器可被实现成专用局部存储装置,诸如 处理器_1的局部共用存储器219,和处理器_L的局部共用存储器211。在另一个实施例 中,计算处理器的局部存储器可被实现成计算装置的一个或多个计算处理器的计算装置存 储器的读-写高速缓存,诸如计算装置201中的计算处理器205, 203的数据高速缓存215。 专用局部存储器不被不同线程组的线程共用。如果计算处理器,诸如处理器_1205的局部 存储器被实现成读-写高速缓存,例如数据高速缓存215,那么表明在该局部存储器中的变 量可以分配自计算装置存储器217,并被高速缓存在实现该局部存储器的读-写高速缓存, 诸如数据高速缓存215中。当例如读-写高速缓存和专用局部存储装置都不可供对应的计 算装置利用时,线程组内的线程可共用在计算装置存储器217中分配的局部变量。在一个 实施例中,每个线程与保存由在该线程中调用的函数所使用的线程私有变量的专用存储器 关联。例如,除线程1 213外的线程看不到专用存储器1 211。
[0037] 图3是图解说明利用计算装置标识符被配置成一个逻辑计算装置的多个物理计 算装置的一个实施例的方框图。在一个实施例中,应用程序303和平台层305可运行于主 CPU 301中。应用程序303可以是图1的应用程序103之一。主系统101可包括主CPU 301。 每个物理计算装置 Physical_Compute_Device_l 305 至 Physical_Compute_Device_N 311 可以是图1的CPU 117或GPU 115之一。在一个实施例中,计算平台层111可响应于来自应 用程序303的API请求,产生计算装置标识符307,以便按照包括在API请求中的能力要求 的列表,配置数据并行处理资源。计算装置标识符307可涉及按照计算平台层111的配置 选择实际物理计算装置 Physical_Compute_Device_l 305 至 Physical_Compute_Device_N 311。在一个实施例中,逻辑计算装置309可代表与主CPU 301分离的一组所选择的实际物 理计算装置。
[0038] 图4是图解说明通过匹配从应用程序接收的能力要求,用计算装置标识符配置多 个物理计算装置的处理400的实施例的流程图。例证处理400可由可包含硬件(电路,专 用逻辑等)、软件(诸如在专用机器上运行的软件)或其组合的处理逻辑执行。例如,可按 照由主系统101托管的数据处理系统中的图1的系统100执行处理400。该数据处理系统 可包括托管平台层,诸如图1的计算平台层111的主处理器,和附接在所述主处理器上的多 个物理计算装置,诸如图1的CPU 117和GPU 115。
[0039] 在方框401,在一个实施例中,处理400的处理逻辑可建立代表与一个或多个对应 能力相关的多个物理计算装置的数据结构(或者计算装置数据结构)。每个物理计算装置 可被附接到执行处理400的处理逻辑的处理系统。物理计算装置,诸如CPU或GPU的能力 或者计算能力可包括该物理计算装置是否支持某一处理特征,存储器访问机制,指定扩展 (named extension)或者相关限制。处理特征可以涉及专用纹理化硬件支持,双精度浮点运 算或者同步支持(例如,互斥)。
[0040] 计算装置的能力可包括指示与计算装置相关的处理特性或限制的类型。应用程序 可指定一种所需的计算装置,或者利用API询问特定计算装置的类型。不同类型的计算装 置的例子示于下表中:
[0041]
[0042] 表 1
[0043] 另外,计算装置的能力可包括,例如,如下表中所示的配置值:
[0044]
[0045]
[0046]
[0047]
[0048] 表 2
[0049] 物理处理装置的存储器访问机制可与变量高速缓存的类型(例如,不支持,只读, 或者读-写)、计算存储对象高速缓存的类型、支持的高速缓存的大小、支持的专用局部存 储器或者有关限制相关。存储器访问限制可包括计算程序可执行代码能够同时读取或写入 的计算存储对象的最大数目,能够被分配的计算存储对象的最大数目,或者沿着多维计算 存储对象的一维的最大大小,例如,2D(二维)图像的计算存储对象的最大宽度。数据处理 系统的系统应用程序可响应于把新的物理计算装置附接到数据处理系统而更新数据结构。 在一个实施例中,物理计算装置的能力可以是预先确定的。在另一个实施例中,数据处理系 统的系统应用程序可在运行时期间发现新附接的物理处理装置。系统应用程序可获取新发 现的物理计算装置的能力,以更新代表所附接的物理计算装置及其对应能力的数据结构。
[0050] 按照一个实施例,在方框403,处理400的处理逻辑可从应用程序接收计算能力要 求。应用程序可通过调用API,把计算能力要求发送给系统应用程序。系统应用程序可对应 于应用程序的主系统中的软件栈的平台层。在一个实施例中,计算能力要求可识别请求处
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1