[发明专利]用于多流并行的同步部署系统及其方法有效
申请号: | 202210022950.9 | 申请日: | 2022-01-10 |
公开(公告)号: | CN114035810B | 公开(公告)日: | 2022-04-15 |
发明(设计)人: | 李新奇;张建浩;袁进辉 | 申请(专利权)人: | 北京一流科技有限公司 |
主分类号: | G06F8/60 | 分类号: | G06F8/60 |
代理公司: | 北京金讯知识产权代理事务所(特殊普通合伙) 11554 | 代理人: | 黄剑飞 |
地址: | 100083 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 并行 同步 部署 系统 及其 方法 | ||
本公开涉及一种用于多流并行的同步部署系统及其方法。所述系统包括:初始计算图获取组件,用于获取包括属于一个计算任务的多个任务流的初始计算图,每个任务流包含多个顺序执行的运算逻辑节点,每个运算逻辑节点含有所属任务流标记;节点关系分析组件,用于遍历所述计算图中将被针对的所有张量,判断首次针对第一张量的第一节点和针对第一张量的第二节点所属的任务流是否相同;以及同步节点部署组件,用于在节点关系分析组件确定第一节点属于第一任务流而第二节点属于不同于第一任务流的第二任务流时,在第二节点之前部署标记第一任务流的第一同步依赖节点,并将第二节点标记所述第一同步依赖节点,由此通过所述第一同步依赖节点确定第一节点的操作先于第二节点操作。
技术领域
本公开涉及一种数据处理技术。更具体地说,本公开涉及一种用于多流并行的同步部署系统及其方法。
背景技术
在深度学习普及的现在,为了提高数据处理的速度,通常需要将一个任务分割成多个分片任务,形成多个任务流,从而使得任务流执行并行处理,从而节省数据处理的时间或加快任务处理的效率,这种数据处理方式为多流并行处理。
但是在进行多流并行的数据处理方法往往存在不同流之间的参数交换以及不同流之间的数据依赖。因此,如果在并行情况下如果不做到参数同步,将导致每个任务流各自的产生的结果在进行合并时出现错误。这种不同步往往是不同任务流各自在进行执行过程中不同任务量以及处理速度不同等原因导致的。
在深度学习中,通常使用 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 ,例如S3-n3、S2-n2、S1-n2、分别在不同的任务流S3、S2和S1中,S3-n3以及S2-n2需要读取内存M中的张量T2,为了实现同步,常规方式都会无条件指令S3-n3以及S2-n2每个都进行等待S1-n2或与S1-n2进行同步处理,这些同步都采用人工方式来进行调整,很费人力。而且当存在多个并行任务流都需要读取内存M中的张量T2时,则会存在多个等待或同步过程,产生多余同步操作,导致数据处理过程繁复。
因此,人们需要一种能够在实现多流并行时自动消除由于各种原因导致的不同步的情形,从而消除数据处理中出现的错误。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京一流科技有限公司,未经北京一流科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210022950.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于多流并行的冲突处理系统及其方法
- 下一篇:一种从植物中提取花青素的方法