CN109799973B - 一种数据驱动的用户透明的可扩展编程方法 - Google Patents

一种数据驱动的用户透明的可扩展编程方法 Download PDF

Info

Publication number
CN109799973B
CN109799973B CN201811510719.4A CN201811510719A CN109799973B CN 109799973 B CN109799973 B CN 109799973B CN 201811510719 A CN201811510719 A CN 201811510719A CN 109799973 B CN109799973 B CN 109799973B
Authority
CN
China
Prior art keywords
node
data
task
execution
execution mode
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
Application number
CN201811510719.4A
Other languages
English (en)
Other versions
CN109799973A (zh
Inventor
张京城
吴江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xtao Co ltd
Original Assignee
Xtao Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xtao Co ltd filed Critical Xtao Co ltd
Priority to CN201811510719.4A priority Critical patent/CN109799973B/zh
Publication of CN109799973A publication Critical patent/CN109799973A/zh
Application granted granted Critical
Publication of CN109799973B publication Critical patent/CN109799973B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开一种数据驱动的用户透明的可扩展编程方法,该方法包括构建用户程序和执行用户程序,其中构建用户程序包括:构建用户软件单元,构建基本任务项及组合任务,定义命名的输入和输出规则,确定任务执行方式;执行用户程序包括基于任务执行方式和数据依赖生成任务的有向执行图,基于有向执行图的拓扑顺序执行有向执行图,命名输入输出的实例化。本发明在不对用户应用软件和执行环境施加任何限制的前提下,提高用户软件的并行处理能力,并且能够使处理规模不受限制的数据,能够基于用户现有的软件,使之具备大规模并行处理能力,从而不需要用户进行重新开发。

Description

一种数据驱动的用户透明的可扩展编程方法
技术领域
本发明涉及可扩展编程方法。更具体地,涉及一种数据驱动的用户透明的可扩展编程方法。
背景技术
近年来,随着科学技术的飞速发展,计算科学已经成为21世纪最重要的技术领域之一,它对整个社会的进步起着基础性的作用。其中,高性能计算机,或称超级计算机,是一套计算性能强大,具有大规模存储空间和完整的软件系统的计算机,是计算机中功能最强、运算速度最快、存储容量最大的一类计算机,其性能远超普通个人计算机和通用服务器,具有无与伦比的计算能力
高性能计算(High performance computing,缩写HPC)指通常使用很多处理器(作为单个机器的一部分)或者某一集群中组织的几台计算机(作为单个计算资源操作)的计算系统和环境。高性能计算机通过并行计算来实现超高的计算性能,并行计算即将多个处理器通过网络连接,并以一定的方式将其有序地组织起来,同时对多个任务或多条指令、或多个数据项进行处理,以达到快速求解一个计算问题的目的。因此,高性能计算机能够极大地缩短计算时间,如人类基因组计划,同时能够扩大求解规模。
高性能计算机多用于国家高科技领域和尖端技术研究,是国家科技发展水平和综合国力的重要标志。近年来,高性能计算机在科学研究、气象预报、计算模拟、军事研究、CFD/CAE、生物制药、基因测序、图像处理等领域有着越来越广泛的应用。而高性能计算机平台的建设对国家保持科学研究领导地位、提高经济竞争力以及维护国土安全、提升国际地位将会发挥越来越重要的作用。
目前,在高性能计算平台进行应用软件开发时,主要存在以下问题:
1.Bpipe/sge等计算平台要求用户程序和计算平台之间绑定和兼容,限制了用户应用软件的执行环境的选择;
2.Hadoop/Spark等技术需要用户软件使用专门的编程接口进行开发,限制了应用软件本身的开发语言的选择,且不适用于已经开发完成的应用软件。
因此,为了满足用户程序与计算平台之间的兼容性,同时降低专门的编程接口对用户软件开发语言的限制,需要提供一种数据驱动的用户透明的可扩展编程方法。
发明内容
本发明的目的在于提供一种数据驱动的可扩展编程方法,在不对用户应用软件和执行环境施加任何限制的前提下,提高用户软件的并行处理能力,并且能够使处理规模不受限制的数据,能够基于用户现有的软件,使之具备大规模并行处理能力,从而不需要用户进行重新开发。
为达到上述目的,本发明采用下述技术方案:
一种数据驱动的用户透明的可扩展编程方法,该方法包括:
构建用户程序,其中构建用户程序包括:构建用户软件单元,构建基本任务项及组合任务,定义命名的输入和输出规则,确定任务执行方式;及
执行用户程序,其中执行用户程序包括:基于任务执行方式和数据依赖生成任务的有向执行图,基于有向执行图的拓扑顺序执行有向执行图,命名输入输出的实例化。
本发明实施例中,根据命名输入输出的数据依赖和并行执行模式自动构造任务执行的有向图,并按照有向图的拓扑顺序执行,解决了数据依赖问题,保证了超大规模并行执行程序的正确性。
优选地,用户软件单元可以是用户独立开发或者已经开发完成的应用软件,用户使用任意编程语言编制自己的软件或者程序,处理任意复杂的工作,并使用标准的容器技术进行打包,成为用户软件单元。
基本任务项用于描述使用用户软件单元从已有数据生成新数据的方式,其可以是在用户按软件单元可以执行的任何命令。基本任务项接收数据输入并产生数据输出。
优选地,定义命名的输入和输出规则包括:
为用户程序的任一数据定义一唯一名称;
基本任务项用于通过唯一名称引用和访问已有数据,还用于生成新数据并为新数据命名一唯一名称。
数据的存储方式和访问方式不受限制,只需保证数据和用户软件单元兼容即可。
优选地,任务执行方式包括:
第一执行方式,在第一执行方式中一组基本任务项按照指定的顺序依次执行,下一任务在上一任务执行完成后开始执行。
本发明实施例中,第一执行方式即为串行执行方式,其中,每个任务可以引用前面任务的命名输出,一个串行执行的任务流定义为一个串行执行分支。
第二执行方式,在第二执行方式中将指定的一组输入数据按照规则分成若干个分支,并行执行若干个分支,若干个分支中的每个分支采用第一执行方式执行。
本发明实施例中,第二执行方式即为拆分数据并行执行方式,将指定的一组输入数据按照规则分为若干个数据组,并行启动若干个串行执行分支,每一个分支串行执行一组基本任务,并处理一个数据组。不同的串行执行分支互不影响,输入输出的名字仅在同一个分支内有效。
第三执行方式,在第三执行方式中将指定的一组输入数据复制成为若干个分支,在若干个分支上的每个分支上并行执行互不相同的基本任务,互不相同的基本任务中具有相同的输入数据和参数。
本发明实施例中,第三执行方式为克隆并行执行方式,在同样的数据上并行执行一组任务,每一个任务作为一个单独的分支执行。
第四执行方式,在第四执行方式中将指定的一组输入数据复制成为若干个分支,在若干个分支上的每个分支上并行执行相同的基本任务,任一基本任务中至少一个参数的取值不同于其他基本任务中参数的取值。
本发明实施例中,第四执行方式为分支变量并行执行方式,在同样的输入数据上并行执行一组基本任务,每一个分支对某个或若干个参数的取值不一样,且不同分支之间执行完全独立。
优选地,组合任务包括多个按照第一执行方式、第二执行方式、第三执行方式和第四执行方式中的一种或多种进行组合的基本任务项。
本发明实施例中,对于组合任务的任务组合方式,可以按照上述四种并行执行方式中的一种或多种进行组合,一系列基本任务项可以组成一个组合任务,组合任务进一步可以组合成为更大的组合任务。这种组合方式在规模上不受限制,可以用来从基本软件单元形成任意复杂的组合任务。
优选地,基于任务执行方式和数据依赖生成任务的有向执行图包括:
基于并行方式对组合任务构造图,其中,每一个基本任务项对应一个图的节点,每一个组合任务对应一个图的子图;及
在图的节点之间连接图的边,其中,对任意命名的输入和输出,从产生输出的节点连接一条边到使用命名的输入的节点。
优选地,基于并行方式对组合任务构造图包括:
对于按照第一执行方式进行组合的组合任务,为串行执行的每个基本任务产生一个节点,从上一个节点连接一条边到下一个节点,定义第一个节点为子图的开始节点,最后一个节点为子图的结束节点,并将上一个组合任务的子图的结束节点连接到下一个组合任务的子图开始节点;
对于按照第二执行方式、第三执行方式或第四执行方式进行组合的组合任务,对每个分支构造分支子图,组合任务的子图为分支子图的合集,组合任务子图的开始节点为多个分支子图开始节点的合集,组合任务子图的结束节点为多个分支子图结束节点的合集。
优选地,基于有向执行图的拓扑顺序执行有向执行图包括:
判断开始节点,包括:选择一个节点为第一节点,判断若无其他节点通过边指向第一节点,则第一节点为开始节点,若存在第二节点通过边指向第一节点,则继续判断第二节点是否为开始节点;及
从开始节点开始依次执行图的节点。
优选地,执行图的节点包括:
准备执行环境,使用容器技术为每个节点的应用软件单元实例化一个完全匹配的执行环境;
命名输入输出实例化,根据图的边的关系,将所有前驱节点的输出数据通过指定的协议加载到对应节点,并替换执行命令中的输入输出到具体数据路径;
启动基本任务项描述的命令执行用户的应用软件的容器;及
判断节点是否执行完成,若完成,则通知执行引擎基于图的拓扑顺序执行后续节点。
优选地,命名输入输出实例化包括:
自动为每个分支维护一个从名字到数据路径的输入输出映射表,其中数据路径对用户透明且由程序执行引擎自动计算和调度;
当输出数据到第一名称时,执行引擎更新输入输出映射表并将第一名称指向数据路径;
当输入数据引用第二名称时,执行引擎从输入输出映射表中查找第二名称,并获取最新的数据路径;及
当输出数据到第三名称时,若输入输出映射表中包括对于第三名称的映射,则更新映射并执行新的数据。
本发明的有益效果如下:
本发明中,对打包的应用软件容器用四种并行方式组合起来,使得若干个容器通过共享存储交互实现任意复杂的功能,使得应用软件不加修改具备了大规模并行处理能力;根据命名输入输出的数据依赖和并行执行模式自动构造任务执行的有向图,并按照有向图的拓扑顺序执行,解决数据依赖,保证了超大规模并行执行程序的正确性;在程序执行的过程中,自动维护数据名字到数据路径的映射,为每个任务自动构造输入和输出数据的路径,简化了用户编程。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明。
图1示出一种数据驱动的用户透明的可扩展编程方法流程图。
图2示出基于JSON格式的并行程序示例。
图3示出第一基本单元执行后子分支映射表。
图4示出第二基本单元执行后子分支映射表。
图5示出第三基本单元执行后主分支映射表。
图6示出第三基本单元执行后子分支映射表。
图7示出有向执行图结构示意图。
具体实施方式
为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
本发明的说明书和权利要求书及上述附图中的属于“第一”、“第二”等是用于区别不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法或设备固有的气体步骤或单元。
一种数据驱动的用户透明的可扩展编程方法,该方法包括构建用户程序和执行用户程序,其中构建用户程序包括构建用户软件单元,构建基本任务项及组合任务,定义命名的输入和输出规则和确定任务执行方式;执行用户程序包括基于任务执行方式和数据依赖生成任务的有向执行图,基于有向执行图的拓扑顺序执行有向执行图和命名输入输出的实例化。
具体地,用户软件单元可以是用户独立开发或者已经开发完成的应用软件,用户使用任意编程语言编制自己的软件或者程序,处理任意复杂的工作,并使用标准的容器技术进行打包,成为用户软件单元。基本任务项用于描述使用用户软件单元从已有数据生成新数据的方式,其可以是在用户按软件单元可以执行的任何命令。基本任务项接收数据输入并产生数据输出。
定义命名的输入和输出规则包括为用户程序的任一数据定义一唯一名称及基本任务项用于通过唯一名称引用和访问已有数据,还用于生成新数据并为新数据命名一唯一名称。
应注意的是,数据的存储方式和访问方式不受限制,只需保证数据和用户软件单元兼容即可。
任务执行方式包括第一执行方式,第二执行方式,第三执行方式和第四执行方式,其中:
第一执行方式为串行执行方式。在第一执行方式中一组基本任务项按照指定的顺序依次执行,下一任务在上一任务执行完成后开始执行,每个任务可以引用前面任务的命名输出,一个串行执行的任务流定义为一个串行执行分支。
第二执行方式为拆分数据并行执行方式。在第二执行方式中将指定的一组输入数据按照规则分成若干个分支,并行执行若干个分支,若干个分支中的每个分支采用第一执行方式执行。将指定的一组输入数据按照规则分为若干个数据组,并行启动若干个串行执行分支,每一个分支串行执行一组基本任务,并处理一个数据组。不同的串行执行分支互不影响,输入输出的名字仅在同一个分支内有效。
第三执行方式为克隆并行执行方式。在第三执行方式中将指定的一组输入数据复制成为若干个分支,在若干个分支上的每个分支上并行执行互不相同的基本任务,互不相同的基本任务中具有相同的输入数据和参数。在同样的数据上并行执行一组任务,每一个任务作为一个单独的分支执行。
第四执行方式为分支变量并行执行方式。在第四执行方式中将指定的一组输入数据复制成为若干个分支,在若干个分支上的每个分支上并行执行相同的基本任务,任一基本任务中至少一个参数的取值不同于其他基本任务中参数的取值。在同样的输入数据上并行执行一组基本任务,每一个分支对某个或若干个参数的取值不一样,且不同分支之间执行完全独立。
组合任务包括多个按照第一执行方式、第二执行方式、第三执行方式和第四执行方式中的一种或多种进行组合的基本任务项。
对于组合任务的任务组合方式,可以按照上述四种并行执行方式中的一种或多种进行组合,一系列基本任务项可以组成一个组合任务,组合任务进一步可以组合成为更大的组合任务。这种组合方式在规模上不受限制,可以用来从基本软件单元形成任意复杂的组合任务。
基于任务执行方式和数据依赖生成任务的有向执行图包括:基于并行方式对组合任务构造图,其中,每一个基本任务项对应一个图的节点,每一个组合任务对应一个图的子图;及在图的节点之间连接图的边,其中,对任意命名的输入和输出,从产生输出的节点连接一条边到使用命名的输入的节点。
基于并行方式对组合任务构造图包括:对于按照第一执行方式进行组合的组合任务,为串行执行的每个基本任务产生一个节点,从上一个节点连接一条边到下一个节点,定义第一个节点为子图的开始节点,最后一个节点为子图的结束节点,并将上一个组合任务的子图的结束节点连接到下一个组合任务的子图开始节点;及对于按照第二执行方式、第三执行方式或第四执行方式进行组合的组合任务,对每个分支构造分支子图,组合任务的子图为分支子图的合集,组合任务子图的开始节点为多个分支子图开始节点的合集,组合任务子图的结束节点为多个分支子图结束节点的合集。
基于有向执行图的拓扑顺序执行有向执行图包括:判断开始节点,包括:选择一个节点为第一节点,判断若无其他节点通过边指向第一节点,则第一节点为开始节点,若存在第二节点通过边指向第一节点,则继续判断第二节点是否为开始节点;及从开始节点开始依次执行图的节点。
执行图的节点包括:准备执行环境,使用容器技术为每个节点的应用软件单元实例化一个完全匹配的执行环境;命名输入输出实例化,根据图的边的关系,将所有前驱节点的输出数据通过指定的协议加载到对应节点,并替换执行命令中的输入输出到具体数据路径;启动基本任务项描述的命令执行用户的应用软件的容器;及判断节点是否执行完成,若完成,则通知执行引擎基于图的拓扑顺序执行后续节点。
命名输入输出实例化包括:自动为每个分支维护一个从名字到数据路径的输入输出映射表,其中数据路径对用户透明且由程序执行引擎自动计算和调度;当输出数据到第一名称时,执行引擎更新输入输出映射表并将第一名称指向数据路径;当输入数据引用第二名称时,执行引擎从输入输出映射表中查找第二名称,并获取最新的数据路径;及当输出数据到第三名称时,若输入输出映射表中包括对于第三名称的映射,则更新映射并执行新的数据。
本发明实施例中,根据命名输入输出的数据依赖和并行执行模式自动构造任务执行的有向图,并按照有向图的拓扑顺序执行,解决了数据依赖问题,保证了超大规模并行执行程序的正确性。
下面以一个具体并行程序为例进行说明
如图2所示,该程序描述的是一个简单的日志处理和报告程序。其中有三个基本单元:
1.第一个基本单元(MergeInputLogs):调用用户写的软件UserMergeProg对一组输入日志文件进行合并,并生成一个合并后的文件。其中程序和合并方法由用户自己用特定语言写成,没有任何限制。生成文件的格式也由用户自己决定。
2.第二个基本单元(FillterLogs):调用用户的软件UserFilterProg处理一个输入文件,过滤掉不需要的内容,生成一个新的文件。过滤方法和文件格式由用户程序自身决定。
3.第三个基本单元(MakeReport):调用用户的软件UserReport接受一个或者多个日志文件,然后生成一个报表文件。
整个程序执行的过程为:
a.第一、二个基本单元组合成一个组合任务,以拆分数据的方式并行执行。其中拆分的方式是从某一个文件目录下读取所有文件,根据MatchPattern选择所有后缀“.log”的文件,根据模式“Test*_”匹配文件名,匹配的内容相同的文件分为一组。每一组文件启动一个并行分支,每个分支依次执行两个基本单元。其中第一个基本单元接受该文件组中的所有文件,产生一个合并后的文件。第二个基本单元输入为第一个基本单元产生的合并文件,生成一个过滤文件。
b.当前一个步骤中产生的所有分支都执行结束后,则执行第三个基本单元。输入为前面所有分支的产生的过滤文件,输出为一个报表。
在上述过程的执行过程中,每个分支维护一个输入/输出映射表。其中“mergelog”,“filterlog”和“report”都是命名的输入/输出。输入输出映射表随着程序执行更新如下。
假定文件目录下只有一组文件,因此只会产生一个子分支,整个程序有一个主分支。
1)第一个基本单元执行前,表为空。
2)第一个基本单元开始执行,创建一个子分支,执行完毕后:
(1)主分支映射表为空
(2)子分支映射表如图3所示
3)第二个基本单元在子分支中执行,它的输入“$input.mergelog”被解析成了文件“/xx/yy/…/zz/filegroup1.mergelog”。完毕后:
(1)主分支映射表为空
(2)子分支映射表如图4所示
4)第三个基本单元执行,它的输入“$inputs.filterlog”被解析为前面所有子分支的名字为“filterlog”的输出,此例中是“/xx/yy/…/zz/filegroup1.filterlog”。完毕后:
(1)主分支映射表如图5所示
(2)子分支映射表如图6所示
进一步地,如图7所示,假设上述例子中的输入目录下有6个文件:Test1_time1.log,Test1_time2.log,Test2_time1.log,Test2_time2.log,Test3_time1.log和Test3_time2.log。
程序将文件分成三组,并构造出有向执行图如下:
按照拓扑顺序执行上述有向图来执行。
A.所有没有边指向关系的节点都可以并行执行。因此1,2,3可以并行执行,4,5,6可以并行执行。
B.所有存在边的节点都必须按照顺序执行。例如4,5,6必须在7之前执行。1必须在4之前执行。
C.最后7执行的结果就是用户需要的最终结果。其中UserMergeLog,UserFilterLog和MakeReport都可以是任意的用户程序,即用户软件单元,完全由用户自己编写,编译。
本发明使得应用软件可以不加修改获得大规模的并行性。避免了应用软件开发人员为了获得并行性和某种编程接口绑定。应用软件开发人员可以自由使用开发工具,不用针对特定的语言再开发,极大的节省了开发成本和投入。
本发明提高了应用软件提供商和计算平台的协作效率。使用容器技术使得应用软件开发商自由的以二进制方式发布程序,不需要考虑兼容性问题。同时也保护了应用软件提供商的知识产权,使得协作更简单。
本发明可用于从简单串行模块构造超大规模的计算平台和系统。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

Claims (9)

1.一种数据驱动的用户透明的可扩展编程方法,其特征在于,所述方法包括:
构建用户程序,所述构建用户程序包括:构建用户软件单元,构建基本任务项及组合任务,定义命名的输入和输出规则,确定任务执行方式;及
执行所述用户程序,所述执行所述用户程序包括:基于所述任务执行方式和数据依赖生成任务的有向执行图,基于所述有向执行图的拓扑顺序执行所述有向执行图,命名输入输出的实例化;
其中,所述构建用户软件单元的方法包括:
使用任意编程语言编制自己的软件或者程序,处理任意复杂的工作,并使用标准的容器技术进行打包,成为用户软件单元;
所述任务执行方式包括:
第一执行方式,在所述第一执行方式中一组所述基本任务项按照指定的顺序依次执行,下一任务在上一任务执行完成后开始执行;
第二执行方式,在所述第二执行方式中将指定的一组输入数据按照规则分成若干个分支,并行执行所述若干个分支,所述若干个分支中的每个分支采用所述第一执行方式执行;
第三执行方式,在所述第三执行方式中将指定的一组输入数据复制成为若干个分支,在所述若干个分支上的每个分支上并行执行互不相同的基本任务,所述互不相同的基本任务中具有相同的输入数据和参数;及
第四执行方式,在所述第四执行方式中将指定的一组输入数据复制成为若干个分支,在所述若干个分支上的每个分支上并行执行相同的基本任务,任一基本任务中至少一个参数的取值不同于其他基本任务中参数的取值;
所述定义命名的输入和输出规则包括:
为用户程序的任一数据定义一唯一名称;
基本任务项用于通过唯一名称引用和访问已有数据,还用于生成新数据并为新数据命名一唯一名称。
2.根据权利要求1所述的可扩展编程方法,其特征在于,所述基本任务项用于描述使用所述用户软件单元从已有数据生成新数据的方式。
3.根据权利要求1所述的可扩展编程方法,其特征在于,所述定义命名的输入和输出规则包括:
为所述用户程序的任一数据定义一唯一名称;
所述基本任务项用于通过所述唯一名称引用和访问已有数据,还用于生成新数据并为所述新数据命名一唯一名称。
4.根据权利要求1所述的可扩展编程方法,其特征在于,所述组合任务包括多个按照所述第一执行方式、第二执行方式、第三执行方式和第四执行方式中的一种或多种进行组合的基本任务项。
5.根据权利要求4所述的可扩展编程方法,其特征在于,所述基于所述任务执行方式和数据依赖生成任务的有向执行图包括:
基于并行方式对所述组合任务构造图,其中,每一个基本任务项对应一个所述图的节点,每一个组合任务对应一个所述图的子图;及
在所述图的节点之间连接所述图的边,其中,对任意命名的输入和输出,从产生输出的节点连接一条边到使用所述命名的输入的节点。
6.根据权利要求5所述的可扩展编程方法,其特征在于,所述基于并行方式对所述组合任务构造图包括:
对于按照所述第一执行方式进行组合的组合任务,为串行执行的每个基本任务产生一个节点,从上一个节点连接一条边到下一个节点,定义第一个节点为所述子图的开始节点,最后一个节点为所述子图的结束节点,并将上一个组合任务的子图的结束节点连接到下一个组合任务的子图开始节点;
对于按照所述第二执行方式、第三执行方式或第四执行方式进行组合的组合任务,对每个所述分支构造分支子图,所述组合任务的子图为所述分支子图的合集,所述组合任务子图的开始节点为多个分支子图开始节点的合集,所述组合任务子图的结束节点为所述多个分支子图结束节点的合集。
7.根据权利要求6所述的可扩展编程方法,其特征在于,所述基于所述有向执行图的拓扑顺序执行所述有向执行图包括:
判断开始节点,包括:选择一个节点为第一节点,判断若无其他节点通过边指向所述第一节点,则所述第一节点为所述开始节点,若存在第二节点通过边指向所述第一节点,则继续判断所述第二节点是否为所述开始节点;及
从所述开始节点开始依次执行所述图的节点。
8.根据权利要求7所述的可扩展编程方法,其特征在于,所述执行所述图的节点包括:
准备执行环境,使用容器技术为每个节点的应用软件单元实例化一个完全匹配的执行环境;
命名输入输出实例化,根据所述图的边的关系,将所有前驱节点的输出数据通过指定的协议加载到对应节点,并替换执行命令中的输入输出到具体数据路径;
启动所述基本任务项描述的命令执行用户的应用软件的容器;及
判断所述节点是否执行完成,若完成,则通知执行引擎基于所述图的拓扑顺序执行后续节点。
9.根据权利要求7所述的可扩展编程方法,其特征在于,所述命名输入输出实例化包括:
自动为每个分支维护一个从名字到数据路径的输入输出映射表,其中所述数据路径对用户透明且由程序执行引擎自动计算和调度;
当输出数据到第一名称时,执行引擎更新所述输入输出映射表并将所述第一名称指向所述数据路径;
当输入数据引用第二名称时,所述执行引擎从所述输入输出映射表中查找所述第二名称,并获取最新的数据路径;及
当输出数据到第三名称时,若所述输入输出映射表中包括对于所述第三名称的映射,则更新所述映射并执行新的数据。
CN201811510719.4A 2018-12-11 2018-12-11 一种数据驱动的用户透明的可扩展编程方法 Active CN109799973B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811510719.4A CN109799973B (zh) 2018-12-11 2018-12-11 一种数据驱动的用户透明的可扩展编程方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811510719.4A CN109799973B (zh) 2018-12-11 2018-12-11 一种数据驱动的用户透明的可扩展编程方法

Publications (2)

Publication Number Publication Date
CN109799973A CN109799973A (zh) 2019-05-24
CN109799973B true CN109799973B (zh) 2022-02-11

Family

ID=66556510

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811510719.4A Active CN109799973B (zh) 2018-12-11 2018-12-11 一种数据驱动的用户透明的可扩展编程方法

Country Status (1)

Country Link
CN (1) CN109799973B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101794239A (zh) * 2010-03-16 2010-08-04 浙江大学 一种基于数据流模型的多处理器任务调度管理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225282B1 (en) * 2003-11-25 2012-07-17 Nextaxiom Technology, Inc. Semantic-based, service-oriented system and method of developing, programming and managing software modules and software solutions
JP2005173645A (ja) * 2003-12-05 2005-06-30 Ibm Japan Ltd プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体
CN101710286A (zh) * 2009-12-23 2010-05-19 天津大学 面向dag数据驱动型应用的并行编程模型系统和实现方法
WO2015157338A1 (en) * 2014-04-08 2015-10-15 RedPoint Global Inc. Data transformation system and method
CN106293892B (zh) * 2015-06-26 2019-03-19 阿里巴巴集团控股有限公司 分布式流计算系统、方法和装置
US10331495B2 (en) * 2016-02-05 2019-06-25 Sas Institute Inc. Generation of directed acyclic graphs from task routines
CN106815071A (zh) * 2017-01-12 2017-06-09 上海轻维软件有限公司 基于有向无环图的大数据作业调度系统
CN108737168B (zh) * 2018-05-08 2021-03-16 深圳大学 一种基于容器的微服务架构应用自动构建方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101794239A (zh) * 2010-03-16 2010-08-04 浙江大学 一种基于数据流模型的多处理器任务调度管理方法

Also Published As

Publication number Publication date
CN109799973A (zh) 2019-05-24

Similar Documents

Publication Publication Date Title
US11037345B2 (en) Systems and methods for processing computational workflows
Elser et al. An evaluation study of bigdata frameworks for graph processing
US10515118B2 (en) Processing a data flow graph of a hybrid flow
Blelloch et al. Parallel algorithms
Shi et al. Frog: Asynchronous graph processing on GPU with hybrid coloring model
Shojaei et al. A fast and scalable multidimensional multiple-choice knapsack heuristic
JP2014525640A (ja) 並列処理開発環境の拡張
WO2018054221A1 (en) Pipeline dependent tree query optimizer and scheduler
Płóciennik et al. Approaches to distributed execution of scientific workflows in kepler
US11016974B2 (en) Program synthesis for query optimization
CN107168795B (zh) 基于cpu-gpu异构复合式并行计算框架的密码子偏差系数模型方法
CN109799973B (zh) 一种数据驱动的用户透明的可扩展编程方法
You et al. High-performance polyline intersection based spatial join on GPU-accelerated clusters
Rakadjiev et al. Parallel SMT solving and concurrent symbolic execution
CN113536717B (zh) 一种基于增量编译的电路仿真方法
Sewell et al. Portable data-parallel visualization and analysis in distributed memory environments
Jayalath et al. Efficient Geo-distributed data processing with rout
Chen et al. pmTM-align: scalable pairwise and multiple structure alignment with Apache Spark and OpenMP
Jin et al. A data-locality-aware task scheduler for distributed social graph queries
Ponce et al. Extension of a Task-based model to Functional programming
Wang et al. Towards systematic parallel programming of graph problems via tree decomposition and tree parallelism
Janjic et al. Using erlang skeletons to parallelise realistic medium-scale parallel programs
Valdés-Jiménez et al. Improving the discovery and clustering of three-dimensional protein patterns with OpenMP
Gebremedhin et al. Graph coloring on coarse grained multicomputers
Selvan Parallel algorithms for querying spatial properties in the Protein Data Bank

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