CN112965710A - 计算图的处理方法、装置和系统 - Google Patents
计算图的处理方法、装置和系统 Download PDFInfo
- Publication number
- CN112965710A CN112965710A CN201911289404.6A CN201911289404A CN112965710A CN 112965710 A CN112965710 A CN 112965710A CN 201911289404 A CN201911289404 A CN 201911289404A CN 112965710 A CN112965710 A CN 112965710A
- Authority
- CN
- China
- Prior art keywords
- fusion
- action
- instruction
- scheme
- graph
- 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
- 238000003672 processing method Methods 0.000 title claims description 18
- 230000004927 fusion Effects 0.000 claims abstract description 634
- 230000009471 action Effects 0.000 claims abstract description 319
- 238000004364 calculation method Methods 0.000 claims abstract description 101
- 238000000034 method Methods 0.000 claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000011156 evaluation Methods 0.000 claims description 46
- 230000015654 memory Effects 0.000 claims description 35
- 238000003860 storage Methods 0.000 claims description 34
- 230000006870 function Effects 0.000 claims description 24
- 230000008901 benefit Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 238000005457 optimization Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000011144 upstream manufacturing 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/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- 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/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种计算图的处理方法、装置和系统。其中,该方法包括:获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对;查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作;从融合方案中选择待选择的融合方案,并根据目标融合方案,确定融合计算图。本申请解决了现有技术中的计算图的指令融合基于经验进行,导致融合后生成的代码性能较低的技术问题。
Description
技术领域
本申请涉及领域,具体而言,涉及一种计算图的处理方法、装置和系统。
背景技术
近年来,人工智能(Artificial Intelligence,简称AI)技术在搜索、广告、电商、物流、零售、制造、教育、传媒影视等众多的业务场景得到了广泛应用。从计算的视角,上层业务的需求可被表达为由基本张量操作构成的计算图结构,然后通过系统软件将计算图映射到可在硬件高效执行的代码。因此,从张量操作图到特定硬件平台的编译质量决定了业务和硬件平台二者的适配效能,是影响上层业务落地成本的重要系统因素。
目前,针对人工智能业务的计算表达问题,目前主要是基于高级语言的计算图表示,然后通过专门的计算框架映射到底层硬件平台,该设计理念使得计算图不局限于人工智能业务。但为了兼顾用户表达的灵活性和业务多样性要求,图节点粒度在很多场景中比较细碎,且具有复杂的相互依赖结构,从而使得指令融合能力以及代码生成能力具有局限性。其中,对于指令融合能力,由于实际业务的计算图的复杂性,理论上存在的张量操作融合空间很大,在大量可能的融合方案中,现有方案的指令融合完全基于经验规则,在融合指令类型以及融合后的计算粒度方面存在不足。对于代码生成能力,现有方案在处理指令间计算结果中转时,无法充分利用现有GPU体系结构的特点。具体的,现有方案基于计算内联,通过寄存器复用来进行计算结果的中转,而对硬件存储的利用存在不足。另外,现有方案在处理多输出的计算图时,无法应对复杂的张量操作组合的情况。现有技术通常基于从特定业务问题提取的经验规则来解决上述问题,缺乏全面的系统化解决方案。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种计算图的处理方法、装置和系统,以至少解决现有技术中的计算图的指令融合基于经验进行,导致融合后生成的代码性能较低的技术问题。
根据本申请实施例的一个方面,提供了一种计算图的处理方法,包括:获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对;查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作;从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图。
根据本申请实施例的另一方面,还提供了一种计算图的处理装置,包括:获取模块,用于获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对;查找模块,用于查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作;处理模块,用于从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述的计算图的处理方法。
根据本申请实施例的另一方面,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行上述的计算图的处理方法。
根据本申请实施例的另一方面,还提供了一种计算图的处理系统,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对;查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作;从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图。
在本申请实施例中,采用空间融合的方式,在获取到张量计算图对应的融合动作集合之后,查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,最后从融合方案中选择待选择的融合方案,并根据待选择的融合方案确定融合计算图。
由上述内容可知,本申请所提供的方案通过查找融合动作对应的融合空间,并确定融合方案,进而根据融合方案确定融合计算图,整个过程并不依赖经验规则,达到了对张量计算图进行融合的目的,从而实现了提高融合后生成的代码性能的技术效果,进而解决了现有技术中的计算图的指令融合基于经验进行,导致融合后生成的代码性能较低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种用于实现计算图的处理方法的计算设备的示意图;
图2是根据本申请实施例的一种计算图的处理方法的流程图;
图3是根据本申请实施例的一种可选的张量计算图的示意图;
图4是根据本申请实施例的一种可选的计算图的处理方法的流程图;
图5是根据本申请实施例的一种可选的构造融合动作集合的流程图;
图6是根据本申请实施例的一种可选的判断指令是否允许融合的流程图;
图7是根据本申请实施例的一种可选的探索融合空间的流程图;
图8是根据本申请实施例的一种可选的探索融合空间的流程图;
图9是根据本申请实施例的一种可选的待选择的融合方案的规划流程;
图10是根据本申请实施例的一种可选的执行待选择的融合方案的示意图;
图11是根据本申请实施例的一种可选的代码生成与调优的示意图;
图12是根据本申请实施例的一种计算图的处理装置的示意图;以及
图13是根据本申请实施例的一种计算设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本申请实施例,还提供了一种计算图的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现计算图的处理方法的计算设备(或移动设备)的硬件结构框图。如图1所示,计算设备10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算设备10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算设备10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的计算图的处理方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的计算图的处理方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算设备10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算设备10(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
在上述运行环境下,本申请提供了如图2所示的计算图的处理方法,其中,图2是根据本申请实施例一的计算图的处理方法的流程图,如图2所示,该方法包括如下步骤:
步骤S202,获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对。
在步骤S202中,计算图为张量计算图,张量计算图为包括人工智能业务在内的计算业务的抽象表达形式,其可以以有向图的方式存在,其中,张量计算图中的每个节点定义为一个计算,根据数据流驱动方式由运行时系统调度执行,节点表示计算单位,边表示计算所用到和产生的数据,如图3示出了一种张量计算图,在图3中,节点为X1、X2和Y,边为W1和W2,其中,节点X1与边W1进行计算,得到第一结果,节点X2与边W2进行计算得到第二结果,然后第一结果和第二结果进行计算得到节点Y。
另外,融合动作集合中的融合动作可根据预定的融合条件进行筛选所得到的融合动作,其中,融合动作对应的指令对可以为基于消费者和生产者的指令对,例如,指令对为(producer,consumer),则该融合动作可将producer(即生产者)和consumer(即消费者)合并成为一个指令。可选的,上述预定的融合条件可以根据业务需求以及代码生成的能力来进行设定。
步骤S204,查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作。
需要说明的是,在获取到张量计算图之后,张量计算图对应的融合动作之间存在融合的可能性,其中,可能进行融合的融合动作所组成的集合即为融合空间。
此外,还需要说明的是,给定初始的融合动作集合,针对其中的任意一个融合动作,都可以继续扩大探索融合范围,从而可使得从初始动作出发根据预定的融合条件最终扩展为一个可融合子图。其中,融合空间可对任意可能进行融合的融合动作进行探索,从而防止遗漏任何融合动作的可能。另外,在实际业务中,探索融合空间需要耗费一定的时长,而且并非每个融合空间均具有探索的价值,因此,在实际应用中,可以结合业务经验来加快融合空间的探索,进而得到融合方案。
步骤S206,从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图。
需要说明的是,在获取到张量计算图,完成融合空间的探索(即查找融合动作对应的融合空间)后,可以得到一个融合方案集合,其中,融合方案集合包括至少一个融合方案,每个融合方案由一个从初始的融合动作扩展而来的张量操作子图构成,同一个融合方案中的不同子图之间不能存在重叠的张量操作。对融合方案进行评估汇总,可以得到融合方案中每个融合子图的收益信息,其中,在对每个融合子图的收益信息进行评估时,可以综合考虑性能、设备内存等平台相关的参数,通过构建代价模型来计算每个融合子图的收益信息。在对融合方案优化可以利用线性规划类组合优化工具,综合每个融合子图的收益及代价模型,为输入张量计算图的规划最终需应用的待选择的融合方案。
在从融合方案中确定待选择的融合方案之后,对待选择的融合方案对应的每个融合动作进行执行,执行完成后,每个融合子图合并为一个复合指令,执行该复合指令,即可输出融合后的融合计算图,该融合计算图可作为后续代码生成和调优的输入。
进一步地,在得到融合计算图之后,可对融合计算图进行代码生成和调优,生成能够在目标平台上执行的代码,其中,目标平台为能够执行代码的设备,该设备包括实体设备(例如,电脑等),还可以包括虚拟设备(例如,虚拟机)。
需要说明的是,在对融合计算图进行代码生成和调优的过程中,需要综合考虑硬件层面的多核并行、设备的内存管理、系统的高速缓存等体系结构相关的特性。对融合计算图进行代码生成和调优针对的是一个可以生成的合法实现集合,在全面性能评估的基础上选择最优代码实现。其中,在实际应用中,通常使用参数化方式来表征不同的代码生成实现。
基于上述步骤S202至步骤S206所限定的方案,可以获知,采用空间融合的方式,在获取到计算图对应的融合动作集合之后,查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,最后从融合方案中选择待选择的融合方案,并根据待选择的融合方案确定融合计算图。
容易注意到的是,本申请所提供的方案通过查找融合动作对应的融合空间,并确定融合方案,进而根据融合方案确定融合计算图,整个过程并不依赖经验规则,达到了对计算图进行融合的目的,从而实现了提高融合后生成的代码性能的技术效果,进而解决了现有技术中的计算图的指令融合基于经验进行,导致融合后生成的代码性能较低的技术问题。
在一种可选的实施例中,图4示出了本申请所提供的计算图的处理方法的流程图,其中,计算图为张量计算图。由图4可知,在获取到张量计算图之后,该方法主要包括五个步骤,即计算融合动作集合、探索融合空间、融合方案评估优化、执行待选择的融合方案以及代码生成与调优。其中,计算融合动作集合与上述步骤S202相对应,探索融合空间与上述步骤S204相对应,融合方案评估优化、执行待选择的融合方案以及代码生成与调优与上述步骤S206相对应。以下对上述五个步骤进行详细说明。
在一种可选的实施例中,对于计算融合动作集合,在获取到张量计算图之后,将张量计算图中的指令按照数据依赖关系进行拓扑排序,然后从指令中的根指令开始逆序遍历每个指令,并判断指令是否允许被融合,其中,如果指令允许被融合,则将指令对应的融合动作加入融合动作集合。
可选的,图5示出了给定张量计算图,构造融合动作集合的流程图,具体的,如图5所示,首先对输入张量计算图中的所有指令根据数据依赖关系进行拓扑排序,然后从根指令逆序遍历每个指令,并判断该指令能否构造包含该指令的融合动作,如果可以,则将该融合动作添加至融合动作集合中。在遍历完所有指令之后,即可得到融合动作集合,并输出融合动作集合。其中,在上述过程中,根指令是指在数据依赖关系图中,无后继指令的指令,即没有其他指令依赖该指令输出的指令。
在一种可选的实施例中,由图5可知,在对每个指令进行逆序列遍历之后,需要判断指令是否允许融合。具体的,首先,获取指令在张量计算图中对应的输入指令,然后判断指令与对应的输入指令是否允许融合,如果指令与对应的输入指令允许融合,则将指令与对应的输入指令构成一个融合动作,其中,指令依赖输入指令输出的结果,指令对应的融合动作包括指令和对应的输入指令构成的指令对。
可选的,如果指令与对应的输入指令满足如下任意一个条件,确定指令与对应的输入指令允许融合:
(1)指令与对应的输入指令的指令类型兼容。其中,确定指令与对应的输入指令的指令类型是否兼容的兼容规则可以根据硬件平台的实际业务需求来进行设定,即如果指令与对应的输入指令的指令类型兼容,则确定指令与对应的输入指令允许融合。
(2)指令与对应的输入指令之间的拓扑结构允许进行融合,例如,对于无环张量计算图,任何指令之间的融合均不能引入依赖环。
可选的,图6示出了判断指令是否允许融合的流程图,如图6所示,首先对指令遍历该指令在张量计算图中对应的所有输入指令,其中,该指令在张量计算图中对应的所有输入指令组成指令集合。在进行判断的过程中,首先检测指令集合是否为空,如果指令集合为空,则说明该指令在张量计算图中对应的所有输入指令均已遍历完毕,结束对输入指令的遍历,否则继续对指令集合中的输入指令进行遍历。其中,在指令集合不为空的情况下,判断指令与对应的输入指令是否满足计算可融合条件以及结构可融合条件。可选的,在指令与对应的输入指令同时满足上述两个条件时,确定指令与对应的输入指令允许融合,然后继续遍历指令集合中后续的输入指令并执行相同的判断过程,直至所有的输入指令被处理完为止。
需要说明的是,上述计算可融合条件为指令与对应的输入指令的指令类型兼容;结构可融合条件为指令与对应的输入指令之间的拓扑结构允许进行融合。另外,图6示出了当指令与对应的输入指令同时满足上述两个条件时,才将指令与对应的输入指令构成一个融合动作。在一种可选的场景中,当指令与对应的输入指令满足上述两个条件中的任意一个条件时,也可将指令与对应的输入指令构成一个融合动作。
此外,还需要说明的是,给定张量指令,判断其某个输入指令能否和该指令融合的条件包括计算可融合条件和结构可融合条件两种类型:计算可融合检查指令的操作类型,仅融合类型兼容的指令,即并非任意类型的指令之间进行融合都有收益,只有满足预设条件的指令进行的融合才有收益。
在一种可选的实施例中,对于探索融合空间,在得到融合动作集合之后,查找每个融合动作对应的融合空间,得到融合动作对应的融合方案。具体的,首先,获取每组融合动作对应的收益信息,然后,根据融合动作,确定融合动作对应的衍生融合动作集合,其中,衍生融合动作集合用于表示包含融合动作中的指令的其他融合动作,收益信息用于表示融合动作所对应的代码的代码性能。
可选的,图7示出了探索融合空间的流程图,由图7可知,融合空间的探索是一个递归过程。具体的,在获取融合动作集合之后,首先根据融合动作评估融合动作对应的收益信息。其中,评估融合动作对应的收益信息可以包括如下两种评估方式:
方式一:执行与融合动作对应的代码,并确定代码的代码性能为融合动作对应的收益信息。在该方式中,可通过实测生成的代码性能来评估收益信息,评估结果准确,但需要耗费一定的评估时长。
方式二:通过预设的代价模型预测融合动作对应的收益信息。其中,代价模型可对张量计算图的特征进行处理得到,在该方式下得到的评估结果的精度低于方式一所得到的评估结果的精度,但该方式进行评估处理的速度快,评估耗时短。
进一步地,如图7所示,在得到收益信息之后,根据融合动作来确定衍生融合动作集合,其中,衍生融合动作集合为在执行当前融合动作的基础上,包含当前融合指令的进一步融合动作集合。接下来遍历衍生融合动作集合,使用图2所示的流程递归遍历集合中的融合动作,直至所有衍生融合动作集合被搜索完毕为止。然后遍历衍生融合动作集合,并采用图6所示的方法递归遍历衍生融合动作集合,直至遍历衍生融合动作集合被遍历完毕为止。
需要说明的是,在图6所示的流程图中,缺少对所有衍生融合动作集合的遍历。另外,尽管在图7中存在评估缓存以避免对遍历过的衍生融合动作集合进行重复处理(如图7中的判断衍生融合动作集合是否为空,如果为空,则结束流程,否则,获取融合动作,并探索衍生融合动作集合),但在实际应用中,可从业务角度出发避免遍历全部衍生融合动作集合,或者通过引入优先顺序重点遍历潜在的收益较高的衍生融合动作集合。
另外,在获取每组融合动作对应的收益信息之后,还可根据融合动作对应的收益信息更新评估缓存,其中,评估缓存用于所有融合动作的收益信息。
可选的,如图8所示的探索融合空间的流程图,在给定张量计算图和融合动作集合之后,针对可能的指令对融合空间进行探索。首先判断未探索过的融合动作集合是否为空,如果为空,则探索完毕,否则从融合动作集合中获取融合动作。如果该融合动作对应的衍生融合动作集合已经被探索过,则继续检查融合动作集合,并探索后续的融合动作;否则探索衍生融合动作集合,并对融合收益进行评估,更新评估缓存。
需要说明的是,引入评估缓存,可以实现对探索过的融合空间及其收益信息进行缓存,避免重复探索。评估缓存的信息还可在后续融合方案评估和规划中用来进行融合方案优化。
在一种可选的实施例中,待选择的融合方案为最优融合方案,对于融合方案评估优化,在得到了融合动作对应的融合方案之后,从融合方案中选择待选择的融合方案。具体的,首先,确定用于选择待选择的融合方案的目标函数,并获取约束条件集合,其中,目标函数根据每个融合动作的收益信息构建,约束条件用于指融合动作之间需要满足的约束条件。最后,再根据约束条件对目标函数进行求解,得到待选择的融合方案。
需要说明的是,给定融合动作集合,以及进行完衍生融合动作集合的探索后生成的最优融合动作集合,其中,图9给出了待选择的融合方案的规划流程。另外,在图7所示流程的融合动作评估阶段,每个输入的融合动作均对应一个收益信息,同时由于张量计算图本身的约束,融合动作之间存在一定的相容或互斥约束,确定最优融合动作集合的过程实质可以转化为线性规划求解问题,具体定义如下:
融合动作集合用A表示,包括融合动作及衍生融合动作集合探索过程的衍生融合动作,其中,Ai表示第i个融合动作。
构造收益函数用G表示,其中,G(Ai)表示第i个融合动作对应的收益信息。
构造目标函数:将面向整体张量计算图的融合方案定义为融合动作集合,用0-1变量xi表示融合动作i是否包含在融合方案中,则优化目标可表示为最大化:∑ixi*G(Ai)。
构造约束条件集合,其中,约束条件集合为融合动作之间需要满足的约束条件集合。例如,对任意两个融合动作,仅当两者涉及的指令集合没有交集时,两者可同时被包含在融合方案中。
规划求解,可以通过调用本领域已有的线性规划工具对目标函数进行求解,最终输出优化后的融合方案,即待选择的融合方案。
在一种可选的实施例中,对于执行待选择的融合方案,在得到待选择的融合方案之后,根据待选择的融合方案,确定融合计算图。具体的,根据融合方案中的融合动作对张量计算图进行修改,得到融合计算图。
可选的,图10示出了执行待选择的融合方案的示意图,具体的,基于图9所得到的待选择的融合方案,基于该待选择的融合方案对张量计算图进行修改。其中,该待选择的融合方案是融合动作的集合,且不同融合动作之间相互独立。根据输入张量计算图及待选择的融合方案,遍历待选择的融合方案中的融合动作集合,如遍历完毕,则融合动作集合为空,输出修改后的张量计算图;否则依次获取融合动作集合中的融合动作,执行融合动作对张量计算图进行修改。
需要说明的是,张量计算图的融合本质上是一种将张量指令分组的标示机制,用于指导后续代码生成逻辑针对性请的、目标平台可执行的代码。
在一种可选的实施例中,对于代码生成与调优,在从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图之后,根据融合计算图生成代码,其中,根据融合计算图生成代码的步骤包括如下步骤:
步骤S1,构建用于代码生成的参数空间,其中,参数空间之间的每组参数仅表征一个代码实例;
步骤S2,对每组参数构建一个对应的代码实例。具体的,首先,输出融合计算图对外的输出结果,并存储融合计算图中的指令之间的中间计算结果,然后再通过融合计算图中指令的依赖关系对融合计算图中的指令进行串接,生成融合计算图对应的代码。其中,中间计算结果被存储至如下任意一处:寄存器、片上高速缓存和片外设备内存。
进一步地,在对每组参数构建一个对应的代码实例之后,还可对生成的代码实例进行性能评估,得到评估结果,并将评估结果保存至代码缓存中。
可选的,图11示出了代码生成与调优的示意图,其中,对于图11所示的示意图,本实施例不限定具体目标硬件平台及融合计算图本身的表示方式。首先构造用于代码生成的参数空间,其中,每组参数唯一表征一个代码生成的代码实例,即可以用完全参数化的方式来表征具体的代码实现。对于每一组参数,通过指令输出规划、片上高速缓存规划、计算内联和目标代码生成等步骤,构造一个代码实例。
其中,指令输出规划用于处理融合计算图整体对外的输出结果,需要注意的是,输出结果其中可能包含指令,其计算结果不仅可以输出到融合计算图的外部,同时还被内部的其他指令所使用。
片上高速缓存规划用于处理融合计算图内指令之间的中间计算结果的中转,一般采用寄存器、片上高速缓存、片外设备内存等三种方式进行存储,片上高速缓存规划对融合计算图进行必要的数据流分析,在满足硬件资源约束的前提下,寻优尽可能快的中转方式,提升目标代码的执行效能。
计算内联与片上高速缓存串接,存储数据依赖的上下游指令,通过寄存器中转或访问映射的方式,直接为一个融合计算子图生成代码。
目标代码生成用于基于前述各步骤收集到的信息,生成目标平台的代码。然后,对生成的目标代码进行性能评估,可以通过在目标设备运行,或者直接构造性能模型的方式来对目标代码的性能进行评估,并将评估结果保存到代码缓存中。
需要说明的是,代码缓存中保存了所有代码生成参数空间中性能最好的参数空间。当参数空间遍历完毕时,从代码缓存输出性能最优的参数空间。
由上述内容可知,本申请所提供的方案不依赖现有方案所使用的经验规则,而是通过系统化探索指令融合空间,然后基于整数线性规划对搜索空间寻优来自动化寻找待选择的融合方案。另外,本申请所提供的方案可结合经验规则来寻找待选择的融合方案,采用经验规则与本申请所提供的方案相结合的方式可以提升融合空间搜索的效率。本申请进一步增强了后端代码的生成能力,扩大了指令融合的有效空间,给融合空间探索及寻优以更有力的支持。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的计算图的处理方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
实施例2
根据本申请实施例,还提供了一种用于实施上述计算图的处理方法的计算图的处理装置,如图12所示,该装置120包括:获取模块1201、查找模块1203以及处理模块1205。
其中,获取模块1201,用于获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对;查找模块1203,用于查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作;处理模块1205,用于从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图。
此处需要说明的是,上述获取模块1201、查找模块1203以及处理模块1205对应于实施例1中的步骤S202至步骤S206,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算设备10中。
可选的,计算图为张量计算图。
在一种可选的实施例中,获取模块包括:排序模块、第一判断模块以及第一融合模块。其中,排序模块,用于将张量计算图中的指令按照数据依赖关系进行拓扑排序;第一判断模块,用于从指令中的根指令开始逆序遍历每个指令,并判断指令是否允许被融合;第一融合模块,用于如果指令允许被融合,则将指令对应的融合动作加入融合动作集合。
在一种可选的实施例中,第一判断模块包括:第一获取模块、第二判断模块以及第二融合模块。其中,第一获取模块,用于获取指令在张量计算图中对应的输入指令,其中,指令依赖输入指令输出的结果;第二判断模块,用于判断指令与对应的输入指令是否允许融合;第二融合模块,用于如果指令与对应的输入指令允许融合,则将指令与对应的输入指令构成一个融合动作,其中,指令对应的融合动作包括指令和对应的输入指令构成的指令对。
在一种可选的实施例中,第二判断模块包括:第一确定模块。其中,第一确定模块,用于如果指令与对应的输入指令满足如下任意一个条件,确定指令与对应的输入指令允许融合:指令与对应的输入指令的指令类型兼容;指令与对应的输入指令之间的拓扑结构允许进行融合。
在一种可选的实施例中,查找模块包括:第二获取模块以及第二确定模块。其中,第二获取模块,用于获取每组融合动作对应的收益信息,其中,收益信息用于表示融合动作所对应的代码的代码性能;第二确定模块,用于根据融合动作,确定融合动作对应的衍生融合动作集合,其中,衍生融合动作集合用于表示包含融合动作中的指令的其他融合动作。
在一种可选的实施例中,计算图的处理装置还包括:更新模块。其中,更新模块,用于在获取每组融合动作对应的收益信息之后,根据融合动作对应的收益信息更新评估缓存,其中,评估缓存用于所有融合动作的收益信息。
在一种可选的实施例中,第二获取模块包括:第三确定模块以及预测模块。其中,第三确定模块,用于执行与融合动作对应的代码,并确定代码的代码性能为融合动作对应的收益信息;或预测模块,用于通过预设的代价模型预测融合动作对应的收益信息。
在一种可选的实施例中,待选择的融合方案为最优融合方案,处理模块包括:第四确定模块、第三获取模块以及第一处理模块。其中,第四确定模块,用于确定用于选择待选择的融合方案的目标函数,其中,目标函数根据每个融合动作的收益信息构建;第三获取模块,用于获取约束条件集合,其中,约束条件用于指融合动作之间需要满足的约束条件;第一处理模块,用于根据约束条件对目标函数进行求解,得到待选择的融合方案。
在一种可选的实施例中,处理模块包括:修改模块。其中,修改模块,用于根据融合方案中的融合动作对张量计算图进行修改,得到融合计算图。
在一种可选的实施例中,在从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图之后,计算图的处理装置还包括:第一生成模块。其中,第一生成模块,用于根据融合计算图生成代码,其中,第一生成模块包括:第一构建模块以及第二构建模块。其中,第一构建模块,用于构建用于代码生成的参数空间,其中,参数空间之间的每组参数仅表征一个代码实例;第二构建模块,用于对每组参数构建一个对应的代码实例。
在一种可选的实施例中,第二构建模块包括:输出模块、第一存储模块以及第二生成模块。其中,输出模块,用于输出融合计算图对外的输出结果;第一存储模块,用于存储融合计算图中的指令之间的中间计算结果,其中,中间计算结果被存储至如下任意一处:寄存器、片上高速缓存和片外设备内存;第二生成模块,用于通过融合计算图中指令的依赖关系对融合计算图中的指令进行串接,生成融合计算图对应的代码。
在一种可选的实施例中,计算图的处理装置还包括:评估模块以及第二存储模块。其中,评估模块,用于在对每组参数构建一个对应的代码实例之后,对生成的代码实例进行性能评估,得到评估结果;第二存储模块,用于将评估结果保存至代码缓存中。
实施例3
根据本申请实施例,还提供了一种用于实施上述计算图的处理方法的计算图的处理系统,该系统包括:处理器以及存储器。
其中,存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对;查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作;从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图。
需要说明的是,上述计算图为张量计算图,计算图的处理系统根据输入的张量计算图、张量计算图中可融合的融合动作集合,在融合动作集合中查询每个融合动作对应的融合空间,形成一系列可能的融合方案,其中,每个融合方案由一组互不相交的计算子图构成,具有可量化的性能或存储收益约束,从而可以通过包括线性规划在内的组合优化工具求解,得到待选择的融合方案。在输入张量计算图上,执行待选择的融合方案进行变换,得到一个融合计算图,最终基于变换后的融合计算图生成面向目标硬件平台的代码,并进行参数化性能调优。
可选的,本实施例所提供的计算图的处理系统可实现张量操作融合空间的探索、张量操作融合方案规划、代码生成以及面向硬件体系结构的调优。
其中,张量操作融合空间的探索可实现从张量计算图出发构建融合动作集合,从融合动作出发递归探索衍生融合动作集合,构建代价模型评估融合动作的优劣。其中,衍生融合动作集合用于表示包含融合动作中的指令的其他融合动作。
需要说明的是,融合空间的探索可以递归穷举所有空间,或依据业务特征对探索空间进行必要剪枝。另外,在融合空间的探索过程中,对融合动作的收益评估可以采用性能实测或构建性能模型等多种实施方式。
可选的,张量操作融合方案规划可实现收益函数定义融合动作的收益,约束不等式定义融合动作之间的业务约束,目标函数定义最终融合方案的优化目标。
另外,在定义收益函数、约束不等式组和目标函数的基础上,张量操作融合方案规划可实现还能够通过线性规划求解器寻找待选择的融合方案。此外,张量操作融合方案规划还具有不限定张量计算图的具体表达方式及目标硬件平台体系结构的普适性。
可选的,代码生成以及面向硬件体系结构的调优可实现参数化表达具体的实现实例,通过遍历参数空间遍历不同的实现;代码生成过程自动优化片上资源的使用;遍历代码生成参数空间的过程中为特定硬件平台寻优性能最好的实现。其中,代码生成过程自动优化片上资源的使用,参考优化的片上资源包括不限于寄存器、片上高速缓存、片外设备内存、指令流水等。
实施例4
本申请的实施例可以提供一种计算设备,该计算设备可以是计算机终端群中的任意一个计算设备。可选地,在本实施例中,上述计算设备也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算设备可以执行计算图的处理方法中以下步骤的程序代码:获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对;查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作;从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图。
可选地,图13是根据本申请实施例的一种计算设备的结构框图。如图13所示,该计算设备10可以包括:一个或多个(图中仅示出一个)处理器1302、存储器1304以及外设接口1306。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的计算图的处理方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的计算图的处理方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输模块调用存储器存储的信息及应用程序,以执行下述步骤:获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对;查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作;从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图。
可选的,计算图为张量计算图。
可选的,上述处理器还可以执行如下步骤的程序代码:将张量计算图中的指令按照数据依赖关系进行拓扑排序;从指令中的根指令开始逆序遍历每个指令,并判断指令是否允许被融合;如果指令允许被融合,则将指令对应的融合动作加入融合动作集合。
可选的,上述处理器还可以执行如下步骤的程序代码:获取指令在张量计算图中对应的输入指令,其中,指令依赖输入指令输出的结果;判断指令与对应的输入指令是否允许融合;如果指令与对应的输入指令允许融合,则将指令与对应的输入指令构成一个融合动作,其中,指令对应的融合动作包括指令和对应的输入指令构成的指令对。
可选的,上述处理器还可以执行如下步骤的程序代码:如果指令与对应的输入指令满足如下任意一个条件,确定指令与对应的输入指令允许融合:指令与对应的输入指令的指令类型兼容;指令与对应的输入指令之间的拓扑结构允许进行融合。
可选的,上述处理器还可以执行如下步骤的程序代码:获取每组融合动作对应的收益信息,其中,收益信息用于表示融合动作所对应的代码的代码性能;根据融合动作,确定融合动作对应的衍生融合动作集合,其中,衍生融合动作集合用于表示包含融合动作中的指令的其他融合动作。
可选的,上述处理器还可以执行如下步骤的程序代码:在获取每组融合动作对应的收益信息之后,根据融合动作对应的收益信息更新评估缓存,其中,评估缓存用于所有融合动作的收益信息。
可选的,上述处理器还可以执行如下步骤的程序代码:执行与融合动作对应的代码,并确定代码的代码性能为融合动作对应的收益信息;或通过预设的代价模型预测融合动作对应的收益信息。
可选的,待选择的融合方案为最优融合方案,上述处理器还可以执行如下步骤的程序代码:确定用于选择待选择的融合方案的目标函数,其中,目标函数根据每个融合动作的收益信息构建;获取约束条件集合,其中,约束条件用于指融合动作之间需要满足的约束条件;根据约束条件对目标函数进行求解,得到待选择的融合方案。
可选的,上述处理器还可以执行如下步骤的程序代码:根据融合方案中的融合动作对张量计算图进行修改,得到融合计算图。
可选的,上述处理器还可以执行如下步骤的程序代码:在从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图之后,根据融合计算图生成代码,其中,根据融合计算图生成代码的步骤包括:构建用于代码生成的参数空间,其中,参数空间之间的每组参数仅表征一个代码实例;对每组参数构建一个对应的代码实例。
可选的,上述处理器还可以执行如下步骤的程序代码:输出融合计算图对外的输出结果;存储融合计算图中的指令之间的中间计算结果,其中,中间计算结果被存储至如下任意一处:寄存器、片上高速缓存和片外设备内存;通过融合计算图中指令的依赖关系对融合计算图中的指令进行串接,生成融合计算图对应的代码。
可选的,上述处理器还可以执行如下步骤的程序代码:在对每组参数构建一个对应的代码实例之后,对生成的代码实例进行性能评估,得到评估结果;将评估结果保存至代码缓存中。
本领域普通技术人员可以理解,图13所示的结构仅为示意,计算设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图13其并不对上述电子装置的结构造成限定。例如,计算设备10还可包括比图13中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图13所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例5
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的计算图的处理方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算设备中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取计算图对应的融合动作集合,其中,融合动作集合包括至少一个融合动作,任意一个融合动作用于表示计算图中允许被融合的指令构成的指令对;查找每个融合动作对应的融合空间,得到融合动作对应的融合方案,其中,融合空间包括允许与融合动作融合的其他融合动作;从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图。
可选地,计算图为张量计算图。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:将张量计算图中的指令按照数据依赖关系进行拓扑排序;从指令中的根指令开始逆序遍历每个指令,并判断指令是否允许被融合;如果指令允许被融合,则将指令对应的融合动作加入融合动作集合。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取指令在张量计算图中对应的输入指令,其中,指令依赖输入指令输出的结果;判断指令与对应的输入指令是否允许融合;如果指令与对应的输入指令允许融合,则将指令与对应的输入指令构成一个融合动作,其中,指令对应的融合动作包括指令和对应的输入指令构成的指令对。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:如果指令与对应的输入指令满足如下任意一个条件,确定指令与对应的输入指令允许融合:指令与对应的输入指令的指令类型兼容;指令与对应的输入指令之间的拓扑结构允许进行融合。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取每组融合动作对应的收益信息,其中,收益信息用于表示融合动作所对应的代码的代码性能;根据融合动作,确定融合动作对应的衍生融合动作集合,其中,衍生融合动作集合用于表示包含融合动作中的指令的其他融合动作。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在获取每组融合动作对应的收益信息之后,根据融合动作对应的收益信息更新评估缓存,其中,评估缓存用于所有融合动作的收益信息。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:执行与融合动作对应的代码,并确定代码的代码性能为融合动作对应的收益信息;或通过预设的代价模型预测融合动作对应的收益信息。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定用于选择待选择的融合方案的目标函数,其中,目标函数根据每个融合动作的收益信息构建;获取约束条件集合,其中,约束条件用于指融合动作之间需要满足的约束条件;根据约束条件对目标函数进行求解,得到待选择的融合方案。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据融合方案中的融合动作对张量计算图进行修改,得到融合计算图。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在从融合方案中选择待选择的融合方案,并根据待选择的融合方案,确定融合计算图之后,根据融合计算图生成代码,其中,根据融合计算图生成代码的步骤包括:构建用于代码生成的参数空间,其中,参数空间之间的每组参数仅表征一个代码实例;对每组参数构建一个对应的代码实例。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:输出融合计算图对外的输出结果;存储融合计算图中的指令之间的中间计算结果,其中,中间计算结果被存储至如下任意一处:寄存器、片上高速缓存和片外设备内存;通过融合计算图中指令的依赖关系对融合计算图中的指令进行串接,生成融合计算图对应的代码。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在对每组参数构建一个对应的代码实例之后,对生成的代码实例进行性能评估,得到评估结果;将评估结果保存至代码缓存中。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (16)
1.一种计算图的处理方法,其特征在于,包括:
获取计算图对应的融合动作集合,其中,所述融合动作集合包括至少一个融合动作,任意一个所述融合动作用于表示所述计算图中允许被融合的指令构成的指令对;
查找每个所述融合动作对应的融合空间,得到所述融合动作对应的融合方案,其中,所述融合空间包括允许与所述融合动作融合的其他融合动作;
从所述融合方案中选择待选择的融合方案,并根据所述待选择的融合方案,确定融合计算图。
2.根据权利要求1所述的方法,其特征在于,所述计算图为张量计算图,获取计算图对应的融合动作集合,包括:
将所述张量计算图中的指令按照数据依赖关系进行拓扑排序;
从所述指令中的根指令开始逆序遍历每个指令,并判断所述指令是否允许被融合;
如果所述指令允许被融合,则将所述指令对应的融合动作加入所述融合动作集合。
3.根据权利要求2所述的方法,其特征在于,判断所述指令是否允许被融合,包括:
获取所述指令在所述张量计算图中对应的输入指令,其中,所述指令依赖所述输入指令输出的结果;
判断所述指令与对应的所述输入指令是否允许融合;
如果所述指令与对应的所述输入指令允许融合,则将所述指令与对应的输入指令构成一个融合动作,其中,所述指令对应的融合动作包括指令和对应的所述输入指令构成的指令对。
4.根据权利要求3所述的方法,其特征在于,判断所述指令与对应的所述输入指令是否允许融合,包括:
如果所述指令与对应的输入指令满足如下任意一个条件,确定所述指令与对应的所述输入指令允许融合:
所述指令与对应的所述输入指令的指令类型兼容;
所述指令与对应的所述输入指令之间的拓扑结构允许进行融合。
5.根据权利要求1所述的方法,其特征在于,查找每个所述融合动作对应的融合空间,得到所述融合动作对应的融合方案,包括:
获取每组融合动作对应的收益信息,其中,所述收益信息用于表示所述融合动作所对应的代码的代码性能;
根据所述融合动作,确定所述融合动作对应的衍生融合动作集合,其中,所述衍生融合动作集合用于表示包含所述融合动作中的指令的其他融合动作。
6.根据权利要求5所述的方法,其特征在于,在获取每组融合动作对应的收益信息之后,所述方法还包括:
根据所述融合动作对应的收益信息更新评估缓存,其中,所述评估缓存用于所有融合动作的收益信息。
7.根据权利要求5所述的方法,其特征在于,获取每组融合动作对应的收益信息,包括:
执行与所述融合动作对应的代码,并确定所述代码的代码性能为所述融合动作对应的收益信息;或
通过预设的代价模型预测所述融合动作对应的收益信息。
8.根据权利要求1所述的方法,其特征在于,所述待选择的融合方案为最优融合方案,从所述融合方案中选择待选择的融合方案,包括:
确定用于选择所述待选择的融合方案的目标函数,其中,所述目标函数根据每个融合动作的收益信息构建;
获取约束条件集合,其中,所述约束条件用于指融合动作之间需要满足的约束条件;
根据所述约束条件对所述目标函数进行求解,得到所述待选择的融合方案。
9.根据权利要求1所述的方法,其特征在于,所述计算图为张量计算图,根据所述待选择的融合方案,确定融合计算图,包括:
根据所述融合方案中的融合动作对所述张量计算图进行修改,得到所述融合计算图。
10.根据权利要求1所述的方法,其特征在于,在从所述融合方案中选择待选择的融合方案,并根据所述待选择的融合方案,确定融合计算图之后,所述方法还包括:根据所述融合计算图生成代码,其中,根据所述融合计算图生成代码的步骤包括:
构建用于代码生成的参数空间,其中,所述参数空间之间的每组参数仅表征一个代码实例;
对所述每组参数构建一个对应的代码实例。
11.根据权利要求10所述的方法,其特征在于,对所述每组参数构建一个对应的代码实例,包括:
输出所述融合计算图对外的输出结果;
存储所述融合计算图中的指令之间的中间计算结果,其中,所述中间计算结果被存储至如下任意一处:寄存器、片上高速缓存和片外设备内存;
通过所述融合计算图中指令的依赖关系对所述融合计算图中的指令进行串接,生成融合计算图对应的代码。
12.根据权利要求10所述的方法,其特征在于,在对所述每组参数构建一个对应的代码实例之后,所述方法还包括:
对生成的所述代码实例进行性能评估,得到评估结果;
将所述评估结果保存至代码缓存中。
13.一种计算图的处理装置,其特征在于,包括:
获取模块,用于获取计算图对应的融合动作集合,其中,所述融合动作集合包括至少一个融合动作,任意一个所述融合动作用于表示所述计算图中允许被融合的指令构成的指令对;
查找模块,用于查找每个所述融合动作对应的融合空间,得到所述融合动作对应的融合方案,其中,所述融合空间包括允许与所述融合动作融合的其他融合动作;
处理模块,用于从所述融合方案中选择待选择的融合方案,并根据所述待选择的融合方案,确定融合计算图。
14.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至12中任意一项所述的计算图的处理方法。
15.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至12中任意一项所述的计算图的处理方法。
16.一种计算图的处理系统,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
获取计算图对应的融合动作集合,其中,所述融合动作集合包括至少一个融合动作,任意一个所述融合动作用于表示所述计算图中允许被融合的指令构成的指令对;
查找每个所述融合动作对应的融合空间,得到所述融合动作对应的融合方案,其中,所述融合空间包括允许与所述融合动作融合的其他融合动作;
从所述融合方案中选择待选择的融合方案,并根据所述待选择的融合方案,确定融合计算图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911289404.6A CN112965710B (zh) | 2019-12-13 | 2019-12-13 | 计算图的处理方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911289404.6A CN112965710B (zh) | 2019-12-13 | 2019-12-13 | 计算图的处理方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112965710A true CN112965710A (zh) | 2021-06-15 |
CN112965710B CN112965710B (zh) | 2024-07-05 |
Family
ID=76270868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911289404.6A Active CN112965710B (zh) | 2019-12-13 | 2019-12-13 | 计算图的处理方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112965710B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485837A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于并行分支和张量切分的张量处理方法和处理系统 |
WO2022148276A1 (zh) * | 2021-01-08 | 2022-07-14 | 华为技术有限公司 | 计算图优化方法及装置 |
CN115796228A (zh) * | 2022-11-15 | 2023-03-14 | 北京百度网讯科技有限公司 | 算子融合方法、装置、设备以及存储介质 |
WO2024093292A1 (zh) * | 2022-11-02 | 2024-05-10 | 上海寒武纪信息科技有限公司 | 计算图的算子自动融合方法及相关产品 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014154917A1 (es) * | 2013-03-27 | 2014-10-02 | Intel Corporation | Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software |
US20170177343A1 (en) * | 2015-12-16 | 2017-06-22 | Patrick P. Lai | Hardware apparatuses and methods to fuse instructions |
US20180083839A1 (en) * | 2016-09-22 | 2018-03-22 | International Business Machines Corporation | Operator fusion management in a stream computing environment |
DE202018100066U1 (de) * | 2018-01-08 | 2018-04-10 | Google Llc | Schleifen- und Bibliotheksfusion |
US20180107510A1 (en) * | 2016-10-19 | 2018-04-19 | International Business Machines Corporation | Operation of a multi-slice processor implementing instruction fusion |
CN108345937A (zh) * | 2017-01-06 | 2018-07-31 | 谷歌有限责任公司 | 循环与库融合 |
JP2018163381A (ja) * | 2017-03-24 | 2018-10-18 | 日本電気株式会社 | コード生成装置、コード生成方法及びコード生成プログラム |
CN110321999A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 神经网络计算图优化方法 |
CN110490309A (zh) * | 2019-08-14 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 一种用于神经网络的算子融合方法及其相关产品 |
-
2019
- 2019-12-13 CN CN201911289404.6A patent/CN112965710B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014154917A1 (es) * | 2013-03-27 | 2014-10-02 | Intel Corporation | Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software |
US20170177343A1 (en) * | 2015-12-16 | 2017-06-22 | Patrick P. Lai | Hardware apparatuses and methods to fuse instructions |
US20180083839A1 (en) * | 2016-09-22 | 2018-03-22 | International Business Machines Corporation | Operator fusion management in a stream computing environment |
US20180107510A1 (en) * | 2016-10-19 | 2018-04-19 | International Business Machines Corporation | Operation of a multi-slice processor implementing instruction fusion |
CN108345937A (zh) * | 2017-01-06 | 2018-07-31 | 谷歌有限责任公司 | 循环与库融合 |
JP2018163381A (ja) * | 2017-03-24 | 2018-10-18 | 日本電気株式会社 | コード生成装置、コード生成方法及びコード生成プログラム |
DE202018100066U1 (de) * | 2018-01-08 | 2018-04-10 | Google Llc | Schleifen- und Bibliotheksfusion |
CN110321999A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 神经网络计算图优化方法 |
CN110490309A (zh) * | 2019-08-14 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 一种用于神经网络的算子融合方法及其相关产品 |
Non-Patent Citations (3)
Title |
---|
FOUSEK J等: "Optimizing CUDA code by kernel fusion: application on BLAS", JOURNAL OF SUPERCOMPUTING * |
GUOPING LONG 等: "FusionStitching: Boosting Execution Effciency of Memory Intensive Computations for DLWorkloads", ARXIV, pages 3 - 5 * |
李瀚清;房宁;赵群飞;夏泽洋;: "利用深度去噪自编码器深度学习的指令意图理解方法", 上海交通大学学报, no. 07 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022148276A1 (zh) * | 2021-01-08 | 2022-07-14 | 华为技术有限公司 | 计算图优化方法及装置 |
CN113485837A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于并行分支和张量切分的张量处理方法和处理系统 |
CN113485837B (zh) * | 2021-07-21 | 2024-05-07 | 瀚博半导体(上海)有限公司 | 一种基于并行分支和张量切分的张量处理方法和处理系统 |
WO2024093292A1 (zh) * | 2022-11-02 | 2024-05-10 | 上海寒武纪信息科技有限公司 | 计算图的算子自动融合方法及相关产品 |
CN115796228A (zh) * | 2022-11-15 | 2023-03-14 | 北京百度网讯科技有限公司 | 算子融合方法、装置、设备以及存储介质 |
CN115796228B (zh) * | 2022-11-15 | 2024-04-05 | 北京百度网讯科技有限公司 | 算子融合方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112965710B (zh) | 2024-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112965710A (zh) | 计算图的处理方法、装置和系统 | |
CN107678790B (zh) | 流计算方法、装置及系统 | |
Elgamal et al. | Costless: Optimizing cost of serverless computing through function fusion and placement | |
US9286032B2 (en) | Automated software composition | |
CN112579797B (zh) | 针对知识图谱的业务处理方法及装置 | |
Wu et al. | Tree-based search algorithm for web service composition in SaaS | |
US8127269B2 (en) | Transforming a flow graph model to a structured flow language model | |
Ludwig | Applying particle swarm optimization to quality-of-service-driven web service composition | |
CN109754072B (zh) | 网络离线模型的处理方法、人工智能处理装置及相关产品 | |
CN109582289B (zh) | 规则引擎中规则流的处理方法、系统、存储介质和处理器 | |
CN110175027A (zh) | 一种开发业务功能的方法和装置 | |
CN103138981A (zh) | 一种社交网络分析方法和装置 | |
Mahini et al. | An evolutionary game approach to IoT task offloading in fog-cloud computing | |
CN112288249A (zh) | 业务流程执行方法、装置、计算机设备和介质 | |
CN110633959A (zh) | 基于图结构的审批任务创建方法、装置、设备及介质 | |
de Lara et al. | Domain-specific discrete event modelling and simulation using graph transformation | |
Min et al. | An approach to resource and QoS-aware services optimal composition in the big service and Internet of Things | |
Xue et al. | From soa to voa: a shift in understanding the operation and evolution of service ecosystem | |
CN116501503A (zh) | 负载任务的架构映射方法、装置、计算机设备及介质 | |
CN109840074A (zh) | 一种业务生成方法、装置及网络设备 | |
CN114218265A (zh) | 离线模型的处理方法、装置、存储介质和处理器 | |
CN110442753A (zh) | 一种基于opc ua的图数据库自动建立方法及装置 | |
CN109144498A (zh) | 一种面向对象实例化任务的api自动推荐方法及装置 | |
CN115495056B (zh) | 分布式图计算系统和方法 | |
Losavio et al. | Graph modelling of a refactoring process for product line architecture design |
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 |