CN111104120A - 神经网络编译方法、系统及相应异构计算平台 - Google Patents
神经网络编译方法、系统及相应异构计算平台 Download PDFInfo
- Publication number
- CN111104120A CN111104120A CN201811271212.8A CN201811271212A CN111104120A CN 111104120 A CN111104120 A CN 111104120A CN 201811271212 A CN201811271212 A CN 201811271212A CN 111104120 A CN111104120 A CN 111104120A
- Authority
- CN
- China
- Prior art keywords
- file
- neural network
- binary
- host
- information
- 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.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 356
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000005457 optimization Methods 0.000 claims abstract description 47
- 238000004364 calculation method Methods 0.000 claims description 16
- 230000015654 memory Effects 0.000 claims description 16
- 230000011218 segmentation Effects 0.000 claims description 7
- 238000003672 processing method Methods 0.000 claims description 5
- 238000013527 convolutional neural network Methods 0.000 description 28
- 238000003062 neural network model Methods 0.000 description 15
- 238000013135 deep learning Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000004913 activation Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- NOEKJIBAIMWJEB-UHFFFAOYSA-N 1,3,5,5-tetranitro-1,3-diazinane Chemical compound [O-][N+](=O)N1CN([N+]([O-])=O)CC([N+]([O-])=O)([N+]([O-])=O)C1 NOEKJIBAIMWJEB-UHFFFAOYSA-N 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- KDYFGRWQOYBRFD-UHFFFAOYSA-N succinic acid Chemical compound OC(=O)CCC(O)=O KDYFGRWQOYBRFD-UHFFFAOYSA-N 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241000276484 Gadus ogac Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种神经网络编译方法、系统及相应异构计算平台。该方法包括:获取经训练的NN模型;将经训练的NN模型输入NN编译器,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。由此实现运行时的图优化。进一步地,上述图结构信息可以实现为NN二进制文件中的节点资源池,连同诸如文件头和自由分段设置,能够提升针对各类神经网络算法的编译普适性和灵活性。
Description
技术领域
本发明涉及深度学习领域,尤其涉及一种用于神经网络的编译方法、编译系统以及相应的异构计算平台。
背景技术
人工智能近年得到迅速发展,在图像分类、检测、视频和语音处理等领域取得良好的应用效果,并且依然具备极大的发展前景。神经网络是人工智能应用的核心,深度学习神经网络算法是其中最常见的一种神经网络模型。由于其计算密集(计算所需乘加操作为G数量级)和数据密集(计算所需参数为M至数百M字节数量级)的特点,基于传统通用处理器CPU的计算平台并不能很好地满足深度学习算法的性能要求,近几年涌现出大量加速神经网络计算的异构平台。
为此,利用FPGA、GPU、ASIC等高并行度异构计算平台进行神经网络加速器设计成为新的研究热点。不管是使用GPU,还是FPGA抑或是ASIC,都是凭借其架构对神经网络算法的友好性达到比CPU更好的效率。在这其中,FPGA和ASIC以其高定制性、高能效比和低延时等优势而拥有良好的市场前景。为了将训练之后的深度神经网络进行部署,需要将神经网络算法编译成计算平台所能执行的二进制指令码。如何针对各类神经网络及相应计算平台进行灵活的指令编译和优化,以确保计算平台对编译而成的二进制代码进行高效执行,是深度学习领域所面临的一大挑战。
因此,需要一种针对神经网络的优化编译方案。
发明内容
为了解决上述至少一个问题,本发明提出了一种神经网络编译方法、系统及相应异构计算平台,通过在NN二进制文件中包含图结构信息,实现运行时代码图优化。进一步地,上述图结构信息可以实现为NN二进制文件中的节点资源池,连同诸如文件头和自由分段设置,能够提升针对各类神经网络算法的编译普适性和灵活性。
根据本发明的一个方面,提出了一种用于神经网络(NN)的编译方法,包括:获取经训练的NN模型;将经训练的NN模型输入NN编译器,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。
可选地,所述NN编译器可以包括NN优化编译器和NN汇编器,并且将经训练的NN模型输入NN编译器,以生成包括与所述NN模型相对应的图结构信息的NN汇编文件包括:将经训练的NN模型输入所述NN优化编译器,以生成包括与所述NN模型相对应的图结构信息的NN汇编文件;以及将NN汇编文件输入所述NN汇编器,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。
可选地,所述NN优化编译器基于神经网络专用处理器的应用程序二进制接口(ABI)规则,生成所述NN汇编文件。
可选地,所述NN二进制文件具有符合所述ABI规则的文件格式。
可选地,所述NN二进制文件可以包括用于维护图结构各节点关系的节点资源池。
可选地,所述节点资源池可以包括顺序编号的多个节点项,每个节点项可以包括用于存放其关联节点信息的索引子项。
可选地,所述节点项还可以包括如下至少一项:参数信息项、代码信息项、输入特征图数据信息项、以及输出特征图数据信息项。这些信息项能够帮助实现动态调度以进行自动化部署。
可选地,所述NN二进制文件还可以包括如下至少一项:用于描述执行所述NN二进制文件的神经网络计算平台相关信息的文件头;用于存放指令信息、参数数据信息、和/或特征图数据相关信息的分段;以及用于存放各分段相关符号的字符串名称的字符串表。
根据本发明的另一方面,还提供了一种神经网络计算平台处理方法,包括:对根据如上任一项生成的NN二进制文件进行运行时优化,其中,所述运行时优化至少部分基于所述图结构信息进行。
可选地,所述计算平台可以包括多个执行单元,并且所述NN二进制文件包括用于描述执行所述NN二进制文件的相关执行单元信息的文件头,所述处理方法还可以包括:所述执行单元基于所述文件头包含的相关执行单元信息执行所述NN二进制文件。
根据本发明的另一方面,还提供了一种异构计算平台的编译方法,包括:执行根据如上任一项所述的方法以生成所述NN二进制文件;使用主机编译器工具链编译和汇编用户用高级语言开发的神经网络应用程序,依次生成相应的主机汇编文件和主机二进制文件,其中,所述NN二进制文件和所述主机二进制文件具有兼容的可执行格式。
可选地,该方法还可以包括:使用主机链接器链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
可选地,所述二进制文件可以是ELF二进制文件。
根据本发明的另一方面,还提供了一种用于神经网络(NN)的编译系统,包括:NN优化编译器,用于接收经训练的神经网络(NN)模型,以生成包括与所述NN模型相对应的图结构信息的NN汇编文件;以及NN汇编器,用于接收所述NN汇编文件,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。
可选地,所述NN优化编译器可以基于神经网络专用处理器的应用程序二进制接口(ABI)规则,生成所述NN汇编文件。
可选地,所述NN汇编器可以生成符合所述ABI规则的所述NN二进制文件。
可选地,所述NN二进制文件可以包括用于维护图结构各节点关系的节点资源池。
可选地,所述节点资源池可以包括顺序编号的多个节点项,每个节点项可以包括用于存放其关联节点信息的索引子项,并且所述节点项还可以包括如下至少一项:参数信息项、代码信息项、输入特征图数据信息项、以及输出特征图数据信息项。
可选地,所述NN二进制文件还可以包括如下至少一项:用于描述执行所述NN二进制文件的神经网络计算平台相关信息的文件头;用于存放指令信息、参数数据信息、和/或特征图数据相关信息的分段;以及用于存放各分段相关符号的字符串名称的字符串表。
根据本发明的另一方面,还提供了一种异构计算平台的编译系统,包括:如上任一项所述的编译系统;主机编译器,用于编译用户用高级语言开发的神经网络应用程序,生成相应的主机汇编文件;以及主机汇编器,用于汇编主机汇编文件,生成主机二进制文件,其中,所述NN二进制文件和所述主机二进制文件具有兼容的可执行格式。
可选地,该编译系统还可以包括:主机链接器,用于链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
根据本发明的另一方面,还提供了一种异构计算平台,包括:主机加载器,用于将如上所述的主机二进制文件中的相关指令和数据加载到主机内存空间;神经网络专用处理器运行时引擎,用于对如上所述的NN二进制文件进行运行时优化,所述运行时优化至少部分基于所述图结构信息进行;神经网络专用处理器加载器,用于将经运行时优化的所述NN二进制文件的相关指令和数据加载到神经网络专用处理器内存空间;主机,用于执行基于所述主机二进制文件中的相关指令和数据进行操作;以及神经网络专用处理器,用于执行基于所述NN二进制文件中的相关指令和数据进行NN加速计算。
所述计算平台还可以包括多个专用寄存器,各自用于寄存指定所述NN二进制文件中针对特定节点的分段信息的加载地址。
本发明通过在NN二进制文件中包含图结构信息,实现了在代码在加载运行时的优化,由此进一步提升代码执行效率。上述图结构信息可以实现为符合专用ABI模型的文件结构,例如可以保存为节点资源池,并且可以包括各类自由设置的分段类型,由此实现对各类不同结构后包含不同参数类别的神经网络算法的支持,并为编译器提供了极大的优化空间。另外,通过对节点资源池内各信息项的合理设置,还能够帮助实现动态调度以进行自动化部署。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了一种卷积神经网络(CNN)模型的示意图。
图2示出CNN加速方案的一个例子。
图3示出了根据本发明一个实施例的用于神经网络的编译方法。
图4示出了根据本发明一个实施例的用于神经网络的编译系统的编译示意图。
图5示出了根据本发明一个实施例的一种异构计算平台的编译方法。
图6示出了根据本发明一个优选实施例的用于异构计算平台的编译系统的编译示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
人工智能近年得到迅速发展,在图像分类、检测、视频和语音处理等领域取得良好的应用效果,并且依然具备极大的发展前景。神经网络是人工智能应用的核心,深度学习神经网络算法是其中最常见的一种神经网络模型。神经网络的工作负载特征是计算和数据密集。神经网络计算所需的乘加操作通常为G数量级,例如目标检测类神经网络SSD的计算量为120G操作次数。而计算所需参数则通常为M至数百M字节数量级,例如分类神经网络VGG的参数为480M字节。
为了将训练之后的深度神经网络进行部署,需要使用编译器将神经网络模型编译成计算平台所能执行的二进制指令流。不同于使用如C++或Java等的高级语言开发的应用程序,神经网络模型有着自己独特的语法和结构。有鉴于此,业已出现了专用于神经网络计算的高性能计算平台以及相应的神经网络编译器。例如,一种深度神经网络编译器DNNC(Deep Neural Network Compiler)可将神经网络算法编译成为DPU(Deep LearningProcessor Unit,深度学习专用处理器)平台的优化指令流。在此,DNNC可以理解为广义上的编译器,即包括编译和汇编部分以最终生成二进制指令流的编译器。通过解析神经网络的拓扑结构来构建与之对等的编译器内部计算图中间表示IR(IntermediateRepresentation)以及IR中的控制流和数据流信息,神经网络编译器基于IR施加各种编译优化和变换技术,在提高DPU计算性能的同时有效降低系统访存带宽和功耗需求。最终,经优化的IR被映射成汇编代码,直至最终的二进制代码。
在现有技术中,为了方便神经网络计算平台,例如计算平台上DPU进行高效计算,编译得到的神经网络二进制代码往往有着固定的执行顺序。即便在输入编译器的神经网络模型具有分支的情况下,编译得到的二进制代码(例如,DPU二进制代码)仍然会以规定的顺序串行执行。上述顺序串行执行的实现对神经网络算子、参数和指令的排布等有着极为严格的要求,不利于计算平台(优选地,异构计算平台)上编程、加载、运行一整套生态的建立和扩展。
为此,本发明提出了一种新的用于神经网络的编程方案,其通过在最终的神经网络二进制代码中保留图结构信息,提升编译模型的普适性和灵活性,并且能够支持运行时优化和可调试性,支持动态链接以及针对异构平台的整套运行生态的建立和扩展。
在对本发明原理进行详细描述之前,为了方便理解,先对神经网络、神经网络专用处理器、计算平台(包括异构计算平台)的相关概念进行说明。
常见的神经网络(NN)包括深度神经网络(DNN)、循环神经网络(RNN)与卷积神经网络(CNN)。CNN是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。以下将结合附图1尤其对卷积神经网络进行一定程度的背景说明。
CNN基本概念
如图1所示,典型的CNN由一系列有序运行的层组成。
CNN神经网络由输入层、输出层和多个隐藏层串联组成。CNN的第一层读取输入值,例如输入图像,并输出一系列的激活值(也可称为特征图)。下面的层读取由上一层产生的激活值,并输出新的激活值。最后一个分类器(classifier)输出该输入图像可能属于的每一类别的概率。
这些层大致可分为带权重的层(如卷积层、全连接层、批量归一化层等)和不带权重的层(如池化层、ReLU层、Softmax层等)。在这其中,CONV层(Convolutional layers,卷积层)以一系列特征图作为输入,并以卷积内核卷积获得输出激活值。池化层通常与CONV层相连,用于输出每个特征图中的每个分区(sub area)的最大值或平均值,由此通过亚采样降低计算量,同时保持某种程度的位移、尺度和形变不变性。一个CNN中可以包括卷积层和池化层之间的多个交替,由此逐步降低空间分辨率并增加特征映射的数量。随后可以连接至至少一个全连接层,通过应用于输入特征向量上的线性变换,得到包括多个特征值的一维向量输出。
总体来说,带权重的层的操作可以表示为:
Y=WX+b,
其中W为权重值,b为偏移量,X为输入激活值,Y为输出激活值。
不带权重的层的操作可以表示为:
Y=f(X),
其中f(X)为非线性函数。
在此,“权重”(weights)指代隐藏层中的参数,从广义上理解可以包括偏移量,是通过训练过程习得的数值,并且在推理时保持不变;激活值指代从输入层开始,每一层的输出由输入值和权重值通过运算得到,在各层之间传递的数值,也称为特征值。与权重值不同,激活值的分布会根据输入数据样本而动态变化。
在使用CNN进行推理(例如,图像分类)之前,首先需要对CNN进行训练。通过训练数据的大量导入,确定神经网络模型各层的参数,例如权重和偏移量。CNN的训练主要是在大型服务器上实现。对于嵌入式平台,例如包括FPGA的SoC平台,或是包括CPU和DPU的异构计算平台,则专注于加速和实现CNN的推理过程。
图2示出了为了加速CNN从处理流程和硬件架构的角度提出的整套技术方案。图2左侧显示了人工神经网络模型,即要优化的目标。在图2中间显示了如何通过去冗余来压缩、定点化、编译CNN模型,由此减少内存占用和操作数量,同时最大限度地减少精度损失。图2右侧显示了为压缩后的CNN提供的专用(小型化)硬件的一个例子。由于CNN进行的是并行计算,因此通过逻辑硬件,尤其是FPGA或ASIC来实现神经网络推理功能具有天然的计算优势,并且相比于软件执行,能够实现更低的功耗。在一个实施例中,可以使用包括CPU和DPU(神经网络专用处理器)的异构计算平台来实现对神经网络模型的高效计算,其中,可以使用CPU进行其更为擅长的逻辑和调度等工作,而使用DPU进行高并行度的卷积运算。
神经网络处理器的基本概念
由于卷积神经网络巨大的参数规模、庞大的计算量的特点,以及对于硬件平台稳定性和高计算能耗比的要求,常规的CPU已经无法满足神经网络的计算需求,利用FPGA、GPU、ASIC等异构计算平台,进行加速器设计成为新的研究热点。相较GPU平台,FPGA由于其低功耗特点能够获得更高的能量效率,同时FPGA可以快速迭代、可进行硬件重构的特性也更适应算法高速发展的要求。进一步地,AI芯片由定制的ASIC芯片实现,作为专为深度学习设计的处理器芯片,在运算速度、功耗、成本等方面针对深度神经网络进行了深度定制和优化,相比FPGA和GPU又有了进一步的提升。
本发明的编译器架构尤其适用于为了执行神经网络计算而被专门设计的神经网络专用处理器,或是包括了神经网络专用处理器和通用处理器的异构计算平台。本领域技术人员应当理解,本申请中所使用的术语“神经网络专用处理器”,也可简称为“神经网络处理器”或“NN处理器”。由于深度学习是神经网络技术中目前最为流行的一个技术分类,因此神经网络专用处理器可以被实现为深度学习专用处理器或深度学习处理器。但是,本领域技术人员应该明白,神经网络有各种技术分支,例如DNN和CNN(其中,DNN从深度角度,CNN从卷积角度命名,二者并不互斥),因此神经网络专用处理器也可以被实现为深度神经网络专用处理器或深度神经网络处理器(DNN处理器或CNN处理器)。也就是说,有关“深度学习处理器”或“深度神经网络处理器”在异构计算平台中的神经网络计算实现技术也在本发明的范围之内。
DPU(Deep-learning Processing Unit)是一款针对人工智能中神经网络算法的通用加速平台,其利用FPGA高并行度和低功耗的特点,实现基于卷积神经网络(以下简称CNN)进行推理。在这里,DPU可以认为是上文“深度学习处理器”或“深度神经网络处理器”或“神经网络处理器”的一个具体实现。经由本发明的编译器架构编译得到的二进制指令码可由FPGA实现的DPU执行,但本领域技术人员应该理解的是,本发明的编译器架构可以可扩展地适用于各种后端实现,诸如利用GPU的硬件结构针对其他神经网络进行推理的神经网络处理器,以及针对神经网络计算进行了深度定制和优化的ASIC芯片,例如专用的AI芯片。
本发明的神经网络编译方案
图3示出了根据本发明一个实施例的用于神经网络的编译方法。上述方法适于将经训练的神经网络模型在神经网络专用处理器或是包括上述神经网络专用处理器的异构计算平台上的部署。
在步骤S310,获取经训练的神经网络模型。在步骤S320,将经训练的NN模型输入NN编译器,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。优选地,NN编译器包括NN优化编译器和NN汇编器。由此,步骤S320可以包括:将经训练的NN模型输入所述NN优化编译器,以生成包括与所述NN模型相对应的图结构信息的NN汇编文件;以及将NN汇编文件输入所述NN汇编器,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。
由此,在最终编译而成的NN二进制文件中包含图结构信息,能够使得神经网络专用处理器在执行文件时获得足够的灵活性和普适性,从而方便进行运行时优化以及与基于其他神经网络模型的NN二进制文件的兼容。
在本发明中,NN编译器基于神经网络专用处理器的应用程序二进制接口(ABI)规则生成NN二进制文件。由此,生成的NN二进制文件作为ABI的载体,而具有符合所述ABI规则的文件格式。
在此,ABI(Application Binary Interface)指代应用程序二进制接口,描述了应用程序和操作系统之间、一个应用和它的库之间、或者应用的组成部分之间的接口。涵盖了各种细节,例如:数据类型的大小、布局和对齐;调用约定,参数传递方式,寄存器使用;目标文件的二进制格式、程序库等。
传统基于CPU的ABI结构,函数调用关系天然包含在指令中,一条跳转指令将调用者与被调用者关联,同时需要保存调用者栈帧。跳转及保存现场所带来的流水和访存开销不容小觑,这也是传统CPU架构不适合神经网络的原因之一。
为此,本发明针对神经网络专用处理器提出了一种全新的配套ABI模型,该模型充分考虑了GPU、FPGA或是ASIC实现的神经网络专用处理器的特性,对编译生成的NN二进制文件的文件格式,优选地对寄存器使用等做出了规定,以实现文件执行的高效性和兼容性。
由于神经网络算法是一种图结构,本发明的ABI模型可以通过使得NN二进制文件保有相应的图结构信息(例如,通过如下所述的Node-Pool段),能够维护节点间的拓扑结构、调用关系及参数对应关系,不需要跳转及保存现场,在提高性能的同时,还可以进行运行时的动态调度,增加了异构平台的通用性。
NN编译器基于本发明的ABI模型生成NN二进制文件可以包括使用NN优化编译器来生成符合ABI规定的NN汇编文件,再通过汇编器将生成的NN汇编文件编译成二进制目标文件。在此,NN优化编译器可以是为DPU编译优化指令流的DNNC,其可以将用户输入的神经网络算法,按照ABI模型的约定标准,生成汇编文件,其中包含了神经网络汇编指令、参数变量、网络节点间的拓扑关系等一系列ABI需要的信息。神经网络汇编器DNNAS(DeepNeuralNetwork ASsembler)用于将DNNC生成的汇编文件,编译成二进制目标文件,包含对各网络参数及指令对齐的处理。
图4示出了根据本发明一个实施例的用于神经网络的编译系统的编译示意图。本发明的神经网络编译器可以包括NN优化编译器和NN汇编器。NN优化编译器用于接收经训练的神经网络模型,以生成包括与所述NN模型相对应的图结构信息的NN汇编文件。NN汇编器则用于接收所述NN汇编文件,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。在一个实施例中,NN优化编译器可以是DNNC,NN汇编器可以是DNNAS。DNNC可以基于本发明的神经网络专用处理器的应用程序二进制接口(ABI)规则,生成所述NN汇编文件。优选地,DNNAS也可以基于上述ABI规则进行二进制文件的生成。最终,NN汇编器生成符合所述ABI规则的所述NN二进制文件。即,生成的NN二进制文件具有符合所述ABI规则的结构。
用于异构计算平台的编译方案
在一个实施例中,本发明的上述针对神经网络专用处理器的编译方案还可以进一步用于包括通用处理器(例如,CPU)的异构计算平台。
图5示出了根据本发明一个实施例的一种异构计算平台的编译方法。在步骤S510,可以执行如上基于图3及其优选实施例描述的方法生成包括图结构信息的NN二进制文件。在步骤S520,使用主机编译器工具链编译和汇编用户用高级语言开发的神经网络应用程序,依次生成相应的主机汇编文件和主机二进制文件,其中,所述NN二进制文件和所述主机二进制文件具有兼容的可执行格式。在此,主机可以是CPU,高级语言可以是C或C++语言,并且在一个实施例中,二进制文件是ELF二进制文件。优选地,可以使用主机链接器链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
图6示出了根据本发明一个优选实施例的用于异构计算平台的编译系统的编译示意图。如图所示,图6的上半部分类似于图4所示的结构,可以基于本发明的NN编译系统,该系统基于本发明的ABI规则生成包括图结构信息的DPU二进制文件,例如,优选可以是图6所示的ELF object格式的文件。下半部分则是用于主机可执行文件生成的结构,具体可以包括:主机编译器,用于编译用户用高级语言开发的神经网络应用程序,生成相应的主机汇编文件;以及主机汇编器,用于汇编主机汇编文件,生成主机二进制文件,例如优选可以是图6所示的ELF object格式的文件。由此,NN二进制文件和主机二进制文件具有兼容的可执行格式。
虽然生成的NN二进制文件和主机二进制文件可以保持彼此独立并在随后被分别加载,但是在图6所示的优选实施例中,编译系统还可以包括链接器,后者用于链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件,例如,图中示出的ELF可执行文件。
符合ABI规则的NN二进制文件结构
如上所述,基于本发明获取的NN二进制文件包括与输入编译器的神经网络模型相对应的图结构信息。换句话说,根据本发明的方案,不仅在编译系统的IR(中间表示)中保留图结构信息以进行编译优化,还在最终生成的NN二进制文件中保留了图结构信息,例如,图4示出的包括Node-Pool段的DPU指令码。如下将结合附图对NN二进制文件的具体结构进行描述。
在一个实施例中,NN二进制文件包括用于维护图结构各节点关系的节点资源池。不同于传统基于CPU的ABI结构,函数调用关系天然包含在指令中,一条跳转指令可以将调用者和被调用者相关联,在本发明的ABI模型中,采用集中部署的节点资源池来维护各节点之间的拓扑结构。集中部署的方式天然适用于具有图结构的神经网络模型,例如可以将神经网络的算子(operator)当作节点,而通过对节点的灵活定义来支持所有以节点或层级结构组织的神经网络算法,并且可以通过合理排布的分段来支持算子的各种算法,从而部对具体参数的类别(如CNN的权重、偏置等)、数量、维度等加以限制。进一步地,图结构信息使得运行时引擎能够在加载二进制文件时对图结构进行还原,从而能够支持运行时对网络的动态优化。
优选地,本发明的NN二进制文件还可以包括如下至少一项:用于描述执行所述NN二进制文件的神经网络计算平台相关信息的文件头;用于存放指令信息、参数数据信息、和/或特征图数据相关信息的分段;以及用于存放各分段相关符号的字符串名称的字符串表。
为此,由于对指令段和参数段等的排布没有特别限制,因此给予了编译器非常大的优化空间;通过在文件头对执行单元加以规定来保证一个执行单元(kernel)在内存中只有一份(在计算平台上的神经网络专用处理器包括多个执行单元的情况下),可以现对动态链接的支持;字符串表的引入则可通过能够在运行时动态转储(dump)各种信息来实现可调试性。最后,本发明可以支持计算平台(尤其是异构计算平台)上编程、加载、运行一整套生态并能对其进行扩展。
在一个实施例中,NN二进制文件可以是在DPU上执行的可执行程序,即,DPU二进制文件。DPU二进制文件的文件格式可以作为本发明ABI模型的核心载体。表1示出了符合ABI规定的DPU二进制文件的一个文件格式例。
Metadata |
Node Pool |
String table |
Section 1 |
Section 2 |
… |
Section N |
表1:DPU二进制文件结构图
Metadata(元数据):在与主机二进制文件进行混合编译的情况下,保存当前kernel的信息,其他kernel的信息则保持在混合文件中的后续部分,在加载时可以对各kernel一并进行加载来实现动态调度;在不进行混合编译的情况下,则使用一个总的metadata描述各kernel的排布情况。
Node Pool(节点池):所有Node节点的资源池,通过它可以查找到一个Node节点关联的所有信息,例如:code section(代码分段)、parameter section(参数分段)、tensorsection(张量分段)、前驱节点、后继节点等。关于Node Pool的结构会在下文中详述。
Section 1..N(分段1…N):在此可以包括三种类型的分段:code section、parameter section、tensor section。其中代码分段存放各Node的指令信息;参数分段存放各Node对应的参数信息;张量分段存放I/O(输入/输出)张量数据相关的属性信息。张量指的是在各节点操作中流动的特征图数据。在此,不同于参数分段存储参数信息本身(例如,权重和偏置信息),张量相关数据并非存储特征图数据本身(因为特征图数据是需要在推理阶段输入的),而只是其相关的属性信息。本发明的ABI对以上分段类型在文件及内存中的排布无特殊限制,便于编译器随意实现优化。
String table(字符串表):存放各段相关符号的字符串名称,可以支持运行时调试功能。
在一个实施例中,节点资源池(例如,表1中的Node-Pool段)可以包括顺序编号的多个节点项,每个节点项包括用于存放其关联节点信息的索引子项。优选地,节点项可以还包括如下至少一项:参数信息项、代码信息项、输入特征图数据信息项、以及输出特征图数据信息项。这些信息项的引入能够帮助实现动态调度以进行自动化部署。
由此,针对神经网络算法的图结构,通过Node-Pool段,维护节点间的拓扑结构、调用关系及参数对应关系,避免传统ABI中函数调用所需要的跳转及保存现场开销,可以在提高性能的同时进行运行时的动态调度,增加异构平台的通用性。Node Pool是为了维护(经编译优化后的)节点间拓扑结构而特别设计的。表2示出了节点资源池的一个文件格式例。
Node count |
Node 1 |
Node 2 |
… |
Node N |
表2:Node-Pool段的结构图
其中Node count(节点计数)表示Node Pool中总共包含多少个Node,以方便对整体图结构的把握。
各节点具体结构则可如表3所示。
Topo info |
Parameter info |
Code info |
Input info |
Output info |
表3:节点结构图
Topo info(前后节点信息):存放当前Node的前驱及后继节点。通过对神经网络拓扑信息的保存,可以实现网络算法的动态调度及优化。Topo info结构如下表4所示:
Pre-count |
Pre index 1 |
… |
Pre index N |
Succ-count |
Succ index 1 |
… |
Succ index N |
表4:Topo Info结构图
其中,Pre-count(Succ-count)(前驱/后续节点计数):表示该Node有多少个前驱(后继)节点。Pre(Succ)index i(前驱/后续节点索引值):第i个前驱(后继)节点在NodePool中的索引值。
Parameter info(参数信息):包含该Node所关联的所有参数段的信息,具体结构如下表5所示:
Param section count |
Section 1info |
… |
Section N info |
表5:Parameter Info结构图
其中,Param section count(参数段计数):指定了该节点所关联的参数段的个数,该值若为N,则后续就跟着N个分段信息。Section info(分段信息):与该Node关联的一个参数段的偏移量(例如,相对于文件)和尺寸等,可以在此段内包括表征一个参数段需要的所有信息。
Code info(代码信息):记录与该节点关联的所有相关指令信息。结构类似Parameter info,可以在此段内包括表征一个代码段需要的所有信息。
Input info(输入信息):记录与该节点关联的所有输入张量(输入特征图数据)段的相关信息。结构类似Parameter info,可以在此段内包括表征一个输入特征图数据段需要的所有信息。
Output info(输出信息):记录的是与该节点关联的所有输出张量(输出特征图数据)段的相关信息。结构类似Parameter info,可以在此段内包括表征一个输出特征图数据段需要的所有信息。
如上已经结合图3-6以及表1-5描述了根据本发明的神经网络编译方法、系统以及基于上述方案获取的遵循神经网络专用处理器的ABI规范的NN二进制文件及其具体结构例。
在获取了上述NN二进制文件之后,本发明还可以包括一种神经网络计算平台处理方法,即,包括神经网络专用处理器的平台可以加载本发明的NN二进制文件,并且可以对其进行运行时优化,其中,运行时优化至少部分基于所述图结构信息进行。
在另一个实施例中,计算平台,更具体地,计算平台所包括的神经网络专用处理器可以包括多个执行单元(kernel),并且所述NN二进制文件包括用于描述执行所述NN二进制文件的相关执行单元信息的文件头(例如,上文提及的metadata)。由此,本发明的神经网络平台处理方法还可以包括:执行单元基于所述文件头包含的相关执行单元信息执行所述NN二进制文件。即,可以基于DPU二进制文件的文件头所包含的内核信息来优化其在DPU各个内核之间的计算分配。
更进一步地,上述计算平台可以是包括主机(例如,CPU)和神经网络专用处理器(例如,DPU)的异构计算平台。为了执行如上例如基于图6得到的ELF可执行文件,该异构计算平台可以包括:主机加载器,用于将如上获取的主机二进制文件中的相关指令和数据加载到主机内存空间;神经网络专用处理器运行时引擎,用于对如上获取的NN二进制文件进行优化,所述运行时优化至少部分基于所述图结构信息进行;神经网络专用处理器加载器,用于将经运行时优化的所述NN二进制文件的相关指令和数据加载到神经网络专用处理器内存空间;主机,用于执行基于所述主机二进制文件中的相关指令和数据进行操作;以及神经网络专用处理器,用于执行基于所述NN二进制文件中的相关指令和数据进行NN加速计算。
在异构计算平台上,神经网络专用处理器运行时引擎对NN二进制文件的优化还可以考虑主机操作一并进行。例如,DPU运行时引擎可以利用Node-Pool段重建图结构并进行优化,例如,实现DPU与CPU的各种并行操作等。
本发明的ABI模型还可以用于对寄存器使用进行规范。在神经网络程序运行过程中,需要访存的信息包括:指令(位于code section)、参数(位于parameter section)、IO数据(例如输入图片、后续的特征图数据等,位于tensor section)等。寄存器的使用可以方便对上述数据的寻址。针对神经网络的专用平台指令设计粒度通常较大。于是在一些实施例中,一条或一组简单的指令可能对应了神经网络的一层甚至几层处理节点。因此在寄存器分配时,可以考虑各段基地址的分配,并使用寄存器具体化某一节点的访存操作。例如,可以采用相对寻址的方式进行方寸访存。假设有R0~R15这16个寄存器,可以用R0存放codesection i基地址、R1存放parameter section i基地址、R2存放Input i(存在多IO)基地址。对于具体的寄存器分配算法,可以根据调度随意设计,ABI可以不对其做出特别限制。
另外,应该明了的是,异构计算平台还可以包括其他部件,例如,主机架构部分也可以包括相应的运行时引擎,以针对主机二进制文件进行相应操作,对此本发明不做限定。
针对面向神经网络的异构计算平台,本发明综合考虑了从神经网络到专用架构平台的软硬件特点,提供一种全新的配套ABI。本发明的ABI模型尤其可以体现为符合其规定的NN二进制文件,上述文件可以包括规定了执行单元的文件头,节点资源池以及各个分段(例如,代码、参数、特征图属性),由此,使得本发明的实现方案具备以下优点:
普适性:通过把神经网络的算子(operator)当作一个节点,本发明能够支持所有以节点或层级结构组织的神经网络算法,没有特别的限制,具有很好的普适性。
灵活性:能够支持算子的各种算法,对具体的参数类别(如CNN的weight、bias)、数量、维度等没有特别限制。
编译友好:对编译器非常友好,对指令段、参数段等的排布没有特别限制,给编译器提供了极大的编译优化空间。
运行时优化:能够支持运行时对网络的动态优化。
可调试性:所有信息都可以通过符号表在运行时动态转储各种信息给用户调试。
支持动态链接:能够保证一个执行单元在内存中只有一份。
支持异构平台:本发明可以支持异构计算平台上的编程、加载、运行一整套生态。
从开发、编译到部署和运行,本发明的典型(优选)工作流程如下所示:
步骤1.用户通过调用神经网络专用处理器开发库的C/C++API编程接口来部署其神经网络模型,实现神经网络专用处理器内核的初始化操作和运行时的各种控制,例如dpuOpen(),dpuClose(),dpuCreateKernel(),dpuDestroyKernel(),dpuRunKernel()等。其中的“dpu”在此表示神经网络专用处理器。
步骤2.输入训练后的神经网络模型给NN优化编译器,生成与网络对应的NN汇编文件。
步骤3.输入NN汇编文件给NN汇编器,生成与网络对应的ELF二进制文件,该ELF二进制文件中通过Node Pool段保存了各节点间的拓扑信息、节点与指令参数等各段的关联关系。
步骤4.使用主机编译器工具链编译用户开发的C/C++神经网络应用程序,生成相应的主机汇编文件和主机ELF二进制文件。
步骤5.使用主机链接器链接神经网络专用处理器和主机的所有ELF二进制文件,生成单一的混合链接ELF可执行文件。
步骤6.编译完生成的单一混合链接ELF可执行文件包含了主机和神经网络专用处理器运行所需的全部信息,执行方式与普通的主机ELF可执行文件完全一样,可实现一键式部署。
步骤7.启动混合链接ELF可执行文件,ELF中主机的代码段和数据段会被操作系统的标准加载器加载到主机的内存空间;ELF中神经网络专用处理器的代码段和数据段由神经网络专用处理器加载器负责加载到神经网络专用处理器的内存空间(其中神经网络专用处理器的内存空间由神经网络专用处理器驱动程序管理)。在加载过程中,运行时引擎可以基于Node Pool段的信息进行运行时优化。
步骤8.主机代码段中的指令和神经网络专用处理器代码段中的指令按照优化结果执行,并且可以使用专用寄存器存储特定分段地址。计算和数据密集的神经网络算法可以以神经网络专用处理器内核的形态被主机卸载(offload)至神经网络专用处理器上加速运行。通过Node Pool段的信息实现神经网络图结构重建,动态调度等,实现神经网络更加高效地运行、并且可以实现自动化部署简化用户的操作流程。
应该理解的是,本发明的神经网络专用处理器的ABI模型影响了如上从编译、汇编、链接、生成的二进制文件、加载、到运行的整个流程。
上文中已经参考附图详细描述了根据本发明的用于神经网络的编译方法和系统,及其相应的异构平台实现。本发明通过在NN二进制文件中包含图结构信息,实现了在代码在加载运行时的优化,由此进一步提升代码执行效率。上述图结构信息可以实现为符合专用ABI模型的文件结构,例如可以保存为节点资源池,并且可以包括各类自由设置的分段类型,由此实现对各类不同结构后包含不同参数类别的神经网络算法的支持,并为编译器提供了极大的优化空间。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (23)
1.一种用于神经网络(NN)的编译方法,包括:
获取经训练的NN模型;
将经训练的NN模型输入NN编译器,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。
2.如权利要求1所述的方法,其中,所述NN编译器包括NN优化编译器和NN汇编器,并且将经训练的NN模型输入NN编译器,以生成包括与所述NN模型相对应的图结构信息的NN汇编文件包括:
将经训练的NN模型输入所述NN优化编译器,以生成包括与所述NN模型相对应的图结构信息的NN汇编文件;以及
将NN汇编文件输入所述NN汇编器,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。
3.如权利要求2所述的方法,其中,所述NN优化编译器基于神经网络专用处理器的应用程序二进制接口(ABI)规则,生成所述NN汇编文件。
4.如权利要求3所述的方法,其中,所述NN二进制文件具有符合所述ABI规则的文件格式。
5.如权利要求1所述的方法,其中,所述NN二进制文件包括用于维护图结构各节点关系的节点资源池。
6.如权利要求5所述的方法,其中,所述节点资源池包括顺序编号的多个节点项,每个节点项包括用于存放其关联节点信息的索引子项。
7.如权利要求6所述的方法,其中,所述节点项还包括如下至少一项:
参数信息项、代码信息项、输入特征图数据信息项、以及输出特征图数据信息项。
8.如权利要求5所述的方法,其中,所述NN二进制文件还包括如下至少一项:
用于描述执行所述NN二进制文件的神经网络计算平台相关信息的文件头;
用于存放指令信息、参数数据信息、和/或特征图数据相关信息的分段;以及
用于存放各分段相关符号的字符串名称的字符串表。
9.一种神经网络计算平台处理方法,包括:
对根据权利要求1-8中任一项生成的NN二进制文件进行运行时优化,其中,所述运行时优化至少部分基于所述图结构信息进行。
10.如权利要求9所述的方法,其中,所述计算平台包括多个执行单元,并且所述NN二进制文件包括用于描述执行所述NN二进制文件的相关执行单元信息的文件头,
所述方法还包括:
所述执行单元基于所述文件头包含的相关执行单元信息执行所述NN二进制文件。
11.一种异构计算平台的编译方法,包括:
执行根据权利要求1-8中任一项所述的方法以生成所述NN二进制文件;
使用主机编译器工具链编译和汇编用户用高级语言开发的神经网络应用程序,依次生成相应的主机汇编文件和主机二进制文件,
其中,所述NN二进制文件和所述主机二进制文件具有兼容的可执行格式。
12.如权利要求11所述的方法,还包括:
使用主机链接器链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
13.如权利要求11所述的方法,其中,所述二进制文件是ELF二进制文件。
14.一种用于神经网络(NN)的编译系统,包括:
NN优化编译器,用于接收经训练的NN模型,以生成包括与所述NN模型相对应的图结构信息的NN汇编文件;以及
NN汇编器,用于接收所述NN汇编文件,以生成包括与所述NN模型相对应的图结构信息的NN二进制文件。
15.如权利要求14所述的系统,其中,所述NN优化编译器基于神经网络专用处理器的应用程序二进制接口(ABI)规则,生成所述NN汇编文件。
16.如权利要求15所述的系统,其中,所述NN汇编器生成符合所述ABI规则的所述NN二进制文件。
17.如权利要求14所述的系统,其中,所述NN二进制文件包括用于维护图结构各节点关系的节点资源池。
18.如权利要求17所述的系统,其中,所述节点资源池包括顺序编号的多个节点项,每个节点项包括用于存放其关联节点信息的索引子项,并且所述节点项还包括如下至少一项:
参数信息项、代码信息项、输入特征图数据信息项、以及输出特征图数据信息项。
19.如权利要求18所述的系统,其中,所述NN二进制文件还包括如下至少一项:
用于描述执行所述NN二进制文件的神经网络计算平台相关信息的文件头;
用于存放指令信息、参数数据信息、和/或特征图数据相关信息的分段;以及
用于存放各分段相关符号的字符串名称的字符串表。
20.一种异构计算平台的编译系统,包括:
如权利要求14-19中任一项所述的编译系统;
主机编译器,用于编译用户用高级语言开发的神经网络应用程序,生成相应的主机汇编文件;以及
主机汇编器,用于汇编主机汇编文件,生成主机二进制文件,
其中,所述NN二进制文件和所述主机二进制文件具有兼容的可执行格式。
21.如权利要求20所述的系统,还包括:
主机链接器,用于链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
22.一种异构计算平台,包括:
主机加载器,用于将如权利要求20或21所述的主机二进制文件中的相关指令和数据加载到主机内存空间;
神经网络专用处理器运行时引擎,用于对如权利要求20或21所述的NN二进制文件进行运行时优化,所述运行时优化至少部分基于所述图结构信息进行;
神经网络专用处理器加载器,用于将经运行时优化的所述NN二进制文件的相关指令和数据加载到神经网络专用处理器内存空间;
主机,用于执行基于所述主机二进制文件中的相关指令和数据进行操作;以及
神经网络专用处理器,用于执行基于所述NN二进制文件中的相关指令和数据进行NN加速计算。
23.如权利要求22所述的平台,还包括:
多个专用寄存器,各自用于寄存指定所述NN二进制文件中针对特定节点的分段信息的加载地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811271212.8A CN111104120B (zh) | 2018-10-29 | 2018-10-29 | 神经网络编译方法、系统及相应异构计算平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811271212.8A CN111104120B (zh) | 2018-10-29 | 2018-10-29 | 神经网络编译方法、系统及相应异构计算平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104120A true CN111104120A (zh) | 2020-05-05 |
CN111104120B CN111104120B (zh) | 2023-12-22 |
Family
ID=70419937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811271212.8A Active CN111104120B (zh) | 2018-10-29 | 2018-10-29 | 神经网络编译方法、系统及相应异构计算平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111104120B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831285A (zh) * | 2020-06-23 | 2020-10-27 | 西安电子科技大学 | 一种面向内存计算平台的代码转换方法、系统及应用 |
CN111915016A (zh) * | 2020-07-10 | 2020-11-10 | 深圳云天励飞技术有限公司 | 一种基于tvm编译器的异构平台的部署方法及装置 |
CN112989339A (zh) * | 2021-02-24 | 2021-06-18 | 西安理工大学 | 一种基于机器学习的gcc编译器恶意代码入侵检测方法 |
CN113902112A (zh) * | 2021-12-10 | 2022-01-07 | 深圳鲲云信息科技有限公司 | 硬件计算模拟方法、系统及计算机可读存储介质 |
CN114186678A (zh) * | 2021-12-10 | 2022-03-15 | 北京百度网讯科技有限公司 | 基于深度学习的硬件适配装置和方法 |
WO2022078400A1 (zh) * | 2020-10-16 | 2022-04-21 | 中科寒武纪科技股份有限公司 | 一种对多维数据进行处理的设备、方法和计算机程序产品 |
CN115392443A (zh) * | 2022-10-27 | 2022-11-25 | 之江实验室 | 类脑计算机操作系统的脉冲神经网络应用表示方法及装置 |
CN115981666A (zh) * | 2023-03-21 | 2023-04-18 | 北京探境科技有限公司 | 神经网络信息整合方法、装置、系统及存储介质 |
US12112265B2 (en) | 2020-12-18 | 2024-10-08 | Analog Devices International Unlimited Company | Architecture for running convolutional networks on memory and mips constrained embedded devices |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104620236A (zh) * | 2012-03-15 | 2015-05-13 | 美国高通技术公司 | 用于神经网络的基于标记的装置和方法 |
CN107016175A (zh) * | 2017-03-23 | 2017-08-04 | 中国科学院计算技术研究所 | 适用神经网络处理器的自动化设计方法、装置及优化方法 |
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
WO2018058426A1 (zh) * | 2016-09-29 | 2018-04-05 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统 |
CN107958285A (zh) * | 2017-11-21 | 2018-04-24 | 深圳普思英察科技有限公司 | 面向嵌入式系统的神经网络的映射方法及装置 |
US20180136912A1 (en) * | 2016-11-17 | 2018-05-17 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
-
2018
- 2018-10-29 CN CN201811271212.8A patent/CN111104120B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104620236A (zh) * | 2012-03-15 | 2015-05-13 | 美国高通技术公司 | 用于神经网络的基于标记的装置和方法 |
WO2018058426A1 (zh) * | 2016-09-29 | 2018-04-05 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统 |
US20180136912A1 (en) * | 2016-11-17 | 2018-05-17 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
CN107016175A (zh) * | 2017-03-23 | 2017-08-04 | 中国科学院计算技术研究所 | 适用神经网络处理器的自动化设计方法、装置及优化方法 |
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
CN107958285A (zh) * | 2017-11-21 | 2018-04-24 | 深圳普思英察科技有限公司 | 面向嵌入式系统的神经网络的映射方法及装置 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831285A (zh) * | 2020-06-23 | 2020-10-27 | 西安电子科技大学 | 一种面向内存计算平台的代码转换方法、系统及应用 |
CN111831285B (zh) * | 2020-06-23 | 2023-03-14 | 西安电子科技大学 | 一种面向内存计算平台的代码转换方法、系统及应用 |
CN111915016B (zh) * | 2020-07-10 | 2022-03-25 | 深圳云天励飞技术股份有限公司 | 一种基于tvm编译器的异构平台的部署方法及装置 |
WO2022007468A1 (zh) * | 2020-07-10 | 2022-01-13 | 深圳云天励飞技术股份有限公司 | 一种基于 tvm 编译器的异构平台的部署方法、装置及终端设备 |
CN111915016A (zh) * | 2020-07-10 | 2020-11-10 | 深圳云天励飞技术有限公司 | 一种基于tvm编译器的异构平台的部署方法及装置 |
WO2022078400A1 (zh) * | 2020-10-16 | 2022-04-21 | 中科寒武纪科技股份有限公司 | 一种对多维数据进行处理的设备、方法和计算机程序产品 |
US12112265B2 (en) | 2020-12-18 | 2024-10-08 | Analog Devices International Unlimited Company | Architecture for running convolutional networks on memory and mips constrained embedded devices |
CN112989339A (zh) * | 2021-02-24 | 2021-06-18 | 西安理工大学 | 一种基于机器学习的gcc编译器恶意代码入侵检测方法 |
CN112989339B (zh) * | 2021-02-24 | 2023-05-02 | 西安理工大学 | 一种基于机器学习的gcc编译器恶意代码入侵检测方法 |
CN113902112A (zh) * | 2021-12-10 | 2022-01-07 | 深圳鲲云信息科技有限公司 | 硬件计算模拟方法、系统及计算机可读存储介质 |
CN114186678A (zh) * | 2021-12-10 | 2022-03-15 | 北京百度网讯科技有限公司 | 基于深度学习的硬件适配装置和方法 |
CN115392443A (zh) * | 2022-10-27 | 2022-11-25 | 之江实验室 | 类脑计算机操作系统的脉冲神经网络应用表示方法及装置 |
CN115981666A (zh) * | 2023-03-21 | 2023-04-18 | 北京探境科技有限公司 | 神经网络信息整合方法、装置、系统及存储介质 |
CN115981666B (zh) * | 2023-03-21 | 2023-07-21 | 北京探境科技有限公司 | 神经网络信息整合方法、装置、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111104120B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111104120B (zh) | 神经网络编译方法、系统及相应异构计算平台 | |
US10157045B2 (en) | Systems and methods for automatically generating code for deep learning systems | |
CN110766147B (zh) | 神经网络编译器架构及编译方法 | |
CN110764744B (zh) | 用于神经网络计算的中间表示生成方法和装置 | |
US11093225B2 (en) | High parallelism computing system and instruction scheduling method thereof | |
WO2021000970A1 (zh) | 深度学习算法的编译方法、装置及相关产品 | |
JP3299611B2 (ja) | 資源割付装置 | |
CN110659069B (zh) | 用于执行神经网络计算的指令调度方法及相应计算系统 | |
CN111753948A (zh) | 模型处理方法及相关设备 | |
Anderson et al. | Optimal DNN primitive selection with partitioned boolean quadratic programming | |
WO2021000971A1 (zh) | 操作数据的生成方法、装置及相关产品 | |
EP3403221A1 (en) | Systems and methods for automatically generating code for deep learning systems | |
US20210295158A1 (en) | End-to-end optimization | |
Bo et al. | Automata processing in reconfigurable architectures: In-the-cloud deployment, cross-platform evaluation, and fast symbol-only reconfiguration | |
CN111831285A (zh) | 一种面向内存计算平台的代码转换方法、系统及应用 | |
Ye et al. | HIDA: A Hierarchical Dataflow Compiler for High-Level Synthesis | |
Grąbczewski et al. | Saving time and memory in computational intelligence system with machine unification and task spooling | |
CN113688982A (zh) | 处理单元、相关装置和方法 | |
CN111783985A (zh) | 信息处理、模型处理方法及装置、设备、介质 | |
Wah | New computers for artificial intelligence processing | |
WO2023030507A1 (zh) | 编译优化方法、装置、计算机设备以及存储介质 | |
CN116048521A (zh) | 一种多阵列粗粒度可重构架构的多层级并行性开发方法 | |
Doberkat et al. | ProSet—a language for prototyping with sets | |
Chang et al. | Support NNEF execution model for NNAPI | |
CN114127681A (zh) | 用于实现数据流ai应用的自主加速的方法和装置 |
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 |