CN114579183B - 一种用于分布式计算的作业分解处理方法 - Google Patents
一种用于分布式计算的作业分解处理方法 Download PDFInfo
- Publication number
- CN114579183B CN114579183B CN202210466088.0A CN202210466088A CN114579183B CN 114579183 B CN114579183 B CN 114579183B CN 202210466088 A CN202210466088 A CN 202210466088A CN 114579183 B CN114579183 B CN 114579183B
- Authority
- CN
- China
- Prior art keywords
- function
- source program
- program
- characteristic information
- information
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种用于分布式计算的作业分解处理方法,该方法采用程序静态分析对待运行的源程序进行分析,确定源程序包含的函数调用图;再通过程序动态分析或/和程序智能分解算法确定所述源程序所包含的函数的特征信息,函数特征信息用于表征各函数运行时的相关信息;根据所述函数特征信息、函数关系和计算平台的可用资源信息,对源程序进行分解,形成各函数在计算平台上的执行建议,即各函数使用哪些硬件资源计算;最后在源程序中插入修饰符,在计算平台上开始计算。通过本发明的方法,用户不需要对源程序做任何修改,即可实现源程序的分布式执行,保障了分布式执行方案的可重复性,避免了人为操作的主观性,节省了时间和人力成本。
Description
技术领域
本发明涉及智能计算领域的作业分解方法,尤其涉及一种用于分布式计算的作业分解处理方法。
背景技术
随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成。如果采用集中式计算,需要耗费相当长的时间来完成,而分布式计算是一种计算方法,和集中式计算是相对的,分布式计算是将该应用分解成许多小的部分,然后分配给多个计算资源进行处理,这样可以节约整体计算时间,大大提高计算效率。
Hadoop 是由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。其中主要包括分布式文件系统HDFS和MapReduce算法。MapReduce算法提供了一种并行程序设计模型与方法,它借助于函数式程序设计语言Lisp的设计思想,提供了一种并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,用户需分别编写Map和Reduce的函数,使得系统能够管理Map或Reduce并行任务的执行以及任务之间的协调,并且能够处理上述某个任务失败的情况,同时保障对硬件故障的容错性。
Spark是专为大规模数据处理而设计的快速通用的计算引擎,是UC Berkeley AMPLab所开源的类Hadoop MapReduce的通用并行框架,Spark相比于MapReduce所具有的优点是,其中间的输出结果可保存在内存中,从而不需要再读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法,且能够提供交互式查询,还可以优化迭代工作的负载。Spark是在Scala语言中实现的,它将Scala用作其应用程序框架,与Hadoop不同,Spark和Scala能够紧密集成,其中Scala可以像操作本地集合对象一样轻松地操作分布式数据集,Spark可以理解为,为了支持分布式数据集上的迭代作业,是对HadoopMapReduce的补充。
Ray 是UC Berkeley RISELab在2017年提出的机器学习分布式框架,虽然Ray与TensorFlow一样,也是面向机器学习的场景框架,但是Ray被大家使用作为分布式计算框架,因为Ray的核心部分提供了分布式计算的能力。与Spark相比,Ray的分布式计算方式比较小巧,它看上去与原生的Python函数并无二致,只需要给函数加上@ray.remote 的注解,该函数就可以在除本机以外的其他Ray集群中的节点中执行。所以,Ray是在几乎不提高用户代码复杂性的情况下,实现了分布式计算的能力。除了轻量级API的优势外,Ray的主要特性包括:高吞吐但低延迟的调度能力;支持任务的动态构建。
MapReduce、Spark和Ray作为分布式计算框架,被广泛使用,但是它们有个共同的使用前提,需要在程序设计之初就将分布式计算框架考虑进来,用相应的编程API语言进行编写程序。如果对于已经编写完成的程序,要修改成分布式程序相当困难,这是因为对于有分布式执行需求的作业而言,其程序体往往很大,逻辑细节很多,设计思想复杂。而在互联网行业人员流动比较大,因此往往是其他的程序员改写和理解这个需要改写成分布式计算方式的程序。
发明内容
本发明的目的是在于针对现有技术的不足,提供一种用于分布式计算的作业分解处理方法。
本发明的目的是通过以下技术方案来实现的:一种用于分布式计算的作业分解处理方法,包括以下步骤:
采用程序静态分析对待运行的源程序进行分析,确定所述待运行程序所包含的函数调用图,所述函数调用图用于表征所述源程序所包含的函数间的调用关系;
根据所述调用关系,确定所述源程序所包含的函数中函数特征信息,所述函数特征信息用于表征各函数运行时的函数计算相关信息;
根据所述函数特征信息、调用关系和源程序待运行的平台的可用资源信息,对所述源程序进行分解,确定所述源程序在所述平台上运行时,所述源程序所包含的各函数间的运行关系和各函数在所述平台上的执行建议,所述运行关系包括所述运行关系包括串行运行和/或并行运行,所述执行建议用于指示所述平台上执行各函数的硬件资源;
根据所述函数调用关系和执行建议,在所述源程序中插入基于分布式计算框架的代码的修饰符,使得所述源程序能够在所述平台上进行分布式计算;
根据所述执行建议,在所述平台上运行所述插入所述修饰符后的源程序。
进一步地,所述采用程序静态分析对待运行的源程序进行分析,确定所述源程序所包含的函数调用图,包括:在不运行所述源程序的代码的条件下,对所述源程序的代码进行扫描,确定所述源程序所包含的函数调用图。
进一步地,所述函数调用图为有向无环图;所述方法还包括:采用邻接表保存所述函数调用图。
进一步地,所述对源程序的代码进行扫描,确定所述源程序所包含的函数调用图,包括:对所述源程序进行代码分割与收集:将程序分割成多个包,对包内依赖关系进行分析与管控,创建节点调用关系图;
对所述源程序中每个函数抽取函数信息:根据函数声明和调用方式,构造不同的信息提取结构,来分别提取与参数和参数类型有关的信息,得到函数间关系表;
根据所述节点调用关系图和函数间关系表,生成函数调用图。
进一步地,根据所述调用关系,确定所述源程序所包含的函数中的特征信息,包括:根据所述调用关系,采用程序动态分析确定所述源程序所包含的函数中函数特征信息。
进一步地,根据所述调用关系,采用程序动态分析确定所述源程序所包含的函数中函数特征信息,包括:在所述源程序运行前,对程序中每个函数进行插桩操作;
在所述源程序运行时,进入插桩的记录函数,以记录各函数执行时特征数据,所述特征数据包括如下函数计算相关信息中的至少一种:GPU、CPU、内存、I/O、运行时间。
进一步地,所述根据所述调用关系,确定所述源程序所包含的函数中函数特征信息,包括:根据所述调用关系,采用预先训练的程序智能分解算法,确定所述源程序所包含的函数中函数特征信息;其中,所述程序智能分解算法的输入为所述调用关系,输出为所述源程序所包含的函数中函数特征信息。
进一步地,所述程序智能分解算法的训练过程包括:对不同程序中的各函数,在数据量一致的情况下,分别在单一资源上重复执行至少两次,获得各函数对应的函数特征信息平均值;
将不同所述函数的函数特征信息平均值进行分组,基于分组结果,采用机器学习和/或只是图谱模型进行训练,获得程序智能分解算法模型。
其训练数据为函数在单一资源上重复执行得到的平均值,生成的函数特征表。其训练结果为对函数特征表进行分组,形成基于机器学习、知识图谱模型的程序智能分解算法。
进一步地,所述程序智能分解算法包括以下方式中的至少一种:相似度度量建模、回归相似性学习、分类相似性学习、排序相似性学习。
进一步地,所述平台的硬件资源包括服务器、虚拟机、网关、端计算设备中的至少一种;所述执行建议通过执行建议表表征。
进一步地,所述基于分布式计算框架的代码包括以下中的一种:MapReduce、Ray、Spark。
本发明的有益效果如下:本发明所述作业分解方法,是通过对非分布式的源程序进行处理,源程序的理解和分析,并综合计算平台的可用资源信息,将源程序中能够分布式执行的部分识别出来,再通过对源程序输入进行低侵入的方式,插入类似MapReduce、Spark或Ray的分布式执行框架。通过使用本申请文件中所述作业分解方法,用户不需要自己对源程序做任何修改,即可实现源程序的分布式执行,保障了对源程序分布式修改方案的可重复性,避免了人员操作的主观性,同时节省了人员操作的成本,具有灵活性、普适性、便利性等优点。
附图说明
图1是本发明方法的流程图;
图2是本发明实施例1的流程示意图;
图3是本发明实施例2的流程示意图;
图4是本发明实施例3的流程示意图;
图5是本发明实施例4的流程示意图;
图6是本发明实施例5的流程示意图;
图7是实施例7的流程示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的方法类的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的两个优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
如图1所示,本发明提供一种用于分布式计算的作业分解处理方法,包括以下步骤:
(1)采用程序静态分析对待运行的源程序进行分析,确定所述待运行程序所包含的函数调用图,所述函数调用图用于表征所述源程序所包含的函数间的调用关系。
具体地,所述采用程序静态分析对待运行的源程序进行分析,确定所述源程序所包含的函数调用图,包括:
在不运行所述源程序的代码的条件下,对所述源程序的代码进行扫描,确定所述源程序所包含的函数调用图。示例性地,所述函数调用图为有向无环图。
所述方法还包括:采用邻接表保存所述函数调用图。
进一步地,所述对源程序的代码进行扫描,确定所述源程序所包含的函数调用图,包括:
对所述源程序进行代码分割与收集:将程序分割成多个包,对包内依赖关系进行分析与管控,创建节点调用关系图;
对所述源程序中每个函数抽取函数信息:根据函数声明和调用方式,构造不同的信息提取结构,来分别提取与参数和参数类型有关的信息,得到函数间关系表;
根据所述节点调用关系图和函数间关系表,生成函数调用图。
(2)根据所述函数间的调用关系,确定所述源程序所包含的函数中函数特征信息,所述函数特征信息用于表征各函数运行时的函数计算相关信息。
具体地,根据所述调用关系,确定所述源程序所包含的函数中的特征信息,包括:根据所述调用关系,采用程序动态分析确定所述源程序所包含的函数中函数特征信息。
具体地,根据所述调用关系,采用程序动态分析确定所述源程序所包含的函数中函数特征信息,包括:
在所述源程序运行前,对程序中每个函数进行插桩操作;
在所述源程序运行时,进入插桩的记录函数,以记录各函数执行时特征数据,所述特征数据包括如下函数计算相关信息中的至少一种:GPU、CPU、内存、I/O、运行时间。
具体地,所述根据所述调用关系,确定所述源程序所包含的函数中函数特征信息,包括:根据所述调用关系,采用预先训练的程序智能分解算法,确定所述源程序所包含的函数中函数特征信息;
其中,所述程序智能分解算法的输入为所述调用关系,输出为所述源程序所包含的函数中函数特征信息。
进一步地,所述程序智能分解算法的训练过程包括:
对不同程序中的各函数,在数据量一致的情况下,分别在单一资源上重复执行至少两次,获得各函数对应的函数特征信息平均值;
将不同所述函数的函数特征信息平均值进行分组,基于分组结果,采用机器学习和/或只是图谱模型进行训练,获得程序智能分解算法模型;
其训练数据为函数在单一资源上重复执行得到的平均值,生成的函数特征表;其训练结果为对函数特征表进行分组,形成基于机器学习、知识图谱模型的程序智能分解算法。
示例性地,所述程序智能分解算法包括以下方式中的至少一种:
相似度度量建模、回归相似性学习、分类相似性学习、排序相似性学习。
(3)根据所述函数特征信息、调用关系和源程序待运行的平台的可用资源信息,对所述源程序进行分解,确定所述源程序在所述平台上运行时,所述源程序所包含的各函数间的运行关系和各函数在所述平台上的执行建议,所述运行关系包括所述运行关系包括串行运行和/或并行运行,所述执行建议用于指示所述平台上执行各函数的硬件资源。
示例性地,所述平台的硬件资源包括服务器、虚拟机、网关、端计算设备中的至少一种;所述执行建议通过执行建议表表征。
(4)根据所述函数调用关系和执行建议,在所述源程序中插入基于分布式计算框架的代码的修饰符,使得所述源程序能够在所述平台上进行分布式计算。
示例性地,所述基于分布式计算框架的代码包括以下中的一种:MapReduce、Ray、Spark。
(5)根据所述执行建议,在所述平台上运行所述插入所述修饰符后的源程序。
本发明所述的作业分解方法,对非分布式的源程序进行处理,通过对源程序的理解和分析,并综合计算平台的可用资源信息,将源程序中能够分布式执行的部分识别出来,再通过对源程序输入进行低侵入的方式,插入类似MapReduce、Spark或Ray的分布式执行框架。与现有方法相比,本方法可以实现用户不需要自己对源程序做任何修改,即可实现源程序的分布式执行,保障了对源程序分布式修改方案的可重复性。
针对此方法,本发明提出三个实施例,在输入同一段源代码的前提下,使用三个实施例都可以完整实现分布式计算的作业分解处理。
实施例1
如图2所示,对待运行的源程序,通过程序静态分析和程序动态分析方法,再结合运行源程序的平台可用资源信息,确定分布式执行策略。
采用程序静态分析对待运行的源程序进行分析,确定所述待运行程序所包含的函数调用图,所述函数调用图用于表征所述源程序所包含的函数间的调用关系;
根据所述调用关系,确定所述源程序所包含的函数中函数特征信息,所述函数特征信息用于表征各函数运行时的函数计算相关信息;
根据所述函数特征信息、调用关系和源程序待运行的平台的可用资源信息,对所述源程序进行分解,确定所述源程序在所述平台上运行时,所述源程序所包含的各函数间的运行关系和各函数在所述平台上的执行建议,所述运行关系包括所述运行关系包括串行运行和/或并行运行,所述执行建议用于指示所述平台上执行各函数的硬件资源。
根据所述函数调用关系和执行建议,在所述源程序中插入基于分布式计算框架的代码的修饰符,使得所述源程序能够在所述平台上进行分布式计算。
根据所述执行建议,在所述平台上运行所述插入所述修饰符后的源程序。
实施例2
如图3所示,对待运行的源程序,通过程序静态分析和程序智能分解算法,再结合运行源程序的平台可用资源信息,确定分布式执行策略。
与实施例1的相同点是,采用程序静态分析对待运行源程序进行分析,确定源程序所包含的函数调用图。
与实施例1不同点是,实施例2采用程序智能分解算法确定源程序所包含的函数中函数特征信息,所述函数特征信息用于表征各函数运行时的函数计算相关信息。
程序智能分解算法需要预先训练,源程序输入后,根据预先训练的算法模型,确定所述源程序所包含的函数中函数特征信息。
程序智能分解算法预先训练的方法为,对不同程序中的各函数,在数据量一致的情况下,分别在单一资源上重复执行至少两次,获得各函数对应的运行时函数特征信息平均值。
将不同所述函数的函数特征信息平均值进行分组,基于分组结果,采用机器学习和/或只是图谱模型进行训练,获得程序智能分解算法模型。
实施例3
如图4所示,对待运行的源程序,进行程序静态分析后,通过程序动态分析和程序智能分解算法,再结合运行源程序的平台可用资源信息,确定分布式执行策略。
与实施例1的相同点是,采用程序静态分析对待运行源程序进行分析,确定源程序所包含的函数调用图。
与实施例1不同点是,实施例3采用程序智能分解算法和程序动态分析方法结合,确定源程序所包含的函数中函数特征信息,所述函数特征信息用于表征各函数运行时的函数计算相关信息。
程序智能分解算法和程序动态分析方法的输出都是对源程序中函数的函数特征信息,两份函数特征信息都会保留。另外会判断源程序待运行的平台的可用资源信息, 如果平台可用资源紧张,则对比两份函数特征信息后,取其中资源消耗量较小的方案,提供函数执行建议,如果平台可用资源充足,则对比两份函数特征信息后,取其中资源消耗量大的方案,提供函数执行建议。
对每个函数的执行建议汇总后,对源程序进行分解,确定源程序在平台上运行时,所述源程序所包含的各函数间的运行关系和各函数在所述平台上的执行建议。
实施例4
如图5所示,对待运行的源程序采用程序静态分析方法,生成函数调用图,其具体实现方法为:
对源程序的代码进行扫描,并对源程序进行代码分割与收集,将程序分割成多个包,并对包内依赖关系进行分析与管控,该过程结果为创建节点调用关系图;
对源程序中每个函数抽取函数信息,抽取函数信息的方法,可以为根据函数声明和调用方式,构造不同的信息提取结构,来分别提取与参数和参数类型有关的信息,该过程结果为创建函数间关系表。
根据节点调用关系图和函数间关系表,生成函数调用图。
实施例5
如图6所示,对待运行的源程序采用程序动态分析方法,生成函数特征信息,其具体实现方法为:
首先使用插桩技术处理待运行的源程序,插桩是一种在程序中插入一些探针的操作技术,在保证程序原有逻辑完整性的基础上,通过探针的执行来获取函数之间的调用关系和每个函数的特征信息。
特别地,为了防止由于探测点过多造成插桩后的代码运行受阻等问题,为减小开销和保证插桩的效率,可以将插桩的探针放置在每个函数第一条执行语句之前,当程序运行到探测点时,会进入到插桩的记录函数中,既可以记录函数内执行路径,也可以探测函数间调用的顺序。
插桩操作完成后,程序开始运行,在运行过程中,就可以根据插桩收集到日志记录,获取函数的执行轨迹,从而获取函数的特征信息。
实施例6
对待运行的源程序采用程序智能分解算法,采用知识图谱和/或深度学习方法,推理出函数特征信息。深度学习技术擅长在各种数据集上执行各种任务(例如分类、生成等),具有较高的精度和召回率,而可解释性较差。另一方面,知识图谱可解释性和可重用性优于深度学习方法,但精度较差。在实施时,两种方法可以单独使用,也可以结合在一起使用。
若采用深度学习的方法,实现程序智能分解算法,其具体实施方案可以采用以下的一种或几种方式:
(1)相似度度量建模:相似度度量可以建模为回归问题,也可以建模为分类问题或排序问题。
(2)回归相似性学习:给定一对输入以及它们的相似性度量值,在三元组训练数据集上学习一个近似函数。
(3)分类相似性学习:为每一对训练数据,关联一个二值标签,标签表示输入的两个对象是否相似。
(4)排序相似性学习: 排序相似性学习的目标是学习一个相似性度量函数,使得对于一个新的三元组成立。
实施例7
采用深度学习或/和知识图谱的方法时,其模型训练的过程是,在数据量一致的情况下,分别在单一资源上重复执行至少两次,获得各函数对应的函数特征信息平均值。
函数特征的收集类型,如图7所示,可以包括如下类型,收集函数的名称、输入、输出、功能描述、调用关系,在数据特征方面,可以收集数据调用关系和数据类型,在资源特征方面,可以收集GPU、CPU、RAM、I/O等信息。
对函数的函数特征信息平均值进行分组后,基于分组结果获得程序智能分解算法模型。
实施例8
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种用于分布式计算的作业分解处理方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
以上实施例仅用于说明本发明的设计思想和特点,其目的在于使本领域内的技术人员能够了解本发明的内容并据以实施,本发明的保护范围不限于上述实施例。所以,凡依据本发明所揭示的原理、设计思路所作的等同变化或修饰,均在本发明的保护范围之内。
Claims (11)
1.一种用于分布式计算的作业分解处理方法,其特征在于,包括以下步骤:
采用程序静态分析对待运行的源程序进行分析,确定所述待运行的源程序所包含的函数调用图,所述函数调用图用于表征所述源程序所包含的函数间的调用关系;所述待运行源程序,具体是指非分布式的源程序;
根据所述函数间的调用关系,采用程序动态分析、预先训练的程序智能分解算法、程序智能分解算法和程序动态分析方法结合确定所述源程序所包含的函数中函数特征信息,所述函数特征信息用于表征各函数运行时的函数计算相关信息;
根据所述函数特征信息、函数关系和源程序待运行的平台的可用资源信息,对所述源程序进行分解,确定所述源程序在所述平台上运行时,所述源程序所包含的各函数间的运行关系和各函数在所述平台上的执行建议,所述运行关系包括串行运行和/或并行运行,所述执行建议用于指示所述平台上执行各函数的硬件资源;
根据所述函数调用关系和执行建议,在所述源程序中插入基于分布式计算框架的代码的修饰符,使得所述源程序能够在所述平台上进行分布式计算;
根据所述执行建议,在所述平台上运行所述插入所述修饰符后的源程序。
2.根据权利要求1所述的用于分布式计算的作业分解处理方法,其特征在于,所述采用程序静态分析对待运行的源程序进行分析,确定所述源程序所包含的函数调用图,包括:
在不运行所述源程序的代码的条件下,对所述源程序的代码进行扫描,确定所述源程序所包含的函数调用图。
3.根据权利要求1或2所述的用于分布式计算的作业分解处理方法,其特征在于,所述函数调用图为有向无环图;
所述方法还包括:采用邻接表保存所述函数调用图。
4.根据权利要求2所述的用于分布式计算的作业分解处理方法,其特征在于,所述对源程序的代码进行扫描,确定所述源程序所包含的函数调用图,包括:
对所述源程序进行代码分割与收集:将程序分割成多个包,对包内依赖关系进行分析与管控,创建节点调用关系图;
对所述源程序中每个函数抽取函数信息:根据函数声明和调用方式,构造不同的信息提取结构,来分别提取与参数和参数类型有关的信息,得到函数间关系表;
根据所述节点调用关系图和函数间关系表,生成函数调用图。
5.根据权利要求1所述的用于分布式计算的作业分解处理方法,其特征在于,根据所述调用关系,确定所述源程序所包含的函数中的特征信息为:根据所述调用关系,采用程序动态分析确定所述源程序所包含的函数中函数特征信息。
6.根据权利要求5所述的用于分布式计算的作业分解处理方法,其特征在于,根据所述调用关系,采用程序动态分析确定所述源程序所包含的函数中函数特征信息,包括:
在所述源程序运行前,对程序中每个函数进行插桩操作;
在所述源程序运行时,进入插桩的记录函数,以记录各函数执行时特征数据,所述特征数据包括如下函数计算相关信息中的至少一种:GPU、CPU、内存、I/O、运行时间。
7.根据权利要求1所述的用于分布式计算的作业分解处理方法,其特征在于,所述根据所述调用关系,确定所述源程序所包含的函数中函数特征信息为:根据所述调用关系,采用预先训练的程序智能分解算法,确定所述源程序所包含的函数中函数特征信息;
其中,所述程序智能分解算法的输入为所述调用关系,输出为所述源程序所包含的函数中函数特征信息。
8.根据权利要求7所述的用于分布式计算的作业分解处理方法,其特征在于,所述程序智能分解算法的训练过程包括:
对不同程序中的各函数,在数据量一致的情况下,分别在单一资源上重复执行至少两次,获得各函数对应的函数特征信息平均值;
将不同所述函数的函数特征信息平均值进行分组,基于分组结果,采用机器学习和/或只是图谱模型进行训练,获得程序智能分解算法模型;
其训练数据为函数在单一资源上重复执行得到的平均值,生成的函数特征表;其训练结果为对函数特征表进行分组,形成基于机器学习、知识图谱模型的程序智能分解算法。
9.根据权利要求8所述的用于分布式计算的作业分解处理方法,其特征在于,所述程序智能分解算法包括以下方式中的至少一种:
相似度度量建模、回归相似性学习、分类相似性学习、排序相似性学习。
10.根据权利要求1所述的用于分布式计算的作业分解处理方法,其特征在于,所述平台的硬件资源包括服务器、虚拟机、网关、端计算设备中的至少一种;所述执行建议通过执行建议表表征。
11.根据权利要求1所述的用于分布式计算的作业分解处理方法,其特征在于,所述基于分布式计算框架的代码包括以下中的一种:MapReduce、Ray、Spark。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210466088.0A CN114579183B (zh) | 2022-04-29 | 2022-04-29 | 一种用于分布式计算的作业分解处理方法 |
PCT/CN2022/092960 WO2023206635A1 (zh) | 2022-04-29 | 2022-05-16 | 一种用于分布式计算的作业分解处理方法 |
US18/110,910 US11907693B2 (en) | 2022-04-29 | 2023-02-17 | Job decomposition processing method for distributed computing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210466088.0A CN114579183B (zh) | 2022-04-29 | 2022-04-29 | 一种用于分布式计算的作业分解处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114579183A CN114579183A (zh) | 2022-06-03 |
CN114579183B true CN114579183B (zh) | 2022-10-18 |
Family
ID=81778144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210466088.0A Active CN114579183B (zh) | 2022-04-29 | 2022-04-29 | 一种用于分布式计算的作业分解处理方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114579183B (zh) |
WO (1) | WO2023206635A1 (zh) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5119590B2 (ja) * | 2005-11-10 | 2013-01-16 | 富士通セミコンダクター株式会社 | マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置 |
US9043771B1 (en) * | 2007-06-29 | 2015-05-26 | Cadence Design Systems, Inc. | Software modification methods to provide master-slave execution for multi-processing and/or distributed parallel processing |
CN102096603B (zh) * | 2009-12-14 | 2013-01-02 | 中国移动通信集团公司 | MapReduce系统中的作业分解控制方法及设备 |
CN109416646B (zh) * | 2016-09-08 | 2022-04-05 | 华为技术有限公司 | 一种容器分配的优化方法及处理设备 |
WO2018236691A1 (en) * | 2017-06-20 | 2018-12-27 | Vfunction, Inc. | SYSTEMS AND METHODS FOR PERFORMING SOFTWARE APPLICATIONS ON DISTRIBUTED APPLICATION DEVELOPMENT ENVIRONMENTS |
US10430250B2 (en) * | 2017-10-11 | 2019-10-01 | International Business Machines Corporation | Decomposing monolithic application into microservices |
CN110321223B (zh) * | 2019-07-03 | 2021-08-17 | 湖南大学 | Coflow协同作业流调度感知的数据流划分方法与装置 |
CN110806931B (zh) * | 2019-10-31 | 2022-11-22 | 上海依图网络科技有限公司 | 分布式服务的调用链路跟踪实现方法、装置及电子设备 |
CN111475516A (zh) * | 2020-03-05 | 2020-07-31 | 深圳壹账通智能科技有限公司 | 分布式锁的调用方法、装置、计算机设备及存储介质 |
CN112149808B (zh) * | 2020-09-28 | 2022-10-14 | 上海交通大学 | 拓展单机图神经网络训练至分布式训练方法、系统及介质 |
CN113342489A (zh) * | 2021-05-25 | 2021-09-03 | 上海商汤智能科技有限公司 | 任务处理方法及装置、电子设备和存储介质 |
CN113434548B (zh) * | 2021-06-25 | 2022-06-17 | 北京理工大学 | 一种基于Spark的大规模数据流分析方法及系统 |
CN113535363A (zh) * | 2021-07-28 | 2021-10-22 | 重庆度小满优扬科技有限公司 | 任务调用方法、装置、电子设备及存储介质 |
CN114327880A (zh) * | 2021-12-23 | 2022-04-12 | 广州亿电邦科智能网络科技有限公司 | 一种轻代码异构分布式系统的计算方法 |
-
2022
- 2022-04-29 CN CN202210466088.0A patent/CN114579183B/zh active Active
- 2022-05-16 WO PCT/CN2022/092960 patent/WO2023206635A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN114579183A (zh) | 2022-06-03 |
WO2023206635A1 (zh) | 2023-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | Gamepad: A learning environment for theorem proving | |
US11681925B2 (en) | Techniques for creating, analyzing, and modifying neural networks | |
US9594754B2 (en) | Purity analysis using white list/black list analysis | |
Garijo et al. | Detecting common scientific workflow fragments using templates and execution provenance | |
CN112748914A (zh) | 一种应用程序开发方法、装置、电子设备和存储介质 | |
CN112765031B (zh) | 一种群智化漏洞挖掘任务的分解方法 | |
CN113011461B (zh) | 通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置 | |
WO2023093689A1 (zh) | 一种计算图优化方法、装置及设备 | |
CN115269204B (zh) | 一种用于神经网络编译的内存优化方法及装置 | |
CN111373406A (zh) | 使用问题匹配的先验知识提取的加速仿真设置过程 | |
Hoffman et al. | Autoconj: recognizing and exploiting conjugacy without a domain-specific language | |
Sajnani | Automatic software architecture recovery: A machine learning approach | |
Mundargi et al. | PrePy-A Customize Library for Data Preprocessing in Python | |
CN114579183B (zh) | 一种用于分布式计算的作业分解处理方法 | |
Di Pompeo et al. | An Efficient Performance-Driven Approach for HW/SW Co-Design | |
US11907693B2 (en) | Job decomposition processing method for distributed computing | |
Baldwin | Why we can't program multiprocessors the way we're trying to do it now | |
Camargo et al. | Applying a data-centric framework for developing model transformations | |
Ma et al. | Parallel exact inference on multicore using mapreduce | |
Jang et al. | Machine Learning-Based Programming Analysis Model Proposal: Based on User Behavioral Analysis | |
Kaalen et al. | Transient analysis of hierarchical semi-Markov process models with tool support in stateflow | |
Rao et al. | Learning planning domain descriptions in RDDL | |
Borba et al. | Refinement of concurrent object oriented programs | |
Mangla et al. | Bayesian optimisation of solver parameters in CBMC | |
Sas et al. | Using Structural and Semantic Information to Identify Software Components |
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 |