运行前近似计算的制作方法

文档序号:6367350阅读:131来源:国知局
专利名称:运行前近似计算的制作方法
技术领域
本申请总体上涉及改进的数据处理装置和方法,并且更具体地,涉及用于提供运行前近似计算(run-ahead approximated computations)的机制。
背景技术
并行计算系统是具有多个用于并行处理任务的处理器的计算系统。并行程序是可包括一个或多个如下作业的程序,该作业可被分割成可由多个处理器并行执行的任务。并行程序允许在多个处理器之间的某些协调下在该处理器上同时执行任务,以便更快地获得结果。存在许多用于提供并行计算系统的不同方法。并行计算系统的一些类型的示例包括多重处理系统、计算机集群系统、并行超级计算机系统、分布式计算系统、网格计算系统等。这些并行计算系统通常通过处理器和存储器之间的互连的类型来彼此区分。并行计算系统的最广为接受的分类之一根据所有处理器执行相同指令(即单指令/多数据(SIMD))还是每个处理器执行不同指令(即多指令/多数据(MMD))来对并行计算系统进行分类。另一种对并行计算系统进行分类的方式是基于它们的存储器架构。共享存储器并行计算系统具有访问作为全局地址空间的所有可用存储器的多个处理器。这些共享存储器并行计算系统可以进一步被分类为其中对存储器的所有部分的访问次数相等的均匀存储器访问(UMA)系统或其中对存储器的所有部分的访问次数不相等的非均匀存储器访问(NUMA)系统。然而按另一分类,分布式存储器并行计算系统还提供如下并行计算系统,在该系统中利用多个处理器、但每个处理器仅能够访问其自己的本地存储器,即在存储器之间不存在全局存储器地址空间。还有一种类型的并行计算系统,也是当今最普遍使用的一种是上面系统的组合,其中系统的节点具有针对少量处理器的一定量的共享存储器,但是这些节点中的多个节点在分布式存储器并行系统中连接在一起。在一些并行计算系统中,消息传递接口(Message Passing Interface)用作由多个计算或处理设备并行执行的通信和协调工作的方式。消息传递接口(MPI)是独立于语言的计算机通信描述性应用编程接口(API),用于在共享存储器或分布式存储器并行计算系统上进行消息传递。使用MPI,通常将并行应用提供作为随后分割成多个任务的一个或多个作业,该任务可以在一个或多个计算设备的多个处理器上按照并行方式处理。MPI为处理器提供通信API,以用于关于对这些任务的处理进行彼此通信。在当今的信息时代,使用并行计算系统来处理大型分析工作负载变得日益重要,该大的分析工作负载例如面部识别工作负载、天气或交通状况分析、生物序列分析、因特网流量分析、文档库分析、各种数据挖掘应用或任何其他类型的大型分析工作负载。应理解,执行此类分析所基于的数据量非常巨大,而且在持续增加。即便通过并行计算系统可能使得速度增加,但需要分析的数据的庞大规模使得以目标性价水平对完整数据集进行分析的应用变得相当不切实际。

发明内容
在一个示意性实施例中,提供了一种在数据处理系统中用于执行近似运行前计算的方法。该方法包括从计算引擎池中选择第一组计算引擎以对输入数据的完整集执行完整计算。该方法还包括从计算引擎池中选择第二组计算引擎以对输入数据的采样子集执行计算。该方法还包括从计算引擎池中选择第三组计算引擎以计算由第一组计算引擎所生成的第一计算结果和由第二组计算引擎所生成的第二计算结果之间的计算结果的差别。此外,该方法包括基于由第三组计算引擎所生成的差别重配置第二组计算引擎。在其他示意性实施例中,提供了一种包括具有计算机可读程序的计算机可用或可读介质的计算机程序产品。当在计算设备上执行该计算机可读程序时,该计算机可读程序使得该计算装置执行以上关于本方法示意性实施例所概述的操作中的各个操作和其组合。
在又一示意性实施例中,提供了系统/装置。该系统/装置可包括一个或多个处理器和耦合到该一个或多个处理器的存储器。该存储器可包括指令,当一个或多个处理器执行该指令时,使得该一个或多个处理器执行以上关于本方法示意性实施例所概述的操作中的各个操作和其组合。本发明的这些和其他特征和优点将在本发明的示例实施例的以下详细描述中加以描述,或者鉴于本发明的示例实施例的以下详细描述,本发明的这些和其他特征和优点对于本领域普通技术人员将变得明显。


当结合附图阅读时,通过参考对示意性实施例的以下详细描述能够最好地理解本发明和使用的优选方式及其进一步的目的和优点。
图I是可在其中实现示意性实施例的方面的分布式数据处理系统的示例图;图2是可在其中实现示意性实施例的方面的示例数据处理系统的框图;图3是根据一个示意性实施例、实现对计算引擎和分析协调器引擎分组的并行计算系统的示例图;图4A-图4D是根据一个示意性实施例、图示在各种条件下的计算阶段的示例图;以及图5是根据一个示意性实施例、列出分析协调器引擎的操作的示例流程图。
具体实施例方式示意性实施例提供用于提供运行前近似计算的机制。示意性实施例的机制协调由数据处理设备的第一集合执行的快速(总是运行前(run-ahead))近似计算与由数据处理设备的第二集合执行的对完整数据集的常规分析计算两者。示意性实施例的机制通过在数据处理设备的这两个集合之间利用精度、置信水平和速度来执行此类协调,以使得从这二者产生的组合结果对于分析而言可接受。采用示意性实施例的机制,运用计算引擎中相对较大的组(I)(例如,数据处理设备、一个或多个数据处理设备中的处理器等)来用完整的输入数据进行常规计算。使用计算引擎中的第二、相对较小的组(J)来用运行前计算执行对采样数据的计算。也就是说,在一个示例实施例中,分析工作负载可对大量数据执行相同的计算,诸如通过使用具有大迭代集的循环。第一组(I)按照开始于初始迭代值并对每次迭代执行计算(根据循环的步长值)的普通方式前进通过循环迭代。第二组(J)按照运行前方式对迭代进行采样并执行计算,运行前方式即关于循环迭代以及循环的步长值,如果循环将以顺序方式执行,则在通常执行循环的迭代计算的时间之前执行该计算。当第一组(I)赶上由第二组(J)处理的工作负载的起始迭代时,使用额外的计算引擎的相对较小组(K)来检查和记录组(I)和组(J)之间生成的计算结果之间的差别。基于这些差别(或delta),分析协调器引擎可执行各种用于调度和重配置第一组计算引擎
(I)和第二组计算引擎(J)的操作。例如,基于由第组⑴和第二组(J)获得的结果之间的差别,分析协调器可重配置第二组(J)中计算引擎的数目,以及在第二组(J)中由增加数目的计算引擎所处理的完整数据集的采样的数目,从而减小由第一组(I)和第二组(J)获得的结果之间的差别(delta),从而使得该差别在预定容差内。通过在相同计算时间内允许J中更多的处理器从事增加数目的数据采样来实现结果之间减小的差别(delta)。以这种方式,由第二组(J) (即运行前计算引擎)生成的近似精度被维持在可接受容差内,从而使得可以利用运行前计算引擎的结果来粗略估计对大数据集的总体分析的迭代集的计算。这些近似计算与由第一组计算引擎(I)执行的分析计算相组合,以提供对分析大输入数据集的近似计算。此外,如果存在分析计算的下一阶段,即利用来自当前阶段的结果的随后阶段,则如果由第二组(J)和第一组(I)执行的计算之间的差别在预定容差内,则由第二组(J)所进行的分析计算的当前阶段的结果可以被馈送到计算的下一阶段以供该算法使用,而由第一组(I)进行的计算仍然继续进行,即在完成由第一组(I)进行的计算之前。以这种方式,通过提供用于计算阶段的运行前执行的机制来提高计算速度。作为另一示例,如果分析协调器引擎确定第一组(I)和第二组(J)的计算结果之间的差别大于预定容差,则可在执行的下一阶段执行局部重计算。这本质上回退了由第二组(J)计算引擎执行的计算。用第二组(J)中增加数目的计算引擎和增加的数据量(例如,来自输入数据的较大数目的采样)执行该局部重计算。在又一示例中,分析协调器引擎可以确定由第二组(J)计算引擎执行的计算的精度的置信水平高于预定阈值。如果是,则该分析协调器引擎可指示或使得第一组(I)计算引擎跳过其部分计算,例如,第一组(I)将在其上执行计算的剩余迭代。也就是说,由于近似计算足以与由第二组(J)生成的计算一样精确,于是无需如由第一组(I)计算引擎完成的那样继续计算每次迭代。本领域技术人员将理解,本发明可以被实现为系统、方法或计算机程序产品。因此,本发明的方面可以表现为全硬件实施例、全软件实施例(包括固件、驻留软件、微代码等)或在此一般称为“电路”、“模块”或“系统”的组合软件方面和硬件方面的实施例。而且,本发明的方面可表现为包含在任意一个或多个计算机可读介质中的计算机程序产品,其中该计算机可读介质在其上具有计算机可用程序代码。可利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电子的、磁的、光的、电磁的、红外的或半导体的系统、装置、设备或前述的任意合适组合。计算机可读存储介质的更具体示例(非穷尽性列表)将包括以下内容具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPR0M或闪存)、光纤、便携式光盘只读存储器(CDROM)、光存储设备、磁存储设备或前述的任意合适组合。在本文档的上下文中,计算机可读存储介质可以是可以包含或存储用于由指令执行系统、装置或设备使用或与之配合使用的程序的任何有形介质。计算机可读信号介质可包括其中包含计算机可读程序代码(例如,在基带中的或作为载波一部分)的传播数据信号。这样的传播信号可以采用各种形式中的任何形式,包括但不限于电磁的、光的或其任意合适的组合。计算机可读信号介质可以是并非计算机可读存储介质的且可以传达、传播或传送用于由指令执行系统、装置或设备使用或与之结合使用的程序的任何计算机可读介质,计算机可读介质中包含的计算机代码可以使用任何适合介质来传输,该适合介质包括但不限于无线、有线线路、光纤电缆、射频(RF)等或其任意合适组合。用于执行本发明的方面的操作的计算机程序代码可以按照一种或多种编程语言 的组合来编写,该编程语言包括面向对象编程语言(诸如JavaTM、SmalltalkTM、C++等)以及常规过程式编程语言(诸如“C”编程语言或类似编程语言)。程序代码可以全部在用户的计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户的计算机上执行且部分在远程计算机上执行,或者全部在远程计算机或服务器上执行。在最后的情况中,远程计算机可以通过任何类型的网络连接到用户的计算机,该网络包括局域网(LAN)或广域网(WAN),或者该连接可以(例如,通过使用互联网服务提供商的互联网)连接到外部计算机。以下参考根据本发明示意性实施例的方法、装置(系统)和计算机程序产品的流程示意图和/或框图来描述本发明的方面。将理解,流程示意图和/或框图中的每个方框以及流程示意图和/或框图中的方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机的处理器、专用计算机的处理器或其他可编程数据处理装置的处理器以产生机器,从而使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图方框中所指定的功能/动作的装置。这些计算机程序指令还可存储在计算机可读介质中,其可指引计算机、其他可编程数据处理装置,或其他设备以特定方式工作,从而使得存储在计算机可读介质中的指令产生如下制造产品,该制造产品包括实现在流程图和/或框图的方框中所指定的功能/动作的指令。计算机程序指令还可载入计算机、其他可编程数据处理装置、或其他设备来使得在该计算机、其他可编程数据处理装置、或其他设备上执行一系列可操作步骤,以产生计算机实现的过程,从而使得在该计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的方框中所指定的功能/动作的过程。附图中的流程图和框图示出了根据本发明各种实施例的系统、方法和计算机程序产品的架构、功能和可的能实现的操作。就此而言,流程图或框图中的每个方框可表示代码的模块、片段或部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。还应该注意,在一些备选实现中,在方框中注明的功能可以不按图中所注明的顺序发生。例如,取决于所涉及的功能,连续示出的两个方框实际上可以实质上同时执行,或者有时方框可以按相反顺序执行。还将注意,框图和/或流程示意图中的每个方框以及框图和/或流程示意图的方框的组合,可以由执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。因此,示意性实施例可用于许多不同类型的数据处理环境中,该数据处理环境包括分布式数据处理环境、单个数据处理设备等。为了提供用于描述示意性实施例的特定元件和功能的背景,此后提供图I和图2作为示意性实施例的方面可在其中实现的示例环境。应该理解,图I-图2仅是示例,并且并不旨在声明或暗示关于本发明的方面或实施例可以在其中实现的环境的任何限制。可以对所描绘的环境进行许多修改而不脱离本发明的精神和范围。现在参考附图,图I描绘了在其中可以实现示意性实施例的方面的示例分布式数据处理系统的图形化表示。分布式数据处理系统100可包括在其中可以实现示意性实施例
的方面的计算机网络。分布式数据处理系统100包括至少一个网络102,其是用于提供分布式数据处理系统100内连接在一起的各种设备和计算机之间的通信链路的媒介。网络102可包括诸如导线、无线通信链路或光纤之类的连接。在所描绘的示例中,服务器104和服务器106连接到网络102和存储单元108。此夕卜,客户端110、112和114也连接到网络102。这些客户端110、112和114例如可以是个人计算机、网络计算机等。在所描绘的示例中,服务器104向客户端110、112和114提供数据,诸如引导文件、操作系统映像和应用。在所描绘的示例中,客户端110、112和114是服务器104的客户端。分布式数据处理系统100可包括未示出的附加服务器、客户端和其他设备。在所描绘的示例中,分布式数据处理系统100是具有网络102的互联网,网络102表示使用传输控制协议/互联网协议(TCP/IP)的协议套件来彼此通信的网络和网关的全球汇集。在互联网的中心是主要节点之间或主机之间的高速数据通信线路的主干,该主干包括对数据和消息进行路由的、数以千计的商用的、政府的、教育的和其他计算机系统。当然,分布式数据处理系统100还可实现为包括大量不同种类的网络,诸如内联网、局域网(LAN)、广域网(WAN)等。如上所述,图I旨在作为示例,而并非作为对本发明不同实施例的架构限制,并且因此,图I所示出的特定单元不应被认为是关于在其中可以实现本发明示意性实施例的环境的限制。现在参考图2,其示出了示例数据处理系统的框图,其中可实现示意性实施例的方面。数据处理系统200是计算机的示例,诸如图I中的客户端110,实现本发明示意性实施例的过程的计算机可用代码或指令可位于其中。在所描绘的示例中,数据处理系统200采用包括北桥和存储器控制器集线器(NB/MCH) 202和南桥和输入/输出(I/O)控制器集线器(SB/ICH)204的集线器架构。处理单元206、主存储器208和图形处理器210连接到NB/MCH 202。图形处理器210可通过加速图形端口(AGP)连接到 NB/MCH 202。在所描绘的示例中,局域网(LAN)适配器212连接到SB/ICH204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM) 224、硬盘驱动器(HDD) 226、⑶-ROM驱动器230、通用串行总线(USB)端口和其他通信端口 232、以及PCI/PCIe设备234通过总线238和总线240连接到SB/ICH 204。PCI/PCIe设备可包括例如以太网适配器、插入卡、用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用。ROM 224可以是例如闪速基本输入输出系统(BIOS)。HDD 226 和 CD-ROM驱动器 230 通过总线 240 连接到 SB/ICH204。HDD 226 和 CD-ROM驱动器230可使用例如集成驱动电子(IDE)或串行高级技术附件(SATA)接口。超级(I/O)(SIO)设备236可连接到SB/1CH 204。操作系统运行在处理单元206上。操作系统协调并提供对图2中的数据处理系统200中的各种组件的控制。作为客户端,操作系统可以是商业可获得的操作系统,诸如Microsoft Windows 7 (Microsoft和Windows是微软公司在美国、其他国家或这二者的商标)。诸如Java编程系统之类的面向对象的编程系统可与操作系统一同运行,并且向操作系统提供对在数据处理系统200上执行的Java程序或应用的调用。作为服务器,数据处理系统200可以是例如IBM eServerTMSyStemp 计算机系统,其运行高级交互式执行(AIX )操作系统或LINUX操作系统(IBM、eServer, Systemp和AIX是国际商业机器公司在美国、其他国家或这二者的商标,并且LINUX是Linus、Torvalds在美国、其他国家或这二者的注册商标)。数据处理系统200可以是在处理单元206中包括多个处理器的对称多处理器(SMP)系统。备选地,可采用单处理器系统。操作系统的指令、面向对象的编程系统和应用或程序位于诸如HDD 226之类的存储设备上,且可载入主存储器208以用于由处理单元206执行。可通过处理单元206使用计算机可用程序代码来执行本发明的示意性实施例的过程,该计算机可用程序代码可位于诸如主存储器208、ROM 224或一个或多个外围装置226和230之类的存储器中。诸如图2所示出的总线238或总线240之类的总线系统可以包括一个或多个总线。当然,可以使用提供附接到通信结构或架构的不同组件或设备之间的数据传输的任意类型的通信结构或架构来实现该总线系统。诸如图2的调制解调器222或网络适配器212之类的通信单元可包括一个或多个用于传输和接收数据的设备。存储器例如可以是图2中的主存储器208、ROM 224、或诸如在NB/MCH 202中的存在的高速缓冲存储器。本领域普通技术人员将理解,图I-图2中的硬件可以根据实现而不同。除了图1-2中所描绘的硬件外,还可以附加地使用或替代地使用其他内部硬件或外围设备,例如闪存、等效非易失性存储器或光盘驱动器等。同样,在不脱离本发明的精神和范围的情况下,也可将示意性实施例的过程应用到多处理器数据处理系统,而非先前所提到的SMP系统。此外,数据处理系统200可以采用数个不同数据处理系统中的任何数据处理系统的形式,该不同数据处理系统包括客户端计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或其他通信设备、个人数字助理(PDA)等。在一些示意性示例中,数据处理系统200例如可以是配置有闪存以提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器的便携式计算设备。本质上,数据处理系统200可以是没有架构限制的任何已知或日后开发的数据处理系统。如上所述,示意性实施例提供使用并行计算系统的运行前近似计算的机制。并行计算系统可以是任何已知或日后开发的并行计算系统,诸如单指令多数据(SMD)、多指令多数据(MIMD)、均匀存储器访问(UMA)系统、非均匀存储器访问(NUMA)系统、消息传递接口(MPI)系统等。因此,并行计算系统包括多个数据处理设备、处理器等。例如,以图I为例,一个或多个服务器104和106、客户端110-114等内可提供有一个或多个处理器。并行计算系统可包括所有这些处理器或这些处理器的子集。在一个示意性实施例中,并行计算系统包括提供在单个数据处理系统(例如,服务器104、106或客户端110-114中的任意一个)中的多个处理器。在其他示意性实施例中,并行计算系统包括提供在多个数据处理系统(例如,服务器104和106这二者、来自多个客户端110-114的处理器的组合、或者来自一个或多个服务器104和106以及一个或多个客户端110-114的处理器的组合)中的多个处理器。根据示意性实施例的机制,并行计算系统包括对计算引擎组的操作进行协调的分析协调器引擎。此外,分析协调器引擎运行以基于分析这些计算引擎组的计算结果来修改这些计算引擎组的组成和操作。图3是根据一个示意性实施例,实现对计算引擎和分析协调器引擎的分组的并行计算系统的示例图。为了容易说明,将假设图3中的并行计算系统300实现单指令多数据(SIMD)操作,其中由不同数据单元或数据单元集合上的每个计算引擎执行相同指令或指令集。应该理解,尽管出于在此提供的示例的目的将假设这样的SMD操作,但示意性实施例并不限于此。相反,并行计算系统300也可实现多指令多数据(MIMD)操作,或可以使用其他并行处理操作,而不脱离示意性实施例的精神和范围。
如图3中所示,并行计算系统300包括计算引擎池310,在所描绘的示例中该池是一个或多个数据处理系统中的处理器池。与处理器池相反,计算引擎池可作为替代包括包含一个或多个处理器的较大数据处理设备等,而非处理器池。另外,计算引擎可以是包括计算逻辑的功能单元池,该功能单元可以是常规处理器、图形处理器或其他类型数据处理设备的一部分。计算引擎还可以是对特定类型的计算进行加速的专用加速器池,例如SMD单元、压缩/解压缩加速器、RegEx (正则表达式)加速器、图形处理器、DSP (数字信号处理)处理器、现场可编程门阵列(FPGA)等。一般而言,计算引擎可以是处理数据计算而不是数据存储或通信的任意逻辑。由于计算引擎自身可跨位于本地或彼此远离的多个数据处理系统分布,并甚至可通过一个或多个诸如LAN、WAN、互联网等的数据网络访问,所以该池实际是计算引擎的逻辑池。计算引擎的组330-350可从该计算引擎池310生成,以便根据示意性实施例使用运行前计算来有助于计算近似。可以采用组330-340中的某些来对大数据集360按照并行方式执行算法305的计算。在所描绘的示例中,第一组330计算引擎对应于相对较大的计算引擎集,其可以是数十万数量级的,配置用于执行对大数据集360中的每个数据单元的完整分析计算。第二组340计算引擎对应于相对较小的计算引擎集,其可以是2个或更多个的较小量级,配置用于执行对大数据集360的相对较小子集的算法305的近似计算,该相对较小子集诸如来自大数据集360的采样数据。例如,第二组340计算引擎可被配置为在大数据集360中对每9000个数据单元处理I个数据单元,而第一组330计算引擎可被配置为处理大数据集360的每个数据单元。虽然第一组330可被配置为使得其可处理大数据集360的每个数据单元,但根据示意性实施例,第一组330可以并不实际处理每个数据单元,而是处理提供给第一组330已用于处理的、对应于大数据单元集360的一部分的数据单元子集,而大数据集360的其他部分通过第二组340计算引擎的操作来粗略估计。并行计算系统300还包括分析协调器引擎320,其具有差别比较逻辑321、重配置逻辑322、阶段运行前逻辑324、局部重计算逻辑326、计算跳过逻辑328以及置信度计算引擎329。这些各种逻辑单元321-329的操作将在此后更为详细地描述。这些逻辑单元321-329可以按照软件、硬件或软件和硬件的任意组合来实现。在一个示意性实施例中,分析协调器引擎320可包括一个或多个处理器、存储器等,且逻辑单元321-329由在采用存储器的一个或多个处理器上执行的软件指令来实现。在其他示意性实施例中,逻辑321-329可以被硬布线到分析协调器引擎320的电路来作为配置为执行此后所述的操作的电路元件。在操作中,分析协调器引擎320负责建立计算引擎池310内的计算引擎的组330-350。从该池310中选择计算引擎的第一集合以包含在用于执行对数据集360的完整分析计算的相对较大组330的计算引擎中。如对于本领域普通技术人员阅读本说明书后所容易理解的,选择计算引擎的方式可以采用许多不同形式,包括任意选择,基于计算引擎的执行能力、计算引擎的当前工作负载、物理类似性(physical affinity)的选择或可用于选择计算引擎任何其他准则。另外,分析协调器引擎320从该池310中选择计算引擎的第二集合以包括在负责对数据集360的子集进行运行前近似计算的第二组340中。第二组340相对小于第一组 330。此外,分析协调器引擎320选择计算引擎的集合以包括在第三组350中,该第三组350负责比较由第一组330执行的计算结果与由第二组340执行的计算结果,以确定所获得结果中的差别。分析协调器引擎320使用该差别来确定如何动态调整计算引擎组330-340的组成和操作以用尽可能高效的方式获得对数据集360的足够精确的近似计算。也就是说,分析协调器引擎320基于近似计算的精确程度和这些近似计算中置信度的评估来协调计算引擎组330-340的操作。如之前所提及的,第二组340计算引擎对数据集360的子集(诸如来自数据集360的采样数据单元)进行操作并且在运行前操作中执行。结果,第二组340计算引擎将通常对在数据集360中比由第一组330计算引擎处理的数据单元更晚得多的数据单元执行它们的指令并执行它们的计算。例如,第一组330计算引擎可以对数据单元1-100执行计算,而第二组340可以在第一组330正在对数据单元1-100操作的同时,对多达数据单元1000甚至更多的数据单元的采样数据执行计算。在许多机器学习算法中,对减小的输入集的计算相较于完整输入可以产生足够好的结果。其原因在于机器学习算法通常产生局部优化而不是全局优化结果。使用非负矩阵分解(NMF)算法作为示例,近似计算的随机选择的矩阵子集可以用于生成热键列表,其可用来自原始矩阵输入的结果覆盖大的内容。如果仅一定量热键需要通过近似计算被正确识别是可接受的,则使用计算引擎的子集(例如,第二组340)来工作于数据子集会以更高的速度和更低成本获得相同的性能。第三组350计算引擎比较由第一组330计算引擎生成的计算结果和由第二组340计算引擎生成的计算结果。例如,将由第一组330计算引擎对数据集360中的数据单元I处理的计算结果与由第二组340计算引擎对数据集360中的数据单元500的处理的计算结果相比较,作为来自数据集360的采样数据单元之一。可以将结果之间的差别提供给分析协调器引擎320,其可以将该差别与一个或多个预定阈值相比较,以确定由第二组340(即近似计算运行前组)生成的结果是否具有足够量的置信度地足够地精确。置信度估计是用于估计输出正确可能性的通用机器学习重评分方法。简单的置信度估计方法可以通过监控来自计算的先前迭代的所有结果中正确结果的比率(fraction)来实现。这样的比率可以被用作置信度估计。也可以使用分析模型基于应用特点来离线计算置信度。置信度估计的输出被用于与预定阈值相比较。分析协调器引擎320可接收由第三组350生成的比较结果并执行用于重配置计算引擎的组330-350以及修改它们的操作的各种操作,从而达到从对组330-340的组合获得的总体计算结果的期望水平的精度和置信度。分析协调器引擎320的目的在于协调组330和组340的操作,以使得由组340执行的近似计算在由组330执行的完整计算的预定容差内,并且因此可将组340的结果信赖作为足够精确的近似。以这种方式,可利用组340可执行其近似计算的速度来提供算法305内可用的更快的总体近似计算。分析协调器引擎320使用差别比较逻辑321来将由第三组350计算引擎所生成的该差别(或delta)与一个或多个预定阈值相比较,以确定由第二组340执行的近似计算的结果对于由第一组330计算引擎执行的完整计算是否足够精确。例如,预定阈值可包括值10%,由此指定若由第二组340执行的近似计算之间的差别可以不同于由第一组330执行的计算至多10%,则认为足够精确。
如果差别比较逻辑321通过比较该差别和一个或多个预定阈值确定第二组340计算引擎的近似计算结果不足够精确,则第二组340计算引擎的组成和操作可以被重配置逻辑322修改,并且在局部重计算逻辑326的控制下至少部分地重计算第二组340计算引擎正执行的分析计算。例如,如果在此称第一组330计算引擎为组(I),在此称第二组340计算引擎为组(J),在此称第三组350计算引擎为组(K),则组(K)生成组(I)和组(J)的计算结果之间的差别测量。如果由差别比较逻辑321所确定的差别测量,例如I (I)-(J) |,带来大于或等于预定阈值delta的差别,S卩I(I)-(J)I彡delta,则发起一个或多个重配置逻辑322或局部重计算逻辑326来执行重配置和重计算操作。例如,基于由第一组(1)330和第二组(J)340所获得的结果之间的差别,分析协调器引擎320的重配置逻辑322可重配置第二组(J) 340中计算引擎的数目以及由第二组(J) 340中增加数目的计算引擎处理的完整数据集360的采样数目,以减少由第一组(I) 330和第二组(J)340所获得的结果之间的差别,从而使得该差别在预定容差delta内。也就是说,重配置逻辑322可从计算引擎池310中尚未分配给其他组330-350的计算引擎的剩余部分370分配额外的计算引擎。假设第二组(J)340中计算引擎的数目显著小于第一组(1)330中的计算引擎的数目,还能够从第一组(1)330中重分配一些计算引擎给第二组(J) 340,而对第一组(1)330的计算速度和精度没有显著影响。基于某预定度量标准应用分配和重分配计算引擎的其他方式,只要第一组(1)330的计算速度和精度是可接受的。这实际上增加了第二组340中计算引擎的数目,从而允许它们对来自数据集360的较大数目的采样数据单元进行操作。作为结果,可生成将倾向更接近由第一组330计算引擎执行的完整计算的更精确的近似计算。第二组340的新执行速度随着计算引擎数目以及数据输入量的变化而变化。重配置逻辑322确保第二组340仍比第一组330执行它们的计算更快,并且由于对数据单元的采样,第二组340仍以运行前方式执行。以这种方式,由第二组(J) 340 (即运行前计算引擎)所生成的近似的精度保持在可接受容差内,从而使得运行前计算引擎340的结果可以用于粗略估计大数据集360的完整分析的一组迭代的计算。这些近似计算与由第一组计算引擎(J) 330执行的分析计算相组合来提供用于大型输入数据集360的分析的近似计算。
作为另一个示例,如果分析协调器引擎320确定第一组(I) 330和第二组(J) 340的计算结果之间的差别大于预定容差,则可采用局部重计算逻辑326来在执行的下一阶段发起局部重计算。这本质上回退了由第二组(J)计算引擎340执行的计算。由第二组(J) 340中增加数目的计算引擎和增加数量的数据执行该局部重计算,该增加数目的计算引擎例如是通过从计算引擎池310内未分配的处理器370中分配的额外的处理器,该增加数量的数据例如是来自输入数据的更大数目的采样。此外,如果存在分析计算的下一阶段(S卩,其中由组330-340中的计算引擎正在执行的算法305的另一部分的后续阶段),该下一阶段利用来自当前阶段的结果,则如果由第二组(J)340和第一组(1)330执行的计算之间的差别在预定容差内,则由分析协调器引擎320触发中断来停止第一组(1)330的计算,并针对下一阶段对其初始化。接着,由第二组(J) 340进行的分析计算的当前阶段的结果可以被馈送到第一组(1)330以由算法305用于下一阶段的计算。以这种方式,通过提供运行前执行计算阶段的机制,增加了计算的速度。对于来自第三组350计算引擎的、由分析协调器引擎320接收的每个差别,分析协 调器引擎320可计算置信度测量值以确定差别计算的可靠度。分析协调器引擎320可以使用该置信度测量来确定由第二组(J) 340计算引擎执行的计算的精度的置信水平是否等于或大于基于不同测量值的置信度的预定阈值。如果置信度水平等于或高于预定阈值,则分析协调器引擎320可指示或使得第一组(I)计算引擎跳过其部分计算,例如,第一组(1)330将在其上执行计算的剩余迭代。也就是说,由于近似计算与由第二组(J)340所生成的计算一样足够精确,所以无需如由第一组(1)330计算引擎完成的那样继续计算每次迭代。因此,可采用计算跳过逻辑328来指示第一组(1)330中的计算引擎不再继续计算执行的当前阶段,组合它们的结果和由第二组(J) 340所生成的近似结果或者以丢弃第一组(1)330的结果,并且如果存在下一计算阶段,则随后前进到该下一计算阶段。使用如在此所述的示意性实施例的机制,提供了高度并行且高效的运行前的机制,其可以提供对计算结果的精确近似。尽管这些计算是“近似的”,但事实是这些近似通常对于完整分析计算来说具有高精度。例如,已经通过实验发现,对于非负矩阵分解(NMF)算法(数据挖掘分析工作负载中的关键核心),通过允许近似中多达10%的误差,由示意性实施例的机制所执行的分析计算的速度可以增加400%。例如,如果对800行数据进行完整分析计算的操作,通过采样可将行数减少到仅450行数据,且虽然对示意性实施例的使用将提供大约10%的计算误差,但提供400%的更快速计算。如上所述,示意性实施例可以用于许多不同类型的分析计算和并行计算系统。分析计算通常可划分为描述性分析、预测性分析和指令性分析。描述性分析涉及与标准报告(与描述发生了什么有关)、特别报告(与描述事情发生多少件、多频繁或在哪里发生有关)和查询/钻取操作(与描述问题确切是什么)有关的计算。预测性分析涉及与警报(识别需要什么动作)、仿真(预测可能发生什么)、预报(预测如果趋势延续则将发生什么)和预测性建模(预测响应于特定条件将发生什么)有关的计算。规范性分析涉及关于优化(如何能获得最佳结果)和随机优化(如何能获得包括可变性效果的最佳结果)的计算。示意性实施例可用于对与任意这些类型的分析计算、或没有在此具体描述的任意其他类型的分析计算有关的工作负载进行操作的计算引擎。为进一步示出示意性实施例的操作,现在参考图4A-图4D,其提供了示出根据一个示意性实施例的不同条件下的计算阶段。图4A是示出根据一个示意性实施例、用于处理示例工作负载的计算阶段的示例图。图4A中所示阶段410-440表示没有实施示意性实施例的近似运行前机制的、计算引擎的一个大型集所遵照的计算阶段。因此,如图4A中所示,该计算阶段包括第一阶段410,和跟随第一阶段410的第二阶段420,其中针对大型数据集的不同部分重复这两个阶段,例如阶段430和440。图4B示出了计算阶段的相同集,但其实施示意性实施例的近似运行前的机制。如图4B中所示,第一和第三阶段,不是使用对完整数据集的完整分析计算来执行,而是诸如由第二组(J) 340计算引擎使用近似运行前计算来执行。由相对较小组(J)340的计算引擎来带有足够置信度和精度地执行该近似。结果,仅引入了由一个或多个预定阈值所指定的可接受误差量,但存在由箭头450所示的性能改进。图4C是事件中计算的阶段的示例图,该事件中第一组(I)和第二组(J)计算引擎之间的差别等于或大于可接受量,诸如可以由一个或多个预定阈值所限定。如图4C中所示,在这种情况中,分析协调引擎可使用附加计算引擎(J)(由460表示)重启可能具有更、多输入数据的第一阶段计算,以便将该差别减少到由一个或多个预定阈值所指定的可接受范围内。如由图4C中相对较大尺寸阶段表示所示出的,待处理数据量的增加可延长用于完成计算的时间。图4D是如下事件中计算阶段的示例图,在该事件中,由于近似结果的置信度测量小于期望的置信度测量,所以有必要进行部分重计算。在所描绘的示例中,在阶段410中,确定近似计算结果具有一些减小该近似的置信度测量的错误结果,并且分析协调器引擎确定在阶段420中有必要进行对近似结果的部分重计算。如由图中“空闲”部分所表示的,结果,分析协调器引擎等待第一组(I)计算引擎完成其对其当前工作负载的处理。继而,执行阶段420的部分计算。诸如在上述关于图4C所描述的情况中,在第三阶段430期间,第二组(J)计算引擎被重配置为满足所需精度和置信度测量。也就是说,由于(J)的来自阶段1(410)的一些输入是不正确的,所以(J)将在阶段2(420)中部分重计算。如图4C中所示,一旦完成阶段2中的部分重计算,则阶段3 (430)开始重配置。注意到,图4D中的阶段430的长度与图4C中阶段相同。尽管在图4B-图4D中所示的每个场景中,当需要重计算时,减少了示意性实施例的机制的性能,但当与图4A中所示的没有实现示意性实施例的机制的性能相比较,仍提高了每种情况中的性能。图5是根据一个示意性实施例概述分析协调器引擎的操作的示例流程图。如图5中所示,该操作开始于选择计算引擎组以用于执行完整分析计算、近似运行前分析计算和差别确定计算(步骤510)。将工作负载提供给计算引擎组(步骤520),其中完整分析计算组的计算引擎对输入数据集的一个或多个部分执行完整分析计算,近似运行前分析计算引擎对该输入数据集的一个或多个部分的采样子集执行分析计算,以及差别确定计算引擎生成由其他组计算引擎所生成的结果之间的差别测量。假设完整分析计算组被标识为组(I),近似运行前计算引擎被标记为组(J),差别确定计算引擎被标识为组(K),针对(I)是否已经赶上(J)进行确定,(I)已经赶上(J)即
(I)已经完成(J)之前进行的计算阶段,例如,在计算阶段I(I)已经赶上(J),而(J)已经进行到计算阶段3 (步骤540)。换句话说,(I)已经完成了(J)已经处理的迭代范围内的循环的迭代。如果没有,则该操作返回步骤540,并继续监控在某计算阶段(I)是否赶上(J)的条件。如果在该计算阶段(I)已经赶上(J),则进行(I)和(J)的结果的比较以生成一个或多个差别值(步骤550)。分析协调引擎确定差别是否小于一个或多个预定阈值(在该例子中为阈值delta)(步骤560)。如果没有,则分析协调引擎重配置(J)来满足该一个或多个预定阈值(步骤570)。例如,重配置可包括添加附加计算引擎到(J)和/或增加来自输入数据集的、对其执行近似运行前计算的数据量。另外,更新与近似运行前计算结果相关联的置信度测量(步骤580)。该操作继而返回步骤540,从而使得可以执行近似运行前计算的重计算。响应于差别是否小于一个或多个阈值,更新与近似运行前计算结果相关联的置信度测量(步骤590)并确定该置信度测量是否小于预定阈值(步骤600)。此外,如果并行操作,如果计算的当前阶段的结果将用于计算的之后阶段,且如果差别小于一个或多个阈值,则转发计算的当前阶段的结果以用于由计算的之后阶段的算法使用(步骤610)。如果置信度测量值小于预定阈值(步骤600),则不进行进一步动作,并且该操作 返回到步骤540。如果在近似计算中存在足够的置信度,即置信度测量等于或大于预定阈值(步骤600),则分析协调引擎指示完整分析计算组跳过至少一部分其正被执行的计算(步骤620)。可以继续上面所概述的操作,直到导致该操作终止的一个退出条件发生,诸如,所有输入数据集已经被处理,算法执行中的不可恢复性错误等。这样,示意性实施例提供了用于使用计算引擎组和这些计算引擎组之间的协调的高效运行前近似计算的机制。示意性实施例通过利用近似计算的速度而同时测量近似计算相对于完整分析计算的精度和置信度,极大提高了分析计算的总体性能。如以上所示,应该理解,示意性实施例可以采用全硬件实施例、全软件实施例或包括硬件和软件这二者的元素的实施例的形式。在一个示例实施例中,示意性实施例的机制可以实现在软件或程序代码中,其包括但不限于固件、驻留软件和微代码等。可适用于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或间接耦合到存储器单元的至少一个处理器。存储器单元可以包括在程序代码的实际执行期间所采用的本地存储器、大容量存储器和提供对至少一些程序代码的临时存储以减少在执行期间代码必须从大容量存储器获取的次数的高速缓存存储器。输入/输出或I/O装置(包括但不限于键盘、显示器、指点设备等)可以直接地或通过中介的I/o控制器被耦合到该系统。网络适配器也可耦合到该系统以使得该数据处理系统能够变得通过中介的私有或公共网络耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是当前可用的网络适配器的几个类型。出于示意和说明的目的已经呈现了对本发明的描述,但其并不旨在穷尽或限制本发明于所公开的形式。对于本领域普通技术人员来说,许多修改和变化是明显的。为了最好地说明本发明、本实际应用的原理,以及使得本领域其他普通技术人员能够理解具有适合于所构想的特定使用的各种变化的各种实施例的本发明,选择并描述了实施例。
权利要求
1.一种用于在数据处理系统中执行近似运行前计算的方法,包括 从计算引擎池中选择第一组计算引擎以对输入数据的完整集执行完整计算; 从所述计算引擎池中选择第二组计算引擎以对所述输入数据的采样子集执行计算; 从所述计算引擎池中选择第三组计算引擎以计算由所述第一组计算引擎所生成的第ー计算结果和由所述第二组计算引擎所生成的第二计算结果之间的计算结果的差别;以及 基于由所述第三组计算引擎所生成的差别重配置所述第二组计算引擎。
2.根据权利要求I所述的方法,其中所述计算引擎池包括处理器池、一个或多个处理器内的功能単元池、数据处理设备池或加速特定类型计算的专用加速器池中的至少ー个,其中每个数据处理设备包括一个或多个处理器。
3.根据权利要求I所述的方法,其中所述第二组计算引擎包括多个计算引擎,所述计算引擎在数目上小于所述第一组计算引擎中的计算引擎的数目。
4.根据权利要求I所述的方法,其中所述第二组计算引擎对所述输入数据的所述采样子集执行近似计算。
5.根据权利要求4所述的方法,其由所述第三组计算引擎所生成的差别重配置所述第ニ组计算引擎包括基于所述近似计算的精度和这些近似计算中置信度的測量来重配置所述第二组计算引擎。
6.根据权利要求I所述的方法,其中从计算引擎池中选择第一组计算引擎以执行对输入数据的完整集的完整计算包括基于随机选择方法、基于所述计算引擎的性能能力、所述计算引擎的当前工作负载或所述计算引擎的物理类似性的计算引擎选择中的至少ー个,从所述计算引擎池中选择ー组计算引擎。
7.根据权利要求I所述的方法,其中所述第二组计算引擎以运行前方式执行所述计算,从而使得所述第二组计算引擎对其进行操作的数据包括比所述第一组计算引擎对其进行操作的数据在所述输入数据集中按序相对较后的数据。
8.根据权利要求I所述的方法,其中重配置所述第二组计算引擎包括増加所述第二组计算引擎中计算引擎的数目。
9.根据权利要求I所述的方法,其中重配置所述第二组计算引擎还包括増加来自所述输入数据集的、所述第二组计算引擎对其操作的所述数据的所述采样子集的大小。
10.根据权利要求I所述的方法,其中所述重配置所述第二组计算引擎是响应于所述计算结果的差别不在由一个或多个阈值所指定的预定容差内而执行。
11.根据权利要求10所述的方法,其中响应于所述计算结果的差别不在所述预定容差内,所述方法还包括在计算的下一阶段由所述重配置的第二组计算引擎发起部分重计算。
12.根据权利要求I所述的方法,其中,响应于所述计算结果的差别在由ー个或多个阈值指定的预定容差内,所述方法还包括 生成中断来中断由所述第一组计算引擎执行的所述计算;以及 利用所述第二组计算引擎的所述计算的结果作为由所述第一组计算引擎和所述第二组计算引擎执行的代码的计算阶段的結果。
13.ー种用于执行近似运行前计算的系统,包括 配置为从计算引擎池中选择第一组计算引擎以对输入数据的完整集执行完整计算的装置;配置为从所述计算引擎池中选择第二组计算引擎以对所述输入数据的采样子集执行计算的装置; 配置为从所述计算引擎池中选择第三组计算引擎以计算由所述第一组计算引擎所生成的第一计算结果和由所述第二组计算引擎所生成的第二计算结果之间的计算结果的差别的装置;以及 配置为基于由所述第三组计算引擎所生成的所述差别重配置所述第二组计算引擎的装置。
14.根据权利要求13所述的系统,其中所述计算引擎池包括处理器池、ー个或多个处理器内的功能単元池、数据处理设备池或加速特殊类型计算的专用加速器池中的至少ー个,其中每个数据处理设备包括一个或多个处理器。
15.根据权利要求13所述的系统,其中所述第二组计算引擎包括多个计算引擎,所述 多个计算引擎在数目上小于所述第一组计算引擎中的计算引擎的数目。
16.根据权利要求13所述的系统,其中所述第二组计算引擎对所述输入数据的所述采样子集执行近似计算。
17.根据权利要求16所述的系统,其中配置为基于由所述第三组计算引擎所生成的所述差别重配置所述第二组计算引擎的装置包括配置为基于所述近似计算的精度和这些近似计算中置信度的測量来重配置所述第二组计算引擎的装置。
18.根据权利要求13所述的系统,其中配置为从计算引擎池中选择第一组计算引擎以对输入数据的完整集执行完整计算的装置包括配置为基于随机选择方法、基于所述计算引擎的能力、所述计算引擎的当前工作负载或所述计算引擎的物理类似性的计算引擎选择中的至少ー个,从所述计算引擎池中选择ー组计算引擎的装置。
19.根据权利要求13所述的系统,其中所述第二组计算引擎以运行前方式执行所述计算,从而使得所述第二组计算引擎对其进行操作的数据包括比所述第一组计算引擎对其进行操作的数据在所述输入数据集中按序相对较后的数据。
20.根据权利要求13所述的系统,其中配置为重配置所述第二组计算引擎的装置包括配置为增加所述第二组计算引擎中计算引擎的数目的装置。
21.根据权利要求13所述的系统,其中配置为重配置所述第二组计算引擎的装置还包括配置为增加来自所述输入数据集的、所述第二组计算引擎对其操作的所述数据的所述采样子集的大小的装置。
22.根据权利要求13所述的系统,其中配置为重配置所述第二组计算引擎的装置响应于所述计算结果的差别不在由一个或多个阈值所指定的预定容差内,重配置所述第二组计算引擎。
23.根据权利要求22所述的系统,还包括配置为响应于所述计算结果的差别不在所述预定容差内,在计算的下一阶段由所述重配置的第二组计算引擎发起部分重计算的装置。
24.根据权利要求13所述的系统,还包括配置为响应于所述计算结果的差别在由ー个或多个阈值指定的预定容差内执行以下操作的装置 生成中断来中断由所述第一组计算引擎执行的所述计算;以及 利用所述第二组计算引擎的所述计算的结果作为由所述第一组计算引擎和所述第二组计算引擎执行的代码的计算阶段的結果。
25.ー种数据处理系统,包括 协调器引擎;以及 耦合到所述协调器引擎的计算引擎池,其中所述协调器引擎 从所述计算引擎池中选择第一组计算引擎以对输入数据的完整集执行完整计算; 从所述计算引擎池中选择第二组计算引擎以对所述输入数据的采样子集执行计算;从所述计算引擎池中选择第三组计算引擎以计算由所述第一组计算引擎所生成的第ー计算结果和由所述第二组计算引擎所生成的第二计算结果之间的计算结果的差别;以及基于由所述第三组计算引擎所生成的所述差别重配置所述第二组计算引擎。
全文摘要
本发明涉及运行前近似计算。提供用于执行近似运行前计算的机制。选择第一组计算引擎以对输入数据的完整集执行完整计算。选择第二组计算引擎以对所述输入数据的采样子集执行计算。选择第三组计算引擎以计算由所述第一组计算引擎所生成的第一计算结果和由所述第二组计算引擎所生成的第二计算结果之间的计算结果的差别。基于由所述第三组计算引擎所生成的所述差别重配置所述第二组计算引擎。
文档编号G06F9/38GK102736896SQ201210089678
公开日2012年10月17日 申请日期2012年3月29日 优先权日2011年3月29日
发明者C·J·克莱克, D·A·詹姆塞克, H·P·霍夫斯蒂, 李剑 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1