并行任务分配应用框架的制作方法

文档序号:6596115阅读:120来源:国知局
专利名称:并行任务分配应用框架的制作方法
技术领域
具体实施例总地涉及允许以可修改的方式对任务进行并行处理的框架。
背景技术
当存在要解决的问题时,用户可针对具体的机器类型编写程序。机器可执行程序, 并对某些数据块进行分析。但是,所处理的数据受到机器的资源的限制。多个机器也可被配置为并行处理多个数据块。但是,需要编写专用于多个机器的程序来处理数据。针对多个机器编写程序需要有经验的熟悉机器配置的程序员。对于不理解如何针对在多个机器上的处理编写程序的用户来说,这变得复杂且无用。

发明内容
具体实施例总地涉及并行任务分配框架。网络设备可利用发现消息来确定正由不同的设备提供的服务。利用框架所提供的服务允许利用在设备中发现的模块来对任务进行并行处理。可将模块从设备中的一个设备分发到其他设备以处理项目,该项目可以是需要在数据上执行的任意分析。项目可由需要被执行的任务组成,其中,每个任务可处理用于项目的数据的至少一部分。当其他设备未利用其处理资源的全部可用性时,并行任务分配框架允许设备使用来自其他设备的处理资源。例如,在操作期间,第一设备并不总使用其可用的处理资源。在此情形中,第一设备可确定任务应当利用模块来执行。目标设备可能并不具有用来执行任务的模块。但是,第一设备可以将模块发送到目标设备,因为框架允许模块被无缝传输。然后,目标设备可将模块安装在框架中,并且第一设备将可用数据发送到目标设备以用于处理。然后,目标设备处理数据以执行任务,然后可将结果发送回第一设备。通过在具有处理可用性的设备间分发用于不同任务的数据,项目可被高效地执行。用户无需对任务的分发进行编程。而是,框架允许设备自动做出将任务分发到具有处理能力的设备的决定。模块被编写,从而使得它们可在设备间分发,甚至是在具有不同的体系架构的设备间分发。对此处所公开的具体实施例的本质和优点的进一步理解可通过参照说明书的剩余部分和附图来实现。


图1描绘了根据一个实施例的用于提供并行任务分配框架的系统的示例。
图2描绘了根据一个实施例的用于初始化计算设备的流程图的示例。图3描绘了根据一个实施例的用于在计算设备接收发现消息时所执行的动作的方法的简化的流程图的示例。图4描绘了根据一个实施例的用于交换模块的方法的简化的流程图。图5描绘了根据一个实施例的用于提供并行执行的方法的简化的流程图。
具体实施例方式图1描绘了根据一个实施例的用于提供并行任务分配框架的系统100的示例。系统100包括多个计算设备102和网络104。每个设备102可包括允许任务的并行处理的框架 106。设备102可包括个人计算机、膝上型计算机、蜂窝电话、个人数字助理、相机、接入点、控制点、服务器、工作站、或其他合适的计算设备。在一个实施例中,各种消费者电子设备可连接到网络104。网络104可将设备102连接起来。在一个示例中,网络104可包括局域网(LAN)、广域网(WAN)、或其他无线或有线网络。框架106可允许针对项目的任务的并行计算。项目可以是需要被执行的任意系列的计算。例如,项目可分析某个方面的数据。模块可被设置在框架106中,其中,模块可执行服务。例如,模块可包括一般服务 (诸如,网络连接性)或者其他服务(诸如,媒体播放器、音乐播放器、或其他计算服务)。 模块可以是框架106的插件。插件遵从应用编程接口(API)或应用二进制接口(ABI)的格式。为了使用API/ABI,用户可编写应用,并且无需考虑模块可被运行在哪个体系架构上。 例如,所编写的用于框架106的模块可被运行在Linux 机器、Windows 机器、Android 机器上、或其他消费者电子操作系统上。模块可被写入框架中,但是并不必与设备的下层体系架构相兼容。例如,机器A是PC,而机器B是游戏机。机器A具有编译用于英特尔体系架构活动的模块,但是,可保持针对其他平台的小模块库(对于PC和其自身的体系架构而言,模块可被看作是二进制大型对象(blob))。当机器B在发现处理期间向机器A报告时,标识信息的一部分是体系架构类型。如果机器B在机器A所支持的类型的列表上,则整个包(如果机器B被期望进一步散布模块)或仅用于B的体系架构的模块被发送。如果整个包被发送(包=同样的功能模块的Win32/LinUX/PS3/Andr0id版本),则机器B可进一步支持包中的任意体系架构。机器B还可使用与其体系架构相兼容的模块。包括框架106的计算设备102可进行通信,以交换执行服务所需的模块。计算设备102搜出其他计算设备102,以用于针对项目的工作的协作。这可涉及将不同模块分发到不同的计算设备102。如果计算设备102具有可用的处理资源,则模块可被分发到该计算设备102。任务中的数据可被发送到该计算设备102,以用于执行任务。通过这种方式,计算设备102可在其他具有可用的处理资源的计算设备间分发工作。通过允许自动协调执行针对项目的任务,增加了网络104中的计算设备102的效率。以下的描述示出了利用框架来处理项目的不同阶段。第一阶段是启动,S卩,设备发现彼此的能力。然后,设备可交换模块,以允许服务被分发。然后将描述针对项目的任务的执行。图2描绘了根据一个实施例的用于初始化计算设备102的流程图200的示例。在步骤202,第一计算设备102-1被初始化,并且框架106被启动。例如,第一计算设备102-1 可连接到网络104。当对框架106上电或初始化时,模块被载入并被初始化。在步骤204,服务注册表被建立。其列出了第一计算设备102-1可用的服务的类型。在步骤206,第一计算设备102-1然后通过网络接口在网络104上广播发现消息。 发现消息包括关于计算设备的信息,诸如,可用的服务,体系架构(例如,Linux, x86)和其他信息。然后,网络上的计算设备可接收发现消息。图3描绘了根据一个实施例的用于当计算设备102接收发现消息时所执行的动作的方法的简化的流程图300的示例。在步骤 302,第二计算设备102-2接收发现消息,该发现消息包括第一计算设备102-1可用的服务。在步骤304,第二计算设备102-2分析在消息中所提供的服务,并且将其存储在注册表中。例如,第二计算设备102-2可记录由网络中的所有计算设备102所提供的服务。第二计算设备102可决定不记录某些不兼容的服务。例如,相机可能无法使用音乐播放器,因而不将其列为可用的服务。但是,在网络上所提供的所有服务都可被记录,即便它们是不兼容的。这使得第二计算设备能够传达其他设备所提供的服务。在步骤306,第二计算设备102-2以其自身的服务和能力的列表来响应。例如,第二计算设备102-2可发送包括可用的服务和其体系架构的发现消息。在步骤308,第二计算设备102-2将第一计算设备102-1注册为对等点(peer)。将设备注册为对等点使得其可在稍后利用第一计算设备102-1进行并行任务的计算。在步骤310,第二计算设备102-2以及相反地第一计算设备102_1确定用于服务的任意模块是否应当被交换。例如,如果第一计算设备102-1的服务中的一个服务为第二计算设备102-2所需,则第二计算设备102-2可请求该模块。第一计算设备102-1也可请求可用在其体系架构上的模块。如果需要交换模块,则执行图4的处理。图4描绘了根据一个实施例的用于交换模块的方法的简化的流程图400。在步骤402,第一计算设备102-1接收服务请求消息。例如,在第一计算设备102-1发送列出了其所提供的服务的发现消息之后,可从其请求媒体播放器的服务。在步骤404,第一计算设备102-1确定该请求是否是有效的请求。例如,可执行对第二计算设备102-2的认证。这可涉及确定第二计算设备102-2是否在受信机器的网络中。 例如,可分析证书来确定是否应当信任第二计算设备102-2。其他认证第二计算设备102-2 的方法也可被利用。第一计算设备102-1还可确定模块是否可在第二计算设备102-2上被执行。这可涉及分析第二计算设备102-2的体系架构。但是,如上所述,第一计算设备102-1可具有能在不同体系架构上执行的多个模块。可确定可在第二计算设备102-2上执行的模块。如果该请求是无效的,则在步骤406,其被拒绝。在步骤408,第一计算设备102-1 封装模块,以用于在第二计算设备102-2处安装。另外,模块组可被封装,诸如,用于不同体系架构的模块组。这使得第二计算设备102-2在与其他设备通信时,成为模块的分发者。封装模块包括配置文件,该配置文件向第二计算设备102-2通知任意所需的下载信息。可扩展标记语言(XML)文件和去往所需文件的路径的配置文件、允许访问的临时证书、以及用于体系架构的库可被发送。这使得带有框架106的设备能够下载并安装模块。在步骤410, 指示已封装的模块已准备好用于下载的消息被发送到第二计算设备102-2。第二计算设备102-2接收下载消息,然后可从第一计算设备102-1下载组件。例如,网络层可与第一计算设备102-1协调来进行传输。在该情形下,针对已封装的模块,可经由安全壳(SSH)来执行机器对机器的握手和文件传输。在已封装的模块被下载之后,可基于配置和下载信息进行安装。一旦模块被安装,服务可被添加到其服务注册表中,并且指示新服务可用的新消息可在网络104上被广播。一旦对等设备的发现被执行,则任务的并行执行可被提供。图5描绘了根据一个实施例的用于提供任务的并行执行的方法的简化的流程图500。在步骤502,第一计算设备 102-1确定将被执行的项目。该项目可以是任意可能需要在数据上执行的分析。项目可包括多个任务,或者可被分解为多个可被执行的任务。在步骤504,第一计算设备102-1确定针对项目的任务。例如,项目可被分析,以确定哪些任务可被其他计算设备102执行。服务注册表和对等点列表可被分析。这可确定哪些服务由其他计算设备102提供。对等点列表还可指示其他计算设备102的能力,诸如,哪些任务它们可处理。例如,Linux机器能够处理计算密集型的任务。Playstation 3 (PS3) 也能够处理图形密集型的任务,因为在PS3内具有强大的图形处理器。程序员无需对如何将项目分解成任务进行编程。而是,第一计算设备102-1分析项目,并且基于其的对等点列表和由对等点所提供的服务来确定可从项目中分解出的任务。该确定可被作为在网络变更上可用的处理能量和能力来动态执行。程序员无需确切知道问题是如何被分发的,但是在概念上以足够精确的粒度对问题域进行分解,从而使得最小的所期望的设备可参与到解决问题的处理中。只有在问题或数据不符合一般化的模型的情况下,这才是必须的。例如,模型可是用于项目的数据,且无需遵从任何分割规则或限制。因此,数据可以任意方式被分解。并且,另一模型可以是数据, 并可以某种方式被分解。然后,程序员可指定落入该模型的数据。程序员还可指定数据应如何被分解的分割限制,诸如,数据不应当被分解为比某些大小更小的大小、数据应当被分割以保持某些数据在一起等。针对简化的示例,存在包括许多千兆比特信息的大量数据X。将解决的任务是搜索该大量数据中的具体模式(可以是在生理数据中的疾病签名)。程序员可以以如何搜索和搜索什么的抽象逻辑来提供数据和1-n个模块(1用于每个所希望的受支持的平台、相同的代码,仅针对不同的目标来重新编译)。然后,如果设备表现为可处理任意大小的数据,则任意数量的数据和所附模块被分发到该另一设备。但是,如果设备具有某些处理限制,诸如,一次仅能处理(例如)兆字节的数据的PDA或其他受限设备进入网络,则第一计算设备将给个人计算机比PDA更大的数据块。随着每个设备完成对数据的处理,结果被返回,并且下一数据块被指派。只要不存在用于根据具体规则来分割数据的域相关的原因,该处理就起作用。即,第一计算设备可以任意方式分割数据,并且可基于哪些设备可用以及它们的处理能力来动态地分割数据。但是, 如果数据的自然顺序是只有较强大的设备才能运行它,则不能处理大量数据的设备不被给予工作。在该情形中,程序员可定义模式检测代码和数据块散布代码来配置关于最小/最大数据块大小的指南。第一计算设备可读取指南,并且确定如何分解数据。第一计算设备还可分析数据和需要被执行的任务,并且以所确定的最有效的方式分解数据。在其他情形中,第一计算设备确保仅有工作单元根据问题域的需求被分发。在步骤506,第一计算设备102-1确定计算设备102包括用于处理任务的处理资源。这可涉及轮询其他计算设备102以确定处理资源是否可用。例如,消息可被发送到其他设备102,并且指示处理资源是否可用的响应可被接收。如果设备未在某阈值以上操作,则处理资源是可用的。例如,如果处理器处于60%的利用率,则计算设备可指示其具有40% 的处理资源可用。在步骤508,第一计算设备102-1确定计算设备102是否需要模块来执行任务之一。如果是,则步骤510辅助对模块的分发。例如,模块可如上参考图4所述地被分发。因此,当第一计算设备102-1确定任务可被执行时,模块可被分发。如果模块无需被分发,或者在模块已被分发之后,在步骤512,第一计算设备 102-1然后将任务和数据发送到第二计算设备102-2。例如,所需的算法被封装在模块中, 并且被与数据一起发送,以执行计算。在一个示例中,一旦第二计算设备102-2已经被给予具有解决问题的算法(如上所述的模式检测算法)的模块,消息即被发送到第二计算设备 102-2以执行任务。在单目的模型(其中,第二计算设备102-2知道哪个任务以及如何执行任务)中,该消息是触发工作所需的全部。包括在用于执行任务的消息中的是访问网络上的共享数据贮存库所需的信息,或者是下载任务所需的数据段的信息。一旦接收到该消息,目标机器或者下载或者参考共享资源、执行任务,并且将结果与指示继续的或暂停的计算可用性的标志一起转发回主机器。如果目标机器仍旧可用,则通过参照将被处理的大量数据,下一块数据将经由下一任务消息被指派。虽然描述了一个与之通信的计算设备,但是应当理解,任意数量的计算设备102可接收任务并且在数据部分上执行计算。在步骤514,第一计算设备102-1接收任务的执行结果。因为任务被许多不同的设备执行,因此,在步骤516,第一计算设备102-1可将结果合并回项目。例如,针对不同任务的不同结果可从不同计算设备102接收。第一计算设备102-1可协调如何互相关联不同的任务以解决针对项目的问题。现将描述不同的示例。应当理解,还可构想其他示例。在一个示例中,带有小型服务器的计算设备102的研究人员可以利用在设备102-1上所需的数据设立问题。问题可在网络上被复制,从而使得任意运行框架106的设备可被冷(仅复制文件)更新或热(组件可被热交换)更新。当任务被发送时,这些设备可从蛋白质研究切换到地质研究。在另一示例中,网络上的设备A-F正在处理问题,并且每个设备将结果馈送到下一设备,下一设备处理该结果,并且将其发送到下一个(即,A馈送B,B馈送C等)。F的输出是“答案”。传统上,需要针对所有六个机器编写用以处理数据的工作流程。但是,具体的实施例允许设备F自动确定哪些设备具有可用的处理资源,并且F可协调任务的分发。设备F可以在1-n系统上变更配置/设置、在A上设置数据,并且返回处理。如果同样的问题在运行,则F上的组件可检查结果,并且通过点对点机制来对之前的五个机器进行变更,重置并重新运行测试自身,并且只在完成时打扰人。虽然已经针对具体实施例描述了说明,但是这些具体的实施例仅是说明性的,而非限制性的。任何适合的编程语言可被用于实现具体实施例的例程,包括,C、C++、Java、汇编语言等。不同的编程技术可被利用,诸如,过程性的或面向对象的技术。该例程可在单个处理设备上或多个处理器上执行。虽然步骤、操作或计算可被呈现为具体的次序,但是,该次序在不同的具体实施例中可被变更。在某些特定的实施例中,在本说明书中顺序示出的多个步骤可同时被执行。具体的实施例可被实现在计算机可读的存储介质中,以供指令执行系统、装置、系统或设备使用或与之连接。具体的实施例可被以软件或硬件或二者的组合中的控制逻辑的形式实现。当控制逻辑被一个或多个处理器执行时,该控制逻辑可操作以执行在具体实施例中所描述的操作。具体的实施例可通过使用编程的通用数字计算机、专用集成电路、可编程逻辑设备、现场可编程门阵列、光学的、化学的、生物的、量子的或纳米工程系统、组件和机制来实现。一般而言,特定实施例的功能可通过任意在现有技术中公知的手段来实现。可使用分布式的、联网式的系统、组件和/或电路。通信或数据的传输可以是有线的、无线的、或通过任意其他手段。还应当理解,在图/附图中所描绘的一个或多个元素还可以以更加单独或集成的形式实现,或者在某些情形中,甚至可被移除或提供为不可操作,而根据特定应用是有用的。实现能被存储在机器可读介质中以允许计算机执行上述任意方法的程序或代码也在本发明的精神和范围内。如在此处的描述和之后的权利要求中所使用的,“一个”、“一”和“该”包括多个参考,除非上下文清楚地指示。如在此处的描述和之后的权利要求中所使用的,“中”的意思包括“中”和“上”,除非上下文清楚地指示。因此,虽然此处已经描述了具体的实施例,在前述公开中示出了多个修改例、各种变更例和替换例,但是应当理解,在某些示例中,具体实施例的某些特征可以被利用而无需使用对应的其他特征,只要不偏离所提出的范围和精神即可。因此,可做出多个修改例来将具体的情形或材料适应到本质的范围和精神。
权利要求
1.一种用于处理数据的方法,所述方法包括接收包括在一个或多个联网设备上发现的服务的一个或多个发现消息,所述服务被设置在这样的框架中,该框架允许利用与所述框架兼容的模块来对任务进行并行处理; 确定其中的数据应当被处理的项目;确定所述联网设备中的具有执行针对所述项目的服务的处理资源的一个联网设备,其中所述服务被确定为能够在对用于所述项目的至少部分数据的处理中执行任务; 将模块从用于所述服务的所述框架分发到所述一个联网设备;以及将用于所述任务的数据分发到所述一个联网设备,所述一个联网设备利用用于所述项目的所述模块来处理所述数据。
2.如权利要求1所述的方法,还包括将在所述一个或多个联网设备上发现的所述服务存储在注册表中;以及分析所述注册表中的所述服务,以确定所述一个或多个联网设备中的哪一个能够利用服务来执行用于所述项目的所述任务。
3.如权利要求1所述的方法,还包括确定在所述一个或多个联网设备中的网络设备上发现的、能够被传输到第一设备的服务;以及向所述网络设备发送所述服务的请求。
4.如权利要求1所述的方法,还包括 在所述网络上检测新设备;确定所述新设备是否具有处理资源;以及在所述新设备具有可用的处理资源的情况下,将第二任务分发给所述新设备。
5.如权利要求1所述的方法,其中,所述一个或多个联网设备包括所述框架,该框架允许在所述一个或多个联网设备间分发模块。
6.如权利要求1所述的方法,还包括动态地轮询所述一个或多个联网设备,以确定可用的处理资源;以及分析所述项目以确定所述一个联网设备,从而基于动态确定的可用处理资源来执行所述任务。
7.如权利要求6所述的方法,其中,所述一个联网设备是基于包括在所述一个联网设备中的能力来选择的。
8.如权利要求1所述的方法,还包括 确定所述数据是否包括分割限制;以及在所述数据包括分割限制的情况下,基于所述分割限制和所述一个联网设备来将所述数据分割成数据单元,从而使得所述分割限制不会被违反。
9.如权利要求8所述的方法,还包括在所述数据不包括分割限制的情况下,基于所述一个联网设备的能力来分割所述数据。
10.如权利要求1所述的方法,其中,所述模块包括与多个计算体系架构兼容的模块, 其中,与所述一个联网设备兼容的模块被发送给所述一个联网设备。
11.一种装置,包括一个或多个处理器;以及编码在一个或多个计算机可读介质中的由所述一个或多个处理器执行的逻辑,该逻辑在被执行时可操作以接收包括在一个或多个联网设备上发现的服务的一个或多个发现消息,所述服务被设置在这样的框架中,该框架允许利用与所述框架兼容的模块来对任务进行并行处理; 确定其中的数据应当被处理的项目;确定所述联网设备中的具有执行针对所述项目的服务的处理资源的一个联网设备,所述服务被确定为能够在对用于所述项目的至少部分数据的处理中执行任务; 将模块从用于所述服务的所述框架分发到所述一个联网设备;以及将用于所述任务的数据分发到所述一个联网设备,所述一个联网设备利用用于所述项目的所述模块来处理所述数据。
12.如权利要求11所述的装置,其中,所述逻辑在被执行时还可操作以 将在所述一个或多个联网设备上发现的所述服务存储在注册表中;以及分析所述注册表中的所述服务,以确定所述一个或多个联网设备中的哪一个能够利用服务来执行针对所述项目的所述任务。
13.如权利要求11所述的装置,其中,所述逻辑在被执行时还可操作以确定在所述一个或多个联网设备中的网络设备上发现的能够被传输到第一设备的服务;以及向所述网络设备发送所述服务的请求。
14.如权利要求11所述的装置,其中,所述逻辑在被执行时还可操作以 在所述网络上检测新设备;确定所述新设备是否具有处理资源;以及在所述新设备具有可用的处理资源的情况下,将第二服务分发到所述新设备。
15.如权利要求11所述的装置,其中,所述一个或多个联网设备包括所述框架,该框架允许在所述一个或多个联网设备间分发模块。
16.如权利要求11所述的装置,其中,所述逻辑在被执行时还可操作以 动态地轮询所述一个或多个联网设备,以确定可用的处理资源;以及分析所述项目以确定所述一个联网设备,从而基于动态确定的可用处理资源来执行所述任务。
17.如权利要求16所述的装置,其中,所述一个联网设备是基于包括在所述一个联网设备的能力来选择的。
18.如权利要求11所述的装置,其中,所述逻辑在被执行时还可操作以 确定所述数据是否包括分割限制;以及在所述数据包括分割限制的情况下,基于所述分割限制和所述一个联网设备来将所述数据分割成数据单元,从而使得所述分割限制不会被违反。
19.如权利要求18所述的装置,其中,所述逻辑在被执行时还可操作以在所述数据不包括分割限制的情况下,基于所述一个联网设备的能力来分割所述数据。
20.一种用于处理数据的系统,所述系统包括多个目标计算设备,其中所述目标计算设备中的每一个包括不同的处理资源;以及主计算设备,该主计算设备被配置为接收包括在所述多个目标计算设备上发现的服务的一个或多个发现消息,所述服务被设置在这样的框架中,该框架允许利用与所述框架兼容的模块来对任务进行并行处理;确定其中的数据应当被处理的项目;确定所述多个目标计算设备中可用的处理资源,以执行针对所述项目的一个或多个服务,所述一个或多个服务被确定为能够在对用于所述项目的至少部分数据的处理中执行任务;将一个或多个模块中的模块从用于服务的所述框架分发到所述多个目标计算设备中的每一个;以及将用于任务的数据分发到所述多个目标计算设备中的每一个,其中,所述多个目标计算设备中的每一个利用用于所述项目的所分发的模块来处理所述数据。
全文摘要
具体实施例总地涉及并行任务分配框架。网络设备可利用发现消息来确定正由不同的设备提供的服务。利用该框架所提供的服务允许利用在设备中发现的模块来对任务进行并行处理。可以将模块从设备中的一个设备分发到其他设备来处理项目,该项目可以是需要在数据上执行的任意分析。项目可由需要被执行的任务组成,其中,每个任务可处理用于项目的数据的至少一部分。当其他设备未利用其处理资源的全部可用性时,并行任务分配框架允许设备使用来自其他设备的处理资源。
文档编号G06F9/38GK102272717SQ200980153816
公开日2011年12月7日 申请日期2009年12月30日 优先权日2009年1月7日
发明者杰夫·科布 申请人:索尼公司, 索尼电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1