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





