CN114035968B - 用于多流并行的冲突处理系统及其方法 - Google Patents

用于多流并行的冲突处理系统及其方法 Download PDF

Info

Publication number
CN114035968B
CN114035968B CN202210022949.6A CN202210022949A CN114035968B CN 114035968 B CN114035968 B CN 114035968B CN 202210022949 A CN202210022949 A CN 202210022949A CN 114035968 B CN114035968 B CN 114035968B
Authority
CN
China
Prior art keywords
node
task
task flow
tensor
graph
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
CN202210022949.6A
Other languages
English (en)
Other versions
CN114035968A (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.)
Beijing Oneflow Technology Co Ltd
Original Assignee
Beijing Oneflow Technology 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 Beijing Oneflow Technology Co Ltd filed Critical Beijing Oneflow Technology Co Ltd
Priority to CN202210022949.6A priority Critical patent/CN114035968B/zh
Publication of CN114035968A publication Critical patent/CN114035968A/zh
Application granted granted Critical
Publication of CN114035968B publication Critical patent/CN114035968B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

本公开涉及一种用于多流并行的冲突处理系统及其方法。所述系统包括:初始计算图获取组件,获取将部署在CPU以及一个或多个协处理器上的初始计算图,所述初始计算图包括属于一个计算任务的多个任务流,每个任务流包含多个顺序执行的运算逻辑节点和内存释放逻辑节点;节点关系分析组件,遍历所述计算图中将被针对的所有张量,判断首次针对第一张量的第一节点和针对第一张量的第二节点所属的任务流是否相同;以及冲突消除组件,在节点关系分析组件确定第一节点属于第一任务流而第二节点属于不同于第一任务流的任务流时,在第二节点之前生成标记第一任务流的等待节点,从而获得结果计算图。

Description

用于多流并行的冲突处理系统及其方法
技术领域
本公开涉及一种数据处理技术。更具体地说,本公开涉及一种用于多流并行的冲突处理系统及其方法。
背景技术
在深度学习普及的现在,为了提高数据处理的速度,通常需要将一个任务分割成多个分片任务,形成多个任务流,从而使得任务流执行并行处理,从而节省数据处理的时间或加快任务处理的效率,这种数据处理方式为多流并行处理。
但是在进行多流并行的数据处理方法往往存在不同流之间的参数交换以及不同流之间的数据依赖。因此,如果在并行情况下如果不做到参数同步,将导致每个任务流各自的产生的结果在进行合并时出现错误。这种错误往往是不同任务流在执行相关联操作时,本应该采用了同一个张量或参数或者本应该分时使用同一块内存而导致使用同一块内存的时间产生重叠导致的。
在深度学习中,通常使用 GPU 进行计算时,会启动 CUDA Kernel,CUDA Kernel在 GPU 上异步执行。CUDA Kernel 只能属于某一个 CUDA stream,不同的 CUDA stream之间的执行顺序大多是没有联系的;同一个 CUDA stream 中的 Kernel 有先进先出的执行顺序。Host 机器(即CPU)上某个函数启动 CUDA Kernel 后,Host 主机上的执行流程,并不会等待 GPU 上 的 CUDA Kernel 执行结束后(再继续),而是直接执行 Host 上的下一条指令。而且启动 CUDA Kernel也并不意味着 GPU 上立即执行 CUDA Kernel 中的指令,而是将 CUDA Kernel 放置在 GPU 的某个队列(即 CUDA Stream)中,排队等待之前的Kernel 执行完成后,再执行当前 Kernel。此外,常见的计算框架,会自己实现显存池,即向GPU 申请大块内存,再自己对这块内存进行划分和管理,分配给计算时的张量,一般来说每一个 Stream 有一个显存池。
因为 Kernel 异步执行的原因,对于多流并行数据处理的情况,常常会导致一些冲突问题。一方面,对于并行的多个任务流上的彼此逻辑上有依赖的Kernel,可能会因为出在不同的 Stream 上执行而导致错误。比如,假设有两个Kernel,分别为S1-n1、S2-n2,假定逻辑上S2-n2的计算依赖S1-n1的结果,即需要S1-n1先向内存空间M写入张量T2,S2-n2再读取M中的张量T2。由于两个Kernel,S1-n1和S2-n2,在两个不同的任务流S1和S2中,S2-n2的执行可能早于S1-n1,在这种情况下,S2-n2读取到的数据就可能是错误的。另一方面,对于并行的多个任务流上的逻辑上没有依赖的 Kernel,有可能因为不同 Kernel 之间张量生命周期的不可控,导致内存数据的错误。比如,两个 Kernel ,例如S2-n2和S1-n2 分别在不同的任务流S2和S1中,S2-n2需要读取内存M中的张量T2, S1-n2需要向可能的内存M中写入张量T4,张量T2与张量T4之间并没有逻辑上的关联。这样,有可能在S2-n2 结束读取内存M中的张量T2之前,张量T2所处的内存M就被标记为释放,使得S1-n2得以先于S2-n2执行,从而使得后执行的S2-n2获取的是T4而不是T2。这就在内存使用上导致潜在冲突。
因此,人们需要一种能够在实现多流并行时消除造成运算和内存管理上的潜在冲突的处理系统及其方法,从而消除数据处理中出现的错误。
发明内容
本发明的一个目的是解决至少上述问题,具体而言,本公开提供一种用于多流并行的冲突处理系统,包括:初始计算图获取组件,获取将部署在CPU以及一个或多个协处理器上的初始计算图,所述初始计算图包括属于一个计算任务的多个任务流,每个任务流包含多个顺序执行的运算逻辑节点和内存释放逻辑节点;节点关系分析组件,遍历所述计算图中将被针对的所有张量,判断首次针对第一张量的第一节点和针对第一张量的第二节点所属的任务流是否相同;以及冲突消除组件,在节点关系分析组件确定第一节点属于第一任务流而第二节点属于不同于第一任务流的任务流时,在第二节点之前生成标记第一任务流的等待节点,从而获得结果计算图。
根据本公开的用于多流并行的冲突处理系统,其中所述节点关系分析组件确定第二节点是否为最后一个针对第一张量的节点,以及所述冲突消除组件在第二节点为最后一个针对第一张量的节点时,在紧接着所述第二节点之后生成标记第一任务流的内存释放节点。
根据本公开的用于多流并行的冲突处理系统,其中所述节点关系分析组件确定第二节点是否为最后一个针对第一张量的节点,以及所述冲突消除组件在第二节点是最后一个针对第一张量的节点时,将紧接着所述第二节点之后的针对第一张量的内存释放节点修改为属于第一任务流的针对第一张量的内存释放节点。
根据本公开的用于多流并行的冲突处理系统,还包括:节点生成统计组件,统计冲突消除组件所生成的等待节点和内存释放节点的数量;以及循环判断组件,在节点生成统计组件统计结果为零时,判断冲突消除完成,以及在节点生成统计组件统计结果不为零时,将当前的结果计算图作为初始计算图发反馈到初始计算图获取组件。
根据本公开的用于多流并行的冲突处理系统,其中所述运算逻辑节点包括计算逻辑节点和传输逻辑节点。
根据本公开的另一个方面,还提供了一种用于多流并行的冲突处理方法,包括:初始计算图获取步骤,获取将部署在CPU以及一个或多个协处理器上的初始计算图,所述初始计算图包括属于一个计算任务的多个任务流,每个任务流包含多个顺序执行的运算逻辑节点和内存释放逻辑节点;节点关系分析步骤,遍历所述计算图中将被针对的所有张量,判断首次针对第一张量的第一节点和针对第一张量的第二节点所属的任务流是否相同;以及冲突消除步骤,在节点关系分析组件确定第一节点属于第一任务流而第二节点属于不同于第一任务流的任务流时,在第二节点之前生成标记第一任务流的等待节点,从而获得结果计算图。
根据本公开的用于多流并行的冲突处理方法,其中所述节点关系分析步骤还确定第二节点是否为最后一个针对第一张量的节点,以及所述冲突消除步骤还在第二节点为最后一个针对第一张量的节点时,在紧接着所述第二节点之后生成标记第一任务流的内存释放节点。
根据本公开的用于多流并行的冲突处理方法,其中所述节点关系分析步骤还确定第二节点是否为最后一个针对第一张量的节点,以及所述冲突消除步骤还在第二节点是最后一个针对第一张量的节点时,将紧接着所述第二节点之后的针对第一张量的内存释放节点修改为属于第一任务流的针对第一张量的内存释放节点。
根据本公开的用于多流并行的冲突处理方法,还包括:节点生成统计步骤,统计冲突消除步骤所生成的等待节点和内存释放节点的数量;以及循环判断步骤,在节点生成统计步骤统计结果为零时,判断冲突消除完成,以及在节点生成统计组件统计结果不为零时,将当前的结果计算图作为初始计算图重复初始计算图获取步骤、节点关系分析步骤以及冲突消除步骤。
根据本公开的用于多流并行的冲突处理方法,其中所述运算逻辑节点包括计算逻辑节点和传输逻辑节点。
通过根据本公开的一种用于多流并行的冲突处理系统及方法,以待处理的张量为依据,以是否属于同一任务流为判断依据,能够在动态图模式下,通过对任务的初始计算图中的所有节点进行分析,获取针对同一张量的不同任务流的节点之间潜在冲突,并通过在首次针对该张量的节点所属的任务流上对该张量进行等待操作或释放内存操作,消除并行的不同任务流之间对张量使用的冲突,从而消除这种冲突导致的错误。首次针对该张量的节点通常是该张量的生产节点。通过采用本公开的用于多流并行的冲突处理系统及方法,消除了需要人工对计算图或与计算图对应的程序进行冲突消除的必要,极大地提高的程序纠错的人工成本,并减少了多流并行系统的维护的成本和出错的可能性。
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
图1所示的是根据本公开的用于多流并行的冲突处理系统的原理示意图。
图2所示的是根据本公开的用于多流并行的冲突处理系统执行冲突消除的一个实例示意图。
具体实施方式
下面结合实施例和附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,在下文中,两个可能对象之一可以被称为第一逻辑节点也可以被称为第二逻辑节点。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。
图1所示的是根据本公开的用于多流并行的冲突处理系统100的原理示意图。如图1所示,用于多流并行的冲突处理系统100至少包括:初始计算图获取组件110、节点关系分析组件120以及冲突消除组件130。初始计算图获取组件110获取将部署在CPU以及一个或多个协处理器上的初始计算图,所述初始计算图包括属于一个计算任务的多个任务流,每个任务流包含多个顺序执行的运算逻辑节点和内存释放逻辑节点。通常每个运算逻辑节点体现为一个kernel。在深度学习或大数据计算领域,采用GPU的情况下,任务流中的每运算逻辑节点按顺序执行,在CPU中也存在配合执行的一个多个逻辑节点。所述初始计算图可以是一个完整的初始计算图,也可以是局部初始计算图,例如为研发人员输入的整个初始计算图的开头部分或中间部分。
随后,节点关系分析组件120遍历所述初始计算图中将被针对的所有张量,判断首次针对第一张量的第一节点和针对第一张量的第二节点所属的任务流是否相同。第一张量并不是初始计算图中的第一个张量,可以是任意一个张量。这里的第一仅仅是一个命名,不代表在初始计算图中张量出现的顺序。首次针对第一张量的第一节点通常是该张量的产生节点,其所属的任务流也是该张量的产生任务流。而针对第一张量的第二节点通常是对该张量的消费节点,其所属的任务流也就是消费该张量的任务流。在所有运算逻辑节点中,通常会包含有节点的任务流属性信息,即该逻辑节点被部署在那个任务流中。这样,节点关系分析组件120能够获知每个节点的任务流属性信息以及张量的生产和消费信息,具体而言,即可以获知产生的张量存储在哪个内存空间或内存地址段。通过获取针对张量的消费逻辑节点,能够获知该张量所需内存空间的生命周期,即该张量会涉及到哪些逻辑节点。通过获取每个逻辑节点的信息,从而可以确定针对同一个张量的两个节点是否属于同一个任务流。所述针对同一个张量包括产生这个张量或基于这个张量执行逻辑运算或其他操作。由于针对同一张量的属于不同任务流的逻辑节点之间由于彼此之间不具顺序约束,因此,可能会存在计算与内存管理方面的冲突。例如计算时,所访问的内存空间内的张量已经发生改变,这会导致整个计算图所应用的任务在执行过程中出现错误。
为此,冲突消除组件130在节点关系分析组件确定第一节点属于第一任务流而第二节点属于不同于第一任务流的任务流时,在第二节点之前生成标记第一任务流的等待节点,从而获得结果计算图。通过在第二节点之前生成标记第一任务流的等待节点,使得整个计算图在实际部署并运行时,在第二节点被执行时,需要基于所生成的等待节点完成执行之后才能被执行。具体而言,标记第一任务流的等待节点明确其之前的第一任务流的逻辑节点都要完成执行。这样,在第二节点所使用的第一节点的张量一定是正确的,而不会是被修改后的张量。如果没有该等待节点,存在第二节点在第二任务流中被各种原因阻塞的情况下,使用第一节点的后一轮的张量数据的可能,通过等待节点,使得针对同一张量的不同任务流的逻辑节点实现同步,从而消除了潜在的冲突。
可选择地,所述节点关系分析组件120还确定第二节点是否为最后一个针对第一张量的节点。并且,所述冲突消除组件130在第二节点为最后一个针对第一张量的节点时,在紧接着所述第二节点之后生成标记第一任务流或第二任务流的内存释放节点。对针对该第一张量的内存释放节点标记第一任务流或第二任务流,并不意味着该内存释放节点属于第一任务流或第二任务流,而是意味着只有在该内存释放节点之前的第一任务流或第二任务流上的所有运算逻辑节点都已经完成执行才释放将第一张量的内存空间标记为释放,以便其他运算逻辑节点可以申请被标记为释放的内存空间。在通常情况下,所述针对该第一张量的内存释放节点默认标记为产生第一张量的第一任务流。
可选择地,在初始计算图中本身存在内存释放节点的情况下,如果所述节点关系分析组件120确定第二节点是最后一个针对第一张量的节点时,所述冲突消除组件130将紧接着所述第二节点之后的针对第一张量的内存释放节点修改为标记第一任务流或第二任务流的针对第一张量的内存释放节点。
如图1所示,用于多流并行的冲突处理系统100还包括:节点生成统计组件140以及循环判断组件150。节点生成统计组件140统计冲突消除组件所生成的等待节点和内存释放节点的数量。循环判断组件150在节点生成统计组件140统计结果为零时,判断冲突消除完成,或者在节点生成统计组件140统计结果不为零时,将当前的结果计算图作为初始计算图发反馈到初始计算图获取组件,直到统计结果为零为止。通过多轮执行上述冲突消除,可以完全消除初始计算图中存在的潜在冲突。在后续的冲突处理过程中,内存释放节点将被当作运算逻辑节点一样同等对待。
此外,需要指出的是,用于多流并行的冲突处理系统100中的运算逻辑节点可以是计算逻辑节点还可以是传输逻辑节点。
图2所示的是根据本公开的用于多流并行的冲突处理系统执行冲突消除的一个实例示意图。如图2所示,冲突处理系统100上方的计算图为初始计算图其下方为结果计算图。初始计算图包括任务流S1和任务流S2。为描述简便起见,仅仅举了包含两个并行任务流的例子。在实际情况中,并行任务流可以更多,例如3-10个,可以更多,例如,成百上千个。在任务流S1中存在任意数量的运算节点,例如S1-n1、S1-n、S1-n2等节点,这里称S1-n1为第一节点。同样,在任务流S2中存在任意数量的运算节点,例如S2-n1、S2-n、S2-n2等节点,这里称S2-n2为第二节点。在CPU中也存在任务流,其中仅仅显示了一个逻辑节点C-rn2,这是一个内存释放节点,也可以是其他运算逻辑节点。
在冲突处理系统100接收到其上方的初始计算图之后,分析每个张量所涉及到的逻辑节点,确定针对同一张量的逻辑节点之间的关系,即是否属于同一任务流。这些针对同一张量的逻辑节点之间存在一种依赖关系。为此为了防止这种依赖关系导致针对同一张量的由于不同任务流的逻辑节点出现不同不的情形,即该张量的所处的内存被改写或提前释放,就需要在后一逻辑节点之前插入等待节点,并标记为前一逻辑节点所述的任务流。如图2所示,冲突处理组件100获知第一节点S1-n1产生了张量T1,而第二节点S2-n2利用了张量T1,因此这两个节点属于针对同一张量T1的逻辑节点,但是其不属于同一任务流,第一节点S1-n1属于第一任务流S1,第二节点S2-n2属于第二任务流S2。如果在第二节点S2-n2之前生成一个等待节点,就存在第二任务流S2执行非常快以及第一任务流S1由于各种原因被阻塞的情况,此时就会导致第二节点S2-n2在执行时,第一节点S1-n1并没有完成其任务,因此,第一节点S1-n1并没有准备好张量T1,张量T1所处的内存空间内的数据可能是之前的数据。这就会导致第二节点S2-n2从本应是T1所处的内存空间获得与T1不同的张量,从而导致第一任务流S1与第二任务流S2在参数方面失配,不同步。为了消除这种冲突,冲突处理组件100在分析获知针对张量T1的第一节点S1-n1属于第一任务流S1,针对张量T1的第二节点S2-n2属于第二任务流S2时,在第二节点S2-n2之前插入被标记为第一任务流S1的等待节点C-S1-wn0,该节点指出在第二节点S2-n2之前需要等待,而在S1中只有第一节点S1-n1完成之后,该等待节点才会被执行,从而使得第二节点S2-n2不会在第一节点S1-n1之前被执行。由此消除了并行的第一任务流S1和第二任务流S2之间存在执行时差时导致的不同步的冲突问题。
在第二任务流S2中可能存在多个针对T1的运算逻辑节点,例如除了第二节点S2-n2之外,还有运算逻辑节点S2-n。为简便考虑,则只需要在最后一个针对张量T1的第二节点S2-n2之前生成等待节点C-S1-wn0。
如图2所示,在第二节点S2-n2是最后一个针对第一张量T1的节点的情况下,该第一张量T1的内存空间将在CPU所属的任务流或线程中被标记为释放。此时,由于CPU所属的任务流与第一任务流S1也是并行的,因此存在节点S1-n2与第二节点S2-n2同时使用同一内存空间的冲突情形。为了消除这种冲突,就需要在紧接着最后一个与第一任务流S1不同的第二任务流S2中的针对第一张量T1的第二节点S2-n2之后增加一个标记为第一任务流S1或第二任务流S2的针对第一张量T1的内存释放节点,例如节点C-S-rn2。这样,由于内存释放节点C-S-rn2是对张量T1所使用内存空间的释放,因此,节点S1-n2与第二节点S2-n2就不会存在同时使用同一内存空间的冲突情形。
当内存释放节点C-S-rn2所标记的任务流为S0时,例如内存释放节点C-S1-rn2,则导致针对T1的内存释放节点C-S1-rn2与属于第二任务流中针对张量T1的第二节点S2-n2不属于同一个任务流,因此需要在内存释放节点C-S1-rn之前插入一个标记为第二任务流S2的等待节点C-S2-wn1,从而消除内存释放节点C-S1-rn2与第二节点S2-n2之间的内存空间冲突情形。
当初始计算图中本来就存在内存释放节点C- rn2的情形下,则需要将内存释放节点C- rn2标记为第一任务流S1,从而为后续增加等待节点C-S2-wn1提供判断依据。
通过上述循环执行冲突处理,最终获得一个不需进一步增加逻辑节点的结果计算图,例如图2中的冲突处理组件100下方的与初始计算图对应的结果计算图。基于结果计算图部署的数据处理系统将不会存在计算与内存空间管理的冲突的情形。
采用根据本公开的系统,以待处理的张量为依据,以是否属于同一任务流为判断依据,能够在动态图模式下,通过对任务的初始动态计算图中的所有节点进行分析,获取针对同一张量的不同任务流的节点之间潜在冲突,并通过在首次针对该张量的节点所属的任务流上对该张量进行等待操作或释放内存操作,消除并行的不同任务流之间对张量使用的冲突,从而消除这种冲突导致的错误。首次针对该张量的节点通常是该张量的生产节点。通过采用本公开的用于多流并行的冲突处理系统及方法,消除了需要人工对计算图或与计算图对应的程序进行冲突消除的必要,跟确切而言,使得程序中的冲突消除过程无需人工干预而自动进行,极大地提高的程序纠错的人工成本,并减少了多流并行系统的维护的成本和出错的可能性。通过本公开的系统,使得计算和显存管理统一当作指令管理,且是显存安全的。而且相对于其他处理方式,本公开 同样的同步逻辑,只需在诸如虚拟机层面的冲突消除系统中实现一次,不需要开发者手工重复实现。减少了维护的成本和出错的可能性。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本公开的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本公开的说明的情况下运用他们的基本编程技能就能实现的。
因此,本公开的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本公开的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本公开,并且存储有这样的程序产品的存储介质也构成本公开。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。
还需要指出的是,在本公开的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (8)

1.一种用于多流并行的冲突处理系统,包括:
初始计算图获取组件,获取将部署在CPU以及一个或多个协处理器上的初始计算图,所述初始计算图包括属于一个计算任务的多个任务流,每个任务流包含多个顺序执行的运算逻辑节点和内存释放逻辑节点;
节点关系分析组件,遍历所述初始计算图中将被针对的所有张量,判断首次针对第一张量的第一节点和针对第一张量的第二节点所属的任务流是否相同以及确定第二节点是否为最后一个针对第一张量的节点;
冲突消除组件,在节点关系分析组件确定第一节点属于第一任务流而第二节点属于不同于第一任务流的任务流时,在第二节点之前生成标记第一任务流的等待节点,以及在第二节点为最后一个针对第一张量的节点时,在紧接着所述第二节点之后生成标记第一任务流的内存释放节点,从而获得结果计算图。
2.根据权利要求1所述的用于多流并行的冲突处理系统,其中所述节点关系分析组件确定第二节点是否为最后一个针对第一张量的节点,以及在第二节点是最后一个针对第一张量的节点时,所述冲突消除组件将紧接着所述第二节点之后的针对第一张量的内存释放节点修改为属于第一任务流的针对第一张量的内存释放节点。
3.根据权利要求1或2所述的用于多流并行的冲突处理系统,还包括:
节点生成统计组件,统计冲突消除组件所生成的等待节点和内存释放节点的数量;以及
循环判断组件,在节点生成统计组件统计结果为零时,判断冲突消除完成,以及在节点生成统计组件统计结果不为零时,将当前的结果计算图作为初始计算图发反馈到初始计算图获取组件。
4.根据权利要求3所述的用于多流并行的冲突处理系统,其中所述运算逻辑节点包括计算逻辑节点和传输逻辑节点。
5.一种用于多流并行的冲突处理方法,包括:
初始计算图获取步骤,获取将部署在CPU以及一个或多个协处理器上的初始计算图,所述初始计算图包括属于一个计算任务的多个任务流,每个任务流包含多个顺序执行的运算逻辑节点和内存释放逻辑节点;
节点关系分析步骤,遍历所述计算图中将被针对的所有张量,判断首次针对第一张量的第一节点和针对第一张量的第二节点所属的任务流是否相同以及第二节点是否为最后一个针对第一张量的节点;
冲突消除步骤,在节点关系分析组件确定第一节点属于第一任务流而第二节点属于不同于第一任务流的任务流时,在第二节点之前生成标记第一任务流的等待节点,以及在第二节点为最后一个针对第一张量的节点时,在紧接着所述第二节点之后生成标记第一任务流的内存释放节点,从而获得结果计算图。
6.根据权利要求5所述的用于多流并行的冲突处理方法,其中所述节点关系分析步骤还确定第二节点是否为最后一个针对第一张量的节点,以及所述冲突消除步骤还在第二节点是最后一个针对第一张量的节点时,将紧接着所述第二节点之后的针对第一张量的内存释放节点修改为属于第一任务流的针对第一张量的内存释放节点。
7.根据权利要求5或6所述的用于多流并行的冲突处理方法,还包括:
节点生成统计步骤,统计冲突消除步骤所生成的等待节点和内存释放节点的数量;以及
循环判断步骤,在节点生成统计步骤统计结果为零时,判断冲突消除完成,以及在节点生成统计组件统计结果不为零时,将当前的结果计算图作为初始计算图重复初始计算图获取步骤、节点关系分析步骤以及冲突消除步骤。
8.根据权利要求7所述的用于多流并行的冲突处理方法,其中所述运算逻辑节点包括计算逻辑节点和传输逻辑节点。
CN202210022949.6A 2022-01-10 2022-01-10 用于多流并行的冲突处理系统及其方法 Active CN114035968B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210022949.6A CN114035968B (zh) 2022-01-10 2022-01-10 用于多流并行的冲突处理系统及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210022949.6A CN114035968B (zh) 2022-01-10 2022-01-10 用于多流并行的冲突处理系统及其方法

Publications (2)

Publication Number Publication Date
CN114035968A CN114035968A (zh) 2022-02-11
CN114035968B true CN114035968B (zh) 2022-03-18

Family

ID=80141468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210022949.6A Active CN114035968B (zh) 2022-01-10 2022-01-10 用于多流并行的冲突处理系统及其方法

Country Status (1)

Country Link
CN (1) CN114035968B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955734A (zh) * 2020-02-13 2020-04-03 北京一流科技有限公司 逻辑节点的分布式签名决策系统及其方法
CN111145076A (zh) * 2019-12-27 2020-05-12 深圳鲲云信息科技有限公司 数据并行化处理方法、系统、设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8141082B2 (en) * 2008-02-28 2012-03-20 Intel Corporation Node-based representation of multi-threaded computing environment tasks, and node-based data race evaluation
CN109725989B (zh) * 2017-10-31 2020-07-31 阿里巴巴集团控股有限公司 一种任务执行的方法及装置
CN110347450B (zh) * 2019-07-15 2024-02-09 北京一流科技有限公司 多流并行控制系统及其方法
CN111158890A (zh) * 2020-01-20 2020-05-15 北京一流科技有限公司 控制任务集中的任务并行的系统及其方法
CN110928697B (zh) * 2020-02-13 2020-05-22 北京一流科技有限公司 拓扑图转换系统及其方法
CN111897633A (zh) * 2020-07-01 2020-11-06 北京沃东天骏信息技术有限公司 一种任务处理的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111145076A (zh) * 2019-12-27 2020-05-12 深圳鲲云信息科技有限公司 数据并行化处理方法、系统、设备及存储介质
CN110955734A (zh) * 2020-02-13 2020-04-03 北京一流科技有限公司 逻辑节点的分布式签名决策系统及其方法

Also Published As

Publication number Publication date
CN114035968A (zh) 2022-02-11

Similar Documents

Publication Publication Date Title
US20180158034A1 (en) Dynamic reordering of blockchain transactions to optimize performance and scalability
US9218209B2 (en) Apparatus and method for parallel processing of a query
US9582312B1 (en) Execution context trace for asynchronous tasks
EP2962192B1 (en) System and method thereof to optimize boot time of computers having multiple cpus
JP5379711B2 (ja) データ構造に対し並列に実行される複数の動作を含む、実行履歴の正しさを検証するためのコンピュータ実装方法、システム及びコンピュータ・プログラム
US7873869B2 (en) Checkpointing a hybrid architecture computing system
US20080209436A1 (en) Automated testing of programs using race-detection and flipping
US20140372983A1 (en) Identifying the introduction of a software failure
US10366084B2 (en) Optimizing pipelining result sets with fault tolerance in distributed query execution
JP2009020823A (ja) 順序関係解析装置、方法及びプログラム
US9870314B1 (en) Update testing by build introspection
US9239732B2 (en) Unrolling aggregation operations in asynchronous programming code having multiple levels in hierarchy
CN111158890A (zh) 控制任务集中的任务并行的系统及其方法
US20180113729A1 (en) Category based execution scheduling
CN104520811A (zh) 优化具有多个中央处理器的计算机的启动时间的系统及方法
CN114035968B (zh) 用于多流并行的冲突处理系统及其方法
CN110289043B (zh) 存储设备测试方法、装置、电子设备
Pumma et al. Alleviating load imbalance in data processing for large-scale deep learning
US8627301B2 (en) Concurrent management of adaptive programs
CN114035810B (zh) 用于多流并行的同步部署系统及其方法
US20070169124A1 (en) Method, system and program product for detecting and managing unwanted synchronization
US20130166887A1 (en) Data processing apparatus and data processing method
Bajunaid et al. Analytic models of checkpointing for concurrent component-based software systems
CN110879744B (zh) 利用多线程执行计算图的方法和系统
US20240104395A1 (en) Memory optimization method and device oriented to neural network computing

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