支持多计算任务和多计算节点的计算协作方法与流程

文档序号:11807831阅读:1129来源:国知局
支持多计算任务和多计算节点的计算协作方法与流程

本发明涉及计算机技术。



背景技术:

随着信息技术的深入应用,科学计算、数据分析、模拟仿真等对计算机计算效率和性能的要求越来越高。分布式计算在计算密集型领域得到了广泛应用。

目前,常用分布式计算的通用架构如图1,主要表现为:任务管理(1)+任务执行集群(N)。这种分布式计算模型内部包括一整套调度规则、计算任务分配规则,把真实的计算任务与分布式计算模型耦合在一起。然而,在实际的应用中,一个大型的计算任务可能包括很多第三方的工具或者已经存在的计算模型,在此种情况下就无法修改计算任务以满足分布式计算系统的要求。另外,也不能满足在一个团队中可能要求同时进行多个计算任务,并且每个计算任务可能存在计算关联的情况。

因此,需要提供一种计算任务与分布式计算模型完全解耦的计算机制。



技术实现要素:

本发明所要解决的技术问题是,提供一种支持多计算任务和多计算节点的计算协作方法。

本发明解决所述技术问题采用的技术方案是,支持多计算任务和多计算节点的计算协作方法,其特征在于,包括下述步骤:

1)计算节点从服务器的数据队列中读取本节点当前运算任务所需的数据作为节点运算的输入数据,所述数据队列中的数据具有任务标识符和序列标记;

2)计算节点将运算结果作为输出数据,输出到服务器的数据队列中;所述输出数据具有任务标识符和序列标记;

所述任务标识符表示该数据与何任务相关,所述序列标记表示该数据在相关任务中的序号。

所述序号可以为数字、字母或任何其他形式的标识符,用于区分同一任务下的不同数据。

进一步的,所述步骤1)为:计算节点在服务器的数据队列中查询本节点当前运算任务所需的数据,若有则读取,若无则等待后再次查询。

或者,所述步骤1)为:计算节点在服务器的数据队列中查询本节点当前运算任务所需的数据,若有则读取,若无则执行其他计算,其他计算完成后再次查询。

本发明每一节点的输入数据皆为该节点以外的其他节点的输出数据。服务器的数据队列中,每个数据都具有任务标识符、时间戳、数据长度、缓存索引、有效期。节点与服务器之间的通信基于加密渠道。

或者,所述步骤1)为:第一计算节点向请求本节点当前运算任务所需的数据,服务器在服务器数据队列中查询,若有则向第一计算节点发送所请求的数据,若无则通知节点等待,直至收到其他节点送出的数据后发送至第一计算节点。

本发明通过把计算协作模型与计算任务解耦,可以同时支持多个项目组的不同计算任务,每个计算任务的计算节点可以动态扩展,对计算节点数无限制,对计算任务采用何种计算模型或算法不做限制,每个节点只关心自身的输入和输出而不用关心是哪个节点提供的输入和输出到哪个节点,解决了一个或多个研发团队内部多个计算任务和多个计算节点协作的问题。

附图说明

图1为常见分布式计算模型示意图。

图2为本发明的计算协作平台实施案例示意图。

具体实施方式

本发明提供了一种支持多计算任务和多计算节点的计算协作平台,包括一个或多个计算任务,每个计算任务包括多个计算机节点,每个计算节点通过网络与计算协作平台(服务器)连接,其中:

计算任务,完成一个计算模型、数据分析算法、科学计算等的过程:

计算节点,负责计算计算任务中的某个过程,完成同一个计算任务的计算节点具有相同的唯一标识符,计算节点通过网络与计算协作平台相连接,通过计算协作平台与关联计算节点协作;

计算协作平台,即服务器,提供安全服务为计算节点做统一安全认证和提供数据加密协议,提供数据存储和分发的能力,,响应来自计算节点的提交数据和获取数据请求。

本发明的详细过程包括:

为计算任务预定义唯一标识符(包括任务标识符和序列标记),计算节点数,计算节点任务、输入和输出,特别注意在同一个计算任务中每个计算节点的输出必须具有不同的标识符,而且每个计算节点的输入必须是其他计算节点的输出;

启动计算节点后,计算节点首先与计算协作平台建立连接,并通过安全服务获得安全认证和数据加密协议,然后计算节点开始执行计算任务,并根据计算任务预定义的输出要求把计算过程数据输出到计算协作平台,同时根据计算任务预定义的输入要求从计算协作平台获取输入;

计算协作平台的安全服务接受来自计算节点的接入请求,完成安全认证,并返回数据加密协议。

进一步地,

计算协作平台(服务器)接收来自计算节点的提交数据请求,解密数据并验证合法性后把本次数据的标识符、时间戳、数据长度、缓存索引、有效期等添加到数据队列中,然后把数据写入数据缓存中,具有相同标识符的数据被多次提交,以最近一次为准;

进一步地,

计算协作平台(服务器)接收来自多个计算节点的获取数据请求,在数据队列中查找被请求的数据,并依据缓存索引信息从数据缓存中读取数据,加密数据后返回给计算节点;

计算任务完成后,通过任意计算节点可删除计算协作平台中关于本次计算的数据,如果没有删除,计算协作平台将根据数据的有效期删除数据。

实施例

如图2所示,本发明的实施案例示意图包括2个计算任务(T1,T2)。其中T1包括2个计算节点(N1,N2),N1的输入和输出分别是(M4,M5)和(M1,M2,M3),N2的输入和输出分别是(M1,M2,M3)和(M4,M5)。T2包括3个计算节点(S1,S2,S3),S1的输入和输出分别是(M2,M4)和(M1),S2的输入和输出分别是(M1,M5)和(M2,M3),S3的输入和输出分别是(M1,M2,M3)和(M4,M5)。具体内容请参看表1。

其中:

计算任务,被分别定义为T1和T2。T1的过程输出数据有(M1,M2,M3,M4,M5),由(N1,N2)两个节点协作完成任务。T2的过程输出有(M1,M2,M3,M4,M5),由(S1,S2,S3)三个节点协作完成任务;数据M1~M5具有任务标识符和序列标记,例如数据队列中的数据M1的内容为T1M102345,T1为任务标识符,表示与任务T1有关,M1为序列标记,表示本数据为预定义的数据M1,数据M1被预定义为任务中的一个中间参量。

计算节点,这里以执行T1任务的N1(以T1->N1表示)为例,其他节点类似。T1->N1启动后通过网络与计算协作平台建立连接,并通过安全认证和获取数据加密协议。然后,T1->N1开始执行自身的计算过程,并在执行过程中输出数据(M1,M2,M3),同时在支持过程中根据自身需要从计算协作平台获取输入数据(M4,M5)。什么时刻输入和输出,输入什么、输出什么都由计算节点本身的算法决定,输入可以是阻塞和非阻塞的。简而言之,T1->N1只需要把应该输出的数据输出,应该输入的输入,至于输入和输出的方式、时刻并不重要。不过,输出要越早越好,因为可能T1->N2节点正在等待T1->N1的输出结果;

计算协作平台,这里仍然以T1->N1为例,其他节点类似。T1->N1输出M1到计算协作平台,平台接收数据后根据任务唯一标识符(T1),将M1添加到相应的(T1)数据队列,如果数据队列不存在将以T1为关键字建立一个新的数据队列。T1->N1从计算协作平台请求数据M4,如果此时M4已经到达,则返回M4数据,T1->N1继续执行,如果数据未到达就返回空,T1->N1将根据自身算法设计决定是继续等待该数据还是执行其他计算。

计算任务完成后,由任意计算节点向计算协作平台发起清除本次计算数据的请求,如果未发起该请求,计算协作平台将根据数据有效期删除数据。

表1

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1