用于混合系统的分布式功能执行的制作方法
【专利摘要】一种方法,包括:通过包括一个或多个处理器的主机来处理应用;将所述应用的至少部分分布到加速器,以用于执行。所述方法包括:指令所述加速器在所述加速器上创建缓冲器;并且指令所述加速器执行所述应用的部分,其中,所述加速器将数据写入到所述缓冲器。所述方法还包括:在所述应用请求所述缓冲器中的数据之前,指令所述加速器将所述缓冲器中的数据发送到所述主机。所述加速器基于所述主机中的一个或多个运行时间条件在将数据发送到所述主机之前聚合所述缓冲器中的数据。
【专利说明】用于混合系统的分布式功能执行
【技术领域】
[0001]本公开通常涉及分布式功能执行,更具体地说,涉及用于使用OpenCL的混合系统的分布式功能执行。
【背景技术】
[0002]开放计算语言(OpenCL)是用于编写跨越包括CPU、图形处理单元(GPU)和其它处理器的异构平台而执行的程序的框架。OpenCL包括用于写内核(其作为在OpenCL设备上执行的功能)以及API (其用于定义并且然后控制平台)的语言。OpenCL使用基于任务和基于数据的并行性来提供并行计算。OpenCL被设计为提供用于非图形计算的对图形处理单元的应用访问,并且由此将GPU的能力扩展超出图形。
[0003]当前的OpenCL运行时间环境不可用于与特定架构(例如IBM的System z) —起使用。为了这些架构利用OpenCL,架构必须远程访问分离架构上的OpenCL运行时间。在zEnterprise配置中,System z主机可以调用通常被称为加速器的另一设备上的计算密集功能(computat1n-ally intensive funct1n)。为了 zOS 地址空间或 zLinux 处理访问OpenCL主机程序中的API,可以使用远程过程调用(RPC)方案。然而,结合OpenCL使用当前可用的RPC方案存在若干缺陷。由于OpenCL被设计为与非分布式系统一起使用,因此OpenCL未被设计为优化各种处理器与系统中的设备所使用的缓冲器之间的数据传输。
【发明内容】
[0004]根据本公开的一个实施例,一种用于混合系统上的分布式功能执行的方法,包括:通过包括一个或多个处理器的主机处理应用;将所述应用的至少部分分布到加速器,以用于执行。所述方法包括:指令所述加速器在所述加速器上创建缓冲器;指令所述加速器执行所述应用的部分,其中,所述加速器将数据写入到所述缓冲器。所述方法还包括:在所述应用请求所述缓冲器中的数据之前,指令所述加速器将所述缓冲器中的数据发送到所述主机。所述加速器基于所述主机中的一个或多个运行时间条件在将数据发送到所述主机之前聚合所述缓冲器中的数据。
[0005]根据本公开的另一实施例,一种包括具有实施有计算机可读程序代码的计算机可读存储介质的计算机程序产品,所述计算机可读程序代码包括被配置为处理主机上的应用的计算机可读程序代码。所述计算机可读程序代码被配置为:将所述应用的至少部分分布到加速器,以用于执行;以及指令所述加速器在所述加速器上创建缓冲器。所述计算机可读程序代码还被配置为:指令所述加速器执行所述应用的部分,其中,所述加速器将数据写入到所述缓冲器,并且在所述应用请求所述缓冲器中的数据之前指令所述加速器将所述缓冲器中的数据发送到所述主机。所述加速器基于所述主机中的一个或多个运行时间条件在将数据发送到所述主机之前聚合所述缓冲器中的数据。
[0006]根据本公开的又一实施例,一种用于分布式功能执行的系统,所述系统包括:与加速器操作通信的主机。所述系统被配置为执行方法,所述方法包括:通过所述主机处理应用;并且将所述应用的至少部分分布到所述加速器,以用于执行。所述方法还包括:指令所述加速器在所述加速器上创建缓冲器;指令所述加速器执行所述应用的部分,其中,所述加速器将数据写入到所述缓冲器,并且在所述应用请求所述缓冲器中的数据之前指令所述加速器将所述缓冲器中的数据发送到所述主机。所述加速器基于所述主机中的一个或多个运行时间条件在将数据发送到所述主机之前聚合所述缓冲器中的数据。
[0007]通过本发明的技术来实现附加的特征和优点。本发明的其它实施例和方面在此详细描述并且被看作所要求的本发明的一部分。为了更好地理解具有优点和特征的本发明,参照描述和附图。
【专利附图】
【附图说明】
[0008]在说明书的权利要求中特别地指出并且特定地要求被看作本发明的主题。从结合附图的以下详细描述,本发明的以上和其它特征和优点是显然的,其中:
[0009]图1是图示OpenCL方法的操作的流程图;
[0010]图2是图示用于使用OpenCL的分布式功能执行的系统的框图;
[0011]图3是图示用于混合系统上的分布式功能执行的方法的流程图。
【具体实施方式】
[0012]现参照图1,示出图示OpenCL方法的操作的流程图。如在块10所示,主机处理用于执行的应用。主机创建作为应用的部分的一个或多个内核,并且将它们分布到一个或多个加速器,如在主机方向下在块12所示。接下来,如在块14所示,主机创建一个或多个缓冲器并且将其写入到加速器。缓冲器可以包括用于执行的内核所需的数据。一旦缓冲器已经被创建并写入在加速器上,通过主机在加速器上排队执行内核,如在块16所示。如在块18所示,内核随后在加速器上执行。内核执行的输出结果写入到加速器上的缓冲器,如在块20所示。最后,加速器上的缓冲器可以通过调用主机读回,如在块22所示。
[0013]现参照图2,图示用于使用OpenCL的分布式功能执行的混合系统100的框图。混合系统100包括经由通信链路106连接的主机102和加速器104。在示例性实施例中,主机102可以具有System z操作系统(例如zOS或zLinux),而加速器104可以具有任何其它类型的操作系统(例如AIX或Linux)。主机102包括数据管理和调度库108,其允许主机102上的OpenCL源调用加速器104上的执行内核124。预处理器120在主机OpenCL源代码的编译期间运行。预处理器120执行静态代码分析,以确定内核与缓冲器数据之间的关系以及它们的对应使用模型。预处理器输出是包含这些关联的表。数据管理和调度库108用于控制OpenCL主机程序和关联加速器内核的操作以及主机与加速器之间的数据移动。
[0014]在一个实施例中,主机102和加速器104可以使用数据通信或同步库(DaCS)或TCP/IP套接作为传送层,以彼此进行通信。加速器104还包括OpenCL加速器运行时间环境110,其充当用于主机102的代理,并且代表主机102调用OpenCL API。OpenCL加速器运行时间环境110响应主机命令,并且将事件通知发送回到主机。加速器104包括可以由OpenCL加速器运行时间环境110利用的本机编译器122。主机102可以包括主机守护进程(daemon) 112,并且加速器104可以包括加速器守护进程114,它们用于配置主机102与加速器104之间的通信链路106,并且允许通过包括加速器与主机之间的网络拓扑的主机管理加速器。主机102包括一个或多个主机缓冲器116,并且加速器包括一个或多个加速器缓冲器118。在其它实施例中,DaCS可以由TCP/IP、Infiniband或MPI替代。在加速器代理110经由108从主机接收命令并且使用通信链路106来发送通知的同时,加速器守护进程112和主机守护进程114提供控制路径支持。
[0015]在示例性实施例中,数据管理和调度库108可以确定哪些加速器缓冲器118将在内核执行之后从加速器104读回到主机102。数据管理和调度库108可以指令OpenCL加速器运行时间环境110在内核执行之后将这些加速器缓冲器118从加速器104推送到主机102。通过有选择地将加速器104上的加速器缓冲器118中的数据推送到主机102、并且在主机缓冲器116中存储数据,数据管理和调度库108通过为主机102提供对主机缓冲器116中的数据的访问,而无需等待主机102从加速器104请求数据,来增加执行速度并且使得等待时间最小化。在特定实例中,主机102可以无需读取加速器104上的内核所写入的加速器缓冲器118。例如,这些加速器缓冲器118可以仅需要用于执行加速器104上的另一内核。如果数据管理和调度库108确定主机102不需要加速器缓冲器118,则在内核执行之后,力口速器缓冲器118中的数据不发送回到主机102。
[0016]在示例性实施例中,预处理器120可以解析主机102上执行的应用源代码,并且创建用于将缓冲器从主机102写入到加速器104上的指令与用于排队和执行加速器104上的内核的指令之间的关联。基于这些关联,预处理器120可以聚合从主机102发送到加速器104的数据,即通过主机与加速器之间的单个数据传送来聚合缓冲器传送调用和内核执行调用。通过聚合所发送的数据,将相同的数据从主机102传送到加速器104的多系统调用的需要被减少,并且可以被完全地消除。
[0017]在示例性实施例中,应用中可以包括一个或多个选项,从而数据管理和调度库108可以读取环境变量,以触发数据聚合和/或数据超前推送。此外,这些选项可以允许数据聚合和/或数据超前推送由程序员或用户切换。在一个实施例中,数据管理和调度库108可以创建并且使用在主机102上创建的缓冲器116的表。数据管理和调度库108可以验证使用缓冲器的内核实际上正在加速器104上排队。例如,数据管理和调度库108可以使用缓冲器的表来跟踪加速器缓冲器118是否实际上在加速器104上排队。此外,数据管理和调度库108可以使用相似的方法来跟踪用于加速器104上的每个缓冲器的其它使用细节,例如,缓冲器是否正用于只读数据、只写数据或用于读取并且写入加速器上的缓冲器数据二者。OpenCL缓冲器可以标记为只读、只写或读写。数据管理和调度库108可以基于这些设置来进行智能缓冲器传送判断。标记“只读”(仅由内核读取)的缓冲器无需重新写回到主机。反之,标记为“只写”的缓冲器无需使得其内容从主机存储器初始化(进一步使得数据传送最小化)。在一个实施例中,当数据管理和调度库108遇到将导致跨越通信链路106的数据传输的缓冲器写入指令时,可以查询缓冲器的表,并且当遇到包括缓冲器数据的对应排队内核指令时,缓冲器数据可以被标志以用于传输。在应用发送少量的指令间数据(datain-between instruct1ns)以执行内核的情况下,应用可以包括允许用户或预处理器120禁用数据聚合的选项。
[0018]当对于正在加速器上执行的内核正在发送缓冲器数据但下一排队内核与和正在加速器上执行的内核不同的内核对应时,禁用数据聚合也是明智的。应用源代码中的程序员选项可以用于在运行时间期间切换环境变量动作。程序员输入的“开始聚合”提示将在提示之后对于所有调用跨越加速器功能调用聚合数据,直到达到“结束聚合”提示。预处理器120扫描输入源并且构建聚合表。该表具有行号、输入文件名、源行号、API功能调用名称、聚合行列表和迭代范围。聚合行列表仅是与将对于在某一行的传送被聚合的行对应的所有功能。迭代范围是聚合将保持的迭代的范围。预处理器120构建该表,并且可以将其写入到存储或主存储器。在系统处于操作中时,数据管理和调度库108可以读取该表以进行聚合判断。相似地,预处理器120构建“超前推送”表,其包含行号、输入文件名、源行号、API功能调用名称、超前推送标志。程序员将“超前推送开始”提示和“超前推送结束”提示插入到需要超前推送的区段应用源代码。预处理器120创建该表,并且可以将其存放在存储中。在启动时,该表传递到加速器104,以用于执行。在运行时间期间的表条件的任何改变通过对特定行号的更新而传递到加速器104。例如,对于OpenCL程序的给定调用,数据聚合环境变量可以设置在OS环境中以聚合数据,但如果在应用源的动态执行期间满足特定条件,则应用源可以携带用于关闭数据聚合的逻辑。例如,数据聚合可能导致大量数据从主机运送到加速器,加速器可能在数据传送方面是低效的。前述方法允许聚合和超前推送请求在编译时间条件与动态运行时间条件之间切换。
[0019]在示例性实施例中,数据管理和调度库108可以构建在应用的执行期间将由主机102读取的缓冲器的表。当内核在加速器104上排队时,数据管理和调度库108可以设置标志以指示内核所使用的加速器缓冲器118中的数据应在主机102执行读取缓冲器指令之前推送到主机102。在一个实施例中,在内核在加速器104上执行之后,加速器缓冲器118中的数据可以立即推送回到主机102,并且存储在主机缓冲器116中。OpenCL加速器运行时间环境110可以用于查询数据管理和调度库108以确定加速器缓冲器118是否应在先主动地推送到主机102。数据管理和调度库108也可以理解主机102中的缓冲器使用特性,并且命令加速器104仅推送所需数据。
[0020]在一个实施例中,程序员可以在可以用于有选择地启用缓冲器管理方法的应用源代码中放置显式选项,包括数据聚合和数据超前推送。在一个实施例中,在迭代地执行内核并且读取缓冲器的计算循环中,超前推送选项可以用于将跨越多个循环迭代而聚合的数据从加速器104推送到主机102。在一个实施例中,超前推送持续选项可以用于指令加速器104聚合在计算循环期间在加速器上所生成的数据,并且在完成内核执行之后将聚合的数据推送到主机102。在示例性实施例中,超前推送持续选项可以用于防止加速器104在数据的连续传输的情况下压制主机102。
[0021]在示例性实施例中,内核可以运行短时间量,并且主机102可以在每个内核执行之后读取内核所使用的加速器缓冲器118。在此情况下,在主机102与加速器104之间存在大量数据传输。如果主机102不立即需要内核执行的结果,则为了减少数据传输的数量,在通过数据管理和调度库108指令OpenCL加速器运行时间环境110将数据聚合为最小量的指令时,可以聚合从加速器104到主机102的数据推送,此后,数据可以从加速器104推送到主机102。在另一实施例中,在通过数据管理和调度库108的指令时,可以聚合从加速器104到主机102的数据推送,由此指令OpenCL加速器运行时间环境110以可聚合数据并且以可以由预处理器102设置的最大传输频率(例如每次迭代,主机仅请求来自缓冲器的特定数据区段)将数据从加速器104发送到主机102。使用具有大小和位置的超前推送的预处理器提示可以用于最小化数据传输。
[0022]在另一示例性实施例中,多个内核可以在加速器104上执行,并且数据管理和调度库108可以指令OpenCL加速器运行时间环境110将来自不同内核执行的缓冲器推送聚合到主机102。在一个实施例中,也可以使用主机102上的OS调度持续时间来触发数据聚合。例如,如果主机102上的OS调度器每隔X毫秒运行,则加速器104上的数据可以聚合并且恰在主机102尝试读取所发送的数据之前发送到主机102。控制和同步协议可以用于保证主机所读取的数据的一致性和连贯性。
[0023]现参照图3,示出说明用于混合系统上的分布式功能执行的方法的流程图。如在块210所示,主机处理用于跨越分布式系统的执行的应用。主机创建作为应用的部分的一个或多个内核,并且将它们分布到一个或多个加速器,如在块212所示。接下来,如在块214所示,主机创建一个或多个缓冲器并且将其写入到加速器,在加速器上排队内核,并且指令加速器执行内核。在示例性实施例中,主机可以使用数据管理和调度库108以聚合在将缓冲器写入到加速器的步骤期间从主机发送到加速器的数据,排队内核并且指令加速器执行内核。如在块216所示,随后内核在加速器上执行。内核执行的输出结果写入到加速器上的缓冲器,如在块218所示。可选地,如在块220所示,加速器可以聚合执行内核所生成的数据。可能已经聚合的通过执行内核所生成的数据由加速器推送到主机,如在块222所示。
[0024]相应地,所公开的用于跨越混合系统的分布式功能执行的方法克服了结合OpenCL使用当前可用的RPC方案的若干缺点。例如,在当前RPC方法中,缓冲器的可用性是同步的,并且RPC不能超前于当在调用主机上需要时而交付数据。此外,RPC不跨越远程功能调用而聚合数据,以优化网络利用。相反,当进行每次功能调用时,RPC方法发送缓冲器。所公开的用于跨越混合系统的分布式功能执行的方法允许加速器在主机需要数据之前将数据推送到主机。此外,所公开的用于跨越混合系统的分布式功能执行的方法允许主机和加速器都聚合跨越连接主机和加速器的通信网络所发送的数据,以优化网络利用。
[0025]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0026]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0027]计算机可读信号介质可以包括例如在基带中或作为载波的一部分具有在其中实施的计算机可读程序代码的传输数据信号。该传输信号可以采取任何多种形式,包括但不限于电磁、光或其任何合适的组合。计算机可读信号介质可以是并非计算机可读存储介质并且可以传递、传输、传送用于由指令执行系统、装置或设备使用或与之结合的程序的任何计算机可读介质。
[0028]体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
[0029]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0030]本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0031]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruct1nmeans)的制造品(manufacture)。
[0032]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0033]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0034]在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
[0035]所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范围。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。
[0036]虽然已经描述了本发明优选实施例,但将理解,在现在和将来,本领域技术人员可以进行落入权利要求的范围内的各种改进和增强。这些权利要求应理解为保持对首先描述的本发明的正确保护。
【权利要求】
1.一种方法,包括: 通过包括一个或多个处理器的主机来处理应用; 将所述应用的至少部分分布到加速器,以用于执行; 指令所述加速器在所述加速器上创建缓冲器; 指令所述加速器执行所述应用的部分,其中,所述加速器将数据写入到所述缓冲器;以及 在所述应用请求所述缓冲器中的数据之前,指令所述加速器将所述缓冲器中的数据发送到所述主机; 其中,所述加速器基于所述主机中的一个或多个运行时间条件在将数据发送到所述主机之前聚合所述缓冲器中的数据。
2.如权利要求1所述的方法,其中,所述加速器上的缓冲器包括作为只读、只写或读写的指定。
3.如权利要求2所述的方法,其中,如果所述缓冲器指定为只读,则所述加速器不将所述缓冲器中的数据发送到所述主机。
4.如权利要求1所述的方法,其中,指令所述加速器将所述缓冲器中的数据发送到所述主机还包括: 为所述加速器提供最小传输值; 指令所述加速器聚合所述的缓冲器中的数据;以及 当所述缓冲器的大小超过所述最小传输值时,指令所述加速器发送所述缓冲器中的数据。
5.如权利要求1所述的方法,其中,所述应用的部分包括计算循环,并且其中,指令所述加速器将所述缓冲器中的数据发送到所述主机还包括在完成计算循环时,指令所述加速器将所述缓冲器中的数据发送到所述主机。
6.如权利要求1所述的方法,其中,指令所述加速器将所述缓冲器中的数据发送到所述主机还包括: 为所述加速器提供传输时段; 指令所述加速器聚合所述缓冲器中的数据;以及 在所述传输时段期间,指令加速器不多于一次将所述缓冲器中的数据发送到所述主机。
7.如权利要求1所述的方法,还包括: 将用于执行所述应用的部分的应用数据写入到所述加速器上的所述缓冲器; 其中,所述主机聚合从所述主机发送到所述加速器的数据,以隐藏在构成数据的单独传送期间所导致的通信等待时间。
8.一种计算机程序产品,包括: 具有实施有的计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码包括: 被配置为执行以下操作的计算机可读程序代码: 处理主机上的应用; 将所述应用的至少部分分布到加速器,以用于执行;指令所述加速器在所述加速器上创建缓冲器; 指令所述加速器执行所述应用的部分,其中,所述加速器将数据写入到所述缓冲器;以及 在所述应用请求所述缓冲器中的数据之前,指令所述加速器将所述缓冲器中的数据发送到所述主机; 其中,所述加速器基于所述主机中的一个或多个运行时间条件在将数据发送到所述主机之前聚合所述缓冲器中的数据。
9.如权利要求8所述的计算机程序产品,其中,所述加速器上的缓冲器包括作为只读、只写或读写的指定。
10.如权利要求9所述的计算机程序产品,其中,如果所述缓冲器指定为只读,则所述加速器不将所述缓冲器中的数据发送到所述主机。
11.如权利要求8所述的计算机程序产品,其中,指令所述加速器将所述缓冲器中的数据发送到所述主机还包括: 为所述加速器提供最小传输值; 指令所述加速器 聚合所述的缓冲器中的数据;以及 当所述缓冲器的大小超过所述最小传输值时,指令所述加速器发送所述缓冲器中的数据。
12.如权利要求8所述的计算机程序产品,其中,所述应用的部分包括计算循环,并且其中,指令所述加速器将所述缓冲器中的数据发送到所述主机还包括在完成计算循环时,指令所述加速器将所述缓冲器中的数据发送到所述主机。
13.如权利要求8所述的计算机程序产品,其中,指令所述加速器将所述缓冲器中的数据发送到所述主机还包括: 为所述加速器提供传输时段; 指令所述加速器聚合所述缓冲器中的数据;以及 在所述传输时段期间,指令加速器不多于一次将所述缓冲器中的数据发送到所述主机。
14.如权利要求8所述的计算机程序产品,还包括: 将用于执行所述应用的部分的应用数据写入到所述加速器上的所述缓冲器; 其中,所述主机聚合从所述主机发送到所述加速器的数据,以最小化本数据的传输。
15.—种用于分布式功能执行的系统,所述系统包括: 与加速器操作通信的主机,所述系统被配置为执行包括以下步骤的方法: 通过所述主机处理应用; 将所述应用的至少部分分布到所述加速器,以用于执行; 指令所述加速器在所述加速器上创建缓冲器; 指令所述加速器执行所述应用的部分,其中,所述加速器将数据写入到所述缓冲器;以及 在所述应用请求所述缓冲器中的数据之前,指令所述加速器将所述缓冲器中的数据发送到所述主机; 其中,所述加速器基于所述主机中的一个或多个运行时间条件在将数据发送到所述主机之前聚合所述缓冲器中的数据。
16.如权利要求15所述的系统,其中,所述加速器上的缓冲器包括作为只读、只写或读与的指定。
17.如权利要求16所述的系统,其中,如果所述缓冲器指定为只读,则所述加速器不将所述缓冲器中的数据发送到所述主机。
18.如权利要求15所述的系统,其中,指令所述加速器将所述缓冲器中的数据发送到所述主机还包括: 为所述加速器提供最小传输值; 指令所述加速器聚合所述的缓冲器中的数据;以及 当所述缓冲器的大小超过所述最小传输值时,指令所述加速器发送所述缓冲器中的数据。
19.如权利要求15所述的系统,其中,所述应用的部分包括计算循环,并且其中,指令所述加速器将所述缓冲器中的数据发送到所述主机还包括在完成计算循环时,指令所述加速器将所述缓冲器中的数据发送到所述主机。
20.如权利要求15所述的系统,其中,指令所述加速器将所述缓冲器中的数据发送到所述主机还包括: 为所述加速器提供传输时段; 指令所述加速器聚合所述的缓冲器中的数据;以及 在所述传输时段期间,指令加速器不多于一次将所述缓冲器中的数据发送到所述主机。
【文档编号】G06F15/16GK104081351SQ201380006625
【公开日】2014年10月1日 申请日期:2013年1月22日 优先权日:2012年1月25日
【发明者】D.G.查普曼, R.B.克里什纳莫西, C.J.帕里斯, D.W.施米特, B.P.塞加尔 申请人:国际商业机器公司