CN107660281B - 同步分布式计算运行时间的系统和方法 - Google Patents
同步分布式计算运行时间的系统和方法 Download PDFInfo
- Publication number
- CN107660281B CN107660281B CN201580080163.8A CN201580080163A CN107660281B CN 107660281 B CN107660281 B CN 107660281B CN 201580080163 A CN201580080163 A CN 201580080163A CN 107660281 B CN107660281 B CN 107660281B
- Authority
- CN
- China
- Prior art keywords
- computation
- distributed
- runtimes
- computing
- runtime
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种计算系统(100),包括:多个集群计算节点(101、102、103);混合并行计算运行时间(104),包括:用于所述多个集群计算节点(101、102、103)上的并行计算的至少两个分布式计算运行时间(105、106),其中,所述混合并行计算运行时间104用于对分布到所述多个集群计算节点(101、102、103)的数据进行操作,并且包括用于同步所述至少两个分布式计算运行时间(105、106)和将所述至少两个分布式计算运行时间(105、106)中的至少一个分布式计算运行时间的数据提供给所述至少两个分布式计算运行时间中的至少另一个分布式计算运行时间的同步模块(107)。
Description
技术领域
本发明涉及分布式并行计算领域,特别是涉及同步计算运行时间的系统和方法,即在多个集群计算节点上优化计算运行时间的同步。
特别地,本发明涉及优化至少两个分布式计算运行时间的计算状态的同步。优化优选地在基于分布式集群的并行计算系统中进行。
背景技术
在计算机集群,通常是指一组连接的计算机,例如,在数据中心,上运行并行或分布式计算被广泛采用。有多种可用于在计算机集群上执行并行计算的运行时间。运行时间的例子是MPI、Spark和Hadoop。它们通常基于不同的语言(MPI:C/C++,Spark:Scala,Hadoop:Java)。
消息传递接口(Message Passing Interface,简称MPI)是一种标准化的消息传递系统,它定义了一个库例程的核心的语法和语义,它们以独立于语言的方式在一组进程之间提供基本的同步和通信功能。更具体地说,它是一种独立于语言的通信协议,用于对在分布式系统上运行的并行程序进行编程。MPI的进一步优点在于它提供了一个低层标准接口,由组网硬件直接支持,从而实现了低开销的计算和通信,并提供了优化机会。缺点是实现算法的成本高(在时间和资源方面)。因此,MPI有利于系统编程。
HADOOP是实现可扩展分布式软件的框架。它基于MapReduce算法,用于计算机集群上大量数据并行计算的编程模型,以及也基于Hadoop分布式文件系统(HadoopDistributed File System,简称HDFS),用于在多台计算机的文件系统中存储大量数据的高可用性文件系统。Hadoop允许在计算机集群上执行大量数据的密集计算进程。
Spark是实现可扩展分布式软件的另一框架。与Hadoop相比,它具有考虑到易用性和计算速度的优点。它消除了在某些用例中不是很高效的Hadoop的缺点。Spark运行在现有HDFS基础设施之上,以提供增强功能和附加功能。它是Hadoop MapReduce的替代物,旨在提供一个全面统一的方案来管理不同的用例和要求。
因此,Hadoop或Spark的优点可以认为是如何为集群基础设施提供高层API,特别是提供简化的资源和故障接管管理。它们提供一个域专用语言(domain specificlanguage,简称DSL),使编写程序变得容易。另一方面,缺点是两个运行时间的效率都取决于实现的算法种类,同时优化难以实现。因此,Hadoop和Spark有利于应用编程。
运行时间通常提供用于执行计算机程序的抽象层,如这里所使用的,用于在计算集群的多个节点上执行计算操作或计算任务。
例如,运行时间可以将计算任务从与计算硬件的直接交互分离,从而为底层硬件提供更抽象和统一的访问。大多数可用的运行时间的设计是不同的,因此或多或少适合处理具体的计算问题。因此,根据手头的计算任务,应该选择一个运行时间,这样可以针对任务获取最佳的结果。然而,由于每个运行时间都有优点和缺点,因此用户在选择运行时间时必须处理权衡取舍。
在大多数情况下,计算集群安装了不同的运行时间,使用户能够使用可用的运行时间运行一个或多个计算任务。这意味着如果使用运行时间执行用户的计算任务,则使用支持特定算法的低层实现方案的运行时间来提高性能将是方便的,而使用第二运行时间能够使用高层架构编写主程序逻辑来促进实现过程。
因此,所涉及的运行时间需要交互并建立运行时间之间的通信以交换信息。由于运行时间可以视为是提供访问底层硬件统一和抽象手段的隔离环境,从而也封装了在其中执行的程序,不同运行时间之间的有效数据共享和互操作是一个障碍。多个运行时间可以并行运行在同一计算集群上,从而共享或竞争系统资源。
需要通过运行时间之间的通信以交换信息不是新的技术。然而,除了所有涉及缺点的几种规避措施之外,现有技术中没有通用的方案。为了能够在不同运行时间运行的计算任务之间建立通信,现有技术提供了以下技术:
第一个想法是代码的自动重新实现,这意味着自动重写最初使用运行时间B原语编写的就运行时间A而言最初是程序b'的程序b,并使用运行时间A的隔离环境运行两个程序a(为运行时间A编写)和b',从而实现程序的直接通信。
然而,从运行时间B的程序b到运行时间A的程序b'的转换引起了这个问题,基于运行时间B的一些关键特性的程序b的性能优势可能会丢失。从运行时间B到运行时间A的转换之后,目的运行时间A可能缺乏执行程序b所必需的关键特征,从而不可能实现自动重新实现。
在并行程序和并行系统领域,通用的同步方法是众所周知的,例如软件设计模式(software design pattern,简称SDP),如锁和信号量,其描述单个节点上的进程之间的互操作的低层方法,或更高阶并行抽象,例如,期货,回调,演员和软件事务内存(softwaretransactional memory,简称STM)。更高阶并行抽象基于低层原语,并为进程增加了抽象级别。其它众所周知的同步方法是描述不同系统之间的通信的企业集成模式,例如,发布者,订户,路由器和信道。然而,这些方法太笼统,不能应用于运行时间之间的通信。
现有技术中已知的另一种规避措施是通过外部存储器的通信。该方案要求运行在不同运行时间的程序或计算任务用于读取和写入共享的外部存储器。这种方法的缺点在于,它不是通用的,并且要求程序和算法适应于使用共享存储器来相互交换信息的方式。使用外部存储器也增加了输入输出开销,从而降低了计算性能。
因此,出现如何优化运行时间之间的通信以交换信息并有效地将在第一运行时间运行的程序的计算逻辑映射到在第二运行时间运行的程序上的问题。
因此,本发明提供了一种方案以在并行分布式系统中有效地同步运行时间和允许运行时间之间的通信,根据独立权利要求,其通过提供计算系统和用于操作计算系统的方法克服了上述现有技术的问题。其它方面和实施例受到从属权利要求的约束。
发明内容
根据第一方面,本发明提供一种计算系统,包括:多个集群计算节点;混合并行计算运行时间,包括:用于所述多个集群计算节点上的并行计算的至少两个分布式计算运行时间,其中,所述混合并行计算运行时间用于对分布到所述多个集群计算节点的数据进行操作,并且包括用于同步所述至少两个分布式计算运行时间和将所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间的数据提供给所述至少两个分布式计算运行时间中的至少另一个分布式计算运行时间的同步模块。
这种混合并行计算运行时间可以组合其组成的分布式计算运行时间的优点。因此,实现一个或多个程序的用户不限于单个运行时间的域,而是可以通过选择最适合当前问题的运行时间来使用特定运行时间的优点和效率。
根据所述第一方面的第一种实现形式,所述同步模块可以用于同步所述至少两个分布式计算运行时间的计算状态。
这允许在若干运行时间内有效地分配程序。这样,在将其同步返回到第一计算运行时间,可以在第二分布式计算运行时间执行计算的特定部分,与第一计算运行时间相比,这对于计算的所述特定部分更有效。
根据所述第一方面的第二种实现形式,所述同步模块可以用于在由所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间执行的计算的特定计算状态同步所述至少两个分布式计算运行时间。
因此,可以使得同步过程的执行依赖于事件和/或状态。这确保了在程序员所期望的处理中的点执行同步,或者例如当它对于手上的当前计算任务是最有效的时候。因此,总体计算过程显著加速。
根据所述第一方面的第三种实现形式,所述同步模块可以是状态机。
根据所述第一方面的第四种实现形式,所述同步模块可以用于提供定向同步,其中,所述至少两个分布式计算运行时间中的至少第一个分布式计算运行时间可以用于在所述至少两个分布式计算运行时间中的至少第二个分布式计算运行时间发起计算。
通过提供定向同步技术,提供了有效的顺序操作模式。
根据所述第一方面的第五种实现形式,所述同步模块可以用于将所述至少两个分布式计算运行时间中的至少第二个分布式计算运行时间的状态变量或状态变量的值提供给所述至少两个分布式计算运行时间中的至少第一个分布式计算运行时间。所述至少两个分布式计算运行时间中的至少第一个分布式计算运行时间可以用于在其计算中使用所述至少两个分布式计算运行时间中的至少第二个分布式计算运行时间的状态变量或状态变量的值。
这提供了在计算运行时间之间共享程序计算状态的统一方式。因此,总体计算过程显著加速。根据所述第一方面的第六种实现形式,所述同步模块可以用于提供状态变量和所述状态变量的值。所述至少两个分布式计算运行时间中的至少第一个分布式计算运行时间可以用于在其计算中使用所述至少两个分布式计算运行时间中的至少第二个分布式计算运行时间的状态变量和状态变量的值。
根据所述第一方面的第七种实现形式,所述同步模块可以包括关于所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间的计算状态的信息。所述同步模块可以用于当所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间达到特定状态或指示另一个分布式计算运行时间应该开始时,提供开始另一个分布式计算运行时间的计算所需的数据。
这允许在计算运行时间之间的有效切换,从而提高计算过程的总体性能。
根据所述第一方面的第八种实现形式,计算可以并行运行并分布在集群计算节点上。
由于更有效的顺序处理任务的方式,更好地利用资源和可扩展性,由此产生的优点是较少的总体计算时间。
根据所述第一方面的第九种实现形式,所述同步模块可以用于通过将特定命令发送到所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间来同步所述至少两个分布式计算运行时间的计算状态。特定命令可以用于转换特定命令所应用的分布式计算运行时间的计算状态。
根据所述第一方面的第十种实现形式,所述特定命令可以用于部分地将特定命令所应用的分布式计算运行时间的计算移动至下一状态,直到所述集群计算节点上的数据的所有计算达到下一状态。
根据所述第一方面的第十一种实现形式,所述特定命令可以用于将特定命令所应用的分布式计算运行时间的计算通过步骤移动至下一状态。
这提供了高级同步和监视能力以及精细调度。这确保在并行任务中计算成功达到预定义状态,并且执行下一步骤取决于以前的状态。此外,还支持调试。
根据所述第一方面的第十二种实现形式,所述特定命令可以包括指示哪个部分的数据应转换到下一状态的转换信息。
根据所述第一方面的第十三种实现形式,所述同步模块的寿命可以与所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间的计算的寿命绑定。
由于由所述同步模块分配的资源可以在不需要时被释放,所以这会改善资源的管理。
根据所述第一方面的第十四种实现形式,所述同步模块可以用于与至少一个主模块和至少一个代理模块协调同步。
根据所述第一方面的第十五种实现形式,所述主模块可以用于开始分布式计算运行时间和发起计算。
根据所述第一方面的第十六种实现形式,所述至少一个代理模块可以用于控制所述至少两个分布式计算运行时间中的一个分布式计算运行时间的任务的计算,并且使所述任务的执行与至少另外一个任务的执行同步。
使用单独的模块具有提供一种方案的优点,该方案随着计算任务的日益复杂和资源的需求而容易地扩展。将提供的功能分离到多个模块不仅允许以统一的方式来解决不同的计算和任务,而且可以使程序员更容易理解软件的处理。不同模块之间的分层关系允许并提供集中管理,因此提供了更有效的顺序处理任务的方式。
根据所述第一方面的第十七种实现形式,所述系统可以包括用于在所述至少两个分布式计算运行时间之间交换数据的存储模块。
根据所述第一方面的第十八种实现形式,一个分布式计算运行时间的至少一个任务可以用于使用所述存储模块并将另一个分布式计算运行时间的计算所需的输入数据保存到所述存储模块。
根据所述第一方面的第十九种实现形式,一个分布式计算运行时间的至少一个任务可以用于使用所述存储模块并从所述存储模块获取另一分布式计算运行时间的计算的结果。
根据所述第一方面的第二十种实现形式,所述任务可以实现用于与所述存储模块通信的预定义通信接口。所述任务可以用于使用所述通信接口从所述存储模块获取输入数据或者将计算的结果写入到所述存储模块。
根据所述第一方面的第二十一种实现形式,所述至少两个分布式计算运行时间中的一个分布式计算运行时间可以实现描述进程间通信模式的低层消息传递接口。所述至少两个分布式计算运行时间中的另一个分布式计算运行时间可以用于使用至少一个系统进程进行操作,其中一个系统进程是管理其它进程和至少一个工作进程的主进程。
根据所述第一方面的第二十二种实现形式,所述至少两个分布式计算运行时间中的一个分布式计算运行时间可以用于使用驱动程序进程和至少一个工作进程进行操作,并且可以用于使用弹性分布式数据集进行操作。
根据所述第一方面的第二十三种实现形式,所述至少两个分布式计算运行时间中的一个分布式计算运行时间可以是Spark运行时间,所述至少两个分布式计算运行时间中的另一个分布式计算运行时间可以是MPI运行时间。
根据所述第一方面的第二十四种实现形式,所述系统可以是基于分布式集群的并行计算系统。
根据第二方面,本发明提供一种用于操作计算系统,特别是基于分布式集群的并行计算系统的方法,其中,所述计算系统包括:多个集群计算节点;混合并行计算运行时间,包括:用于所述多个集群计算节点上的并行计算的至少两个分布式计算运行时间,其中,所述混合并行计算运行时间对分布到所述多个集群计算节点的数据进行操作,并且包括同步所述至少两个分布式计算运行时间和将所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间的数据提供给所述至少两个分布式计算运行时间中的至少另一个分布式计算运行时间的同步模块。
根据所述第二方面的第一种实现形式,所述同步模块可以同步所述至少两个分布式计算运行时间的计算状态。
根据所述第二方面的第二种实现形式,所述同步模块可以在由所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间执行的计算的特定计算状态同步所述至少两个分布式计算运行时间。
根据所述第二方面的第三种实现形式,所述同步模块可以是状态机。
根据所述第二方面的第四种实现形式,所述同步模块可以提供定向同步,其中,所述至少两个分布式计算运行时间中的至少第一个分布式计算运行时间可以在所述至少两个分布式计算运行时间中的至少第二个分布式计算运行时间发起计算。
根据所述第二方面的第五种实现形式,所述同步模块可以将所述至少两个分布式计算运行时间中的至少第二个分布式计算运行时间的状态变量或状态变量的值提供给所述至少两个分布式计算运行时间中的至少第一个分布式计算运行时间。所述至少两个分布式计算运行时间中的至少第一个分布式计算运行时间可以在其计算中使用所述至少两个分布式计算运行时间中的至少第二个分布式计算运行时间的状态变量或状态变量的值。
根据所述第二方面的第六种实现形式,所述同步模块可以提供状态变量和所述状态变量的值。所述至少两个分布式计算运行时间中的至少第一个分布式计算运行时间可以使用状态变量和所述状态变量的值。
根据所述第二方面的第七种实现形式,所述同步模块可以包括关于所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间的计算状态的信息。所述同步模块可以当所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间达到特定状态或指示另一个分布式计算运行时间应该开始时,提供开始另一个分布式计算运行时间的计算所需的数据。
根据所述第二方面的第八种实现形式,计算可以并行运行并分布在集群计算节点上。
根据所述第二方面的第九种实现形式,所述同步模块可以通过将特定命令发送到所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间来同步所述至少两个分布式计算运行时间的计算状态。特定命令可以转换特定命令所应用的分布式计算运行时间的计算状态。根据所述第二方面的第十种实现形式,所述特定命令可以部分地将特定命令所应用的分布式计算运行时间的计算移动至下一状态,直到所述集群计算节点上的数据的所有计算达到下一状态。
根据所述第二方面的第十一种实现形式,所述特定命令可以将特定命令所应用的分布式计算运行时间的计算通过步骤移动至下一状态。
根据所述第二方面的第十二种实现形式,所述特定命令可以包括指示哪个部分的数据应转换到下一状态的转换信息。
根据所述第二方面的第十三种实现形式,所述同步模块的寿命可以与所述至少两个分布式计算运行时间中的至少一个分布式计算运行时间的计算的寿命绑定。
根据所述第二方面的第十四种实现形式,所述同步模块可以与至少一个主模块和至少一个代理模块协调同步。
根据所述第二方面的第十五种实现形式,所述主模块可以开始分布式计算运行时间和发起计算。
根据所述第二方面的第十六种实现形式,所述至少一个代理模块可以控制所述至少两个分布式计算运行时间中的一个分布式计算运行时间的任务的计算,并且使所述任务的执行与至少另外一个任务的执行同步。
根据所述第二方面的第十七种实现形式,所述系统可以包括用于在所述至少两个分布式计算运行时间之间交换数据的存储模块。
根据所述第二方面的第十六种实现形式,一个分布式计算运行时间的至少一个任务可以使用所述存储模块以将另一个分布式计算运行时间的计算所需的输入数据保存到所述存储模块。
根据所述第二方面的第十七种实现形式,一个分布式计算运行时间的至少一个任务可以使用所述存储模块以从所述存储模块获取另一分布式计算运行时间的计算的结果。
根据所述第二方面的第十八种实现形式,所述任务可以实现用于与所述存储模块通信的预定义通信接口,其中,所述任务使用所述通信接口以从所述存储模块获取输入数据或者将计算的结果写入到所述存储模块。
根据所述第二方面的第十九种实现形式,所述至少两个分布式计算运行时间中的一个分布式计算运行时间可以实现描述进程间通信模式的低层消息传递接口。所述至少两个分布式计算运行时间中的另一个分布式计算运行时间可以使用至少一个系统进程进行操作,其中一个系统进程是管理其它进程和至少一个工作进程的主进程。
根据所述第二方面的第二十种实现形式,所述至少两个分布式计算运行时间中的一个分布式计算运行时间可以使用驱动程序进程和至少一个工作进程进行操作,并且可以用于使用弹性分布式数据集进行操作。
根据所述第二方面的第二十一种实现形式,所述至少两个分布式计算运行时间中的一个分布式计算运行时间可以是Spark运行时间,所述至少两个分布式计算运行时间中的另一个分布式计算运行时间可以是MPI运行时间。
根据所述第二方面的第二十二种实现形式,所述方法可以是用于操作基于分布式集群的并行计算系统的方法。
附图说明
现在将参照附图来解释本发明的上述方面和实施例。
图1示出了本发明的示意图;
图2示出了本发明的起点;
图3示出了根据本发明的两个分布式计算运行时间的同步的示意图;
图4示出了分布在集群计算节点上的数据的示意图;
图5示出了同步过程的示意图;
图6示出了系统设置的ER图;
图7示出了根据图4的ER图的关系的示意图;
图8示出了根据图4的ER图的构成的示意图;
图9示出了同步方法的示意图;
图10示出了弹性分布式数据集(resilient distributed dataset,简称RDD)的示意图;
图11示出了接口的示意图。
具体实施方式
通常,需要注意的是本申请中描述的所有设置、设备、模块、组件、模型、元件、单元以及方法等都可以由软件或硬件元件或其任意组合实现。本申请中描述的各种实体执行的所有步骤和所描述的将由各种实体执行的功能旨在表明各个实体适于或用于执行各自的步骤和功能。虽然在以下具体实施例的描述中,由通用实体执行的特定功能或步骤没有在执行特定步骤或功能的实体的具体元件的描述中反映,但是技术人员应该清楚的是这些方法和功能可以在各自的硬件或软件元件或其任意组合中实现。此外,本发明的方法及其各个步骤在各个描述的装置元件的功能中体现。
本发明允许对至少两个分布式计算运行时间105、106的计算状态的同步的优化。优化优选地在基于分布式和/或集群的并行计算系统中执行。
如前所述,过去有必要重新执行运行在不同运行时间的程序。还需要使用已建立的同步方法,例如共享存储器,来提供运行时间之间的通信,这并不能应用于所有类型的场景。
本发明通过创建混合并行计算运行时间104来解决这些问题,其包括至少两个,特别是若干,例如由同步模块107互连的异构的分布式计算运行时间105、106,这有助于分布式计算运行时间105、106之间的通信。
本发明提供了用于在不同的分布式计算运行时间105、106上基本并行运行的程序的同步的系统和方法。特别地,同步包括对所涉及的分布式计算运行时间105、106上的计算的执行的控制和分布式计算运行时间105、106之间的数据交换。这样,混合并行计算运行时间104组合其组成的分布式计算运行时间105、106的优点。
因此,实现一个或多个程序的用户不限于单个运行时间的域,而是可以通过选择最适合当前问题的运行时间来使用特定运行时间的优点和效率。
图1示出了根据本发明的第一方面的通用设置。图1示出了计算系统100。所述计算系统100包括多个集群计算节点101、102、103和混合并行计算运行时间104。所述混合并行计算运行时间104包括至少两个分布式计算运行时间105、106和同步模块107。
图1示出了两个分布式计算运行时间105和106。然而,所述混合并行计算运行时间104还可以包括更多分布式计算运行时间。
并且,图1示例性地示出了三个集群计算节点101、102、103。然而,所述计算系统100还可以包括可以互连的更多或更少的集群计算节点101、102、103。图1中将所述混合并行计算运行时间104连接到所述集群计算节点101、102、103的箭头示出了所述混合并行计算运行时间104可以被应用并且可以执行分布在至少一些集群计算节点101、102、103上的计算。计算可以在集群计算节点上并行完成。
集群计算节点101、102、103可以是计算集群的单个计算元件,例如,CPU(中央处理器),具有例如存储,存储器,I/O和/或网络单元等相关单元的GPU(图形处理器),控制器等等。在计算集群中,多个计算机连接起来并且协同工作,这样它们就可以被看作是一个单一的系统。离散计算机通常通过计算机网络连接,例如局域网(local area network,简称LAN),例如,Myrinet,(千兆)以太网,TH Express或Infiniband。节点可以使用不同的操作系统和不同的硬件,通常使用通用的操作软件和硬件架构。计算集群通常用于提高单个计算机的性能。
分布式计算运行时间105、106提供用于执行计算机程序并用于在多个集群计算节点101、102、103上执行计算操作或计算任务的抽象层,以提供对计算集群的底层硬件的更抽象和统一的访问。分布式计算运行时间105、106不限于专门在单个集群计算节点上运行。
多个分布式计算运行时间可以存在并且甚至在同一集群计算节点101、102、103上并行工作。此外,分布式计算运行时间105、106也可能在多于一个计算集群的集群计算节点上执行。然而,为了简单起见,在下面仅描述一个计算集群。
在混合并行计算运行时间104中,分布式计算运行时间105、106可以要么直接通过寻址单个集群计算节点来访问集群计算节点101、102、103,以便执行计算,或者通过将所有集群计算节点101、102、103作为单个抽象系统寻址来访问整个集群计算节点101、102、103的集合。单个抽象系统可以由分布式计算运行时间105、106或混合并行计算运行时间104中的资源管理逻辑提供。
分布式计算运行时间105、106可以对分布在集群计算节点101、102、103上的数据进行操作。
图2示出了运行时间A的程序A与运行时间B的程序B的通信。图3概括地示出了根据本发明的分布式计算运行时间A的程序A与分布式计算运行时间B的程序B的同步。特别地,以分布式计算运行时间105作为主运行时间(运行时间A)和作为辅助运行时间(运行时间B)的第二分布式计算运行时间106以及同步模块107示出了混合并行计算运行时间104。所述同步模块107在这种情况下提供从并行计算运行时间105到并行计算运行时间106的定向同步,反之亦然。定向同步意味着主运行时间A发起计算并调用辅助运行时间B,反之亦然。图4示出了在计算期间在两个集群计算节点node0和node1上分布的数据的示例性结构。数据结构,如图4中示意性示出的,可以具有类型“Dist[Array[Iterator[T]]]”。“Dist”表示对集群计算节点的分布,“[Array[Iterator[T]]”表示每个节点上的数据部分的阵列,“T”表示数据部分的数据类型,“Iterator[T]”可以表示在类型T的数据部分的阵列上的迭代。
如图1所示的混合并行计算运行时间104由至少两个分布式计算运行时间105、106和提供分布式计算运行时间105、106之间的同步的同步模块107组成。
在本发明的情况下,同步被认为是分布式计算运行时间105、106的适配状态和行为。它也可以意味着将数据从至少一个分布式计算运行时间105提供给至少另一个分布式计算运行时间106。同步模块107也可以称为链路或链路模块。
然而,所述同步模块107不需要静态地提供。其寿命可以与分布式计算运行时间105、106中的至少一个分布式计算运行时间的计算绑定,从而改善资源的管理。由同步模块107分配的资源可以在不需要时被释放。
在以下部分中,分布式计算运行时间105、106是能够运行并行程序的环境。程序可以是写在分布式计算运行时间105、106的域中的并行程序。任务可以是计算(例如在程序中)的单一单位。根据上述术语的发明的功能和行为将再次参照图6进行描述。
如现在参照图5所述,同步模块107可以同步计算状态。通过将来自例如分布式计算运行时间A(在图5中称为“运行时间A”)的计算状态同步到分布式计算运行时间B(在图5中称为“运行时间B”),例如将其同步返回到更适合其余计算过程的分布式计算运行时间A之前,计算的特定部分可以在分布式计算运行时间B执行,这对于计算的特定部分更有效。在一场景下,混合并行计算运行时间104包括两个分布式计算运行时间A和B,分布式计算运行时间A可以称为主运行时间,分布式计算运行时间B可以称为辅助运行时间。
同步模块107能够在由参与同步过程的分布式计算运行时间A、B中的至少一个分布式计算运行时间执行的计算的特定计算状态同步分布式计算运行时间A、B。因此,可以使得同步过程的执行依赖于事件和/或状态。这确保了在程序员所期望的处理中的点执行同步,或者例如当它对于手上的当前计算任务是最有效的时候。因此,在同步之后,可以在更适合的分布式计算运行时间B上执行计算,从而有效地计算当前或下一个计算步骤。此后,可以根据分布式计算运行时间B上的当前计算的事件和状态再次执行回到分布式计算运行时间A的同步。因此,总体计算过程被显著加速。
同步模块107可以表示为同步每个分布式计算运行时间A、B的计算的状态的状态机。在逐步计算中,分布式计算运行时间A、B通过对计算数据应用至少一个函数来转换数据,从而改变计算的状态。
同步模块107还可以提供定向同步。至少两个分布式计算运行时间A、B中的至少第一个分布式计算运行时间用于在至少两个分布式计算运行时间A、B中的至少第二个分布式计算运行时间中发起计算。图5示意性地示出了一示例。例如,在从分布式计算运行时间A到分布式计算运行时间B的定向同步过程中,分布式计算运行时间A在分布式计算运行时间B上发起计算。定向同步过程也可以指一个分布式计算运行时间调用另一个,定义为分布式计算运行时间A的程序a(在图5中称为“程序A”)调用分布式计算运行时间B的程序b(在图5中称为“程序B”)。通过提供同步技术,提供了有效的顺序操作模式。
根据现有技术,有必要例如分布式计算运行时间B周期性地读取存储介质,并检查用于分布式计算运行时间B的进一步计算的数据是否被另一个分布式计算运行时间(例如,分布式计算运行时间A)存储在所述存储介质上。这也称为通过共享存储器或存储交换数据。通过实现定向同步,可以减少由于周期性地读取和处理存储的信息而导致的开销和直到在辅助分布式计算运行时间上的计算开始的响应时间,从而可以提高总体计算速度。
同步模块107可以将至少两个分布式计算运行时间A、B中的至少第一或第二个分布式计算运行时间的状态变量和/或状态变量的值提供给至少两个分布式计算运行时间A、B中的至少第二或第一个分布式计算运行时间。至少两个分布式计算运行时间A、B中的至少一个分布式计算运行时间可以在其计算中使用至少一个其它分布式计算运行时间A、B的状态变量或状态变量的值。
通过提供状态变量和/或状态变量的值,可以明确地描述分布式计算运行时间A、B中的计算的状态。当例如将分布式计算运行时间A的任务A与分布式计算运行时间B的任务B同步时,任务B的初始状态除了包括任务B的局部变量之外还包括状态变量及其任务A的当前状态的值。因此,同步模块107包括关于分布式计算运行时间A的计算状态的信息,并且提供在分布式计算运行时间B上开始计算所需的所有信息。由此,分布式计算运行时间A、B被提供足够的信息以确定在分布式计算运行时间A、B上的计算的未来行为。该方案还提供统一的通信方式和交换存储在状态变量中的数据。
同步模块107可以包括关于至少两个分布式计算运行时间A、B中的至少一个分布式计算运行时间的计算状态的信息,并且当至少两个分布式计算运行时间A、B中的至少一个分布式计算运行时间达到特定状态或指示应该开始另一个分布式计算运行时间A、B时,可以提供开始另一个分布式计算运行时间的计算所需的数据。开始另一个分布式计算运行时间A、B的计算所需的数据可以包括可以在同步模块107中作为库打包的现有算法。这种库的目的是使得能够在不同的分布式计算运行时间A、B重复使用相同的(程序)逻辑。它可以将不同分布式计算运行时间A、B中使用的不同语言的算法映射到同一底层程序逻辑。这允许例如由分布式计算运行时间A实现的程序逻辑在分布式计算运行时间B中的同步后自动重新使用。
根据本发明,并且回到图1,混合并行计算运行时间104具有扩展的功能,因为它组合了它使用的每个分布式计算运行时间105、106的特征。因此,使用混合并行计算运行时间104的用户从更多样化的工具集中获益以实现算法。可以创建用于运行混合并行计算运行时间104的域专用语言,其包含若干分布式计算运行时间105、106的组合特征。另外,用于自动生成程序的各种代码生成技术可以例如,在同步过程中,实现。
同步后,任务A和B不一定并行计算。可以例如如图5所示,如果任务A已经执行了计算步骤并达到状态2,则同步模块107提供当前状态变量(和/或它们的值,并且如果需要的话,其它开始另一个分布式计算运行时间的计算的数据)给分布式计算运行时间B以便启动任务B。在分布式计算运行时间B上执行计算步骤并达到进一步的计算状态之后,分布式计算运行时间B可以根据相同的原理再次与分布式计算运行时间A同步。从一个状态到另一个状态的转换用步骤表示。然后在分布式计算运行时间A中继续进行计算。然而,分布式计算运行时间A可以与若干分布式计算运行时间B1、B2等进行同步、从而B1、B2等优选并行运行,例如,在迭代或递归计算任务中,以利用并行计算的好处。
当完成计算任务时,分布式计算运行时间B1、B2等可以与分布式计算运行时间A再次同步。再次鉴于图1,所涉及的分布式计算运行时间105、106的计算任务因此用于并行运行并且分布在集群计算节点101、102、103上。由于更有效的顺序处理任务的方式,更好地利用资源和可扩展性,由此产生的优点是较少的总体计算时间。
根据图5,同步模块107还能够通过将特定命令发送给至少一个分布式计算运行时间A或B来同步至少两个分布式计算运行时间A、B的计算状态。
特定命令转换特定命令所应用的分布式计算运行时间A或B的计算的状态。
在这种情况下的转换应该被理解为计算系统中状态的变化。就本发明而言,它意味着通过将计算步骤(例如预定义的功能)应用于数据来改变数据(存储在至少一个分布式计算运行时间A或B中以及至少一个集群计算节点101、102、103上)。
特定命令也可以称为移动命令。特定命令应用于分布式计算运行时间A、B和分布式计算运行时间A、B上的计算的转换状态。
特定命令可以用于同步不同分布式计算运行时间A、B的计算状态,但也可以将一个分布式计算运行时间(例如分布式计算运行时间B)上的计算状态转换到下一个步骤。在包括两个分布式计算运行时间A和B的系统中,在数据从分布式计算运行时间A同步到分布式计算运行时间B之后,这例如包括通过转换分布式计算运行时间B上的计算状态来控制在分布式计算运行时间B上执行的计算步骤。
发送到至少一个分布式计算运行时间105、106的特定命令还可以控制底层集群计算节点101、102、103上的操作。
计算并行运行并分布在集群计算节点101、102、103上。在并行处理中,可以部分地通过步骤执行计算,直到所有数据达到计算的下一状态。
同步模块107通过例如通过划分计算任务来部分地执行集群计算节点101、102、103上的计算任务来允许使用和控制分布式计算。所得到的子任务然后分布在集群计算节点101、102、103上,在其中执行各自的计算。同步模块107可以进一步控制和同步要通过步骤执行的任务的计算,从而提供高级同步和监视能力以及精细调度。这确保在并行任务中计算成功达到预定义状态,并且执行下一步骤取决于以前的状态。此外,还支持调试。
由同步模块107发送到分布式计算运行时间105、106的特定命令或命令集合可以包括关于在状态转换中涉及的集群计算节点101、102、103的配置或硬件设置的信息。由同步模块107发送的特定命令可以初始化分布式计算运行时间105、106和/或混合并行计算运行时间104对集群计算节点101、102、103的分配和使用。根据所应用的分布式计算运行时间,集群计算节点101、102、103可以由分布式计算运行时间直接寻址,或者集群计算节点101、102、103可以被认为是抽象的单个系统。
特定命令还可以包括指示哪个部分的数据应该转换到下一状态的转换信息。在本发明的具体实现方式中,这通过移动命令来完成。移动命令使用参数p作为参数,表示哪些部分的数据应以何种方式转换到下一状态:
move(p:Path)。
本示例中的参数p是“路径”类型的。P类型涉及它所代表的数据:
typePath=Node#Part#Elem。
此类型定义中的“Node”可以描述进行计算的集群计算节点。“Part”可以描述存储被寻址元素的分区。这可以是阵列。“Element”可以描述阵列中被寻址的数据元素的标识符。“#”表示“路径”可以是复杂类型,由至少三个组件或其部分所定义。表达式“Node#Part#Elem”表示数据元素“Elem”被物理定位为集群计算节点“Node”上的数据分区(例如,应该在计算中使用的一部分数据)。分区“Part”可以被看作包括数据元素“Elem”的阵列。“Elem”例如包括T类型的数据。
移动命令的路径p可以影响存储相关数据的节点。集群计算节点101、102、103是分布式计算运行时间105、106运行的结构。然而,命令可以通过影响底层结构,即,集群计算节点101、102、103的操作来影响分布式计算运行时间105、106上的计算。移动命令例如可以控制一个分布式计算运行时间105、106与另一个分布式计算运行时间的同步,但也可以控制一个分布式计算运行时间105、106上的状态到同一分布式计算运行时间105、106上的下一状态的转换。
“Path”还包括在从一个状态转换到下一状态时应该被应用于被寻址元素的函数。
在下文中,给出了描述移动命令的效果的示例。T和U表示抽象数据类型,并且与图5中表示为A、B、C、D或E的数据相关。T表示数据类型T的输入值。U表示数据类型U的结果值:命令1:
move(x:Node)–x.Array[Iterator[T]]->x.Array[Iterator[U]]
命令1通过将函数f:Array[Iterator[T]]->Array[Iterator[U]]应用于其中示例性地示出如何将节点x上的数据移动到下一状态,可以使用“迭代器”来迭代元素T的集合或阵列。
命令2:
move(x.y:Node#Part)–x.y.Iterator[T]->x.y.Iterator[U]
命令2通过将函数f:Iterator[T]->Iterator[U]应用于其中示例性地示出如何将节点x上的分区y的数据移动到下一状态。
命令3:
move(x.y.z:Node#Part#Elem)–x.y.z:T->x.y.z:U
命令3通过将函数f:T->U应用于其中示例性地示出如何将节点x上的分区y的一个元素z移动到下一状态,“Elem”可以代表数据类型T的数据元素,例如,也是阵列。
为了更好地理解,下面示出了命令1到3的执行是如何在分布在集群计算节点上的数据操作的:
例如,分布式整数集合【1,2,3,4,5,6】表示要在集群计算节点1和集群计算节点2分布的数据:
节点1包括两个分区:【1,2】,【3,4】(例如两个阵列,每个包括两个元素);节点2包括一个分区:【5,6】(例如一个包括两个元素的阵列)。
分布在集群计算节点1和集群计算节点2上的数据也可以表示为:
Node1(Part(1,2),Part(3,4))
以及
Node2(Part(5,6))
“Node1”和/或“Node2”可以包括Array[Iterator[T]]类型的数据,“Node1#Part”和/或“Node2#Part”可以包含Iterator[T]类型的数据,“Elem”可以包含类型T(例如整数1到6)的数据。沿用上面的例子,应用于分布式整数集合的命令1到3可以导致状态转换:
应用于Node1(例如使用Node1作为参数)的命令1“move(x:Node)”可以将以下数据(表示为迭代器的阵列)移动到下一状态:【【1,2】,【3,4】】。
应用于Node1的Part2(例如使用Node1.Part2作为参数)的命令2“move(x.y:Node#Part)”可以将【3,4】(例如,表示为迭代器的集合)移动到下一状态。
应用于Node1,Part2和Element2(例如使用Node1.Part2.2作为参数)的命令3“move(x.y.z:Node#Part#Elem)”可以将元素“4”移动到下一状态。
图6示例性地描绘了在诸如模型的实体关系中的两个分布式计算运行时间(分布式计算运行时间A,在图6中被称为“运行时间A”和分布式计算运行时间B,在图6中被称为“运行时间B”)和其它部分,例如同步模块107,其提供分布式计算运行时间A和B之间的同步。图6模型中“实体”之间的关系如图7和图8所示以两种方式进行了说明。关联(如图7所示)描述了实体A和实体B之间的简单的关系。组合(如图8所示)意味着相关实体B的寿命取决于源实体A的寿命。连接图6中的实体的线的末端的数字示出了实体的多重性(参与关联的对象的数量)。例如,如图6所示,一个主模块与至少一个代理模块相关,而一个同步模块107与正好一个主模块相关。
如图6部分和示意性地示出的根据本发明的系统可以包括以下组件和概念:
分布式计算运行时间【名称】:分布式计算运行时间是能够运行并行程序的环境。
【分布式计算运行时间】的域:域是一组特征,例如一组可用于运行时间的特定指令的集合,可用于实现并行程序。
【分布式计算运行时间】的程序:关于本发明的程序是写在分布式计算运行时间的域中的并行程序。
同步模块107:同步模块107优选地使用至少一个主模块和至少一个代理模块管理和协调分布式计算运行时间A、B之间的同步。其寿命可以与混合并行计算运行时间104上的计算的寿命绑定。
主模块:主模块开始分布式计算运行时间并发起计算。它控制主进程,并通过代理模块发起任务的执行。它还可以提供与代理模块通信的中心点,并负责运行若干分布式计算运行时间A、B的主进程。
代理模块:代理模块由主模块管理,它控制任务的执行。它在集群计算节点101、102、103上运行,并与主模块协作。特别地,它控制分布式计算运行时间A、B的任务的计算,并且将所述任务的执行与至少一个其它任务的执行同步。它还可以与存储模块进行通信。
存储模块:存储模块用于在分布式计算运行时间A、B之间交换数据。数据交换可以通过外部存储器以及在内存中完成。存储模块特别地组织不同分布式计算运行时间A、B的相应任务之间的数据交换。分布式计算运行时间可以使用存储模块来保存在相同或另一个分布式计算运行时间上的计算所需的输入数据。分布式计算运行时间A、B还可以使用存储模块来获取在相同或另一个分布式计算运行时间上的计算所需的结果。
通信接口:任务可以实现预定义的通信接口以与存储模块进行通信。任务可以使用通信接口从存储模块获取输入数据或将计算结果写入存储模块。
每个运行时间还包含以下元素:
任务:任务是计算的单一单位。
Worker【进程】:worker是在运行时间运行的进程,能够计算一个任务。它管理任务的执行。
Main【进程】:Main是分布式计算运行时间中的一个进程。它管理计算流程并协调worker。它进一步管理和分配工作进程之间的任务。
进程:进程是单一的处理单元。进程的数量描述并行性的级别。
鉴于所描述的组件和模块,应当注意,所提出的系统不对分布式计算运行时间A、B以及混合并行计算运行时间104施加严格的限制。运行时间可能是完全不同的,但是它们都应该按照上述的概念运行。
使用上述模块的方法具有提供一种方案的优点,该方案随着计算任务的日益复杂和资源的需求而容易地扩展。将提供的功能分离到多个模块不仅允许以统一的方式来解决不同的计算和任务,而且可以使程序员更容易理解软件的处理。不同模块之间的分层关系允许并提供集中管理,因此提供了更有效的顺序处理任务的方式。
关于存储模块和通信接口,本发明提供了用于不同分布式计算运行时间之间的信息交换的标准化方式。
以下根据图6描述根据本发明的系统的实施例。具体实现包含两个分布式计算运行时间A和B(图6中称为“运行时间A”和“运行时间B”)。
同步模块107的寿命可以与计算的寿命绑定。同步模块107与主模块和代理模块协调同步过程。
主模块能够开始分布式计算运行时间B并在其上发起计算。代理模块控制分布式计算运行时间B上的相应任务B的计算,并将其与分布式计算运行时间A上的任务A同步。存储模块用于在分布式计算运行时间A和B之间交换数据。分布式计算运行时间A上的任务A使用存储模块保存计算所需的输入数据并获取结果。分布式计算运行时间B上的任务B实现预定义的通信接口,以便能够与存储模块通信,并使用存储模块获取输入数据并写入计算结果。根据图6,现在描述所有实体的生命周期,行为以及与相邻组件的交互。除了上述关于关键组件和概念的一般信息之外,对包括两个分布式计算运行时间A、B的元素的具体实施例进行描述:
MainA:分布式计算运行时间A的首进程,并从计算开始。MainA控制计算进度并通过工作进程来协调执行。
WorkerA:WorkerA是分布式计算运行时间A中的工作进程,可以控制由m进程mainA发送的任务的执行。Worker可以报告当前正在执行的任务的状态。
任务A:任务是计算的单一单位。在该具体实施例中,它表示在同步之后由分布式计算运行时间B中的任务B要执行的计算。任务A可以启动代理模块,并将分布式计算运行时间B上的任务B的计算所需的输入数据写入存储模块。
同步模块107:管理同步过程。从计算的开始就存在。它的寿命可以与整个计算的生命周期绑定,并且可以启动主模块。
主模块:主模块可以由同步模块启动,可以通过代理模块控制任务的执行。
代理模块:可以由分布式计算运行时间A上的任务A启动。它将计算委派给分布式计算运行时间B的任务B,并向主模块报告相关任务的执行状态。
存储模块:存储模块用于在分布式计算运行时间A和分布式计算运行时间B之间交换数据。它还可以与代理模块进行通信。
MainB:分布式计算运行时间B的首进程,并从计算开始。MainB控制计算进度并通过工作进程来协调执行。它可以与主模块进行通信(根据运行时间的个数,可能有更多的代理和主模块)。
WorkerB:WorkerB是分布式计算运行时间B中的工作进程,可以控制由进程mainB发送的任务(例如,任务B)的执行。Worker可以报告当前正在执行的任务的状态。
任务B:任务B是计算的单一单位。在该具体实施例中,它表示在同步之前主运行时间中的任务A执行的计算。任务B从存储模块读取计算所需的初始数据,并将计算结果写入该存储模块。
通信接口:通信接口是任务A和B之间的通信协议,使任务A和B能够获取计算的输入数据并写入结果。
图9更详细地描述了两个分布式计算运行时间A和B(图9中称为“运行时间A”和“运行时间B”)的同步的步骤和阶段,以及同步模块107如何根据本发明的思想参与到同步中。
为了能够了解同步模块107和其它模块如何与现有的分布式计算运行时间集成,在讨论同步计算过程之前,首先描述在单个分布式计算运行时间的计算流程。
在一个单一的分布式计算运行时间上的整个计算可以被认为是主进程控制的worker对任务的连续执行。单个运行时间上的计算包括以下步骤:
计算是由分布式计算运行时间的主进程,即首进程启动。主进程向工作进程发送适当的任务集。
工作进程执行任务并向主进程报告。
当所有执行的任务成功完成时,计算结束。
在图9中示出了两个分布式计算运行时间A和B之间的同步过程的具体示例,并在下面进行描述:
在混合并行计算运行时间104中,当分布式计算运行时间A上的计算开始时,同步模块107被初始化。之后,创建至少一个主模块,并等待至少一个代理模块启动。随后,任务A启动代理模块,该代理模块控制任务的执行并向主模块报告。可以在并行计算任务中启动多个代理模块。所有代理模块向主模块报告信息,例如关于任务和计算的状态。因此,主模块可以控制其它运行时间上任务的执行,例如在分布式计算运行时间B上,如图9所示。当由任务A启动的代理模块准备就绪时,主模块配置并在分布式计算运行时间B上运行进程mainB,并通知相关代理模块启动任务B。
当分布式计算运行时间B上的任务B的执行完成时,主模块通过使用任务B的相关联的代理模块将结果和计算的控制返回到分布式计算运行时间A上的任务A。主模块切换回到“等待代理模块”模式,例如,如果需要再次进行计算,或者必须调用其它运行时间。
同步后,任务A继续在分布式计算运行时间A上正常运行,将计算状态报告给mainA,直到任务A退出。由于相关代理模块的寿命取决于其任务的寿命,当任务A退出时,代理模块将被销毁。同步模块107将在整个计算结束时被销毁。它在计算过程中保持存活,因为mainA可能想要再次在其它分布式计算运行时间上执行任务。
同步不限于两个分布式计算运行时间。分布式计算运行时间调用多个其它运行时间的示例可能是基于递归子函数的函数的计算。每次需要计算递归子函数的新值时,相关任务通过将子函数的名称和先前的计算值提供给同步模块107来启动代理模块。主模块通过相关代理模块获取发送的信息,从而能够选择适当的分布式计算运行时间A、B来运行任务以计算子函数。下面描述用于控制根据本发明的分布式计算运行时间A、B之间的同步的进一步的或替代的命令。命令也用于描述图9中的转换。
命令参考:
start(taskId:Id,s:State):newAgent
启动新代理模块,其中taskId是与新代理模块相关联的任务的ID,State是任务的计算状态。
report(taskId:Id,address:Address,s:State)->Master
向主模块报告任务的Id,其计算状态和地址(任务的位置)。
move(s:State):State
通过对其进行转换,将计算移动到下一状态。
exit:Code
提供进程的退出代码。
混合并行计算运行时间104的两个分布式计算运行时间A和B的同步计算过程的详细示例性步骤在下面被描述为按阶段分组:
配置阶段
计算开始于分布式计算运行时间A的首进程mainA。mainA向工作进程发送适当的任务集:任务Ai,其中i∈[1,...n]。同时,同步模块也被启动。它配置和启动主模块。主模块的初始状态是等待代理模块上线。
每个特定的workerAi启动任务Ai。
每个任务Ai启动相应的代理模块agenti,而不是进行计算,它将其状态报告给主模块。
计算阶段
基于代理模块的报告,主模块决定启动分布式计算运行时间B的主进程mainB。
主模块通知所有代理模块在分布式计算运行时间B上启动的任务集,从而将每个特定的代理模块agenti连接到相应的任务Bi。
实际计算由任务集:任务Bi,其中,i∈[1,...n],执行。每个代理模块agenti等待同步任务Bi完成并将其退出代码报告给主模块。
完成阶段
主模块决定整个计算是否成功,并向每个代理模块发送“成功”或“失败”退出消息。每个特定的代理模块agenti,基于其从主模块接收的消息,以“成功”或“错误”代码退出,从而解除对应的任务Ai。
每个任务Ai在agenti的代码被发送之后退出,并且分布式计算运行时间A的计算继续正常进行。
本发明还解决了通过提供使分布式计算运行时间Spark和MPI同步的混合并行计算运行时间104来改进基于分布式集群的并行计算系统中的运行时间之间的通信的问题。
MPI和Spark的一般特性已经在本文前面所述的背景部分中进行了说明。
然而,根据本发明,Spark可以用作用于分布式并行计算的框架,其与驱动程序(主)进程和工作进程一起运行。当计算作业发送到主进程时,主进程生成计算进度并将适当的工作(任务)项发送到工作进程,从而根据如前所述的抽象运行时间原理进行工作。除资源管理外,Spark还提供故障接管机制以自动重新运行计算过程中失败的任务。然而,与MPI相比,Spark在某些计算场景中缺乏性能。
MPI实现了一个低层消息传递接口,描述了进程间通信的模式。因此,MPI提供了低开销的计算和性能优化的机会。MPI程序使用至少一个系统进程进行操作,其中之一是管理其它进程和至少一个工作进程的主进程。因此,MPI也符合运行时间原理。MPI的缺点是需要更大的努力实现算法,缺乏资源管理和故障接管机制。
根据图1,同步模块107同步混合并行计算运行时间104中的分布式计算运行时间Spark和分布式计算运行时间MPI。因此,可以提供以下特征:
Spark为混合并行计算运行时间104提供了与集群基础设施的高层接口,从而提供简化的资源和故障接管管理。
此外,MPI为混合并行计算运行时间104提供了由硬件直接支持的低层接口,并且能够实现低开销的计算和和性能优化。
因此,在混合并行计算运行时间104中执行的程序的一些部分通过将相关计算委派给分布式计算运行时间MPI来更有效地实现。相反,通过提供故障接管管理的Spark分布式计算运行时间有效地实现了总体资源管理特征。混合系统自动重新运行在计算过程中失败的部分任务(计算可以通过Spark和MPI分布式计算运行时间来完成)。
在此,Spark分布式计算运行时间用于有效提供对要计算的数据的不同访问方式,而MPI分布式计算运行时间则用于对Spark分布式计算运行时间提供访问的数据部分的高性能计算。Spark分布式计算运行时间也用于直接进行数据本身的计算。同步模块107用于同步Spark分布式计算运行时间和MPI分布式计算运行时间。
Spark分布式计算运行时间可以用于使用弹性分布式数据集(resilientdistributeddataset,简称RDD)对数据进行操作。RDD通常是分布式存储器抽象,使程序员能够以容错方式在大型集群上执行内存中的计算。
根据本发明,可以将RDD视为分布在可以并行操作的集群计算节点101、102、103上的一组元素。图10示出了RDD的抽象示意图。
RDD中的数据被组织为在不同节点上分区的类型T的元素的集合。
图10示出了在两个节点0、1间分区的RDD[T]。每个分区包含类型T的元素。可以通过迭代器(iter[T])访问各个分区。
用于访问迭代器迭代器[T]的通信接口如图11所示,其由任务实现以与存储模块进行通信。它可以读取某种类型T的元素,检查是否存在另外的元素并遍历它。
数据的操作是根据RDD的转换进行的。在RDD方面,Spark可以访问RDD,分区和迭代器级别的数据。由于Spark具有不同方式访问其操作的数据,因此在同步Spark和MPI时应用在访问数据时相同的过程。详细描述如下:
T和U表示抽象数据类型,并且部分地涉及图10中的数据,其中,T表示输入值的数据类型,U表示结果(图10中未示出)的数据类型。
根据本实施例的第一方面,当同步Spark和MPI时,MPI对RDD级别的数据进行操作,其中在MPI中计算的所有任务表示分布式函数:
f:RDD[T]->RDD[U]
RDD[T]=Array[Iterator[T]]
f’:Array[Iterator[T]]->Array[Iterator[U]]
对RDD级别的数据进行操作,通过应用函数f来描述RDD[T]的转换。
通过MPI,函数f'依照Dist来构造,并具有Dist[Array[Iterator[T]]]类型。MPI实现方案使用Dist作为分布式计算的抽象。Dist[T]数据类型是值(如Array[T])的集合,其中集合的每个元素驻留在作为整个分布式MPI进程的一部分运行的单独MPI子进程中。当对RDD级别的数据进行操作时,可以寻址多个节点上多个分区中的多个元素。
根据本实施例的第二方面,当同步Spark和MPI时,MPI对分区级别的数据进行操作,其中每个任务B表示函数。
f:Iterator[T]->Iterator[U]
对分区级别的数据进行操作描述了RDD分区的转换。在这种场景下MPI可以对阵列进行操作。因此,转换由阵列表示的数据的函数f'用于MPI分布式计算运行时间中以实现如下的函数f:
f(items)=f’(items.toArray).toIterator
根据本实施例的第三方面,当同步Spark和MPI时,MPI对迭代器级别的数据进行操作。
f:T->U
通过将函数f应用于迭代器,对迭代器级别的数据进行的操作描述T类型集合的每个值的变换。相应的MPI实现方案可以由函数表示。
f’:(S,T)->(S,U)
它从Spark分布式计算运行时间获取MPI分布式计算运行时间中的类型S的变量的当前状态和类型T的下一项,并生成类型U的下一项和更新类型S的变量的状态。
将具有Spark分布式计算运行时间和MPI分布式计算运行时间的混合并行计算运行时间104的性能与纯Spark和MPI方案进行比较,并以双精度的稀疏矩阵密集向量乘法(sparse matrix dense vector multiplication,简称SMDVM)算法进行测试。程序场景包括加载输入数据,执行计算和保存结果。为了测量性能,只考虑了计算部分。
混合并行计算运行时间104用于使得Spark分布式计算运行时间使用由8个集群计算节点101、102、103组成的集群,每个节点有1个CPU单元。MPI分布式计算运行时间使用1个有8个CPU单元的集群计算节点。这两组集群计算节点101、102、103的总体计算能力相等。输入数据是密度为10%(非零元素百分比)的稀疏100k×10k矩阵。
使用单个Spark分布式计算运行时间的方案是最慢的。Spark分布式计算运行时间的所有计算都是约25秒。专门使用MPI分布式计算运行时间的设置大概是2x快,例如,13秒。
包含Spark和MPI分布式计算运行时间的混合并行计算运行时间104中执行的程序的主要部分是使用Spark域专用语言编写的,而乘法算法是使用MPI编写的。方案如预期(15秒(内存)和19秒(HDFS))之间显示中间结果。与纯MPI方案相比,减速主要是由数据交换IO开销造成的。还可以通过使用更有效的数据交换方法(例如,内存中的方法而不是分布式文件系统(distributed file system,简称HDFS))来改进数据交换。
在此结合各种实施例描述了本发明。但本领域技术人员通过实践本发明,研究附图、本发明以及所附的权利要求,能够理解并获得公开实施例的其它变体。在权利要求书中,词语“包括”不排除其它元素或步骤,数量词“一”不排除多个。单个处理器或其它单元可满足权利要求中描述的几项的功能。在仅凭某些措施被记载在相互不同的从属权利要求书中这个单纯的事实并不意味着这些措施的结合不能被有效地使用。计算机程序可以存储/分布到合适的媒体上,例如与其它硬件一起或者作为其它硬件的部分提供的光存储媒体或者固态媒体,还可以以其它形式例如通过因特网或者其它有线或无线电信系统分布。
Claims (18)
1.一种同步分布式计算运行时间的系统(100),其特征在于,包括:
多个集群计算节点(101、102、103);
混合并行计算运行时间(104),包括:用于所述多个集群计算节点(101、102、103)上的并行计算的至少两个分布式计算运行时间(105、106);其中
所述混合并行计算运行时间(104)用于对分布到所述多个集群计算节点(101、102、103)的数据进行操作,并且包括用于同步所述至少两个分布式计算运行时间(105、106)和将所述至少两个分布式计算运行时间(105、106)中的至少一个分布式计算运行时间的数据提供给所述至少两个分布式计算运行时间(105、106)中的至少另一个分布式计算运行时间的同步模块(107);
所述同步模块(107)用于同步所述至少两个分布式计算运行时间(105、106)的计算状态。
2.根据权利要求1所述的系统,其特征在于,所述同步模块(107)用于在由所述至少两个分布式计算运行时间(105、106)中的至少一个分布式计算运行时间执行的计算的特定计算状态同步所述至少两个分布式计算运行时间(105、106)。
3.根据权利要求1-2中任一项所述的系统,其特征在于,所述同步模块(107)用于提供定向同步,其中,所述至少两个分布式计算运行时间(105、106)中的至少第一个分布式计算运行时间用于在所述至少两个分布式计算运行时间(105、106)中的至少第二个分布式计算运行时间发起计算。
4.根据权利要求1所述的系统,其特征在于,所述同步模块(107)用于将所述至少两个分布式计算运行时间(105、106)中的至少第二个分布式计算运行时间的状态变量或状态变量的值提供给所述至少两个分布式计算运行时间(105、106)中的至少第一个分布式计算运行时间,其中,所述至少两个分布式计算运行时间(105、106)中的至少第一个分布式计算运行时间用于在其计算中使用所述至少两个分布式计算运行时间(105、106)中的至少第二个分布式计算运行时间的状态变量或状态变量的值。
5.根据权利要求4所述的系统,其特征在于,所述同步模块(107)用于提供状态变量和所述状态变量的值,其中,所述至少两个分布式计算运行时间(105、106)中的至少第一个分布式计算运行时间用于在其计算中使用所述至少两个分布式计算运行时间(105、106)中的至少第二个分布式计算运行时间的状态变量和状态变量的值。
6.根据权利要求1-2、4-5中任一项所述的系统,其特征在于,所述同步模块(107)包括关于所述至少两个分布式计算运行时间(105、106)中的至少一个分布式计算运行时间的计算状态的信息,其中,所述同步模块(107)用于当所述至少两个分布式计算运行时间(105、106)中的至少一个分布式计算运行时间达到特定状态或指示另一个分布式计算运行时间(105、106)应该开始时,提供开始另一个分布式计算运行时间(105、106)的计算所需的数据。
7.根据权利要求1-2、4-5中任一项所述的系统,其特征在于,所述同步模块(107)用于通过将特定命令发送到所述至少两个分布式计算运行时间(105、106)中的至少一个分布式计算运行时间来同步所述至少两个分布式计算运行时间(105、106)的计算状态,其中,特定命令用于转换特定命令所应用的分布式计算运行时间(105、106)的计算状态。
8.根据权利要求7所述的系统,其特征在于,所述特定命令用于部分地将特定命令所应用的分布式计算运行时间(105、106)的计算移动至下一状态,直到所述集群计算节点(101、102、103)上的数据的所有计算达到下一状态。
9.根据权利要求8所述的系统,其特征在于,所述特定命令用于将特定命令所应用的分布式计算运行时间(105、106)的计算通过步骤移动至下一状态。
10.根据权利要求7所述的系统,其特征在于,所述特定命令包括指示哪个部分的数据应转换到下一状态的转换信息。
11.根据权利要求1-2、4-5、8-10中任一项所述的系统,其特征在于,所述同步模块(107)用于与至少一个主模块和至少一个代理模块协调同步。
12.根据权利要求11所述的系统,其特征在于,所述主模块用于开始分布式计算运行时间和发起计算。
13.根据权利要求11所述的系统,其特征在于,所述至少一个代理模块用于控制所述至少两个分布式计算运行时间(105、106)中的一个分布式计算运行时间的任务的计算,并且使所述任务的执行与至少另外一个任务的执行同步。
14.根据权利要求1-2、4-5、8-10、12-13中任一项所述的系统,其特征在于,所述系统包括用于在所述至少两个分布式计算运行时间(105、106)之间交换数据的存储模块。
15.根据权利要求14所述的系统,其特征在于,一个分布式计算运行时间(105、106)的至少一个任务用于使用所述存储模块并将另一个分布式计算运行时间(105、106)的计算所需的输入数据保存到所述存储模块。
16.根据权利要求15所述的系统,其特征在于,一个分布式计算运行时间(105、106)的至少一个任务用于使用所述存储模块并从所述存储模块获取另一分布式计算运行时间(105、106)的计算的结果。
17.根据权利要求15或16所述的系统,其特征在于,所述任务实现了用于与所述存储模块通信的预定义通信接口,其中,所述任务用于使用所述通信接口从所述存储模块获取输入数据或者将计算的结果写入到所述存储模块。
18.一种同步分布式计算运行时间的方法,用于分布式集群的并行计算系统中,其特征在于,所述分布式集群的并行计算系统包括:多个集群计算节点(101、102、103);混合并行计算运行时间(104),包括:用于所述多个集群计算节点(101、102、103)上的并行计算的至少两个分布式计算运行时间(105、106),其中,所述混合并行计算运行时间(104)对分布到所述多个集群计算节点(101、102、103)的数据进行操作,并且包括同步所述至少两个分布式计算运行时间(105、106)和将所述至少两个分布式计算运行时间(105、106)中的至少一个分布式计算运行时间的数据提供给所述至少两个分布式计算运行时间(105、106)中的至少另一个分布式计算运行时间的同步模块(107);
所述同步模块(107)用于同步所述至少两个分布式计算运行时间(105、106)的计算状态。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2015/000315 WO2016186531A1 (en) | 2015-05-19 | 2015-05-19 | System and method for synchronizing distributed computing runtimes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107660281A CN107660281A (zh) | 2018-02-02 |
CN107660281B true CN107660281B (zh) | 2021-06-08 |
Family
ID=55066726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580080163.8A Active CN107660281B (zh) | 2015-05-19 | 2015-05-19 | 同步分布式计算运行时间的系统和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107660281B (zh) |
WO (1) | WO2016186531A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109375965B (zh) * | 2018-11-06 | 2022-04-26 | 东软集团股份有限公司 | 状态机处理方法及装置、可读存储介质 |
CN110381267B (zh) * | 2019-08-21 | 2021-08-20 | 成都索贝数码科技股份有限公司 | 基于帧内切分的集群化实现大幅面多层实时编辑的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101755256A (zh) * | 2007-07-20 | 2010-06-23 | 西门子公司 | 用于对软件系统的软件构件进行透明复制的方法 |
CN103797770A (zh) * | 2012-12-31 | 2014-05-14 | 华为技术有限公司 | 一种共享存储资源的方法和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7636776B2 (en) * | 2003-07-31 | 2009-12-22 | Microsoft Corporation | Systems and methods for synchronizing with multiple data stores |
US8402224B2 (en) * | 2005-09-20 | 2013-03-19 | Vmware, Inc. | Thread-shared software code caches |
US8381090B2 (en) * | 2010-01-15 | 2013-02-19 | Microsoft Corporation | Dynamic expansion of data calculation scopes |
CN103559104B (zh) * | 2013-11-07 | 2016-06-22 | 南京国电南自轨道交通工程有限公司 | 一种基于混合通信的分布式冗余实时数据库框架 |
-
2015
- 2015-05-19 CN CN201580080163.8A patent/CN107660281B/zh active Active
- 2015-05-19 WO PCT/RU2015/000315 patent/WO2016186531A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101755256A (zh) * | 2007-07-20 | 2010-06-23 | 西门子公司 | 用于对软件系统的软件构件进行透明复制的方法 |
CN103797770A (zh) * | 2012-12-31 | 2014-05-14 | 华为技术有限公司 | 一种共享存储资源的方法和系统 |
Non-Patent Citations (2)
Title |
---|
Log analysis in cloud computing environment with Hadoop and Spark;Xiuqin Lin等;《2013 5th IEEE International Conference on Broadband Network & Multimedia Technology》;20140602;第1-4页 * |
Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center;Benjamin Hindman等;《http://static.usenix.org/events/nsdi11/tech/full_papers/Hindman_new.pdf》;20110307;第2-10页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2016186531A1 (en) | 2016-11-24 |
CN107660281A (zh) | 2018-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102074468B1 (ko) | 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법 | |
US8073671B2 (en) | Dynamic software performance models | |
CN110233802B (zh) | 一种构建一主链多侧链的区块链架构的方法 | |
US20150205625A1 (en) | Simulation of high performance computing (hpc) application environment using virtual nodes | |
US10498817B1 (en) | Performance tuning in distributed computing systems | |
Rashidi et al. | Themis: A network bandwidth-aware collective scheduling policy for distributed training of dl models | |
Muhammad Faseeh Qureshi et al. | RDP: A storage-tier-aware Robust Data Placement strategy for Hadoop in a Cloud-based Heterogeneous Environment | |
Desell et al. | Malleable applications for scalable high performance computing | |
Mohamed et al. | MidCloud: an agent‐based middleware for effective utilization of replicated Cloud services | |
CN107660281B (zh) | 同步分布式计算运行时间的系统和方法 | |
Ghit et al. | Resource management for dynamic mapreduce clusters in multicluster systems | |
Giampà et al. | A data-aware scheduling strategy for executing large-scale distributed workflows | |
KR20170088277A (ko) | 데이터 교환 메커니즘을 포함하는 전자 시스템 및 그것의 동작 방법 | |
Jakovits et al. | Stratus: A distributed computing framework for scientific simulations on the cloud | |
Pöppl et al. | A UPC++ actor library and its evaluation on a shallow water proxy application | |
Zarrin et al. | ElCore: Dynamic elastic resource management and discovery for future large-scale manycore enabled distributed systems | |
US20190108077A1 (en) | System and method for mpi implementation in an embedded operating system | |
Vialle et al. | Scaling fmi-cs based multi-simulation beyond thousand fmus on infiniband cluster | |
Weidendorfer et al. | Laik: A library for fault tolerant distribution of global data for parallel applications | |
Jin et al. | : Efficient Resource Disaggregation for Deep Learning Workloads | |
Cicirelli et al. | Agent-Based Control Framework In Jade. | |
US8762536B2 (en) | Compact node ordered application placement in a multiprocessor computer | |
Shi et al. | DFlow: Efficient Dataflow-based Invocation Workflow Execution for Function-as-a-Service | |
JP6778161B2 (ja) | 分散同期処理システム、分散同期処理方法および分散同期処理プログラム | |
Dharanipragada et al. | Generate‐map‐reduce: An extension to map‐reduce to support shared data and recursive computations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |