CN113554161A - 一种神经网络加速器编译方法及装置 - Google Patents
一种神经网络加速器编译方法及装置 Download PDFInfo
- Publication number
- CN113554161A CN113554161A CN202110821142.4A CN202110821142A CN113554161A CN 113554161 A CN113554161 A CN 113554161A CN 202110821142 A CN202110821142 A CN 202110821142A CN 113554161 A CN113554161 A CN 113554161A
- Authority
- CN
- China
- Prior art keywords
- neural network
- instruction
- compiler
- dependency relationship
- accelerator
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种神经网络加速器编译方法及装置,该方法包括:基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列;根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略;根据所述并行运行策略,生成神经网络加速器的加速指令。本发明通过融合循环缓冲区和超标量等柔性动态调整技术于神经网络专用加速器中,能够有效解决神经网络参数加载和模块利用率等问题,使得神经网络能够更快速的部署于边缘端。
Description
技术领域
本发明涉及人工智能技术领域,尤其涉及一种神经网络加速器编译方法及装置。
背景技术
目前人工智能(Artificial Intelligence,简称AI)领域技术突飞猛进,适用于识别、检测和跟踪等复杂任务的深度神经网络应用于各行各业之中,为了在边缘端部署AI算法,实现端云协同,嵌入式神经网络处理器技术快速发展。
神经网络的推理在计算和空间上的代价都很高,为了支持低功耗低算力的边缘硬件,量化学习和稀疏剪枝等压缩技术被大量提出,卷积等算子也在边缘端实现了并行运算。其中,量化学习将原网络中的浮点型权重float32替代为整型int8,以损失较小精度为代价,不仅减少了网络参数大小,还加速了卷积的计算速度;稀疏剪枝将网络中不重要的参数和层等冗余结构删减,节约参数储存空间,大幅节省推理时间。
然而,量化学习、稀疏剪枝等技术都是在训练推理阶段缩减神经网络网络的大小,并没有结合边缘端的神经网络专用加速器进行优化。神经网络算法在边缘端的计算仍然存在效率低下,通用性差,不同层之间的数据传递仍然需要消耗大量的冗余资源,各模块的利用率仍然有较大的提升空间;同时,加速器所运行的指令集从云端下沉至边缘端需要复杂的调整,仅通过卷积硬件加速远难达到实时性的要求。因此,现在亟需一种神经网络加速器编译方法及装置来解决上述问题。
发明内容
针对现有技术存在的问题,本发明提供一种神经网络加速器编译方法及装置。
本发明提供一种神经网络加速器编译方法,包括:
基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列;
根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略;
根据所述并行运行策略,生成神经网络加速器的加速指令。
根据本发明提供的一种神经网络加速器编译方法,所述基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,包括:
根据预设指令类型,构建对应的神经网络编译器指令,所述神经网络编译器指令包括特征图加载指令、权重加载指令、卷积计算指令和结果回存指令;
根据神经网络结构信息,判断每种神经网络编译器指令之间是否存在并行运行,并根据并行运行判断结果,构建每种预设指令类型之间的依赖关系,所述神经网络结构信息至少包括前序层、后序层、输入输出通道数、卷积核大小和输入输出数据宽度和输入输出数据高度;
基于先进先出法和所述依赖关系,根据相同预设指令类型的神经网络编译器指令,生成对应的神经网络编译器指令队列。
根据本发明提供的一种神经网络加速器编译方法,所述根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略,包括:
根据所述并行运行判断结果,通过标志位对无法进行并行运行的神经网络编译器指令进行标记,得到预设指令类型之间的依赖关系;
基于超标量技术,根据所述依赖关系,生成每种神经网络编译器指令队列之间的并行运行策略。
根据本发明提供的一种神经网络加速器编译方法,所述基于超标量技术,根据所述依赖关系,生成每种神经网络编译器指令队列之间的并行运行策略,包括:
基于循环缓存的方式,根据神经网络当前层的特征图加载指令和权重加载指令,将特征图和权重并行加载到各自对应的SRAM;
根据神经网络当前层的卷积计算指令进行卷积计算,得到神经网络当前层的卷积计算结果;
根据神经网络当前层的结果回存指令和神经网络下一层的权重加载指令,通过并行加载的方式,将神经网络当前层计算得到的卷积计算结果回存到DDR,将神经网络下一层的权重加载到对应的SRAM。
根据本发明提供的一种神经网络加速器编译方法,在所述根据所述并行运行策略,生成神经网络加速器的加速指令之后,所述方法还包括:
根据所述神经网络结构信息,对神经网络进行切片处理;
对切片处理后的神经网络进行ping-pong操作。
根据本发明提供的一种神经网络加速器编译方法,在根据所述并行运行策略,生成神经网络加速器的加速指令之后,所述方法还包括:
所述神经网络加速器基于生产者消费者模式,根据所述加速指令运行。
本发明还提供一种神经网络加速器编译装置,其特征在于,包括:
预设指令和依赖关系生成模块,用于基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列;
并行策略生成模块,用于根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略;
编译模块,用于根据所述并行运行策略,生成神经网络加速器的加速指令。
根据本发明提供的一种神经网络加速器编译装置,所述预设指令和依赖关系生成模块包括:
指令生成单元,用于根据预设指令类型,构建对应的神经网络编译器指令,所述神经网络编译器指令包括特征图加载指令、权重加载指令、卷积计算指令和结果回存指令;
依赖关系生成单元,用于根据神经网络结构信息,判断每种神经网络编译器指令之间是否存在并行运行,并根据并行运行判断结果,构建每种预设指令类型之间的依赖关系,所述神经网络结构信息至少包括前序层、后序层、输入输出通道数、卷积核大小和输入输出数据宽度和输入输出数据高度;
指令队列生成单元,用于基于先进先出法和所述依赖关系,根据相同预设指令类型的神经网络编译器指令,生成对应的神经网络编译器指令队列。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述神经网络加速器编译方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述神经网络加速器编译方法的步骤。
本发明提供的一种神经网络加速器编译方法及装置,通过融合循环缓冲区和超标量等柔性动态调整技术于神经网络专用加速器中,能够有效解决神经网络参数加载和模块利用率等问题,使得神经网络能够更快速的部署于边缘端。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的神经网络加速器编译方法的流程示意图;
图2为本发明提供的神经网络加速器的整体框架示意图;
图3为本发明提供的神经网络加速器的加速指令结构示意图;
图4为本发明提供的循环缓冲的分布示意图;
图5为本发明提供的神经网络切分方法的示意图;
图6为本发明提供的神经网络加速器的指令流程示意图;
图7为本发明提供的神经网络加速效果示意图;
图8为本发明提供的神经网络加速器编译装置的结构示意图;
图9为本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的神经网络加速器编译方法的流程示意图,如图1所示,本发明提供了一种神经网络加速器编译方法,包括:
步骤101,基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列。
在本发明中,首先对网络模型的结构进行分析,得到关于该模型的神经网络结构信息,同时,根据预设指令类型,构建多种神经网络编译器指令。
进一步地,所述基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,具体包括:
步骤S1,根据预设指令类型,构建对应的神经网络编译器指令,所述神经网络编译器指令包括特征图加载指令、权重加载指令、卷积计算指令和结果回存指令。
在本发明中,神经网络编译器指令主要由特征图加载(Feature map Load,简称FM)指令、权重加载(Weight Load,简称WT)指令、卷积计算(Convolution Calculation,简称CAL)指令和结果回存(Result Save,简称RS)指令,通过这四种预设指令类型的指令组成对应的序列。
步骤S2,根据神经网络结构信息,判断每种神经网络编译器指令之间是否存在并行运行,并根据并行运行判断结果,构建每种预设指令类型之间的依赖关系,所述神经网络结构信息至少包括前序层、后序层、输入输出通道数、卷积核大小和输入输出数据宽度和输入输出数据高度。
在本发明中,神经网络编译器需要分析神经网络的各层参数信息,包括神经网络卷积层中以下基本参数:前序层、后序层、输入输出通道数、卷积核大小和输入输出宽高等。通过这些基本信息,可获取指令之间存在并行运行。在本发明中,通过对神经网络结构信息进行依赖关系分析,将各神经网络各层的FM指令和WT指令加载到神经网络加速器上的静态随机存取存储器(Static Random-Access Memory简称SRAM)的预设位置,从而在神经网络当前层进行卷积计算以及结果回存。
步骤S3,基于先进先出法和所述依赖关系,根据相同预设指令类型的神经网络编译器指令,生成对应的神经网络编译器指令队列。
图2为本发明提供的神经网络加速器的整体框架示意图,可参考图2所示,以神经网络任一层进行说明,每种相同预设指令类型神经网络编译器指令,按照先进先出(FirstIn First Out,简称FIFO)的规则,组成各类型自对应的神经网络编译器指令队列,优选地,本发明基于生产者消费者模式,在每种类型指令队列中设置各自对应的资源依赖锁(LOCK)。
步骤102,根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略。
在本发明中,可参考图2所示,特征图加载指令队列发送到特征图加载控制部分,DDR将特征图(Feature Map)数据加载到SRAM相应区域上(即FM SRAM),本发明单层数据分为两部分,以ping-pong操作方式加速计算,通过卷积池化等计算,输出放置到SRAM的环形临近缓冲区;同时,基于指令之间的依赖关系,当前层的结果回存和下一层的权重加载是可并行的,此时通过结果回存指令,将计算结果返回到DDR用于神经网络下一层的计算,并将下一层的权重加载到SRAM相应区域上(即WT SRAM),通过重复上述操作,生成每种神经网络编译器指令队列之间的并行运行策略,实现神经网络的多层传递,从而最大化利用神经网络加速器上的SRAM区域。
步骤103,根据所述并行运行策略,生成神经网络加速器的加速指令。
在本发明中,神经网络指令编译器可通过Python转换脚本,将神经网络基于循环缓冲区和超标量技术,生成芯片或FPGA加速器可以运行的加速指令集,该加速指令集能够在边缘端设备上更高效的实现AI加速。在本发明中,神经网络指令编译器包含网络结构解释器(用于对神经网络的结构进行分析),指令生成器(用于根据指令类型生成对应的神经网络编译器指令),依赖关系生成器(用于根据神经网络结构信息和相关指令,获取依赖关系),仿真器组成,实现对不同神经网络的快速编译,生成边缘端加速器能够执行的优化代码。
图3为本发明提供的神经网络加速器的加速指令结构示意图,如图3所示,该指令由64bit组成,包括opcode操作码、Inst-info和Inst-Depend等,其中,Inst-info包含指令名称和调试信息,即表示该指令为FM、WT、CAL或RS中哪一种指令;Inst-Depend为处理指令依赖所需要的信息,包含ping-pong操作及状态信息。另外,该指令中还包含神经网络每一层的尺寸信息,神经网络相关FM和WT所在的块地址和绝对地址,以及切片信息等大量硬件加速所需信息。
本发明提供的神经网络加速器编译方法,通过融合循环缓冲区和超标量等柔性动态调整技术于神经网络专用加速器中,能够有效解决神经网络参数加载和模块利用率等问题,使得神经网络能够更快速的部署于边缘端。
在上述实施例的基础上,所述根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略,包括:
根据所述并行运行判断结果,通过标志位对无法进行并行运行的神经网络编译器指令进行标记,得到预设指令类型之间的依赖关系;
基于超标量技术,根据所述依赖关系,生成每种神经网络编译器指令队列之间的并行运行策略。
在本发明中,通过在神经网络加速器上使用超标量技术,使得神经网络推理时,特征图权重加载、计算结果回存和卷积计算指令具有并行性,同时,在指令编译时加入标志位来对无法并行的指令标记。在神经网络加速器中结合超标量技术,可以延后因数据依赖而无法执行的指令,从而减轻数据灾难的影响。
由于神经网络中只有卷积计算需要严格的顺序执行,权重加载可以超前执行,结果回存可以延后执行。因此,在一实施例中,基于超标量技术,在神经网络当前层的卷积计算运行时,结果回存,此时下一层的特征图还未生成,自然也无法进行特征图加载,但是下一层权重载入并无数据指令依赖,可以将权重提前载入;另外,基于循环缓冲区,对神经网络切片可以支持ping-pong操作,对ping的卷积计算的同时也可以加载pong的特征图数据。
在上述实施例的基础上,所述基于超标量技术,根据所述依赖关系,生成每种神经网络编译器指令队列之间的并行运行策略,包括:
基于循环缓存的方式,根据神经网络当前层的特征图加载指令和权重加载指令,将特征图和权重并行加载到各自对应的SRAM。
在本发明中,由于SRAM相比双倍速率(Double Data Rate,简称DDR)内存具有访问速度快,但同时成本及功耗高,通常在边缘端硬件中SRAM资源较少。本发明基于循环缓存的方式,在神经网络加速器的SRAM区域使用循环缓冲区,图4为本发明提供的循环缓冲的分布示意图,可参考图4所示,循环缓冲区需要读端和写端2个指针来标定一块缓冲区(Buffer),当写端写到缓冲区边界的时候,会跳到另一个边界继续写,直到写端指针和读端指针重合,这个时候缓冲区处于FULL状态,不可以再写,读端会一直读数据直到和写端指针重合。
根据神经网络当前层的卷积计算指令进行卷积计算,得到神经网络当前层的卷积计算结果;
根据神经网络当前层的结果回存指令和神经网络下一层的权重加载指令,通过并行加载的方式,将神经网络当前层计算得到的卷积计算结果回存到DDR,将神经网络下一层的权重加载到对应的SRAM。
本发明通过分析网络模型的结构,实现柔性神经网络加速器的指令编译器,在对神经网络指令的编译中,将每层的所需计算空间和计算资源进行高效分配,最大化利用高速缓冲空间,将数据加载和卷积计算多发射并行处理,避免数据资源加载的等待和计算单元的浪费。
在上述实施例的基础上,在所述根据所述并行运行策略,生成神经网络加速器的加速指令之后,所述方法还包括:
根据所述神经网络结构信息,对神经网络进行切片处理;
对切片处理后的神经网络进行ping-pong操作。
在本发明中,通过上述神经网络结构信息,将神经网络各层的FM和WT指定到循环缓冲区的预设位置,根据神经网络加速器片上资源的大小,对神经网络进行切片处理,包括将特征图数据放在多个加速核中计算,通过对特征图进行合理切片,从而避免冗余参数重复加载。图5为本发明提供的神经网络切分方法的示意图,神经网络的切分处理可参考图5所示。
在上述实施例的基础上,在根据所述并行运行策略,生成神经网络加速器的加速指令之后,所述方法还包括:
所述神经网络加速器基于生产者消费者模式,根据所述加速指令运行。
在本发明中,通过神经网络编译器分析网络模型结构,将每条指令加入自然序列,并根据网络结构获取每条指令所需其他三种指令的依赖指令,
在本发明中,神经网络加速器运行时,需要依据指令依赖关系实现超标量,在编译时每条指令加入自然序列,并根据神经网络结构获取每条指令所需其他三种指令的依赖指令。本发明的神经网络加速器硬件运行的整体逻辑使用生产者消费者模式,指令运行消费资源,指令运行完为其他特定指令控制器生产资源,满足当前资源发射条件时指令发射,对应寄存器资源自减一,指令运行完后,生成资源,对应寄存器自加一,使得四种指令可以在神经网络加速器中并行运行,不受加速器性能和储存器带宽等影响。图6为本发明提供的神经网络加速器的指令流程示意图,可参考图6所示,每种类型指令独立成队列,不同类型指令可以并行运行,同类指令顺序运行。需要说明的是,本发明提供的神经网络加速器的指令结构,可以根据需求扩展杂项计算等其他类指令。
图7为本发明提供的神经网络加速效果示意图,可参考图7所示,四种神经网络编译器指令可以在神经网络加速器上实现并行运行,将硬件资源最大化利用于卷积计算上,避免了读写输入输出数据的等待时间,能够在更短的时间内运行完神经网络,实现边缘端AI的实时部署。
本发明提供的神经网络加速器编译方法,对神经网络在硬件部署具有更针对性的优化,适用于各种网络结构,不同的层尺寸大小,不同的连续层结构,对硬件高速缓冲区能够最大化利用,超标量能够高效利用全部边缘端硬件资源。与现有量化剪枝加速和传统的编译器相比,本发明提出的编译器更加贴合加速器硬件中的指令操作,生成面向专用加速器性能可观的代码。
图8为本发明提供的神经网络加速器编译装置的结构示意图,如图8所示,本发明提供了一种神经网络加速器编译装置,包括预设指令和依赖关系生成模块801、并行策略生成模块802和编译模块803,其中,预设指令和依赖关系生成模块801用于基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列;并行策略生成模块802用于根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略;编译模块803用于根据所述并行运行策略,生成神经网络加速器的加速指令。
本发明提供的神经网络加速器编译装置,通过融合循环缓冲区和超标量等柔性动态调整技术于神经网络专用加速器中,能够有效解决神经网络参数加载和模块利用率等问题,使得神经网络能够更快速的部署于边缘端。
在上述实施例的基础上,所述预设指令和依赖关系生成模块包括指令生成单元、依赖关系生成单元和指令队列生成单元,其中,指令生成单元用于根据预设指令类型,构建对应的神经网络编译器指令,所述神经网络编译器指令包括特征图加载指令、权重加载指令、卷积计算指令和结果回存指令;依赖关系生成单元用于根据神经网络结构信息,判断每种神经网络编译器指令之间是否存在并行运行,并根据并行运行判断结果,构建每种预设指令类型之间的依赖关系,所述神经网络结构信息至少包括前序层、后序层、输入输出通道数、卷积核大小和输入输出数据宽度和输入输出数据高度;指令队列生成单元用于基于先进先出法和所述依赖关系,根据相同预设指令类型的神经网络编译器指令,生成对应的神经网络编译器指令队列。
本发明提供的装置是用于执行上述各方法实施例的,具体流程和详细内容请参照上述实施例,此处不再赘述。
图9为本发明提供的电子设备的结构示意图,如图9所示,该电子设备可以包括:处理器(processor)901、通信接口(CommunicationsInterface)902、存储器(memory)903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信。处理器901可以调用存储器903中的逻辑指令,以执行神经网络加速器编译方法,该方法包括:基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列;根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略;根据所述并行运行策略,生成神经网络加速器的加速指令。
此外,上述的存储器903中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的神经网络加速器编译方法,该方法包括:基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列;根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略;根据所述并行运行策略,生成神经网络加速器的加速指令。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的神经网络加速器编译方法,该方法包括:基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列;根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略;根据所述并行运行策略,生成神经网络加速器的加速指令。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种神经网络加速器编译方法,其特征在于,包括:
基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列;
根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略;
根据所述并行运行策略,生成神经网络加速器的加速指令。
2.根据权利要求1所述的神经网络加速器编译方法,其特征在于,所述基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,包括:
根据预设指令类型,构建对应的神经网络编译器指令,所述神经网络编译器指令包括特征图加载指令、权重加载指令、卷积计算指令和结果回存指令;
根据神经网络结构信息,判断每种神经网络编译器指令之间是否存在并行运行,并根据并行运行判断结果,构建每种预设指令类型之间的依赖关系,所述神经网络结构信息至少包括前序层、后序层、输入输出通道数、卷积核大小和输入输出数据宽度和输入输出数据高度;
基于先进先出法和所述依赖关系,根据相同预设指令类型的神经网络编译器指令,生成对应的神经网络编译器指令队列。
3.根据权利要求2所述的神经网络加速器编译方法,其特征在于,所述根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略,包括:
根据所述并行运行判断结果,通过标志位对无法进行并行运行的神经网络编译器指令进行标记,得到预设指令类型之间的依赖关系;
基于超标量技术,根据所述依赖关系,生成每种神经网络编译器指令队列之间的并行运行策略。
4.根据权利要求3所述的神经网络加速器编译方法,其特征在于,所述基于超标量技术,根据所述依赖关系,生成每种神经网络编译器指令队列之间的并行运行策略,包括:
基于循环缓存的方式,根据神经网络当前层的特征图加载指令和权重加载指令,将特征图和权重并行加载到各自对应的SRAM;
根据神经网络当前层的卷积计算指令进行卷积计算,得到神经网络当前层的卷积计算结果;
根据神经网络当前层的结果回存指令和神经网络下一层的权重加载指令,通过并行加载的方式,将神经网络当前层计算得到的卷积计算结果回存到DDR,将神经网络下一层的权重加载到对应的SRAM。
5.根据权利要求1所述的神经网络加速器编译方法,其特征在于,在所述根据所述并行运行策略,生成神经网络加速器的加速指令之后,所述方法还包括:
根据所述神经网络结构信息,对神经网络进行切片处理;
对切片处理后的神经网络进行ping-pong操作。
6.根据权利要求1所述的神经网络加速器编译方法,其特征在于,在根据所述并行运行策略,生成神经网络加速器的加速指令之后,所述方法还包括:
所述神经网络加速器基于生产者消费者模式,根据所述加速指令运行。
7.一种神经网络加速器编译装置,其特征在于,包括:
预设指令和依赖关系生成模块,用于基于神经网络结构信息和预设指令类型,生成每种预设指令类型之间的依赖关系和多种神经网络编译器指令队列,其中,所述神经网络编译器指令队列是由相同预设指令类型的神经网络编译器指令组成的队列;
并行策略生成模块,用于根据所述依赖关系,确定每种神经网络编译器指令队列之间的并行运行策略;
编译模块,用于根据所述并行运行策略,生成神经网络加速器的加速指令。
8.根据权利要求7所述的神经网络加速器编译装置,其特征在于,所述预设指令和依赖关系生成模块包括:
指令生成单元,用于根据预设指令类型,构建对应的神经网络编译器指令,所述神经网络编译器指令包括特征图加载指令、权重加载指令、卷积计算指令和结果回存指令;
依赖关系生成单元,用于根据神经网络结构信息,判断每种神经网络编译器指令之间是否存在并行运行,并根据并行运行判断结果,构建每种预设指令类型之间的依赖关系,所述神经网络结构信息至少包括前序层、后序层、输入输出通道数、卷积核大小和输入输出数据宽度和输入输出数据高度;
指令队列生成单元,用于基于先进先出法和所述依赖关系,根据相同预设指令类型的神经网络编译器指令,生成对应的神经网络编译器指令队列。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述神经网络加速器编译方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述神经网络加速器编译方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110821142.4A CN113554161A (zh) | 2021-07-20 | 2021-07-20 | 一种神经网络加速器编译方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110821142.4A CN113554161A (zh) | 2021-07-20 | 2021-07-20 | 一种神经网络加速器编译方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113554161A true CN113554161A (zh) | 2021-10-26 |
Family
ID=78103598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110821142.4A Pending CN113554161A (zh) | 2021-07-20 | 2021-07-20 | 一种神经网络加速器编译方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113554161A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661301A (zh) * | 2022-05-24 | 2022-06-24 | 深圳思谋信息科技有限公司 | 图形处理单元编译方法、装置、编译加速库和存储介质 |
CN115269016A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于图计算的指令执行方法及装置 |
-
2021
- 2021-07-20 CN CN202110821142.4A patent/CN113554161A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661301A (zh) * | 2022-05-24 | 2022-06-24 | 深圳思谋信息科技有限公司 | 图形处理单元编译方法、装置、编译加速库和存储介质 |
CN114661301B (zh) * | 2022-05-24 | 2022-09-06 | 深圳思谋信息科技有限公司 | 图形处理单元编译方法、装置、编译加速库和存储介质 |
CN115269016A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于图计算的指令执行方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111178517B (zh) | 模型部署方法、系统、芯片、电子设备及介质 | |
CN113554161A (zh) | 一种神经网络加速器编译方法及装置 | |
US20210350233A1 (en) | System and Method for Automated Precision Configuration for Deep Neural Networks | |
CN110069348B (zh) | 一种高效利用云中心量子计算机资源的方法 | |
CN105022670A (zh) | 一种云计算平台中的异构分布式任务处理系统及其处理方法 | |
US20210241095A1 (en) | Deep learning processing apparatus and method, device and storage medium | |
US10908884B2 (en) | Methods and apparatus for runtime multi-scheduling of software executing on a heterogeneous system | |
US11302303B2 (en) | Method and device for training an acoustic model | |
CN111191789B (zh) | 模型优化部署系统、芯片、电子设备及介质 | |
CN110717574B (zh) | 一种神经网络运行方法、装置及异构智能芯片 | |
CN114399019A (zh) | 神经网络编译方法、系统、计算机设备及存储介质 | |
JP2021532437A (ja) | 機械学習モデルを改良して局所性を改善させること | |
US11934866B2 (en) | Operator operation scheduling method and apparatus to determine an optimal scheduling policy for an operator operation | |
US11789733B2 (en) | Instruction processing apparatus, acceleration unit, and server | |
CN109669769B (zh) | 一种基于SystemC面向GPU顶点着色任务调度方法 | |
US11875426B2 (en) | Graph sampling and random walk acceleration method and system on GPU | |
US20110131554A1 (en) | Application generation system, method, and program product | |
US8768680B2 (en) | Simulator of multi-core system employing reconfigurable processor cores and method of simulating multi-core system employing reconfigurable processor cores | |
CN115860066A (zh) | 一种基于批处理的神经网络推理流水线复用的方法 | |
CN108549935B (zh) | 一种实现神经网络模型的装置及方法 | |
US20220343144A1 (en) | Server and accelerator for neural network computations | |
CN115130672A (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN115983392A (zh) | 量子程序映射关系的确定方法、装置、介质及电子装置 | |
CN114461538A (zh) | 一种基于实时内容预测与历史资源占用的云计算应用内存管理方法 | |
CN111767204B (zh) | 溢出风险检测方法、装置及设备 |
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 |