System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种反馈式神经网络模型计算流流水线排布方法及AI编译器技术_技高网

一种反馈式神经网络模型计算流流水线排布方法及AI编译器技术

技术编号:40597974 阅读:4 留言:0更新日期:2024-03-12 22:01
本发明专利技术涉及一种反馈式神经网络模型计算流流水线排布方法及AI编译器,所述方法包括以下步骤:S1、针对块加载/块存储时间的大小,通过增减块计算个数做若干不同块计算时间大小的计算流流水线排布,编译生成不同DDR带宽占有下的计算流流水线排布指令流;S2、发生DDR带宽抢占时,根据计算单元运行块计算周期个数和块加载加块存储周期个数的比例,动态编译不同DDR带宽占有下的计算流流水线排布,切换到块计算时间大小和块加载/块存储时间大小相等或近似的计算流流水线排布指令流。有益效果是根据DDR带宽占用、动态切换相对合适神经网络模型计算流流水线排布。

【技术实现步骤摘要】

【】本专利技术涉及计算机,具体涉及一种反馈式神经网络模型计算流流水线排布方法及ai编译器。


技术介绍

0、
技术介绍

1、编译器就是将"一种语言(通常为高级语言)"翻译为"另一种语言(通常为低级语言)"的程序。

2、ir(intermediate representation即中间表示)是程序编译过程中,源代码与目标代码之间翻译的中介,ir的设计对编译器来说非常关键,好的ir要考虑从源代码到目标代码编译的完备性、编译优化的易用性和性能。

3、数据类型-tensor:ai领域,计算被抽象成张量的计算,这就意味着ai编译器中主要处理的数据类型也是张量,这个是非常重要的前提。

4、与传统编译器相比,ai编译器是一个领域特定的编译器,有四个明显的特征:1、python为主的动态解释器语言前端,2、多层ir设计,3、面向神经网络的特定优化,4、dsa芯片架构的支持。

5、ai编译器一般针对一些硬件结构来设计,图1是一种业内比较常见的ai计算单元硬件结构示意图。如图1所示,计算单元每次计算时,先进行加载过程,需要先将ddr中的输入数据加载到sram中;然后进行计算过程,将sram中的数据加载到vector(向量)寄存器,计算单元从vector寄存器中取数据计算;计算后将结果输出到vector寄存器,然后再将vector寄存器中数据存回sram;最后进行存储过程,将sram的数据存回ddr。其中从ddr读写数据的速度小于从sram的读写数据的速度。

6、图2是一个链状的神经网络模型计算流示例图。如图2所示,ai编译器的计算中,神经网络模型(计算图ir)是由若干计算节点组成的一个有向无环图,每一个计算节点的输入输出是一个tensor(张量),由于处理器中sram的比较小无法放下整个tensor,需要将tensor(存储在ddr)进行切block(块),每次将一个block加载到sram中计算,block大小一般相同。

7、常规情况下的ai编译器流水线排布存在的问题。常规情况下的ai编译器流水线排布是每一个块流水线包括加载、固定个数计算和存储过程。图3是常规情况下的神经网络模型计算流流水线排布结构示意图。如图3所示,建立流水线的目的是用计算时间掩盖掉load(加载)和store(存储)时间,从而提升系统性能,例如blcok1在计算的过程、block0的计算结果在从sram store回ddr、block2在从ddr load到sram。为了实现计算时间和加载数据时间均衡,其中每一个block加载后,需要经过固定个数的计算,使得计算单元的计算时间和加载load/存储store的时间相差不过大,从而减少计算单元的空闲时间,其中灰色部分为计算单元空闲时间。虽然这种固定的流水线看上去实现了系统的最优化流水排布,但是当用户随时打开一个模块时,如果模块对ddr带宽抢占比较明显,当前的流水线中的blockload和block store的时间会变长,使得计算单元空闲的时间增长,从而导致性能下降,此时的流水线排布效率比较差。

8、有些方法为了解决这个问题,会加入更多的block compute(块计算)来增加每次计算的时间,由于神经网络模型中存在convolution(卷积)计算较多,将过多的convolution连在一起计算会出现明显的overlap(重叠),也就是输入的数据块很大,输出的数据块很小,同时增加了整个模型的计算量。

9、公布号为cn111090464a,名称《一种数据流处理方法及相关设备》的中国专利技术专利,公开了一种数据流处理方法及相关设备,包括获取多个处理单元对数据流进行操作的依赖关系和执行先后顺序,根据所述依赖关系和所述执行先后顺序,生成同步逻辑;将所述同步逻辑插入到所述多个处理单元中各个处理单元的操作流水线上,生成可执行代码;提高了编译性能,提高数据处理效率。但是这篇专利生成值流水线排布在编译后确定不变,不论系统ddr带宽如何,流水线排布都是固定的,不可以根据ddr带宽占用、切换流水线排布。

10、本专利技术针对神经网络模型计算流流水线排布ddr带宽占用导致计算单元空闲时间增长、卷积计算重叠的技术问题,对神经网络模型计算流流水线排布方法及ai编译器进行了技术改进。


技术实现思路

0、
技术实现思路

1、本专利技术的目的是,提供一种根据ddr带宽占用、动态切换相对合适神经网络模型计算流流水线排布的方法。

2、为实现上述目的,本专利技术采取的技术方案是一种反馈式神经网络模型计算流流水线排布方法,所述神经网络模型包括若干计算节点,所述计算节点包括计算单元、sram和ddr;所述神经网络模型编译时的中间表示是由若干计算节点组成的一个有向无环图,所述计算节点的输入输出是一个存储在ddr中的张量,所述张量切成若干块;所述计算单元计算时是顺序执行若干块任务的计算流,所述块任务先进行块加载,每次将ddr中的一个块加载到sram中,然后进行块计算,从sram中读取块,计算后将结果输出到sram,最后进行块存储,将sram中的结果存回ddr;所述计算流按照流水线排布,用本块任务的块计算时间掩盖掉在后执行块任务的块加载时间、和在先执行块任务的块存储时间,所述ddr带宽是指块加载/块存储占有流水线的时间;包括以下步骤:

3、s1、针对块加载/块存储时间的大小,通过增减块计算个数做若干不同块计算时间大小的计算流流水线排布,编译生成不同ddr带宽占有下的计算流流水线排布指令流;

4、s2、发生ddr带宽抢占时,根据计算单元运行块计算周期个数和块加载加块存储周期个数的比例,动态切换不同ddr带宽占有下的计算流流水线排布,切换到块计算时间大小和块加载/块存储时间大小相等或近似的计算流流水线排布指令流。

5、优选地,步骤s1:所述计算流流水线排布指令流包括ddr带宽未被抢占时的计算流流水线排布指令流、ddr带宽被略微抢占时的计算流流水线排布指令流和ddr带宽被严重抢占时的计算流流水线排布指令流。

6、优选地,步骤s2:根据条件a:块计算周期个数/块加载加块存储周期个数<最小阈值,条件b:块计算周期个数/块加载加块存储周期个数>=最大阈值,切换计算流流水线排布指令流,其中,最大阈值和最小阈值人为设定。

7、优选地,步骤s2:发生ddr带宽抢占时,如果所述计算流处于ddr带宽未被抢占时的计算流流水线工作模式,满足条件a时,切换到ddr带宽被略微抢占时的计算流流水线排布指令流,满足条件b时,工作模式不切换。

8、优选地,步骤s2:发生ddr带宽抢占时,如果所述计算流处于ddr带宽被略微抢占时的计算流流水线工作模式,满足条件a时,切换到ddr带宽被严重抢占时的计算流流水线排布指令流,满足条件b时,切换到ddr带宽未被抢占时的计算流流水线排布指令流。

9、优选地,步骤s2:发生ddr带宽抢占时,如果所述计算流处于ddr带宽被严重抢占时的计算流流水本文档来自技高网...

【技术保护点】

1.一种反馈式神经网络模型计算流流水线排布方法,所述神经网络模型包括若干计算节点,所述计算节点包括计算单元、SRAM和DDR;所述神经网络模型编译时的中间表示是由若干计算节点组成的一个有向无环图,所述计算节点的输入输出是一个存储在DDR中的张量,所述张量切成若干块;所述计算单元计算时是顺序执行若干块任务的计算流,所述块任务先进行块加载,每次将DDR中的一个块加载到SRAM中,然后进行块计算,从SRAM中读取块,计算后将结果输出到SRAM,最后进行块存储,将SRAM中的结果存回DDR;所述计算流按照流水线排布,用本块任务的块计算时间掩盖掉在后执行块任务的块加载时间、和在先执行块任务的块存储时间,所述DDR带宽是指块加载/块存储占有流水线的时间;其特征在于包括以下步骤:

2.根据权利要求1所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于步骤S1:所述计算流流水线排布指令流包括DDR带宽未被抢占时的计算流流水线排布指令流、DDR带宽被略微抢占时的计算流流水线排布指令流和DDR带宽被严重抢占时的计算流流水线排布指令流。

3.根据权利要求2所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于步骤S2:根据条件a:块计算周期个数/块加载加块存储周期个数<最小阈值,条件b:块计算周期个数/块加载加块存储周期个数>=最大阈值,切换计算流流水线排布指令流,其中,最大阈值和最小阈值人为设定。

4.根据权利要求3所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于步骤S2:发生DDR带宽抢占时,如果所述计算流处于DDR带宽未被抢占时的计算流流水线工作模式,满足条件a时,切换到DDR带宽被略微抢占时的计算流流水线排布指令流,满足条件b时,工作模式不切换。

5.根据权利要求3所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于步骤S2:发生DDR带宽抢占时,如果所述计算流处于DDR带宽被略微抢占时的计算流流水线工作模式,满足条件a时,切换到DDR带宽被严重抢占时的计算流流水线排布指令流,满足条件b时,切换到DDR带宽未被抢占时的计算流流水线排布指令流。

6.根据权利要求3所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于步骤S2:发生DDR带宽抢占时,如果所述计算流处于DDR带宽被严重抢占时的计算流流水线工作模式,满足条件a时,工作模式不切换,满足条件b时,切换到DDR带宽被略微抢占时的计算流流水线排布指令流。

7.根据权利要求4至权利要求6任一权利要求所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于:每次计算流流水线工作模式切换前,需要所述计算流流水线在一个时间片内符合条件a或者条件b,并且保证计算单元一次推理计算完成后进行计算流流水线工作模式切换。

8.根据权利要求4至权利要求6任一权利要求所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于:每一种所述计算流流水线排布指令流存储在一块连续的内存里,计算流流水线排布切换时只要修改所述计算流流水线排布指令流起始地址,输入输出和中间缓存对应的内存地址复用切换前计算流流水线排布指令流对应的地址。

9.一种反馈式神经网络模型计算流流水线排布AI编译器,其特征在于:用于执行权利要求1至权利要求8任一权利要求所述的一种反馈式神经网络模型计算流流水线排布方法。

...

【技术特征摘要】

1.一种反馈式神经网络模型计算流流水线排布方法,所述神经网络模型包括若干计算节点,所述计算节点包括计算单元、sram和ddr;所述神经网络模型编译时的中间表示是由若干计算节点组成的一个有向无环图,所述计算节点的输入输出是一个存储在ddr中的张量,所述张量切成若干块;所述计算单元计算时是顺序执行若干块任务的计算流,所述块任务先进行块加载,每次将ddr中的一个块加载到sram中,然后进行块计算,从sram中读取块,计算后将结果输出到sram,最后进行块存储,将sram中的结果存回ddr;所述计算流按照流水线排布,用本块任务的块计算时间掩盖掉在后执行块任务的块加载时间、和在先执行块任务的块存储时间,所述ddr带宽是指块加载/块存储占有流水线的时间;其特征在于包括以下步骤:

2.根据权利要求1所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于步骤s1:所述计算流流水线排布指令流包括ddr带宽未被抢占时的计算流流水线排布指令流、ddr带宽被略微抢占时的计算流流水线排布指令流和ddr带宽被严重抢占时的计算流流水线排布指令流。

3.根据权利要求2所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于步骤s2:根据条件a:块计算周期个数/块加载加块存储周期个数<最小阈值,条件b:块计算周期个数/块加载加块存储周期个数>=最大阈值,切换计算流流水线排布指令流,其中,最大阈值和最小阈值人为设定。

4.根据权利要求3所述的一种反馈式神经网络模型计算流流水线排布方法,其特征在于步骤s2:发生ddr带宽抢占时,如果所述计算流处于ddr带宽未被抢占时的计算流流水线工作模式,满足条件a时,切...

【专利技术属性】
技术研发人员:李振峰陈韫韬梁昊徐宁仪
申请(专利权)人:合肥辉羲智能科技有限公司
类型:发明
国别省市:

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

1