当前位置: 首页 > 专利查询>之江实验室专利>正文

一种用于分布式计算的作业分解处理方法技术

技术编号:33716540 阅读:25 留言:0更新日期:2022-06-06 09:01
本发明专利技术公开了一种用于分布式计算的作业分解处理方法,该方法采用程序静态分析对待运行的源程序进行分析,确定源程序包含的函数调用图;再通过程序动态分析或/和程序智能分解算法确定所述源程序所包含的函数的特征信息,函数特征信息用于表征各函数运行时的相关信息;根据所述函数特征信息、函数关系和计算平台的可用资源信息,对源程序进行分解,形成各函数在计算平台上的执行建议,即各函数使用哪些硬件资源计算;最后在源程序中插入修饰符,在计算平台上开始计算。通过本发明专利技术的方法,用户不需要对源程序做任何修改,即可实现源程序的分布式执行,保障了分布式执行方案的可重复性,避免了人为操作的主观性,节省了时间和人力成本。力成本。力成本。

【技术实现步骤摘要】
一种用于分布式计算的作业分解处理方法


[0001]本专利技术涉及智能计算领域的作业分解方法,尤其涉及一种用于分布式计算的作业分解处理方法。

技术介绍

[0002]随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成。如果采用集中式计算,需要耗费相当长的时间来完成,而分布式计算是一种计算方法,和集中式计算是相对的,分布式计算是将该应用分解成许多小的部分,然后分配给多个计算资源进行处理,这样可以节约整体计算时间,大大提高计算效率。
[0003]Hadoop 是由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。其中主要包括分布式文件系统HDFS和MapReduce算法。MapReduce算法提供了一种并行程序设计模型与方法,它借助于函数式程序设计语言Lisp的设计思想,提供了一种并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,用户需分别编写Map和Reduce的函数,使得系统能够管理Map或Reduce并行任务的执行以及任务之间的协调,并且能够处理上述某个任务失败的情况,同时保障对硬件故障的容错性。
[0004]Spark是专为大规模数据处理而设计的快速通用的计算引擎,是UC Berkeley AMP Lab所开源的类Hadoop MapReduce的通用并行框架,Spark相比于MapReduce所具有的优点是,其中间的输出结果可保存在内存中,从而不需要再读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法,且能够提供交互式查询,还可以优化迭代工作的负载。Spark是在Scala语言中实现的,它将Scala用作其应用程序框架,与Hadoop不同,Spark和Scala能够紧密集成,其中Scala可以像操作本地集合对象一样轻松地操作分布式数据集,Spark可以理解为,为了支持分布式数据集上的迭代作业,是对Hadoop MapReduce的补充。
[0005]Ray 是UC Berkeley RISELab在2017年提出的机器学习分布式框架,虽然Ray与TensorFlow一样,也是面向机器学习的场景框架,但是Ray被大家使用作为分布式计算框架,因为Ray的核心部分提供了分布式计算的能力。与Spark相比,Ray的分布式计算方式比较小巧,它看上去与原生的Python函数并无二致,只需要给函数加上@ray.remote 的注解,该函数就可以在除本机以外的其他Ray集群中的节点中执行。所以,Ray是在几乎不提高用户代码复杂性的情况下,实现了分布式计算的能力。除了轻量级API的优势外,Ray的主要特性包括:高吞吐但低延迟的调度能力;支持任务的动态构建。
[0006]MapReduce、Spark和Ray作为分布式计算框架,被广泛使用,但是它们有个共同的使用前提,需要在程序设计之初就将分布式计算框架考虑进来,用相应的编程API语言进行编写程序。如果对于已经编写完成的程序,要修改成分布式程序相当困难,这是因为对于有分布式执行需求的作业而言,其程序体往往很大,逻辑细节很多,设计思想复杂。而在互联网行业人员流动比较大,因此往往是其他的程序员改写和理解这个需要改写成分布式计算
方式的程序。

技术实现思路

[0007]本专利技术的目的是在于针对现有技术的不足,提供一种用于分布式计算的作业分解处理方法。
[0008]本专利技术的目的是通过以下技术方案来实现的:一种用于分布式计算的作业分解处理方法,包括以下步骤:采用程序静态分析对待运行的源程序进行分析,确定所述待运行程序所包含的函数调用图,所述函数调用图用于表征所述源程序所包含的函数间的调用关系;根据所述调用关系,确定所述源程序所包含的函数中函数特征信息,所述函数特征信息用于表征各函数运行时的函数计算相关信息;根据所述函数特征信息、调用关系和源程序待运行的平台的可用资源信息,对所述源程序进行分解,确定所述源程序在所述平台上运行时,所述源程序所包含的各函数间的运行关系和各函数在所述平台上的执行建议,所述运行关系包括所述运行关系包括串行运行和/或并行运行,所述执行建议用于指示所述平台上执行各函数的硬件资源;根据所述函数调用关系和执行建议,在所述源程序中插入基于分布式计算框架的代码的修饰符,使得所述源程序能够在所述平台上进行分布式计算;根据所述执行建议,在所述平台上运行所述插入所述修饰符后的源程序。
[0009]进一步地,所述采用程序静态分析对待运行的源程序进行分析,确定所述源程序所包含的函数调用图,包括:在不运行所述源程序的代码的条件下,对所述源程序的代码进行扫描,确定所述源程序所包含的函数调用图。
[0010]进一步地,所述函数调用图为有向无环图;所述方法还包括:采用邻接表保存所述函数调用图。
[0011]进一步地,所述对源程序的代码进行扫描,确定所述源程序所包含的函数调用图,包括:对所述源程序进行代码分割与收集:将程序分割成多个包,对包内依赖关系进行分析与管控,创建节点调用关系图;对所述源程序中每个函数抽取函数信息:根据函数声明和调用方式,构造不同的信息提取结构,来分别提取与参数和参数类型有关的信息,得到函数间关系表;根据所述节点调用关系图和函数间关系表,生成函数调用图。
[0012]进一步地,根据所述调用关系,确定所述源程序所包含的函数中的特征信息,包括:根据所述调用关系,采用程序动态分析确定所述源程序所包含的函数中函数特征信息。
[0013]进一步地,根据所述调用关系,采用程序动态分析确定所述源程序所包含的函数中函数特征信息,包括:在所述源程序运行前,对程序中每个函数进行插桩操作;在所述源程序运行时,进入插桩的记录函数,以记录各函数执行时特征数据,所述特征数据包括如下函数计算相关信息中的至少一种:GPU、CPU、内存、I/O、运行时间。
[0014]进一步地,所述根据所述调用关系,确定所述源程序所包含的函数中函数特征信息,包括:根据所述调用关系,采用预先训练的程序智能分解算法,确定所述源程序所包含的函数中函数特征信息;其中,所述程序智能分解算法的输入为所述调用关系,输出为所述源程序所包含的函数中函数特征信息。
[0015]进一步地,所述程序智能分解算法的训练过程包括:对不同程序中的各函数,在数据量一致的情况下,分别在单一资源上重复执行至少两次,获得各函数对应的函数特征信息平均值;将不同所述函数的函数特征信息平均值进行分组,基于分组结果,采用机器学习和/或只是图谱模型进行训练,获得程序智能分解算法模型。
[0016]其训练数据为函数在单一资源上重复执行得到的平均值,生成的函数特征表。其训练结果为对函数特征表进行分组,形成基于机器学习、知识图谱模型的程序智能分解算法。
[0017]进一步地,所述程序智能分解算法包括以下方式中的至少一种:相似度度量建模、回归相似性学习、分类相似性学习、排序相似性学习。
[0018]进一步地,所述平台的硬本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于分布式计算的作业分解处理方法,其特征在于,包括以下步骤:采用程序静态分析对待运行的源程序进行分析,确定所述运行的源程序所包含的函数调用图,所述函数调用图用于表征所述源程序所包含的函数间的调用关系;根据所述函数间的调用关系,确定所述源程序所包含的函数中函数特征信息,所述函数特征信息用于表征各函数运行时的函数计算相关信息;根据所述函数特征信息、函数关系和源程序待运行的平台的可用资源信息,对所述源程序进行分解,确定所述源程序在所述平台上运行时,所述源程序所包含的各函数间的运行关系和各函数在所述平台上的执行建议,所述运行关系包括所述运行关系包括串行运行和/或并行运行,所述执行建议用于指示所述平台上执行各函数的硬件资源;根据所述函数调用关系和执行建议,在所述源程序中插入基于分布式计算框架的代码的修饰符,使得所述源程序能够在所述平台上进行分布式计算;根据所述执行建议,在所述平台上运行所述插入所述修饰符后的源程序。2.根据权利要求1所述的用于分布式计算的作业分解处理方法,其特征在于,所述采用程序静态分析对待运行的源程序进行分析,确定所述源程序所包含的函数调用图,包括:在不运行所述源程序的代码的条件下,对所述源程序的代码进行扫描,确定所述源程序所包含的函数调用图。3.根据权利要求1或2所述的用于分布式计算的作业分解处理方法,其特征在于,所述函数调用图为有向无环图;所述方法还包括:采用邻接表保存所述函数调用图。4.根据权利要求2所述的用于分布式计算的作业分解处理方法,其特征在于,所述对源程序的代码进行扫描,确定所述源程序所包含的函数调用图,包括:对所述源程序进行代码分割与收集:将程序分割成多个包,对包内依赖关系进行分析与管控,创建节点调用关系图;对所述源程序中每个函数抽取函数信息:根据函数声明和调用方式,构造不同的信息提取结构,来分别提取与参数和参数类型有关的信息,得到函数间关系表;根据所述节点调用关系图和函数间关系表,生成函数调用图。5.根据权利要求1所述的用于分布式计算的作业分解处理方法,其特征在于,根据所述调用关系,确定所述源程序所包含的函数中的特征信息,包括:...

【专利技术属性】
技术研发人员:白文媛高丰
申请(专利权)人:之江实验室
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1