CN112465108B - 一种面向存算一体平台的神经网络编译方法 - Google Patents
一种面向存算一体平台的神经网络编译方法 Download PDFInfo
- Publication number
- CN112465108B CN112465108B CN202011251753.1A CN202011251753A CN112465108B CN 112465108 B CN112465108 B CN 112465108B CN 202011251753 A CN202011251753 A CN 202011251753A CN 112465108 B CN112465108 B CN 112465108B
- Authority
- CN
- China
- Prior art keywords
- operator
- neural network
- storage
- computation
- calculation
- 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.)
- Active
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
-
- 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/08—Learning methods
Abstract
本发明公开了一种面向存算一体平台的神经网络编译方法,涉及存算一体领域,包括以下步骤:解析神经网络模型,映射成以计算节点描述的中间表示;进行计算图优化;转换成算子级中间表示;进行算子任务划分并与硬件基本单元绑定;进行算子级优化,减少读取不连续内存的次数和权重映射的次数。本发明根据存算一体计算的特点优化计算流图和神经网络算子,减少图级算子间的中间结果写回的开销,减少了在存算资源不足时需要重新映射权重的次数。
Description
技术领域
本发明涉及存算一体领域,尤其涉及一种面向存算一体平台的神经网络编译方法。
背景技术
深度学习在语音识别、图像识别等领域取得很多突破,现有深度神经网络需要用更短的时间、更低功耗完成计算,给深度学习计算芯片提出了更高的要求。因此出现了采用忆阻器等非易失性存储器(Non-volatile memory,NVM)为计算单元的存算一体化的加速器。这类加速器有效地解决了带宽的瓶颈,并且具有功耗低速度快的特点,其研究与发展也为存内计算开辟了一个新的领域。
当前人工智能基础性算法已经较为成熟,各大厂商纷纷发力建设算法模型工具库,并将其封装为软件编程框架,供开发者使用,可以说软件框架是算法的工程实现。然而现在针对存算一体硬件后端的软件框架、算法模型库还没有成熟地建立起来,以忆阻器存储器(Resistive Random Access Memory,ReRAM)阵列为例,尽管其提供了显著的计算性能提升,但在编程编译时存在诸多困难。当前的面向存算一体的编程工作还主要依赖于编程人员将专用内核手动映射到硬件资源上,使得即使处理常见的计算任务都很繁琐,更难部署大规模的深度学习神经网络算法,因此给存内计算架构的开发、仿真验证和使用带来巨大不便,因此建立一套端到端的编译软件栈对于解决存算一体平台的编译部署工作是有意义的。
传统的冯诺依曼架构体系受限于“存储墙”,即计算速度和数据读取速度之间巨大的鸿沟,基于存内计算(Processing-in-memory)理念实现数据就近计算成为提升性能的最直接有效方式,也成为突破冯诺依曼体系瓶颈制约、提升整体计算效能的有效举措。存算一体芯片技术,旨在把传统以计算为中心的架构转变为以数据为中心的架构,其直接利用存储器进行数据处理,从而把数据存储与计算融合在同一个芯片当中,可以彻底消除冯诺依曼计算架构瓶颈,特别适用于深度学习神经网络这种大数据量并且存在大规模并行的应用场景。
存算一体的基本概念最早可以追溯到上个世纪七十年代,斯坦福研究所的Kautz等人最早于1969年就提出了存算一体计算机的概念。后续相当多的研究工作在芯片电路、计算架构、操作系统、系统应用等层面展开。例如,加州大学伯克利分校的Patterson等人成功把处理器集成在DRAM内存芯片当中,实现一种智能存算一体计算架构。但是受限于芯片设计复杂度与制造成本问题,以及缺少杀手级大数据应用进行驱动,早期的存算一体仅仅停留在研究阶段,并未得到实际应用。
近年来,随着数据量不断增大以及内存芯片技术的提高,存算一体的概念重新得到人们的关注,并开始应用于商业级DRAM主存当中。尤其在2015年左右,随着物联网、人工智能等大数据应用的兴起,存算一体技术得到国内外学术界与产业界的广泛研究与应用。在2017年微处理器顶级年会(Micro 2017)上,包括英伟达、英特尔、微软、三星、苏黎世联邦理工学院与加州大学圣塔芭芭拉分校等都推出了他们的存算一体系统原型。此外在近存计算方面,如Neurocube是典型的近存计算加速器,其采用了3D堆叠式的内存结构,并在内存附近集成逻辑计算单元,通过增加MAC(乘累加)单元数量,达到并行处理多个数据的要求。
面向存算一体计算平台的编译器是前端编程框架与存算一体后端的桥梁,代替复杂的手工映射环节,并在一定程度上提供计算优化。目前业内还很少有面向存算一体编程框架的编译器或者代码生成工具。ISAAC、FloatPIM、Atomlayer等以忆阻器阵列加速器仅在架构上探讨了忆阻器阵列在计算效率上的优势,没有提供编程与编译工具;PRIME、PipeLayer虽然提供了软硬件编程接口,但是没有将编译工具与主流神经网络框架结合。
由于现在神经网络算法、应用的开发主要基于主流的神经网络框架,因此基于主流编程框架设计面向忆阻器存算一体的编译器会有更大的应用空间。如PUMA是一个基于ReRAM阵列的存算一体加速器,前端支持TensorFlow等编程框架并支持ONNX格式神经网络模型作为输入,通过将神经网络模型编译成PUMA指令集,使得多个计算核心能并行执行复杂计算负载。与其硬件配套的PUMA编译器,其编译过程的第一步是计算图划分,通过使用适当的填充将张量分为二维平铺,每个平铺的大小为一个矩阵向量乘单元,并相应地划分模型中相应的向量和操作。接下来,对图进行分层分区,将子图分布到不同的层级结构上。但是PUMA编译器将权重一次配置在阵列上,不考虑权重更新的情况。另外也有面向忆阻器存算一体后端的编译器,为了方便编程,其选择Google的TensorFlow作为存内计算处理器的编程前端,并利用TensorFlow将程序编译成数据流图(DFG)的形式,再将数据流图编译成超长指令字(VLIW)的形式,以利用硬件中的底层并行性,而无需实现复杂的无序执行支持。上述两种面向存内计算的编译器都没有为编程人员提供算子优化的接口,并且都假定计算资源足够将网络的权重完全部署到存内计算单元上,因此没有考虑权重更新的情况。
综合现有面向忆阻器存算一体平台编译器的发展与现状,可以发现面向忆阻器存算一体的编译器是从事忆阻器架构设计、优化方面很受需要的工作,但设计存算一体计算平台的编译工作仍然存在诸多难题。首先存算一体平台在架构上存在多样性,当前还不存在统一的硬件架构,甚至单个处理单元可支持运算的大小、每个存储单元存储的bit数都还没有较为统一的标准。因此存内计算系统还不存在统一的硬件编程接口或指令集,给编译器设计带来巨大困难。此外存算一体硬件存储单元和计算单元相互耦合,并且系统内具有多个这样的节点。因此,在进行存算资源调度要充分考虑到存算一体的特殊性,即“计算单元上分布”这一特点,需要根据任务图、计算图的需求,对计算、存储等硬件资源进行合理地分配和调度,并且完成软件和硬件之间、多个硬件节点之间以及存算一体节点内部的有效协同。存算一体硬件的新特性显著地提高了该问题的复杂性,同时对系统性能又有着重要的影响。
以忆阻器为代表的存算一体架构有着全新的计算方式,这使得面向存算一体架构的编译流程和工具面临着算子需要被重新设计的问题。以张量表示为核心的数据结构和计算方式在忆阻器件上有着良好的适配性,但也为编译器设计带来了新的挑战。如何设计存算一体架构的新型算子,体现出张量化的数据表达、计算图和存储优化以及相关的指令流优化,并且与编译器层次化中间表示相结合,促进各种优化方案计算图上的有效实施,是研究中重点要解决的问题。
存算一体后端并非支持所有的运算,难以支持一些逻辑判断操作以及超越函数计算,这时候需要将这些运算安排到其他计算单元执行。
当前面向存算一体加速器的编译器存在的问题包括:
1.不能支持多种神经网络编程框架,在计算图级优化上没有做更多的探索;
2.没有提供灵活的算子优化和调度接口,对所有算子都采取相似的映射方法,因此对于一个新的特定算子,编程人员难以最大化发挥硬件的执行效率;
3.将整个网络的权重一次部署在阵列上,没有考虑权重需要更新的情况,事实上限于工艺水平和神经网络模型权重的规模,很难做到将网络权重一次映射到Crossbararray(交叉阵列)上。因此从编译器的角度,需要考虑权重更替的情况。
因此,本领域的技术人员致力于开发一种新型的面向存算一体平台的神经网络编译方法。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是:
1.借助成熟的深度学习编译器前端,将各种神经网络框架下的训练模型转换成统一的计算图级中间表示,并且根据存算一体的特点设计新的图级优化策略;
2.拆分神经网络算子,完成在多个计算核心之间的计算任务划分,并尽可能的平衡计算负载,提高并行效率;
3.在计算资源不足以放置所有权重时的权重更替策略,以尽可能的减少权重更新次数。
为实现上述目的,本发明提供了面向存算一体平台的神经网络编译方法一种面向存算一体平台的神经网络编译方法,包括以下步骤:
步骤1:解析神经网络预训练模型,映射成以计算节点描述的中间表示;
步骤2:对所述步骤1中的计算图级中间表示进行计算图优化;
步骤3:通过中间表示转换模块,将优化后的计算流图转换成算子级中间表示;
步骤4:对所述算子级中间表示进行算子任务划分,划分成一个个能够与硬件原语绑定的循环嵌套单元,并与硬件基本单元绑定;
步骤5:进行算子级优化,减少读取不连续内存的次数和权重映射的次数;
步骤6:将所述算子级中间表示生成存算一体指令。
进一步地,所述步骤2中结合常量传播、死代码消除编译技术。
进一步地,所述步骤2中归纳运算类型,将具有可融合特性的连续节点融合成一个设备端可执行的核函数。
进一步地,所述步骤2遍历计算图找到卷积算子,再以所述卷积算子为前驱节点,寻找可以与所述前驱节点融合的后继节点。
进一步地,所述神经网络中输入按照[N,C,H,W]排布,权重按照[O,C,K,K]排布。
进一步地,将权重C通道的元素映射在Crossbar的一个列单元上,不同卷积核相同位置的权重映射在同一Crossbar上,同一卷积核的不同通道分散在K2个Crossbar阵列上。
进一步地,按照C或者O通道在Core之间划分计算任务,将权重划分在各个Core上。
进一步地,对当前循环中的迭代变量按照所述Core的个数取余,按照同余的策略将计算任务分配到不同的所述Core上。
进一步地,在中间结果缓存区足够的情况下,基于贪婪策略复用当前权重。
本发明还公开了一种面向存算一体平台的神经网络编译器,按照以上方法进行编译。
相比于之前的存算一体框架下的编译器,本发明公开的编译方法具有以下优点:
1、设计了计算图级的优化策略,减少了图级算子间的中间结果写回的开销;
2、相比与只考虑一次性映射权重的存算一体硬件架构,本发明考虑了存算资源不足时的调度方案,减少了需要重新映射权重的次数;
3、支持更多的前端编程框架,提供了算子级优化方法。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本发明的编译方法流程图;
图2是本发明实施例的存算一体加速器Core硬件结构图;
图3是本发明计算图融合策略图;
图4是本发明权重映射到Crossbar的策略图;
图5是本发明从内存中读取输入张量数据的两种访问方式对比图;
图6是本发明算子级优化后的卷积算子的中间表示图;
图7是本发明对神经网络模型进行算子优化前后的映射权重的次数对比图。
具体实施方式
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件的厚度。
以图2所示的存算一体加速器Core硬件结构为例,说明本发明的编译方法。
与很多研究中提到的多层次架构类似,本实施例中,存算一体加速器从顶至下分别为Tile级、Core级和Crossbar级。其中Tile级包含了一块全局内存、四个Core单元、一个控制器和路由网络。附图2展示了Core计算单元的细节,它包含四个模块,分别是附图中的取指译码模块1、载入模块2、计算模块3、和存储模块4。另外每个Core包含了一个数据存储器,用来(a)作为输入数据的缓冲器,(b)暂存中间结果,(c)存储Core执行的指令。Core上的Crossbar单元和张量ALU是核心计算单元,分别负责处理矩阵向量乘运算和一些其他的张量ALU运算。从数据通路上看,在加速器启动计算前,首先从主机端拷贝输入数据和权重数据到Tile上的全局内存上,之后执行为每个Core拷贝计算任务需要的指令(指令预先静态的由编译器生成)。当指令拷贝完成之后,Core单元上的指令预取模块读取当前指令,并进行初步的译码,根据译码结果将指令发送到载入、计算或者存储模块,指令可以上述模块间流水。考虑处理数据依赖,硬件单元提供了数据依赖寄存器,每个模块在执行前都会访问依赖寄存器以确保本条指令可以执行。本实施例中,存算一体硬件存算一体加速器一次性可以映射144KB权重,因此当每层的权重大于这个阈值时,在本层的卷积计算中需要多次映射权重。权重的映射完全由本发明的编译器在编译时间决定。
附图1展示了本发明编译方法的整体编译流程,通过一级一级的中间表示转换和优化,将预训练模型映射成一条条指令。本发明面向存算一体平台的神经网络编译方法的流程图,包括如下步骤:
step1:解析神经网络预训练模型,映射成以计算节点描述的中间表示;
step2:进行计算图优化,并结合常量传播、死代码消除等编译技术,优化step1中的计算图级中间表示;
step3:通过中间表示转换模块,将优化后的计算流图转换成算子级的中间表示,即转换成以循环嵌套描述的各个算子;
step4:在算子级中间表示上,进行算子任务划分,将循环嵌套表示的算子分割成一个个能够与硬件原语绑定的循环嵌套单元,并借助原语绑定方法,将分割后的单元与硬件基本单元绑定;
step5:进行算子级优化,减少读取不连续内存的次数和权重映射的次数;
step6:将算子级中间表示通过LLVM转换成LLVM中间表示;
step7:将LLVM中间表示翻译成可执行文件后,运行可执行文件,生成存算一体指令。
本发明编译流程中包括三个优化方法:
方法1:模型解析与计算图融合策略
算子融合是计算图优化的一种手段,尤其是对于异构计算系统,能够减少部分数据移动开销。算子融合的目的是将计算图中的多个节点打包成一个核函数,核函数可以在设备端完全执行。相比于一个个离散的计算节点,将多个节点融合成核函数的方式大大减少了中间数据的产生,减少了主机端与设备端的数据拷贝。本发明通过归纳算子的计算特点,将算子分为单射算子(一对一映射算子,如加法操作)、归约算子(如将多个结果累加在一起)、复杂可融合算子(如卷积算子)、不可融合算子(如Softmax等由超越函数实现的运算)。本发明首先通过遍历计算图找到优化的核心算子-卷积算子,再以此节点为前驱节点,寻找可以与该节点融合的后继节点。
如附图3所示,首先需找到主要节点即卷积算子(Conv2d),它的后继节点是单射节点(Add),该节点可以与其前驱节点融合,再继续遍历,可以将ReLU运算也融合进来,但是遍历到Softmax算子时,因为其不可融合(无法在设备端执行),所以不会将其融合到前面的融合后的核函数中。附图3给了一个简单的例子,最终一个融合后的核函数包含了附图3中实线方框所示的节点,并且这个核函数可以在设备端完成所有的执行过程,最后再与主机端交互数据。本发明在编译阶段感知计算图的可融合特性,基于设定的融合策略将多个计算节点融合成一个设备端可执行的核函数,最后达到了减少中间结果写回的目的。
方法2:算子级任务划分
考虑到本发明硬件执行的最小运算粒度是矩阵向量乘操作,因此需要编译器将循环嵌套描述的卷积等运算拆分成硬件可执行的矩阵向量乘操作。神经网络计算中的数据排布方式对计算性能有很大的影响。典型的排布方式如输入按照[N,C,H,W]排布,权重按照[O,C,K,K]排布。本发明首先按照上述排布方式组织数据排布。之后为了映射到存算一体单元上,需要对数据做一些排布方式的转换。如附图4所示,本发明的映射方案是将权重C通道的每64个元素映射在Crossbar的一个列单元上,附图4中第一个卷积核的第一行第一列表示的权重映射在第一个Crossbar阵列的第一列上,不同卷积核相同位置的权重映射在同一Crossbar上,同一卷积核的不同通道分散在个Crossbar阵列上。为了完成这个划分,首先对卷积核的C和O通道、输入的C通道按照64为一个单元进行拆分:
Couter,Cinner=[C/64,iter(0,64)],Oouter,Oinner=[O/64,iter(0,64)]
完成最小维度的拆分之后,需要进行多核心之间的任务分配。这时结合运算考虑,如果不按照C或者O通道划分计算任务,那么将出现所有C或O通道的运算将折叠在同一个Core上执行,进而导致单个Core上权重的复用率降低,需要频繁的更换权重才能维持计算。而按照C或者O通道在Core之间划分计算任务,会将权重划分在各个Core上,最后只需要对每个Core的计算结果整合就能获得完整的计算结果。
本发明对每个Core设置了一个CoreId,并通过下列公式将CoreId与当前循环中的迭代变量进行绑定:
Ccur_CoreId=Ccur_iter mod (4)
公式中的4表示共有4个核,将绑定后的迭代变量传入后续的代码生成模块,经过代码翻译之后转换成有具体值的CoreId,以指示后续的指令是为当前CoreId绑定的Core生成的,至此完成算子的任务划分。
方法3:算子优化策略
本发明算子优化的方向包括两个:(a)在输入缓冲区资源足够的情况下,尽量读取到连续内存排列的数据;(b)在中间结果缓存区足够的情况下,尽量复用当前权重,减少权重更新次数。针对第一点,如附图5所示,当读取的输入张量是TensorA表示的张量窗口时,由于这个张量块的第一行数据和第二、三行存在内存间隔,我们需要使用三次内存访问指令(或者启动三次DMA读取)才能将完整结果读入输入缓冲区,而在假设输入缓冲区还存在余量时,考虑TensorB表示的读取方案,由于第一行输入和第二行输入是紧挨着的,因此不存在内存间隔,只需要启动一次内存访问指令,显然第二种读取方式减少读取操作,提高了效率。本发明采用第二种优化方法,本发明首先在与这两个迭代变量轴上绑定了权重失效标志,表示一旦这两个计算轴的迭代变量发生改变,那么就必须失效当前已经映射的权重。因此如何安排这两个轴的在计算中的计算位置影响了权重更新的次数。本发明采用了贪婪算法的策略实现了减少权重更新次数的优化,下面的算法1表示的伪代码展示了算子的划分和基于贪心算法策略的优化方法。其中CheckMemory函数将返回中间结果缓存区所剩空间可支持的输入张量大小参数,表示只要中间结果缓存区仍有空间且权重有效,那么计算仍然不去更换权重,仍然沿着附图5中的Y与X方向开展计算。
算法1:
所以通过感知计算的输入形状和计算的循环变量,本发明可以在编译阶段通过改变循环顺序和循环分块,达到减少生成代码中访问不连续内存指令、读取权重指令的条数的目标。
通过针对图2为例的存算一体加速器架构实现的指令级仿真器验证了本发明中编译结果的正确性,验证案例包含了部分ResNet系列网络。本发明能自动的将这些网络模型映射成图2为例的存算一体架构支持的各种运算和指令,附图6是本编译器生成的一种算子级中间表示,体现了本发明自动化生成代码的能力。
附图7是采用本发明前后部署神经网络模型的更换权重次数的对比,可以看到相比于没有优化的情况,本发明极大的减少了计算中的权重更新指令。
本发明提出了面向存算一体加速器的计算图级优化策略,方便探索高层的优化方向,减少数据移动的开销并避免将不适合在存算一体上执行的算子映射到存算一体硬件上。
本发明提供了面向存算一体硬件架构的神经网络算子的计算任务分割方法,让多个计算核之间合理分配计算任务,并且在计算资源出现可能闲置时,通过复制网络模型,达到数据并行的效果。
本发明给权重无法一次性映射到Crossbar上时提供了优化方向,减少了更换权重的次数。
本发明提供了一套完整的面向存算一体架构的编译流程。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (9)
1.一种面向存算一体平台的神经网络编译方法,其特征在于,包括以下步骤:
步骤1:解析神经网络预训练模型,映射成以计算节点描述的中间表示;
步骤2:对所述步骤1中的计算图级中间表示进行计算图优化;
步骤3:通过中间表示转换模块,将优化后的所述计算图转换成算子级中间表示;
步骤4:对所述算子级中间表示进行算子任务划分,划分成一个个能够与硬件原语绑定的循环嵌套单元,并与硬件基本单元绑定;
步骤5:进行算子级优化,减少读取不连续内存的次数和权重映射的次数;
步骤6:将所述算子级中间表示生成存算一体指令;
所述步骤5包括三个优化方法:
方法1:模型解析与计算图融合策略,主要针对于异构计算系统,能够减少部分数据移动开销;该方法目的是将计算图中的多个节点打包成一个核函数,核函数可以在设备端完全执行;
方法2:算子级任务划分,该方法需要编译器将循环嵌套描述的卷积等运算拆分成硬件可执行的矩阵向量乘操作;
方法3:算子优化策略,该方法包括两个:(a)在输入缓冲区资源足够的情况下,尽量读取到连续内存排列的数据;(b)在中间结果缓存区足够的情况下,尽量复用当前权重,减少权重更新次数。
2.如权利要求1所述的面向存算一体平台的神经网络编译方法,其特征在于,所述步骤2中结合常量传播、死代码消除编译技术。
3.如权利要求1所述的面向存算一体平台的神经网络编译方法,其特征在于,所述步骤2中归纳运算类型,将具有可融合特性的连续节点融合成一个设备端可执行的核函数。
4.如权利要求3所述的面向存算一体平台的神经网络编译方法,其特征在于,所述步骤2遍历计算图找到卷积算子,再以所述卷积算子为前驱节点,寻找可以与所述前驱节点融合的后继节点。
5.如权利要求1所述的面向存算一体平台的神经网络编译方法,其特征在于,所述神经网络中输入按照[N,C,H,W]排布,权重按照[O,C,K,K]排布。
6.如权利要求5所述的面向存算一体平台的神经网络编译方法,其特征在于,将权重C通道的元素映射在Crossbar的一个列单元上,不同卷积核相同位置的权重映射在同一Crossbar上,同一卷积核的不同通道分散在K2个Crossbar阵列上。
7.如权利要求6所述的面向存算一体平台的神经网络编译方法,其特征在于,按照C或者O通道在Core之间划分计算任务,将权重划分在各个Core上。
8.如权利要求7所述的面向存算一体平台的神经网络编译方法,其特征在于,对当前循环中的迭代变量按照所述Core的个数取余,按照同余的策略将计算任务分配到不同的所述Core上。
9.如权利要求1所述的面向存算一体平台的神经网络编译方法,其特征在于,在中间结果缓存区足够的情况下,基于贪婪策略复用当前权重。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011251753.1A CN112465108B (zh) | 2020-11-11 | 2020-11-11 | 一种面向存算一体平台的神经网络编译方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011251753.1A CN112465108B (zh) | 2020-11-11 | 2020-11-11 | 一种面向存算一体平台的神经网络编译方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112465108A CN112465108A (zh) | 2021-03-09 |
CN112465108B true CN112465108B (zh) | 2022-07-22 |
Family
ID=74826438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011251753.1A Active CN112465108B (zh) | 2020-11-11 | 2020-11-11 | 一种面向存算一体平台的神经网络编译方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112465108B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328227B (zh) | 2020-11-03 | 2022-02-25 | 清华大学 | 编译方法、装置、计算设备和介质 |
CN113128670B (zh) * | 2021-04-09 | 2024-03-19 | 南京大学 | 一种神经网络模型的优化方法及装置 |
US11775317B2 (en) * | 2021-04-30 | 2023-10-03 | International Business Machines Corporation | Locate neural network performance hot spots |
CN115408568B (zh) * | 2021-05-26 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种对神经网络的算子进行融合的方法和相关产品 |
CN113238715B (zh) * | 2021-06-03 | 2022-08-30 | 上海新氦类脑智能科技有限公司 | 智能文件系统、及其配置方法、智能辅助计算设备和介质 |
CN113902112A (zh) * | 2021-12-10 | 2022-01-07 | 深圳鲲云信息科技有限公司 | 硬件计算模拟方法、系统及计算机可读存储介质 |
WO2023141939A1 (zh) * | 2022-01-28 | 2023-08-03 | 华为技术有限公司 | 处理计算任务方法及装置 |
CN114186687B (zh) * | 2022-02-17 | 2022-05-17 | 之江实验室 | 一种面向神经网络模型计算的中间表示方法和装置 |
CN114237918B (zh) | 2022-02-28 | 2022-05-27 | 之江实验室 | 一种面向神经网络模型计算的图执行方法和装置 |
CN117149398A (zh) * | 2022-05-20 | 2023-12-01 | 北京希姆计算科技有限公司 | 一种内存分配的方法和装置 |
CN115061693B (zh) * | 2022-08-18 | 2022-11-04 | 统信软件技术有限公司 | 存内计算代码与微体系结构优化方法、装置及计算设备 |
CN115439566B (zh) * | 2022-08-23 | 2023-07-18 | 中国电子科技南湖研究院 | 一种基于存算一体架构的压缩感知系统及方法 |
CN116303108A (zh) * | 2022-09-07 | 2023-06-23 | 芯砺智能科技(上海)有限公司 | 一种适用于并行计算架构的卷积神经网络权重地址排布方法 |
CN117709403A (zh) * | 2022-09-07 | 2024-03-15 | 华为云计算技术有限公司 | 模型优化方法、装置以及计算设备 |
CN115268936B (zh) * | 2022-09-27 | 2022-12-27 | 之江实验室 | 一种用于计算图编译的优化方法及装置 |
CN115860079B (zh) * | 2023-01-30 | 2023-05-12 | 深圳市九天睿芯科技有限公司 | 神经网络加速装置、方法、芯片、电子设备及存储介质 |
CN116089095B (zh) * | 2023-02-28 | 2023-10-27 | 苏州亿铸智能科技有限公司 | 一种针对ReRAM神经网络计算引擎网络的部署方法 |
CN115981751B (zh) * | 2023-03-10 | 2023-06-06 | 之江实验室 | 一种近存计算系统以及近存计算方法、装置、介质及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN111047034A (zh) * | 2019-11-26 | 2020-04-21 | 中山大学 | 一种基于乘加器单元的现场可编程神经网络阵列 |
CN111814973A (zh) * | 2020-07-18 | 2020-10-23 | 福州大学 | 一种适用于神经常微分方程网络计算的存内计算系统 |
-
2020
- 2020-11-11 CN CN202011251753.1A patent/CN112465108B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN111047034A (zh) * | 2019-11-26 | 2020-04-21 | 中山大学 | 一种基于乘加器单元的现场可编程神经网络阵列 |
CN111814973A (zh) * | 2020-07-18 | 2020-10-23 | 福州大学 | 一种适用于神经常微分方程网络计算的存内计算系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112465108A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112465108B (zh) | 一种面向存算一体平台的神经网络编译方法 | |
WO2021000970A1 (zh) | 深度学习算法的编译方法、装置及相关产品 | |
JP7220914B2 (ja) | コンピュータに実装する方法、コンピュータ可読媒体および異種計算システム | |
US11714780B2 (en) | Compiler flow logic for reconfigurable architectures | |
US11669443B2 (en) | Data layout optimization on processing in memory architecture for executing neural network model | |
WO2021000971A1 (zh) | 操作数据的生成方法、装置及相关产品 | |
CN112269581B (zh) | 一种可重构芯片的内存耦合编译方法及系统 | |
US7983890B2 (en) | Method and apparatus performing automatic mapping for a multi-processor system | |
CN115576561A (zh) | 一种基于申威处理器的深度神经网络模型编译优化方法 | |
Cociorva et al. | Global communication optimization for tensor contraction expressions under memory constraints | |
Shirazi et al. | PARSA: A parallel program scheduling and assessment environment | |
Rucker et al. | Revet: A language and compiler for dataflow threads | |
Wang | Intelligent program optimization and parallelization for parallel computers | |
Lin et al. | swFLOW: A dataflow deep learning framework on sunway taihulight supercomputer | |
Hsu et al. | Stardust: Compiling Sparse Tensor Algebra to a Reconfigurable Dataflow Architecture | |
Bilotta et al. | Design and implementation of particle systems for meshfree methods with high performance | |
Schnetter | Performance and optimization abstractions for large scale heterogeneous systems in the cactus/chemora framework | |
George et al. | A Unified Programmable Edge Matrix Processor for Deep Neural Networks and Matrix Algebra | |
US11809849B1 (en) | Global modulo allocation in neural network compilation | |
CN112631610B (zh) | 一种针对粗粒度可重构结构的数据重用消除访存冲突方法 | |
CN113748399B (zh) | 在异构计算资源上调度计算图的方法、装置及可读介质 | |
Kataev et al. | Data distribution and parallel code generation for heterogeneous computational clusters | |
WO2021000638A1 (zh) | 深度学习算法的编译方法、装置及相关产品 | |
Sousa et al. | Tensor slicing and optimization for multicore NPUs | |
Liu et al. | Software Defined Chips: Volume II |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |