书签 分享 收藏 举报 版权申诉 / 9

面向DAG数据驱动型应用的并行编程模型系统和实现方法.pdf

  • 上传人:sha****007
  • 文档编号:5781924
  • 上传时间:2019-03-19
  • 格式:PDF
  • 页数:9
  • 大小:639.48KB
  • 摘要
    申请专利号:

    CN200910312089.4

    申请日:

    2009.12.23

    公开号:

    CN101710286A

    公开日:

    2010.05.19

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回IPC(主分类):G06F 9/44申请公布日:20100519|||实质审查的生效IPC(主分类):G06F 9/44申请日:20091223|||公开

    IPC分类号:

    G06F9/44; G06F9/45; G06F9/38

    主分类号:

    G06F9/44

    申请人:

    天津大学

    发明人:

    于策; 汤善江; 孙济洲; 徐祯; 孙超; 张涛

    地址:

    300072 天津市南开区卫津路92号天津大学

    优先权:

    专利代理机构:

    天津市北洋有限责任专利代理事务所 12201

    代理人:

    李素兰

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种面向DAG数据驱动型应用的并行编程模型系统和实现方法,包括DAG模式图模块、用户应用程序模块以及DAG运行时系统模块,其中:DAG模式图模块包括DAG模式图库;用户应用程序模块用于用户的初始化设置和具体的并行化算法的确定;DAG运行时系统模块包括主线程,线程池。主线程用于DAG模式图的解析与更新、数据块的分发及调度,以及容错控制,线程池包括线程池队列缓冲区及工作线程:线程池队列缓冲区是主线程和工作线程的数据接口,工作线程则不停的去队列缓冲区获取计算任务并进行计算。与现有技术相比,本发明降低非计算机专业人员设计开发并行计算应用程序的难度,缩短并行软件的开发周期,而且能够使完成的并行计算应用程序结构更为合理,性能更为优化。

    权利要求书

    1: 一种面向DAG数据驱动型应用的并行编程模型系统,包括DAG模式图模块、用户应用程序模块以及DAG运行时系统模块,其特征在于,其中: DAG模式图模块,包括DAG模式图库,该DAG模式图库中存储有来自系统提供的DAG模式图和用户自定义的DAG模式图; 用户应用程序模块,作为整个并行编程模型系统的驱动,用于用户的初始化设置和具体的并行化算法的确定,其处理包括: 用户从DAG模式图库中选择一个DAG模式图,对DAG模式图及运行时需要的参数进行初始化操作,包括设置DAG模式图的大小、选择对DAG图中的每一个节点进行数据块映射的数据块映射机制、系统运行时所需要的线程数目及time out(对应中文:超时)参数等;调用系统所提供的API函数,初始化选择的DAG模式图,运行时系统开始进行后台的并行化计算,包括对数据任务的自动化划分和分配,  线程的调度、反馈与管理,具体过程为:主线程开始解析DAG图,寻找当前可计算的数据节点,将其进行真实数据块任务的映射,并将可计算数据任务放入线程池队列缓冲区,而线程池内的闲置工作线程一旦发现线程池队列不为空时,将自动地从线程池队列缓冲区获取一块计算任务,并开始进行计算;当某个工作线程完成任务时,将计算完的任务信息放入反馈队列,主线程则及时地通过反馈队列获知完成的计算任务节点,根据完成的计算任务节点更新DAG图,寻找新的可计算任务节点并进行映射,任务下发,整个过程不断反复,直到整个任务计算完毕,返回计算结果; DAG运行时系统模块,包括主线程,线程池,主线程用于DAG模式图的解析与更新、数据块的分发及调度,以及容错控制,其中: DAG模式图的解析是通过寻找入度为0的节点来获取当前可计算的数据模块;而DAG图的更新是当有一个数据节点的任务完成时,及时地将该任务节点从DAG图中删除,并将其所指向的边也删除,及时地更新DAG模式图; 数据块的分发及调度是当发现有可计算的数据模块时,主线程会将该数据块放入线程池的队列缓冲区当中,由工作线程负责计算;线程池包括线程池队列缓冲区及工作线程:线程池队列缓冲区是主线程和工作线程的数据接口,工作线程则不停的去队列缓冲区获取计算任务并进行计算; 容错控制,在存放当前正处在计算中的数据节点的任务分配时刻,开启一个储存超时操作队列,将当前时刻与队列中每个数据节点的分配时刻的差值与超时预值进行比较,由主线程实时检测超时队列,对超时计算节点任务进行重新分配计算,杀死超时线程,并重新创建一个新的线程进行替换计算。
    2: 如权利要求1所述的面向DAG数据驱动型应用的并行编程模型系统,其特征在于,所述数据块映射机制还包括用户自定义的数据块映射机制。
    3: 如权利要求1所述的面向DAG数据驱动型应用的并行编程模型系统,其特征在于,所述用户应用程序模块还为系统提供了一个对外的接口,用户将自定义的具体应用加载到系统,以使后台运行时系统则将自动调用该接口进行并行计算。
    4: 如权利要求1所述的面向DAG数据驱动型应用的并行编程模型系统,其特征在于,该系统采用主从模式,所述主模式为主线程,所述从模式为线程池。
    5: 如权利要求1或4所述的面向DAG数据驱动型应用的并行编程模型系统,其特征在于,所述线程池包括动态线程池和静态线程池:对于静态线程池,除了存在线程池队列缓冲 区外,每一个工作线程都有一个自己的队列缓冲区,每一个计算数据块任务和每一个工作线程根据某种静态映射策略在程序运行之前就已经绑定;当主线程发现一个可计算的数据块时,将其放入线程池队列缓冲区当中,线程池则根据该映射机制,将任务下发到对应的工作线程缓冲区当中;对于动态线程池,其数据块计算任务和工作线程不是事先绑定的,每一个闲置的工作线程动态地从线程池队列缓冲区当中获取计算任务;当线程池队列缓冲区不为空时,不存在闲置的线程,反之,当有闲置线程存在时,线程池队列缓冲区为空。
    6: 一种面向DAG数据驱动型应用的并行编程模型的实现方法,该方法包括以下步骤: 用户从DAG模式图库中选择一个DAG模式图,对DAG模式图及运行时需要的参数进行初始化操作,包括设置DAG模式图的大小、选择对DAG图中的每一个节点进行数据块映射的数据块映射机制、系统运行时所需要的线程数目及time out超时参数; 调用系统所提供的API函数,初始化选择的DAG模式图,运行时系统开始进行后台的并行化计算,主要包括对数据任务的自动化划分和分配,线程的调度、反馈与管理;返回计算结果; 创建主线程和线程池,主线程用于DAG模式图的解析与更新、数据块的分发及调度,以及容错控制: DAG模式图的解析,通过寻找入度为0的节点来获取当前可计算的数据模块;而DAG图的更新是当有一个数据节点的任务完成时,及时地将该任务节点从DAG图中删除,并将其所指向的边也删除,及时地更新DAG模式图; 数据块的分发及调度,当发现有可计算的数据模块时,主线程会将该数据块放入线程池的队列缓冲区当中,由工作线程负责计算;线程池包括线程池队列缓冲区及工作线程:线程池队列缓冲区是主线程和工作线程的数据接口,工作线程则不停的去队列缓冲区获取计算任务并进行计算; 容错控制,在存放当前正处在计算中的数据节点的任务分配时刻,开启一个储存超时操作队列,将当前时刻与队列中每个数据节点的分配时刻的差值与超时预值进行比较,由主线程实时检测超时队列,对超时计算节点任务进行重新分配计算,杀死超时线程,并重新创建一个新的线程进行替换计算。
    7: 如权利要求6所述的面向DAG数据驱动型应用的并行编程模型的实现方法,其特征在于,所述数据块映射机制还包括用户自定义的数据块映射机制。
    8: 如权利要求6所述的面向DAG数据驱动型应用的并行编程模型的实现方法,其特征在于,该方法采用主从模式,所述主模式为主线程,所述从模式为线程池。
    9: 如权利要求6或8所述的面向DAG数据驱动型应用的并行编程模型的实现方法,其特征在于,所述线程池包括动态线程池和静态线程池:对于静态线程池,除了存在线程池队列缓冲区外,每一个工作线程都有一个自己的队列缓冲区,每一个计算数据块任务和每一个工作线程根据某种静态映射策略在程序运行之前就已经绑定;当主线程发现一个可计算的数据块时,将其放入线程池队列缓冲区当中,线程池则根据该映射机制,将任务下发到对应的工作线程缓冲区当中;对于动态线程池,其数据块计算任务和工作线程不是事先绑定的,每一个闲置的工作线程动态地从线程池队列缓冲区当中获取计算任务;当线程池队列缓冲区不为空时,不存在闲置的线程,反之,当有闲置线程存在时,线程池队列缓冲区为空。

    说明书


    面向DAG数据驱动型应用的并行编程模型系统和实现方法

        【技术领域】

        本发明涉及计算机软件设计领域的并行编程模型、模式与方法,特别是涉及一种面向DAG数据驱动型应用的并行化编程模型系统和程序设计方法。

        背景技术

        随着计算机的应用范围和应用水平的不断拓展和提高,人们对于计算机的计算和处理能力等性能要求也随之增加,近些年来,在诸如天文、气象、海洋、生物、能源、化工、地质勘探和数学等科学与工程计算领域,随着数据计算量的增大及计算复杂度的增加,很多实际应用问题的求解过程在计算能力及计算速度方面不断提出新的要求,对高计算能力及高性能的需求越来越迫切。而这类实际应用大多是基于数据型的,且耗时计算主要为数值计算。

        目前,在硬件方面,构建并行计算硬件环境的技术也已日臻成熟,搭建一个理论上计算能力相当强的并行计算环境,现在已经不是难题。然而,在软件方面,并行编程复杂且易出错,已经是一个不争的事实,如何高效地在并行计算环境中进行各种并行计算应用程序的设计与开发,尤其是多数非计算机专业出身的各应用领域的技术人员缺乏并行计算程序开发的专业训练,已成为并行计算技术转化为实际生产力所面临的关键问题。因此,设计和开发出一套新的模型和方法,来帮助开发人员简化并行编程成为了一个关键和必要。

        经文献检索发现,传统的简化并行编程的理论和方法主要有:并行编程模型,并型设计模式,并行骨架,可视化建模等等。本发明是从并行编程模型的角度,针对科学应用中大量的具有DAG数据依赖关系的应用,提出了一套编程模型和方法,用来帮助开发人员简化并行编程和复用已有的并行代码。

        【发明内容】

        鉴于上述现有技术,本发明提出了一种面向DAG数据驱动型应用的并行编程模型系统和实现方法,通过图形化操作界面实现并行计算应用程序的辅助开发设计,用户在该系统上利用已经实现好的面向DAG数据驱动型应用的完成并行编程,并且实现通用集成开发环境(EasyPAB系统)中的添加实现。

        本发明提出一种面向DAG数据驱动型应用的并行编程模型系统,包括DAG模式图模块、用户应用程序模块以及DAG运行时系统模块,其特征在于,其中:

        DAG模式图模块,包括DAG模式图库,该DAG模式图库中存储有来自系统提供的DAG模式图和用户自定义的DAG模式图;

        用户应用程序模块,作为整个并行编程模型系统的驱动,用于用户的初始化设置和具体的并行化算法的确定,其处理包括:

        用户从DAG模式图库中选择一个DAG模式图,对DAG模式图及运行时需要的参数进行初始化操作,包括设置DAG模式图的大小、选择对DAG图中的每一个节点进行数据块映射的数据块映射机制、系统运行时所需要的线程数目及time out(对应中文:超时)参数等;调用系统所提供的API函数,初始化选择的DAG模式图,运行时系统开始进行后台的并行化计算,主要包括对数据任务的自动化划分和分配,线程的调度、反馈与管理;具体过程为:主线程开始解析DAG图,寻找当前可计算的数据节点,将其进行真实数据块任务的映射,并将可计算数据任务放入线程池队列缓冲区,而线程池内的闲置工作线程一旦发现线程池队列不为空时,将自动地从线程池队列缓冲区获取一块计算任务,并开始进行计算;当某个工作线程完成任务时,将计算完的任务信息放入反馈队列,主线程则及时地通过反馈队列获知完成的计算任务节点,根据完成的计算任务节点更新DAG图,寻找新的可计算任务节点并进行映射,任务下发,整个过程不断反复,直到整个任务计算完毕,返回计算结果;

        DAG运行时系统模块,包括主线程,线程池,主线程用于DAG模式图的解析与更新、数据块的分发及调度,以及容错控制,其中:

        DAG模式图的解析是通过寻找入度为0的节点来获取当前可计算的数据模块;而DAG图的更新是当有一个数据节点的任务完成时,及时地将该任务节点从DAG图中删除,并将其所指向的边也删除,及时地更新DAG模式图;

        数据块的分发及调度是当发现有可计算的数据模块时,主线程会将该数据块放入线程池的队列缓冲区当中,由工作线程负责计算;线程池包括线程池队列缓冲区及工作线程:线程池队列缓冲区是主线程和工作线程的数据接口,工作线程则不停的去队列缓冲区获取计算任务并进行计算;

        容错控制,在存放当前正处在计算中的数据节点的任务分配时刻,开启一个储存超时操作队列,将当前时刻与队列中每个数据节点的分配时刻的差值与超时预值进行比较,由主线程实时检测超时队列,对超时计算节点任务进行重新分配计算,杀死超时线程,并重新创建一个新的线程进行替换计算。

        所述数据块映射机制还包括用户自定义的数据块映射机制。

        所述用户应用程序模块还为系统提供了一个对外的接口,用户将自定义的具体应用加载到系统,以使后台运行时系统则将自动调用该接口进行并行计算。

        该系统采用主从模式,所述主模式为主线程,所述从模式为线程池。

        所述线程池包括动态线程池和静态线程池:对于静态线程池,除了存在线程池队列缓冲区外,每一个工作线程都有一个自己的队列缓冲区,每一个计算数据块任务和每一个工作线程根据某种静态映射策略在程序运行之前就已经绑定;当主线程发现一个可计算的数据块时,将其放入线程池队列缓冲区当中,线程池则根据该映射机制,将任务下发到对应的工作线程缓冲区当中;对于动态线程池,其数据块计算任务和工作线程不是事先绑定的,每一个闲置的工作线程动态地从线程池队列缓冲区当中获取计算任务;当线程池队列缓冲区不为空时,不存在闲置的线程,反之,当有闲置线程存在时,线程池队列缓冲区为空。

        本发明还提出了一种面向DAG数据驱动型应用的并行编程模型的实现方法,该方法包括以下步骤:

        用户从DAG模式图库中选择一个DAG模式图,对DAG模式图及运行时需要的参数进行初始化操作,包括设置DAG模式图的大小、选择对DAG图中的每一个节点进行数据块映射的数据块映射机制、系统运行时所需要的线程数目及time out超时参数;

        调用系统所提供的API函数,初始化选择的DAG模式图,运行时系统开始进行后台的并行化计算,主要包括对数据任务的自动化划分和分配,线程的调度、反馈与管理等;返回计算结果;

        创建主线程和线程池,主线程用于DAG模式图的解析与更新、数据块的分发及调度,以及容错控制:

        DAG模式图的解析,通过寻找入度为0的节点来获取当前可计算的数据模块;而DAG图的更新是当有一个数据节点的任务完成时,及时地将该任务节点从DAG图中删除,并将其所指向的边也删除,及时地更新DAG模式图;

        数据块的分发及调度,当发现有可计算的数据模块时,主线程会将该数据块放入线程池的队列缓冲区当中,由工作线程负责计算;线程池包括线程池队列缓冲区及工作线程:线程池队列缓冲区是主线程和工作线程的数据接口,工作线程则不停的去队列缓冲区获取计算任务并进行计算;

        容错控制,在存放当前正处在计算中的数据节点的任务分配时刻,开启一个储存超时操作队列,将当前时刻与队列中每个数据节点的分配时刻的差值与超时预值进行比较,由主线程实时检测超时队列,对超时计算节点任务进行重新分配计算,杀死超时线程,并重新创建一个新的线程进行替换计算。

        所述数据块映射机制还包括用户自定义的数据块映射机制。

        该方法采用主从模式,所述主模式为主线程,所述从模式为线程池。

        所述线程池包括动态线程池和静态线程池:对于静态线程池,除了存在线程池队列缓冲区外,每一个工作线程都有一个自己的队列缓冲区,每一个计算数据块任务和每一个工作线程根据某种静态映射策略在程序运行之前就已经绑定;当主线程发现一个可计算的数据块时,将其放入线程池队列缓冲区当中,线程池则根据该映射机制,将任务下发到对应的工作线程缓冲区当中;对于动态线程池,其数据块计算任务和工作线程不是事先绑定的,每一个闲置的工作线程动态地从线程池队列缓冲区当中获取计算任务;当线程池队列缓冲区不为空时,不存在闲置的线程,反之,当有闲置线程存在时,线程池队列缓冲区为空。

        与现有技术相比,本发明能够针对满足DAG数据依赖型应用,提供一套并行程序系统与方法,将降低非计算机专业人员设计开发并行计算应用程序的难度,即使没有并行程序设计与开发的经验和技巧的程序设计与开发人员,只要懂得问题域的专业知识,就可以正确且高效的进行并行程序设计与开发,以提高并行软件开发人员的编程效率和减少程序编码的错误,最终提高工作效率和相应学科领域的研究效率和应用水平,缩短并行软件的开发周期,而且能够使完成的并行计算应用程序结构更为合理,性能更为优化,基于此方法的系统平台市场前景非常广阔,面临着巨大的市场机遇。

        【附图说明】

        图1为本发明的面向DAG数据驱动型应用的并行编程模型系统和实现方法的系统结构示意图;

        图2为本发明的一个典型常用的DAG模式图;

        图3为本发明的面向DAG数据驱动型应用的并行编程模型系统和实现方法提供的常用的DAG模式图。

        【具体实施方式】

        本发明的面向DAG数据驱动型应用的并行编程模型系统和方法,如图1所示,包括三个模块组成:用户应用程序模块、DAG模式图模块以及DAG运行时系统模块。

        用户应用程序模块用于将一些将用户设定的基本步骤和内容,作为整个并行编程模型系统和方法的驱动。在设计与实现该模块中,用户只需要做一些简单的初始化设置和具体的算法应用上,而并行编程可以自动实现。用户应用程序模块的处理步骤包括:

        首先,用户根据自己应用的需要,从DAG模式图库中选择一个DAG模式图(如果系统提供的DAG模式图无法满足用户应用的需要,用户可以根据需要,实现自己的DAG模式图,并将其添加到DAG模式图库当中),对DAG模式图及运行时需要的参数进行初始化操作,主要包括设置DAG模式图的大小(宽和高),选择系统提供的一种数据块映射机制或者用户自定义的数据块映射机制对DAG图中的每一个节点进行数据块映射,系统运行时所需要的线程数目及timeout参数等;然后,当配置和初始化完各种所需要的参数后,调用系统所提供的API函数,启动选择的DAG,运行时系统开始进行后台的并行化计算,主要包括对数据任务的自动化划分和分配,线程的调度、反馈与管理等;最后,当并行化计算完毕后,返回计算结果;另外,该用户应用程序模块提供了一个对外的接口,可让用户将自定义的具体应用加载到系统,以使后台运行时系统则将自动调用该接口进行并行计算。

        DAG模式图模块主要为一个DAG模式图库,在该DAG模式图库中,存储着各种常用的DAG模式图,主要包括来自系统提供的DAG模式图,以及用户自定义的DAG模式图。所谓DAG模式图,其首先是一个规则的DAG图,定义和描述了每个DAG节点间的基本的依赖关系,但是它的大小(宽和高)并未固定,而是作为参数供用户进行大小设置,如图2所示为一个典型的DAG模式图,其中每一个DAG节点代表着真实数据中的一个数据块,每一个DAG节点都有且仅依赖着其左边和上边的节点(依赖关系规则且固定),通过大小参数的不同设定,我们可以得到各种不同的DAG图。如图3所示,其为系统提供给用户选择的常用DAG模式图。

        DAG运行时系统模块用于系统的DAG模式图的解析与更新操作和程序并行化控制及容错处理操作。其采用了主从模式,分别由主线程,线程两大部分构成。主线程部分负责DAG图的解析与更新操作,数据块任务的分发及调度,以及容错控制功能。DAG图的解析主要是通过寻找入度为0的节点来获取当前可计算的数据模块,而DAG图的更新则是当有一个数据节点的任务完成时,及时地将该任务节点从DAG图中删除,并将其所指向的边也删除,及时地更新DAG图。当发现有可计算的数据模块时,主线程会将该数据块放入线程池的队列缓冲区当中,由工作线程负责计算。线程池部分由线程池队列缓冲区及工作线程两部分组成。线程池队列缓冲区是主线程和工作线程的数据接口,工作线程则不停的去队列缓冲区获取计算任务并进行计算。线程池具体分为动态线程池和静态线程池。对于静态线程池,除了存在线程池队列缓冲区外,每一个工作线程都有一个自己的队列缓冲区。每一个计算数据块任务和每一个工作线程根据某种静态映射策略在程序运行之前就已经绑定。当主线程发现一个可计算的数据块时,将其放入线程池队列缓冲区当中,线程池则根据该映射机制,将任务下发到对应的工作线程缓冲区当中。对于动态线程池,其数据块计算任务和工作线程不是事先绑定的,每一个闲置的工作线程动态地从线程池队列缓冲区当中获取计算任务。也即是,当线程池队列缓冲区不为空时,一定不存在闲置的线程,反之,当有闲置线程存在时,线程池队列缓冲区一定为空。

        下面通过一个具体实例,来详细说明本发明的技术方案:

        本发明的面向DAG数据驱动型应用的并行编程模型系统和方法,针对DAG数据驱动型应用的并行化,从编程模型的角度,通过将那些复杂的并行细节部分进行封装隐藏,将其交由后台运行时系统负责完成,让用户停留在串行程序设计当中,将其精力主要集中于具体的算法应用当中,而并非并行相关部分。

        用户在使用该系统时,首先需要理解整个编程模型系统和方法的每一个模块的内涵和意义,并且能够知道自己所面临的DAG数据型应用的数据间的依赖关系,在系统所提供DAG模式图库中选择适合的DAG模式图。另外,在用户应用程序模块的初始化阶段,设置合理的初始化参数对整个系统程序的运行性能有着直接的影响。例如,假设在多核环境当中,线程数目的多少直接决定着程序的性能好坏,过大过小对程序性能都会有影响,合理的情况是让其值接近或等于当前CPU核的数目。同样,每一个数据块的大小设置以及timout的值大小也都对性能产生直接影响。

        面向DAG数据驱动型应用的并行编程模型系统和方法,已设计并实现的辅助并行计算应用程序开发人员进行快速开发的通用集成开发环境(EasyPAB系统)中添加实现。该系统拥有良好的用户界面,对于各种常用的功能提供了操作系统风格的图形化操作界面,从而方便了程序员和其他系统用户操作。用户可以在该平台上利用已经实现好的面向DAG数据驱动型应用的并行编程模型系统,进行应用程序开发,从而避免去实现面向DAG数据驱动型应用的并行编程模型的代码框架。

        

    关 键  词:
    面向 DAG 数据 驱动 应用 并行 编程 模型 系统 实现 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:面向DAG数据驱动型应用的并行编程模型系统和实现方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-5781924.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1