CN113065639A - 算子融合方法、系统、设备及存储介质 - Google Patents
算子融合方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN113065639A CN113065639A CN202110250443.6A CN202110250443A CN113065639A CN 113065639 A CN113065639 A CN 113065639A CN 202110250443 A CN202110250443 A CN 202110250443A CN 113065639 A CN113065639 A CN 113065639A
- Authority
- CN
- China
- Prior art keywords
- operator
- fusion
- realized
- operators
- computing unit
- 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
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Advance Control (AREA)
Abstract
本申请涉及一种算子融合方法、系统、设备及存储介质。所述方法包括:获取计算图结构;根据目标硬件对所述计算图结构中的算子的实现方式,将所述计算图结构中的算子划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合;将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层;将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层。上述算子融合方法、系统、设备及存储介质减少了数据往片外存储和片内存储的搬运,加速了模型在芯片上的处理速度。
Description
技术领域
本申请涉及算子融合技术领域,特别是涉及一种算子融合方法、系统、设备及存储介质。
背景技术
在深度学习领域,训练模型以及对模型进行推理时,都需要强大的计算力。因此对模型的计算效率往往决定了模型能否被成功实施。因此模型的计算往往需要进行各种优化,以提高其计算效率。
TVM(Tensor Virtual Machine,张量虚拟机器)是一个支持GPU、CPU、FPGA指令生成的开源编译器框架。TVM最大的特点是基于图和算符结构来优化指令生成,最大化硬件执行效率。TVM集成了量化,在深度学习推理时提高效率。它向上对接Tensorflow、Pytorch、Caffe等深度学习框架,向下兼容GPU、CPU、ARM、TPU等硬件设备。TVM使用Relay将深度学习模型构建为计算(数据流)图。
但是,TVM没有针对特定硬件架构下的片内存储和片外存储之间的数据搬运导致的存储效率进行优化。
发明内容
基于此,有必要针对TVM没有针对特定硬件架构下的片内存储和片外存储之间的数据搬运导致的存储效率进行优化的问题,提供一种算子融合方法、系统、设备及存储介质。
为了实现本申请的目的,本申请采用如下技术方案:
一种算子融合方法,包括:
获取计算图结构;
根据目标硬件对所述计算图结构中的算子的实现方式,将所述计算图结构中的算子划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合;
将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层;
将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层。
一种算子融合系统,包括:
计算图结构获取模块,用于获取计算图结构;
划分模块,用于根据目标硬件对所述计算图结构中的算子的实现方式,将所述计算图结构中的算子划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合;
计算单元算子融合模块,用于将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层;
最终算子融合模块,用于将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层。
一种算子融合设备,包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的算子融合程序,所述算子融合程序被所述处理器执行时实现如上所述的算子融合方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有算子融合程序,所述算子融合程序被处理器执行时实现如上所述的算子融合方法的步骤。
上述算子融合方法、系统以及计算机可读存储介质,通过处理得到计算单元实现的算子的融合层和直接内存访问装置实现的算子的融合层形成新的计算图结构,可以用于芯片开发环境中进行汇编开发,来实现模型在芯片上的落地。融合的多个算子对应的运算可以在计算单元中计算完成后,再集中搬运到存储单元中。对比没有融合的算子组成的计算图,融合后的算子组成新的计算图结构减少了数据往片外存储和片内存储的搬运,加速了模型在芯片上的处理速度。
附图说明
图1为本申请实施例方案涉及的硬件运行环境的算子融合设备结构示意图;
图2a为一实施例的算子融合方法流程图;
图2b和图2c为计算图的示意图;
图3a为图2a中步骤S204的具体实现流程图;
图3b为目标硬件中的部分结构图;
图4a为图2a中步骤S206的具体实现流程图;
图4b为NCHW的输出方式示意图;
图4c为由多个tvm算子形成一个融合层的示意图;
图5为图2a中步骤S208的具体实现流程图;
图6为一实施例的算子融合系统模块图。
具体实施方式
为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的首选实施例。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本申请的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
图1是本申请实施例方案涉及的硬件运行环境的算子融合设备100结构示意图。
本申请实施例的算子融合设备,可以是例如服务器、个人计算机,智能手机、平板电脑、便携计算机等。只要其具备一定的通用数据处理能力即可。
如图1所示,所述算子融合设备100包括:存储器104、处理器102及网络接口106。
处理器102在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器104中存储的程序代码或处理数据,例如执行算子融合程序等。
存储器104至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器104在一些实施例中可以是算子融合设备100的内部存储单元,例如该算子融合设备100的硬盘。存储器104在另一些实施例中也可以是算子融合设备100的外部存储设备,例如该算子融合设备100上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
进一步地,存储器104还可以包括算子融合设备100的内部存储单元。存储器104不仅可以用于存储安装于算子融合设备100的应用软件及各类数据,例如人脸识别模型训练的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
网络接口106可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该算子融合设备100与其他电子设备之间建立通信连接。
网络可以为互联网、云网络、无线保真(Wi-Fi)网络、个人网(PAN)、局域网(LAN)和/或城域网(MAN)。网络环境中的各种设备可以被配置为根据各种有线和无线通信协议连接到通信网络。这样的有线和无线通信协议的例子可以包括但不限于以下中的至少一个:传输控制协议和互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、文件传输协议(FTP)、ZigBee、EDGE、IEEE802.11、光保真(Li-Fi)、802.16、IEEE 802.11s、IEEE802.11g、多跳通信、无线接入点(AP)、设备对设备通信、蜂窝通信协议和/或蓝牙(BlueTooth)通信协议或其组合。
图1仅示出了具有组件102-106的算子融合设备100,本领域技术人员可以理解的是,图1示出的结构并不构成对算子融合设备100的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
图2a为一实施例的算子融合方法流程图。所述方法可以包括:
步骤S202:获取计算图结构。
计算图被定义为有向图,其中节点对应于数学运算,节点之间的连线为数学运算的输入或计算结果。例如p=x+y可以表示为如图2b所示的计算图,加法运算为圆圈表示的节点,其具有输入x、y,输出p。再例如g=(x+y)*z可以表示为如图2c所示的计算图,加法运算和乘法运算为圆圈表示的节点,加法运算具有输入x、y,输出p,同时加法运算的结果p作为乘法运算的其中一个输入,再与另一个输入z进行乘法运算,得到结果g。
在本申请中,计算图为开源编译器框架TVM Relay计算图。TVM Relay可以将Tensorflow、Pytorch、Caffe等深度学习框架的模型转换为TVM Relay计算图。基于该TVMRelay计算图可以进一步进行硬件设计。计算图结构则是将所述TVM Relay计算图转换成芯片开发使用的,并且一般以文件形式存储的数据,用于进行硬件设计。
步骤S204:根据目标硬件对所述计算图结构中的算子的实现方式,将所述计算图结构中的算子划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合。
目标硬件可以包括GPU、CPU、FPGA等。
直接内存访问(Direct Memory Access,DMA)是一种数据访问机制,一些计算机总线架构提供该功能,它能使数据从外部存储器(如磁盘驱动器)直接发送到计算机的内存中,而不需要依赖于CPU的大量中断。
根据算子是否依赖于DMA,可以将算子进行初步的划分,分别划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合。其中,所述进行初步的划分可以包括:首先形成所有算子的副本,然后形成直接内存访问装置实现的算子集合和计算单元实现的算子集合数据;或者,所述进行初步的划分可以包括:将所有算子进行标记,表示算子为直接内存访问装置实现的算子或计算单元实现的算子,从而使算子属于直接内存访问装置实现的算子集合和计算单元实现的算子集合。对算子的副本进行操作可以避免因操作失误带来的原始数据污染的风险,对算子本身进行操作对比对副本进行操作则可以节省数据的存储空间。
步骤S206:将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层。
将所述计算单元实现的算子集合中的可以相互融合的算子分别进行融合,得到多个融合层。计算单元实现的算子也可能属于多种不同的计算类型,例如多维向量运算或其他复杂的运算。根据计算单元实现的算子所属的计算类型,分别进行不同的融合。融合得到的结果为融合层。
步骤S208:将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层。
将所述直接内存访问装置实现的算子集合中的可以相互融合的算子分别进行融合,得到多个融合层。直接内存访问装置实现的算子也可能属于多种不同的计算类型,例如常数点对点运算。根据直接内存访问装置实现的算子所属的计算类型,分别进行不同的融合。融合得到的结果为融合层。
需要说明的是,所述步骤S206:将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层在所述步骤S208:将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层之前。即先进行所述计算单元实现的算子的融合,然后将计算单元实现的算子的融合层和直接内存访问装置实现的算子作为输入,再进行直接内存访问装置实现的算子的融合。最后得到最终的算子融合层。
该最终的算子融合层形成新的计算图结构,可以用于芯片开发环境中进行汇编开发,来实现模型在芯片上的落地。
融合的多个算子对应的运算可以在计算单元中计算完成后,再搬运到存储单元中。对比没有融合的算子组成的计算图,融合后的算子组成新的计算图结构减少了数据往片外存储和片内存储的搬运,加速了模型在芯片上的处理速度。
在一个实施例中,如图3a所示,所述步骤S204:根据目标硬件对所述计算图结构中的算子的实现方式,将所述计算图结构中的算子划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合,可以包括:
步骤S302:获取目标硬件中各计算单元实现的算子类型。
目标硬件可以包括GPU、CPU、FPGA等。
目标硬件中,各种非直接内存访问装置实现的算子可以由与直接内存访问装置连接的计算单元实现,例如加法运算、移位运算、指数运算等。参考图3b,idma0与计算单元0连接,将算子从idma0中读取出来,计算完成后输出到odma0;idma1与计算单元1连接,将算子从idma1中读取出来,计算完成后输出到odma1;idma2与计算单元2连接,将算子从idma2中读取出来,计算完成后输出到odma2;……。
本步骤即获得计算单元0、计算单元1、计算单元2……等能够实现的算子类型。
步骤S304:若所述计算图结构中的算子属于被所述目标硬件中任一计算单元实现的算子类型,则划分到计算单元实现的算子集合中。
如果算子能在计算单元0实现,将算子划分为计算单元0实现算子;如果算子能在计算单元1实现,将算子划分为计算单元1实现算子;以此类推。
步骤S306:若所述计算图结构中的算子被所述目标硬件中任一计算单元对应的直接内存访问装置实现,则划分到直接内存访问装置实现的算子集合中。
如果算子能在idma0、idma1或idma2等idma中实现,则将算子划分为直接内存访问装置实现的算子,划分到直接内存访问装置实现的算子集合中。
上述步骤以目标硬件计算单元实现的算子类型为标准筛选直接内存访问装置实现的算子和计算单元实现的算子。划分结果直接与目标硬件的实现方式相关,以该划分结果进行的融合处理能够最大程度利用目标硬件的计算能力,从而提高计算效率。
在一个实施例中,如图4a所示,所述步骤S206:将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层,可以包括:
步骤S402:根据目标硬件对所述计算图结构中的算子的硬件实现方式或汇编方式确定算子输出数据的方式。
算子输出数据的方式即维度的排列顺序。常见的输出数据的维度为NCHW、NHWC等。其中N表示批处理(batch)的数量,即训练过程中一次输入多少数据进行训练;C表示通道数量,例如初始输入图像一般为RGB三通道;H表示输入图像的高度,以像素数量表示,W表示输入图像的宽度,以像素数量表示。如果输出数据的方式为NCHW,则表示输出顺序为W、H、C、N。即按照一行一行的方式输出一个通道的数据,再按照一行一行的方式输出下一个通道的数据,直到一个输入图像的数据全部输出;再按照上述方式输出下一个输入图的数据。参考图4b,即为NCHW的输出方式示意图。
本步骤即确定数据在目标硬件中以哪种方式输出。目标硬件对算子的硬件实现方式或者汇编方式决定了算子输出数据的方式。
步骤S404:根据算子输出数据的方式选择输出数据的判断维度。
输出数据的方式之间的差别主要在于维度的排列顺序,但数量是固定的,即通常都是4个维度的数据。本申请中将四个维度从高位到低位依次计为d3、d2、d1、d0。当维度的排列顺序不同时,d3、d2、d1、d0的值就不同。例如对于NCHW,d3为N、d2为C、d1为H、d0为W;对于NHWC,d3为N、d2为H、d1为W、d0为D。
判断维度是指从低位到高位选择几个维度作为判断算子类型的依据。
判断维度可以是d0,可以是d1、d0,也可以是d2、d1、d0。若选择d0来确定融合算子,则被融合掉算子的参数量为d3d2d1,被融合掉的算子参数较多时,减小了芯片在进行运算时存储器能存储有效数据的容量,但也会使被融合掉的算子数量多,使得往存储器中搬运数据的次数少;若选择d2、d1、d0来确定融合算子,则被融合掉算子的参数量为d3,被融合掉的算子参数较少时,增加了芯片在进行运算时存储器能存储有效数据的容量,但也会使被融合掉的算子数量少,使得往存储器中搬运数据的次数多。在不同的实施例中,需要根据情况在“往存储中搬运数据次数”和“被融合掉的算子参数存储量”之间权衡,灵活地选取判断维度的数量。本实施例中,以选择d1、d0来确定融合算子为例进行说明。
步骤S406:确定所述计算单元实现的算子集合中的一个算子作为起始算子。
所述计算单元实现的算子集合中有多个算子时,需要对每个算子都进行处理,依次选择其中的一个算子作为起始算子来开始融合处理的过程。
步骤S408:获取所述计算单元实现的算子集合中的下一算子。
参考图2b,在计算路径中,一个算子的输出能够作为另一个算子的输入,此时乘法运算的算子就是加法运算的算子的下一个算子。
步骤S410:判断当前进行融合处理的算子是否为上一算子输出数据的判断维度与一个常数运算,若是,则执行步骤S412,否则执行步骤S414。
当前进行融合处理的算子即步骤S408选取的“下一个算子”,若以起始算子作为参考对象,其为当前进行融合处理的算子的上一个算子。
常数运算包括但不限于乘法、加法、减法、截断、移位、指数运算、求余、比较等,且为点对点运算,即输入的一个点,经过与常数运算,得到输出的一个点,即输入一个点对应输出一个点,输入数据的维度与输出数据的维度相同。
步骤S412:将当前进行融合处理的算子与上一算子融合。
当步骤S410的条件满足时,认为当前进行融合处理的算子可以和上一个算子进行融合。
本实施例的融合过程可以持续进行。步骤S412之后,再执行步骤S408。起始算子和所有被融合的算子组成一个融合层(one fused layer)。
融合过程请参考图4c。
步骤S414:将所述不为上一算子输出数据的判断维度与一个常数运算的当前进行融合处理的算子作为起始算子,再执行步骤S408。
上述过程直到所述计算单元实现的算子集合中的算子被全部处理完成后结束。
在一个实施例中,如图5所示,所述步骤S208:将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层,可以包括:
步骤S502:获取所述计算单元算子融合层或所述直接内存访问装置实现的算子集合中的一个算子作为当前算子。
在计算单元实现的算子集合中的算子融合处理完后,将得到的所述计算单元算子融合层和直接内存访问装置实现的算子作为本步骤的输入。所述计算单元算子融合层中的算子可以在不同类型的计算单元中进行计算。所述直接内存访问装置实现的算子集合中有多个算子时,需要对每个算子都进行处理,依次选择其中的一个算子作为起始算子来开始融合处理的过程。
步骤S504:判断所述当前算子是否为任一计算单元实现的算子类型,若是,则执行步骤S506。
如果当前算子属于计算单元0实现算子,或属于计算单元1实现算子,或属于计算单元2实现算子,……,则其满足是由计算单元实现的算子类型这一条件。如果当前算子能够被直接内存访问装置实现,例如被idma0、idma1或idma2等实现,则其属于直接内存访问装置实现的算子。
步骤S506:判断所述当前算子的上一个算子是否可以在被实现的计算单元对应的直接内存访问装置中实现,若是,则执行步骤S508,否则结束。
参考图3b,计算单元0对应的直接内存访问装置为idma0,计算单元1对应的直接内存访问装置为idma1,计算单元2对应的直接内存访问装置为idma2。如果所述当前算子的上一个算子不是在对应的直接内存访问装置中实现,则所述当前算子与上一个算子不能进行融合。
步骤S508:将当前算子与上一算子融合。
如果所述当前算子的上一个算子是在对应的直接内存访问装置中实现,则可以将当前算子的上一个算子进行融合。
步骤S510:若所述当前算子由直接内存访问装置实现,则不进行融合处理。该算子不是在当前步骤中进行融合,其可能作为下一个算子的融合目标。
上述步骤S502~S510重复进行,直到所有的所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子被处理完成。
上述步骤实现了所述计算单元算子融合层在计算单元中的加速计算,并减少了数据在片内存储器和片外存储器之间的搬运。
此外,基于相同的发明构思,提供一种算子融合系统。如图6所示,所述算子融合系统600包括:
计算图结构获取模块602,用于获取计算图结构。
划分模块604,用于根据目标硬件对所述计算图结构中的算子的实现方式,将所述计算图结构中的算子划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合。
计算单元算子融合模块606,用于将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层。
最终算子融合模块608,用于将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层。
计算图结构获取模块602具体用于:
获取开源编译器框架TVM Relay计算图;
将所述TVM Relay计算图转换成芯片开发使用的以文件形式存储的计算图结构。
划分模块604具体用于:
获取目标硬件中各计算单元实现的算子类型;
若所述计算图结构中的算子属于被任一计算单元实现的算子类型,则划分到计算单元实现的算子集合中;
若所述计算图结构中的算子被任一计算单元对应的直接内存访问装置实现,则划分到直接内存访问装置实现的算子集合中。
计算单元算子融合模块606具体用于:
根据目标硬件对所述计算图结构中的算子的硬件实现方式或汇编方式确定算子输出数据的方式;
根据算子输出数据的方式选择输出数据的判断维度;
获取所述计算单元实现的算子集合中的一个算子作为起始算子;
从所述起始算子的下一算子开始,依次对所述计算单元实现的算子集合中的剩余算子进行融合处理,包括:
若当前进行融合处理的算子为上一算子输出数据的判断维度与一个常数运算,则将当前进行融合处理的算子与上一算子融合,直到当前进行融合处理的算子不为上一算子输出数据的判断维度与一个常数运算。
计算单元算子融合模块606具体还用于:
将所述不为上一算子输出数据的判断维度与一个常数运算的当前进行融合处理的算子作为起始算子,再次进行计算单元实现的算子类的融合。
最终算子融合模块608具体用于:
获取所述计算单元算子融合层或所述直接内存访问装置实现的算子集合中的一个算子作为当前算子;
若所述当前算子是任一计算单元实现的算子类型,则进一步判断所述当前算子的上一个算子是否可以在被实现的计算单元对应的直接内存访问装置中实现;
若是,则将当前算子与上一算子融合。
最终算子融合模块608具体还用于:
若所述当前算子由直接内存访问装置实现,则不进行融合处理。
上述各模块为与方法一一对应的虚拟装置模块,其具体执行的过程在方法实施例中已有描述,在此不赘述。可以理解,上述方法实施例中描述的内容可以适当引入系统实施例中对其进行支持。
此外,本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有上述算子融合程序,所述算子融合程序被处理器执行时实现如上所述的算子融合方法的步骤。
本申请计算机可读存储介质具体实施方式与上述算子融合方法各实施例基本相同,在此不再赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种算子融合方法,包括:
获取计算图结构;
根据目标硬件对所述计算图结构中的算子的实现方式,将所述计算图结构中的算子划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合;
将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层;
将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层。
2.根据权利要求1所述的算子融合方法,其特征在于,所述获取计算图结构,包括:
获取开源编译器框架TVM Relay计算图;
将所述TVM Relay计算图转换成芯片开发使用的计算图结构。
3.根据权利要求1所述的算子融合方法,其特征在于,所述根据目标硬件对所述计算图结构中的算子的实现方式,将所述计算图结构中的算子划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合,包括:
获取目标硬件中各计算单元实现的算子类型;
若所述计算图结构中的算子属于被所述目标硬件中任一计算单元实现的算子类型,则划分到计算单元实现的算子集合中;
若所述计算图结构中的算子被所述目标硬件中任一计算单元对应的直接内存访问装置实现,则划分到直接内存访问装置实现的算子集合中。
4.根据权利要求1所述的算子融合方法,其特征在于,所述将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层,包括:
根据目标硬件对所述计算图结构中的算子的硬件实现方式或汇编方式确定算子输出数据的方式;
根据算子输出数据的方式选择输出数据的判断维度;
确定所述计算单元实现的算子集合中的一个算子作为起始算子;
从所述起始算子的下一算子开始,依次对所述计算单元实现的算子集合中的剩余算子进行融合处理,包括:
若当前进行融合处理的算子为上一算子输出数据的判断维度与一个常数运算,则将当前进行融合处理的算子与上一算子融合,直到当前进行融合处理的算子不为上一算子输出数据的判断维度与一个常数运算。
5.根据权利要求4所述的算子融合方法,其特征在于,所述将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层,还包括:
将所述不为上一算子输出数据的判断维度与一个常数运算的当前进行融合处理的算子作为起始算子,再次进行计算单元实现的算子类的融合。
6.根据权利要求3所述的算子融合方法,其特征在于,所述将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层,包括:
获取所述计算单元算子融合层或所述直接内存访问装置实现的算子集合中的一个算子作为当前算子;
若所述当前算子是任一计算单元实现的算子类型,则进一步判断所述当前算子的上一个算子是否可以在被实现的计算单元对应的直接内存访问装置中实现;
若是,则将当前算子与上一算子融合。
7.根据权利要求6所述的算子融合方法,其特征在于,所述将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层,还包括:
若所述当前算子由直接内存访问装置实现,则不进行融合处理。
8.一种算子融合系统,其特征在于,包括:
计算图结构获取模块,用于获取计算图结构;
划分模块,用于根据目标硬件对所述计算图结构中的算子的实现方式,将所述计算图结构中的算子划分到直接内存访问装置实现的算子集合和计算单元实现的算子集合;
计算单元算子融合模块,用于将所述计算单元实现的算子集合中的算子进行融合处理得到计算单元算子融合层;
最终算子融合模块,用于将所述计算单元算子融合层和所述直接内存访问装置实现的算子集合中的算子进行融合处理得到最终的算子融合层。
9.一种算子融合设备,其特征在于,包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的算子融合程序,所述算子融合程序被所述处理器执行时实现如权利要求1至7中任一项所述的算子融合方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有算子融合程序,所述算子融合程序被处理器执行时实现如权利要求1至7中任一项所述的算子融合方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110250443.6A CN113065639B (zh) | 2021-03-08 | 2021-03-08 | 算子融合方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110250443.6A CN113065639B (zh) | 2021-03-08 | 2021-03-08 | 算子融合方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113065639A true CN113065639A (zh) | 2021-07-02 |
CN113065639B CN113065639B (zh) | 2023-06-13 |
Family
ID=76559877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110250443.6A Active CN113065639B (zh) | 2021-03-08 | 2021-03-08 | 算子融合方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113065639B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485836A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理系统 |
CN113706385A (zh) * | 2021-09-02 | 2021-11-26 | 北京字节跳动网络技术有限公司 | 一种视频超分辨率方法、装置、电子设备及存储介质 |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
CN114492737A (zh) * | 2021-12-31 | 2022-05-13 | 北京百度网讯科技有限公司 | 数据处理方法、装置及电子设备、存储介质及程序产品 |
WO2023056841A1 (zh) * | 2021-10-08 | 2023-04-13 | 北京字节跳动网络技术有限公司 | 一种数据服务方法、装置及相关产品 |
WO2023093623A1 (zh) * | 2021-11-29 | 2023-06-01 | 中科寒武纪科技股份有限公司 | 计算图的优化方法、数据处理方法及相关产品 |
CN116501509A (zh) * | 2023-06-29 | 2023-07-28 | 南京邮电大学 | 一种面向微控制器的深度学习内存优化方法 |
CN117289948A (zh) * | 2023-11-24 | 2023-12-26 | 北京壁仞科技开发有限公司 | 算子消除方法、装置、系统、电子设备和存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170070571A1 (en) * | 2015-09-09 | 2017-03-09 | International Business Machines Corporation | Operator movement based on memory |
US20180083839A1 (en) * | 2016-09-22 | 2018-03-22 | International Business Machines Corporation | Operator fusion management in a stream computing environment |
CN108229330A (zh) * | 2017-12-07 | 2018-06-29 | 深圳市商汤科技有限公司 | 人脸融合识别方法及装置、电子设备和存储介质 |
GB201913353D0 (en) * | 2019-09-16 | 2019-10-30 | Samsung Electronics Co Ltd | Method for designing accelerator hardware |
CN110490309A (zh) * | 2019-08-14 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 一种用于神经网络的算子融合方法及其相关产品 |
CN110503179A (zh) * | 2018-05-18 | 2019-11-26 | 上海寒武纪信息科技有限公司 | 计算方法以及相关产品 |
US20190392296A1 (en) * | 2019-06-28 | 2019-12-26 | John Brady | Hardware agnostic deep neural network compiler |
CN111160551A (zh) * | 2019-12-04 | 2020-05-15 | 上海寒武纪信息科技有限公司 | 计算图执行方法、计算机设备及存储介质 |
CN111222636A (zh) * | 2020-01-07 | 2020-06-02 | 深圳鲲云信息科技有限公司 | 深度学习模型的转化方法、装置、服务器及存储介质 |
CN111260019A (zh) * | 2020-02-18 | 2020-06-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
US20200210821A1 (en) * | 2018-12-29 | 2020-07-02 | Cambricon Technologies Corporation Limited | Data processing method, device, electronic device and readable storage medium |
WO2020154830A1 (en) * | 2019-01-28 | 2020-08-06 | Intel Corporation | Techniques to detect fusible operators with machine learning |
CN112070202A (zh) * | 2020-07-09 | 2020-12-11 | 安徽寒武纪信息科技有限公司 | 一种融合图的生成方法、生成装置和计算机可读存储介质 |
CN112130896A (zh) * | 2020-08-17 | 2020-12-25 | 深圳云天励飞技术股份有限公司 | 神经网络模型迁移方法、装置、电子设备及存储介质 |
US20210049231A1 (en) * | 2019-08-16 | 2021-02-18 | Google Llc | Multiple Output Fusion For Operations Performed In A Multi-Dimensional Array of Processing Units |
-
2021
- 2021-03-08 CN CN202110250443.6A patent/CN113065639B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170070571A1 (en) * | 2015-09-09 | 2017-03-09 | International Business Machines Corporation | Operator movement based on memory |
US20180083839A1 (en) * | 2016-09-22 | 2018-03-22 | International Business Machines Corporation | Operator fusion management in a stream computing environment |
CN108229330A (zh) * | 2017-12-07 | 2018-06-29 | 深圳市商汤科技有限公司 | 人脸融合识别方法及装置、电子设备和存储介质 |
CN110503179A (zh) * | 2018-05-18 | 2019-11-26 | 上海寒武纪信息科技有限公司 | 计算方法以及相关产品 |
US20200210821A1 (en) * | 2018-12-29 | 2020-07-02 | Cambricon Technologies Corporation Limited | Data processing method, device, electronic device and readable storage medium |
WO2020154830A1 (en) * | 2019-01-28 | 2020-08-06 | Intel Corporation | Techniques to detect fusible operators with machine learning |
US20190392296A1 (en) * | 2019-06-28 | 2019-12-26 | John Brady | Hardware agnostic deep neural network compiler |
CN110490309A (zh) * | 2019-08-14 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 一种用于神经网络的算子融合方法及其相关产品 |
US20210049231A1 (en) * | 2019-08-16 | 2021-02-18 | Google Llc | Multiple Output Fusion For Operations Performed In A Multi-Dimensional Array of Processing Units |
GB201913353D0 (en) * | 2019-09-16 | 2019-10-30 | Samsung Electronics Co Ltd | Method for designing accelerator hardware |
CN111160551A (zh) * | 2019-12-04 | 2020-05-15 | 上海寒武纪信息科技有限公司 | 计算图执行方法、计算机设备及存储介质 |
CN111222636A (zh) * | 2020-01-07 | 2020-06-02 | 深圳鲲云信息科技有限公司 | 深度学习模型的转化方法、装置、服务器及存储介质 |
CN111260019A (zh) * | 2020-02-18 | 2020-06-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
CN112070202A (zh) * | 2020-07-09 | 2020-12-11 | 安徽寒武纪信息科技有限公司 | 一种融合图的生成方法、生成装置和计算机可读存储介质 |
CN112130896A (zh) * | 2020-08-17 | 2020-12-25 | 深圳云天励飞技术股份有限公司 | 神经网络模型迁移方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
周中良;于雷;李永华;: "基于信息融合的改进型模糊神经网络", 计算机应用 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485836A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理系统 |
CN113485836B (zh) * | 2021-07-21 | 2024-03-19 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理系统 |
CN113706385A (zh) * | 2021-09-02 | 2021-11-26 | 北京字节跳动网络技术有限公司 | 一种视频超分辨率方法、装置、电子设备及存储介质 |
WO2023056841A1 (zh) * | 2021-10-08 | 2023-04-13 | 北京字节跳动网络技术有限公司 | 一种数据服务方法、装置及相关产品 |
WO2023093623A1 (zh) * | 2021-11-29 | 2023-06-01 | 中科寒武纪科技股份有限公司 | 计算图的优化方法、数据处理方法及相关产品 |
CN114492737A (zh) * | 2021-12-31 | 2022-05-13 | 北京百度网讯科技有限公司 | 数据处理方法、装置及电子设备、存储介质及程序产品 |
US11983086B2 (en) | 2021-12-31 | 2024-05-14 | Beijing Baidu Netcom Science Technology Co., Ltd. | Method for processing data, and electronic device, storage medium and program product |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
US11861505B2 (en) | 2022-04-13 | 2024-01-02 | Zhejiang Lab | Method and apparatus of executing dynamic graph for neural network computation |
CN116501509A (zh) * | 2023-06-29 | 2023-07-28 | 南京邮电大学 | 一种面向微控制器的深度学习内存优化方法 |
CN116501509B (zh) * | 2023-06-29 | 2023-09-08 | 南京邮电大学 | 一种面向微控制器的深度学习内存优化方法 |
CN117289948A (zh) * | 2023-11-24 | 2023-12-26 | 北京壁仞科技开发有限公司 | 算子消除方法、装置、系统、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113065639B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113065639B (zh) | 算子融合方法、系统、设备及存储介质 | |
CN109993299B (zh) | 数据训练方法及装置、存储介质、电子装置 | |
CN110738324B (zh) | 深度学习系统和用于深度学习系统的处理数据的方法 | |
CN110008952B (zh) | 一种目标识别方法及设备 | |
CN111401550A (zh) | 神经网络模型量化方法、装置及电子设备 | |
WO2022042113A1 (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110020616B (zh) | 一种目标识别方法及设备 | |
CN111178258B (zh) | 一种图像识别的方法、系统、设备及可读存储介质 | |
CN110334436B (zh) | 一种数据处理方法以及设备 | |
KR20190043419A (ko) | 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템 | |
CN114691765A (zh) | 一种人工智能系统中数据处理方法及装置 | |
CN110991627A (zh) | 信息处理装置、信息处理方法 | |
CN113849302A (zh) | 任务执行方法及装置、存储介质及电子装置 | |
CN116762080A (zh) | 神经网络生成装置、神经网络运算装置、边缘设备、神经网络控制方法以及软件生成程序 | |
CN112825154A (zh) | 深度学习中在线推理的优化方法、装置及计算机存储介质 | |
CN112052943A (zh) | 电子装置和执行该电子装置的操作的方法 | |
KR20210097448A (ko) | 영상 데이터 처리 방법 및 영상 데이터 처리 방법을 수행하는 센서 장치 | |
CN113673532B (zh) | 基于量化模型的目标检测方法及装置 | |
CN112561050A (zh) | 一种神经网络模型训练方法及装置 | |
CN113870091A (zh) | 卷积计算方法、系统、设备及存储介质 | |
US20190146469A1 (en) | System and method for facilitating comprehensive control data for a device | |
CN115098262A (zh) | 一种多神经网络任务处理方法及装置 | |
Hadj Salem et al. | Meeting the challenges of optimized memory management in embedded vision systems using operations research | |
CN114626284A (zh) | 一种模型处理方法及相关装置 | |
KR20220036493A (ko) | 뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치 |
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 |