一种数据流处理方法及相关设备技术

技术编号:24010154 阅读:38 留言:0更新日期:2020-05-02 01:28
本申请实施例公开了一种数据流处理方法及相关设备,包括:获取多个处理单元对数据流进行操作的依赖关系和执行先后顺序,根据所述依赖关系和所述执行先后顺序,生成同步逻辑;将所述同步逻辑插入到所述多个处理单元中各个处理单元的操作流水线上,生成可执行代码。采用本申请实施例,提高了编译性能,提高数据处理效率。

A data flow processing method and related equipment

【技术实现步骤摘要】
一种数据流处理方法及相关设备
本申请涉及数据处理领域,尤其涉及一种数据流处理方法及相关设备。
技术介绍
随着机器学习和深度学习技术的快速发展,传统体系架构的计算机的计算能力无法满足现在的业务需求,因此先后推出针对业务深度定制的人工智能(artificialinsemination,AI)领域专用硬件加速器,例如,谷歌公司研发的张量处理器(tensorprocessingunit,TPU),寒武纪推出的全球首款商用深度学习处理器等等。面向机器学习和深度学习模型的加速效果比传统的中央处理器(centralprocessingunit,CPU)和图形处理器(graphicsprocessingunit,GPU)快一个数量级以上。为了提高并行吞吐能力,AI硬件加速器通常采用数据访问和计算解耦的设计原则。内部提供多条并行操作流水线,通过异步并行方式对数据进行处理。例如,某些操作流水线专门执行直接存储器访问(directmemoryaccess,DMA)操作访问数据,某些操作流水线专门执行矩阵乘法运算,某些操作流水线专门执行向量运算等等。数据访问指令发出后立刻异步返回,不需要等待访问的数据就绪就可以执行后续操作(如矩阵乘法运算或向量运算)。对于同一块地址发生的A读B写、A写B写、或A写B读等多个操作,如果多个操作之间不存在时序依赖,通过异步并行方式可以提高执行并发度。如果多个操作之间存在时序依赖,异步并行方式会导致在没有等待数据访问就绪的情况下就进行运算,产生错误的计算结果。为了解决上述问题,TPU提供流水线同步指令来管理异步并行操作流水线,张量虚拟机(tensorvirtualmachine,TVM)提供了更加便利的方式自动插入同步指令来实现时序一致性,但是,仍然存在编译性能不高、数据处理效率低的问题。
技术实现思路
本申请实施例提供一种数据流处理方法及相关设备,可以提高编译性能、以及提高数据处理效率。第一方面,本申请实施例提供了一种数据流处理方法,包括:首先获取多个处理单元之间操作数据流的依赖关系和执行先后顺序,然后根据依赖关系和执行先后顺序,生成同步逻辑;最后将同步逻辑插入到多个处理单元中各个处理单元的操作流水线上,生成可执行代码。通过序列化分析确定各个操作之间的依赖关系和执行先后顺序,由编译器自动插入同步逻辑,简化了编程代码,从而提高了编译性能,提高数据处理效率。在一种可能的设计中,获取用于描述数据流的描述代码;根据描述代码,确定依赖关系和执行先后顺序。通过用户定义缓存和操作流水线,指定操作流水线读缓存和写缓存来描述数据流,基于数据流描述的同步方式屏蔽了硬件同步细节,简化编程代码,同时解耦硬件架构和软件开发,有利于软硬件各自升级。在另一种可能的设计中,描述代码包括用于定义缓存变量的关键字、用于描述缓存数据流的读操作和写操作的关键字、用于指定写缓存变量的操作符以及用于指定读缓存变量的关键字中的至少一个,该描述代码为基于数据流描述多流水线同步的语言。在另一种可能的设计中,依赖关系表示多条操作流水线上的操作指令因访问读写同一块存储地址而导致其中一条操作流水线上的操作指令执行完成后才可以开始执行另一条操作流水线上的操作指令。执行先后顺序表示多个处理单元的操作指令被发射到相应类型的操作流水线上等待执行的时间先后顺序。在另一种可能的设计中,可以根据依赖关系和执行先后顺序,构建多个处理单元之间操作数据流的依赖决策树;根据依赖决策树,生成同步逻辑。通过构建依赖决策树,简化各个操作之间依赖关系的表达。在另一种可能的设计中,同步逻辑包括阻塞指令和事件同步指令,根据所述依赖关系,生成所述事件同步指令;以及根据所述执行先后顺序,生成所述阻塞指令。通过生成阻塞指令和事件同步指令,以便插入到操作流水线上,保障数据处理的正确性。在另一种可能的设计中,阻塞指令用于保证阻塞指令之前的所有的操作指令都执行完成后才会开始执行后续操作指令,当阻塞单个操作流水线时,该操作流水线上的阻塞指令之前的所有操作指令都执行完成后才可以开始执行后续操作指令;当阻塞所有操作流水线时,阻塞指令之前的所有操作流水线的操作指令都执行完成后,才会开始执行后续操作指令。事件同步指令用于保证不同操作流水线之间的操作指令同步。在另一种可能的设计中,可以确定所述依赖关系是否为传递依赖,当依赖关系不为传递依赖时,生成同步逻辑,从而消除操作之间的传递依赖,保证最优的同步指令插入,最大化利用同步资源,减少同步开销。在另一种可能的设计中,缓冲区域包括第一区域和第二区域,可以向第一区域写入数据流,在等待数据流全部写入第一区域后,更换第一区域和第二区域,向第二区域写入新的数据流,并从第一区域中读取原来写入的数据流,通过双缓冲技术提高数据处理性能。在另一种可能的设计中,在缓冲区可能会发生失效之前发出预取请求,以便在读取数据流时已经提前将数据流写入缓冲区,从而避免缓冲回去失效造成的处理器停顿。通过预取优化,生成高效的可执行代码。第二方面,本申请实施例提供了一种数据流处理装置,该数据流处理装置被配置为实现上述第一方面中编译器所执行的方法和功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的单元。第三方面,本申请实施例提供了一种数据流处理设备,包括:处理器、存储器和通信总线,其中,通信总线用于实现处理器和存储器之间连接通信,处理器执行存储器中存储的程序用于实现上述第一方面提供的一种数据流处理方法中的步骤。在一个可能的设计中,本申请实施例提供的数据流处理设备可以包含用于执行上述方法设计中数据流处理装置的行为相对应的模块。模块可以是软件和/或是硬件。第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。第五方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。附图说明为了更清楚地说明本申请实施例或
技术介绍
中的技术方案,下面将对本申请实施例或
技术介绍
中所需要使用的附图进行说明。图1是本申请实施例提供的一种TPU的结构示意图;图2是本申请实施例提供的一种处理器的架构图;图3是本申请实施例提供的一种虚拟线程并行程序转换到显式同步编程模型的示意图;图4是本申请实施例提供的一种编译器交错执行调度优化的效果示意图;图5是本申请实施例提供的一种应用系统的架构示意图;图6是本申请实施例提供的一种多条操作流水线的同步示意图;图7是本申请实施例提供的一种数据流处理方法的流程示意图;图8是本申请实施例提供的一种基于数据流描述的描述代码;图9是本申请实施例提供的一种依赖关系的示意图;图10是本申请实施例提供的一种执行先后顺序的示意图;图11(A)是本申请实施例提供的一种传递依赖的示意图;图11(B)是本申请实施例提供的另一种传递依赖的示意图;图11(C)是本申本文档来自技高网
...

【技术保护点】
1.一种数据流处理方法,其特征在于,所述方法包括:/n获取多个处理单元对数据流进行操作的依赖关系和执行先后顺序;/n根据所述依赖关系和所述执行先后顺序,生成同步逻辑;/n将所述同步逻辑插入到所述多个处理单元中各个处理单元的操作流水线上,生成可执行代码。/n

【技术特征摘要】
1.一种数据流处理方法,其特征在于,所述方法包括:
获取多个处理单元对数据流进行操作的依赖关系和执行先后顺序;
根据所述依赖关系和所述执行先后顺序,生成同步逻辑;
将所述同步逻辑插入到所述多个处理单元中各个处理单元的操作流水线上,生成可执行代码。


2.如权利要求1所述的方法,其特征在于,所述获取多个处理单元对数据流进行操作的依赖关系和执行先后顺序包括:
获取用于描述所述数据流的描述代码;
根据所述描述代码,确定所述依赖关系和所述执行先后顺序。


3.如权利要求2所述的方法,其特征在于,所述描述代码包括用于定义缓存变量的关键字、用于描述缓存所述数据流的读操作和写操作的关键字、用于指定写缓存变量的操作符以及用于指定读缓存变量的关键字中的至少一个。


4.如权利要求1-3任一项所述的方法,其特征在于,所述依赖关系表示所述多个处理单元中的第一处理单元的操作流水线上的第一操作指令执行完成后开始执行所述多个处理单元中的第二处理单元的操作流水线上的第二操作指令,所述执行先后顺序表示所述多个处理单元的操作指令被发射到相应类型的操作流水线上等待执行的时间先后顺序。


5.如权利要求1-4任一项所述的方法,其特征在于,所述根据所述依赖关系和所述执行先后顺序,生成同步逻辑包括:
根据所述依赖关系和所述执行先后顺序,构建所述多个处理单元之间操作所述数据流的依赖决策树;
根据所述依赖决策树,生成所述同步逻辑。


6.如权利要求1-5任一项所述的方法,其特征在于,所述同步逻辑包括阻塞指令和事件同步指令;所述根据所述依赖关系和所述执行先后顺序,生成同步逻辑包括:
根据所述依赖关系,生成所述事件同步指令;以及
根据所述执行先后顺序,生成所述阻塞指令。


7.如权利要求1-6任一项所述的方法,其特征在于,所述根据所述依赖关系和所述执行先后顺序,生成同步逻辑包括:
确定所述依赖关系是否为传递依赖;
当所述依赖关系不为所述传递依赖时,生成所述同步逻辑。


8.一种数据流处理装置,其特征在于,所述装置包括:
获取模块,用于获取多个处理单元对数据流进行操作的依赖关...

【专利技术属性】
技术研发人员:海丽娟程琛克里斯托弗·罗德里格斯吴芃
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1