CN111459464A - 节点融合方法、代码生成方法、装置 - Google Patents
节点融合方法、代码生成方法、装置 Download PDFInfo
- Publication number
- CN111459464A CN111459464A CN201910060111.4A CN201910060111A CN111459464A CN 111459464 A CN111459464 A CN 111459464A CN 201910060111 A CN201910060111 A CN 201910060111A CN 111459464 A CN111459464 A CN 111459464A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- fusion
- layer
- 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
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
-
- 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
Abstract
本发明实施例提供了一种节点融合方法、代码生成方法、装置,其中,节点融合方法包括:根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量;根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合,从而可以对层间不具有依赖关系的节点同样进行融合,从而扩大了节点融合后得到的融合操作的计算粒度较大,进而解决现有技术中融合后得到的融合操作计算粒度较小,无法充分发挥现有的硬件平台的计算性能的问题。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种节点融合方法、代码生成方法、装置。
背景技术
近年来,人工智能应用爆发增长。而软件基础框架的支持和硬件算力的支撑是驱动人工智能应用业务创新的基础动力。当前主流的人工智能业务的软件基础框架,一般可以将人工智能的计算业务抽象成一个计算图表示,并可以根据计算图中的定义进行计算。然后可以将计算图部署到硬件平台上,从而由硬件平台本身的硬件算力进行支撑。
通常,由于计算图中单个节点的粒度较小,在将计算图部署到硬件平台上时,大多会依照生产者和消费者的依赖关系进行节点融合,然后再进行部署,但是,通过这种方法融合后得到的操作计算粒度仍然较小,无法充分发挥现有的硬件平台的计算性能。
发明内容
有鉴于此,本发明实施例提供一种节点融合方法、代码生成方法、装置,以解决上述问题。
根据本发明实施例的第一方面,提供了一种节点融合方法,其包括:根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量;根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合。
根据本发明实施例的第二方面,提供了一种代码生成方法,其包括:根据完成节点融合的目标计算图,得到计算粒度符合预设粒度界限的融合操作;为所述融合操作分配硬件平台的计算资源来确定所述融合操作的计算结果,并通过硬件平台的存储资源中转所述计算结果,以根据所述目标计算图生成适用于所述硬件平台的代码。
根据本发明实施例的第三方面,提供了一种节点融合装置,其包括:编号模块,用于根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量;融合模块,用于根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合。
根据本发明实施例的第四方面,提供了一种代码生成装置,其包括:融合操作确定模块,用于根据完成节点融合的目标计算图,得到计算粒度符合预设粒度界限的融合操作;代码生成模块,用于为所述融合操作分配硬件平台的计算资源来确定所述融合操作的计算结果,并通过硬件平台的存储资源中转所述计算结果,以根据所述目标计算图生成适用于所述硬件平台的代码。
根据本发明实施例提供的方案,通过根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,,从而保证了节点关系不会发生混淆;根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合,从而可以对层间不具有依赖关系的节点同样进行融合,从而扩大了节点融合后对应的融合操作的计算粒度较大,进而解决现有技术中融合后得到的融合操作计算粒度较小,无法充分发挥现有的硬件平台的计算性能的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例一的节点融合方法的步骤流程图;
图2为本发明实施例二的节点融合方法的步骤流程图;
图3为本发明实施例三的代码生成方法的步骤流程图;
图4为本发明实施例四的代码生成方法的步骤流程图;
图5a为本发明实施例五的一种张量操作以及代码生成方法流程示意图;
图5b为本发明实施例五中对目标计算图进行编号的方法流程示意图;
图5c为本发明实施例五中根据确定的起始层进行节点融合的方法流程示意图;
图5d为本发明实施例五中步骤S506的具体执行方法的流程示意图;
图5e为本发明实施例五中步骤S510的具体执行方法的流程示意图;
图6为本发明实施例六的一种节点融合装置的结构框图;
图7为本发明实施例七的一种代码生成装置的结构框图;
图8为本发明实施例八的一种终端设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
参照图1,示出了根据本发明实施例一的节点融合方法的步骤流程图。
所述方法包括如下步骤:
S102、根据目标计算图中节点间的依赖关系,对所述节点进行编号。
本实施例中,目标计算图可以为一整个计算图,也可以是一整个计算图的子图,本实施例对此不进行限定。
目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量。
本实施例中,计算图中的各个节点之间存在依赖关系,例如存在数据依赖关系或者控制依赖关系等,在计算时,存在依赖关系的节点存在时序关系,则本实施例中,根据节点间的依赖关系进行编号,从而防止节点关系混淆,进而避免由于节点关系混淆导致的计算错误的问题。
例如,节点间的数据依赖可以为生产者节点与消费者节点的依赖关系。节点中的生产者与消费者是相互对应的。例如,对于任意两个节点A、B,若节点A输出的张量是节点B的输入张量,则节点A是节点B的生产者,节点B是节点A的消费者。
具体地,针对生产者节点与消费者节点,为了防止节点的混淆,在编号时,节点中生产者节点的节点编号大于该生产者节点对应的消费者节点的节点编号。
然而,如果目标计算图中包括循环结构,循环结构会使目标计算图中部分生产者节点的编号小于该生产者的消费者节点的编号,因此,在使用本方案时,目标计算图中不包括循环结构。为此,在实际使用时,可以将计算图拆分为不包括循环结构的计算子图,并将不包括循环结构的计算子图作为本实施例中的目标计算图。
当然,本实施例中,也可以根据其他依赖关系对节点进行编号,本实施例对此不进行限定。
S104、根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合。
通过根据依赖关系对进行编号,可以防止在确定的层次图中出现节点混淆的现象。进一步地,由于在融合时会逐层融合张量操作,每个节点均对应一个张量操作,则张量操作的融合即节点的融合,从而保证了融合过程中,不会出现由于节点顺序混淆导致的融合错误,进而保证了节点融合的准确性。
并且,在进行节点融合时,由于是依照层次图逐层融合张量操作的,则在融合过程中,可以对层间不具有依赖关系的节点进行融合,而并非现有技术中的仅限于具有生产者与消费者依赖关系的节点,使得融合得到的融合操作粒度较大,且,融合操作可以包括一个或多个输入节点以及一个或多个输出节点。
本实施例提供的节点融合方案,通过根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量,从而保证了节点关系不会发生混淆;根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合,从而可以对层间不具有依赖关系的节点同样进行融合,从而扩大了节点融合后对应的融合操作的计算粒度较大,进而解决现有技术中融合后得到的融合操作计算粒度较小,无法充分发挥现有的硬件平台的计算性能的问题。
参照图2,示出了根据本发明实施例二的节点融合方法的步骤流程图。
所述方法包括如下步骤:
S202、以所述目标计算图的根节点为起点,依照生产者与消费者的依赖关系,遍历所述目标计算图中的节点,以根据目标计算图中节点间的依赖关系,对所述节点进行编号。
具体地,本实施例中,目标计算图的根节点即为目标计算图的输出节点。
具体地,步骤S202包括:
对所述目标计算图的根节点进行编号,所述根节点为消费者节点。依照生产者与消费者的依赖关系,多次确定已编号节点的生产者节点,若确定的所述生产者节点的所有消费者节点均已编号,则对确定的所述生产者节点进行编号,直至遍历完所述目标计算图中的所有节点。
本实施例中,由于根节点为输出节点,因此,在目标计算图中,根节点为消费者节点;同理,目标计算图中的输入节点为生产者节点。
本实施例中,由于编号时是以根节点为起点,则可以先对根节点进行编号,例如确定根节点的编号为0,再以根节点为起点,按照生产者与消费者的依赖关系进行遍历。在进行遍历时,可以先确定已编号节点的生产者节点,再确定是否将生产者节点编号。例如,若已编号节点为根节点,则可以确定根节点的生产者节点,再确定是否对该生产者节点进行编号。
另外,由于节点中生产者节点的节点编号大于该生产者节点对应的消费者节点的节点编号,因此,在确定是否对生产者节点进行编号时,可以先确定所述生产者节点的所有消费者节点是否均已编号,如是,则可以对该生产者节点进行编号。
另外,本实施例中可以建立节点队列,将编号后的节点入队;然后可以通过所述节点队列确定已编号节点,以确定已编号节点的生产者节点。
具体地,当建立节点队列时,步骤S202可以包括如下步骤:
1)创建并初始化一个节点队列,并将根节点入队。
2)对根节点进行编号。接下来循环执行步骤3)-8),直至节点队列为空。
3)从节点队列中弹出处于节点队列队首的已编号节点。
4)生成弹出的已编号节点的所有的生产者节点对应的生产者节点列表。
5)如生产者节点列表为空则结束该节点的处理,返回步骤3),以弹出下一已编号节点。
6)如果生产者节点列表不为空,则根据生产者节点列表,依序检查每个生产者节点的所有消费者节点。
7)如果某一生产者节点的消费者节点均已编号,则对该生产者节点进行编号,并将其放到节点队列的队尾。
8)如果某一生产者节点的消费者节点并未全部进行编号,则将上述弹出节点再次放到节点队列的队尾,并返回步骤3),以弹出下一已编号节点。
本实施例中,对生产者节点进行编号时,所述生产者节点的节点编号为其所有消费者节点的节点编号中的最大值加a,其中,a为一大于0的常数,为了便于计算,后续以a=1为例进行说明。
S204、确定节点编号相同的所述节点在同一层,并将所述节点编号作为该层的层编号,以确定所述目标计算图对应的层次图。
本实施例中,确定的层次图中,根节点的所在的层的层编号值最小。
S206、确定层次图中的多个起始层。
本实施例中,可以确定所述张量操作中用于调用第三方库的张量操作,并将确定的张量操作的节点所在的层作为起始层,以确定所述层次图中的多个起始层。
本实施例中,第三方库中是已经编写好的计算函数,张量操作可以根据输入的张量来调用第三方库中的计算函数来进行较为复杂的计算。
由于用于调用第三方库的张量操作无法融合,因此,本实施例中,将用于调用第三方库的张量操作的节点所在的层作为起始层,从而可以以起始层为边界,来逐层进行张量操作的融合,即进行节点的融合。
可替代地,本实施例中,也可以通过其他方式来确定层次图中的多个起始层,并根据确定的起始层执行后续步骤S208,本实施例对此不进行限定。
S208、逐层融合任意两个相邻起始层间的节点对应的张量操作。
根据上述步骤可知,根节点所在的层的层编号的值最小,则,在执行步骤S208时,可以以根节点所在的层为起点逐层进行融合。
逐层融合时,可以将任意两个相邻起始层之间的节点对应的节点融合为一个或者多个融合操作,融合整个目标计算图后得到的融合操作的个数大于或等于起始层的个数。
具体地,进行融合时,可以先确定一起始层集合,然后根据起始层集合,将起始层集合中的起始层作为融合起始层,按照层编号递增的顺序进行遍历,直至下一起始层,即张量操作的融合过程不会跨越起始层。
当然,在融合时,同样可以有其他融合条件,例如,融合条件可以包括粒度上限条件、融合边界条件等。粒度上限条件根据硬件平台的计算资源确定,粒度上限为可以计算资源中可计算上限;融合边界条件根据带融合的张量操作确定,用于衡量张量操作是否能够进行融合,例如确定张量操作输出张量的维度等。
具体地,本实施例中步骤S208包括:
确定层次图中的第一起始层,并将所述第一起始层作为融合起始层,以对所述第一起始层中的节点进行融合,得到候选计算图;以所述第一起始层为起点,按照层编号递增的顺序,依次确定各层为融合备选层,直至与第一起始层相邻的第二起始层为止,且将所述融合备选层中的节点融合进所述候选计算图中。
本实施例中,第一起始层可以根据上述的起始层集合确定,第二起始层为按照层编号递增的顺序确定的、与第一起始层相邻且层编号的值大于第一起始层的另一起始层。由于计算图的层次图中包括多个起始层,则在融合时,可以进行多线程融合,每个融合线程均可以对应一个起始层。
通过将第一起始层和第二起始层之间的各层作为融合备选层,并将各层中的节点融合进候选计算图中,可以最大限度地将第一起始层和第二起始层之间的各个节点进行融合,从而避免遗漏节点,融合效果更好。
具体地,本实施例中,在融合第一起始层中的节点时,由于层间的节点不存在依赖关系,则可以将第一起始层中的所有节点确定为非依赖节点,并将其进行融合,第一起始层中的节点为候选计算图的根节点。当然,第一起始层中用于调用第三方库的张量操作不进行融合。
具体地,将所述融合备选层中的节点融合进所述候选计算图中可以包括:确定所述融合备选层中与所述候选计算图存在依赖节点,并依照所述依赖关系将所述依赖节点融合进所述候选计算图中;确定所述融合备选层中剩余的节点为非依赖节点,将所述非依赖节点融合进所述候选计算图中。
本实施例中,根据依赖关系融合依赖节点后,可以获得存在依赖关系的节点链,其对应一串存在依赖关系的张量操作;融合非依赖节点后,非依赖节点可以作为后续融合时的根节点,即通过融合非依赖节点,可以使得候选计算图中包括无依赖的多个节点链。
本实施例中,通过先将融合备选层中的依赖节点融合进候选计算图,再将非依赖节点融合进候选计算图中,可以尽量将融合候选层中的所有节点均融合进候选计算图中,减小了遗漏节点的可能性。
本实施例提供的节点融合方案,通过确定计算图对应的层次图,并确定层次图中的起始层,可以以起始层为边界,逐层融合任意两个相邻起始层间的节点,从而提高了融合效率;同时,两个相邻起始层之间的节点融合后的得到的融合操作中若包括多个无依赖关系的节点链,则多个节点链的计算时间的最大值即为该两个相邻的起始层之间所需的计算时间,确定所有的相邻起始层的计算时间后,即可确定计算图被部署后的执行总时间,则采用上述的方法进行节点融合,可以使得确定计算图的执行时间时更加方便。
参照图3,示出了根据本发明实施例三的代码生成方法的步骤流程图。
所述方法包括如下步骤:
S302、根据完成节点融合的目标计算图,得到计算粒度符合预设粒度界限的融合操作。
本实施例中,可以通过上述实施例提供的节点融合方法来融合目标计算图中的张量操作,本实施例在此不再赘述。
本实施例中,预设的粒度界限可以根据硬件平台确定,从而使得符合预设粒度界限的融合操作,可以充分发挥硬件平台的性能。例如,粒度界限可以为计算粒度大于第一粒度阈值且小于第二粒度阈值,第一粒度阈值可以为硬件平台中的计算资源的计算单元的最小计算粒度,第二粒度阈值可以为硬件平台中的计算资源的计算单元的最大计算粒度。
S304、为所述融合操作分配硬件平台的计算资源来确定所述融合操作的计算结果,并通过硬件平台的存储资源中转所述计算结果,以根据所述目标计算图生成适用于所述硬件平台的代码。
本实施例中,为融合操作分配硬件平台的计算资源,即通过分配的计算资源在计算融合操作,从而得到融合操作的计算结果。计算资源具体可以为硬件平台的CPU、GPU等,只要能够计算融合操作即可。
现有技术中,大多通过寄存器存储融合操作的计算结果,使得计算结果无法在线程之间共享,进而使得计算图的部署难度大大提高。而本实施例中,通过硬件平台的存储资源中转融合操作的计算结果,使得融合操作的计算结果可以在多个线程之间共享。
另外,与现有的融合相比,由于本方案中得到的是符合预设粒度界限的融合操作,从而在上述步骤中得到的融合操作的计算粒度较大,使得融合操作中的各个计算数据的存储过程中发生冲突的概率大大提高。而本实施例中,通过硬件平台的存储资源中转融合操作的计算结果,使得融合操作的计算结果不仅可以在多个线程之间共享,也可以通过硬件平台的存储资源中转融合操作的计算结果来解耦融合操作的内部实现,从而降低各个计算数据的存储过程中发生冲突的概率,并以充分发挥硬件平台的性能。
参照图4,示出了根据本发明实施例四的代码生成方法的步骤流程图。
所述方法包括如下步骤:
S402、根据完成节点融合的目标计算图,得到计算粒度符合预设粒度界限的融合操作。
本实施例的具体内容参照上述实施例三中的步骤S302,本实施例在此不再赘述。
S404、根据硬件平台的计算资源、存储资源以及所述融合操作,确定所述融合操作对应的执行计划的计划参数。
本实施例中,执行计划为将融合操作部署至硬件平台后,融合操作被执行的详细方案,因此,执行计划由硬件平台的计算资源、存储资源和融合操作共同确定。
本实施例中,执行计划的具体呈现可以存在多种形式,当业务场景或者目标平台的体系结构等不同时,执行计划的具体呈现也可以不同。例如,执行计划可以通过计划参数进行呈现。计划参数可以包括但不限于:规划实现参数和规划平台参数,其中,规划实现参数包括:融合操作中张量维度的划分位置、行主导或列主导,融合操作中包括的张量操作的形状、张量操作类型;规划平台参数包括:硬件平台的资源划分规则、资源约束规则等。资源划分规则是指硬件平台中划分计算资源和存储资源的划分规则;资源约束规则是指硬件平台中的计算资源、存储资源的约束,例如可分配的计算资源和存储资源的大小等。
当然,执行计划还可以通过其他方式进行呈现,此时,本领域的技术人员可以直接根据执行计划的呈现方式确定执行计划的计划参数,本实施例对此不进行限定。
S406、根据所述计划参数确定所述执行计划的评估结果。
本实施例中,确定计划参数后,即可对执行计划进行评估,从而确定评估结果。
具体地,步骤S406可以包括:
根据所述计划参数生成查询值,并根据所述查询值在性能库中进行性能数据的检索,所述性能库用于存储历史执行计划的所述性能数据。若存在命中的所述性能数据,则将所述命中的所述性能数据作为所述执行计划的性能数据,以确定所述评估结果。另外,若不存在命中的所述性能数据,则根据所述执行计划生成计算实例;在所述硬件平台运行所述计算实例,确定所述执行计划的性能数据,以确定所述评估结果。
本实施例中,性能库可以是预先建立的,也可以是根据历史执行计划建立的,本实施例对此不进行限定。具体地,性能库中可以存储有历史查询值以及与历史查询值对应的历史执行计划的性能数据。
本实施例中,根据计划参数生成的查询值可以与计划参数一一对应,即一组计划参数对应一个查询值。从而可以通过生成的查询值在性能库中进行检索,确定执行计划的性能数据,进而可以确定评估结果。
本实施例中,评估结果用于表征执行计划性能的好坏。例如,可以通过比较执行计划与历史执行计划的性能数据,来确定执行计划的评估结果;若执行计划的性能数据优于历史执行计划的性能数据,则评估结果可以为优;反之,评估结果可以为差。
S408、若根据所述评估结果确定出所述执行计划符合预设的部署标准,则继续执行根据所述目标计算图生成适用于所述硬件平台的代码的操作。
本实施例中,一个融合操作可以对应有多个执行计划,则确定融合操作后,可以通过步骤S404-S48,多次确定某一融合操作的执行计划,直至通过步骤S408确定出符合部署标准的执行计划为止。
具体地,针对每个执行计划,步骤S408执行完成后,可以确定保留的执行计划,例如,若评估结果确定本次确定的执行计划的性能数据优于历史保留的执行计划的性能数据,则可以将本次确定的执行计划更新为保留的执行计划;反之,则不更新。从而多次确定保留的执行计划,直至执行计划符合部署标准。
对应的,本实施例中,步骤S408中的部署标准可以为确定执行计划的次数;或者,部署标准可以为某一执行计划被保留的次数等,本实施例对此不进行限定。
另外,若融合操作包括多个,则可以针对每个融合操作,均多次执行步骤S404-S408,以确定所有融合操作对应的较优的执行计划。
S410、若不能确定出符合预设的部署标准的执行计划,则再次融合目标计算图中包括的张量操作。并返回执行步骤S402,以得到计算粒度符合预设粒度界限的新的融合操作。
若不能确定出符合预设的部署标准的执行计划,则再次融合目标计算图中包括的节点,以得到计算粒度符合预设粒度界限的新的融合操作。具体地,本实施例中,若通过步骤S404-S408,无法确定符合部署条件的执行计划,即不能确定出符合预设的部署标准的执行计划,则可能节点融合不恰当,此时,可以再次返回步骤S402,从而确定新的融合操作;然后再通过步骤S404-S408,确定新的融合操作的执行计划。可以多次执行计划S402-S410,直至确定出符合部署标准的执行计划为止。
本实施例中,通过重复执行步骤S404-S410,可以得到融合操作对应的较优的执行计划,从而可以通过步骤S412,根据确定的执行计划将计算图部署到硬件平台上。由于确定的执行计划为融合操作对应的较优的执行计划,则根据该执行计划进行部署后,可以提高融合操作执行时的性能,进而提高硬件平台的效率。
S412、为所述融合操作分配硬件平台的计算资源来确定所述融合操作的计算结果,并通过硬件平台的存储资源中转所述计算结果,以根据所述目标计算图生成适用于所述硬件平台的代码。
本实施例中,上述步骤中确定了执行计划,则本实施例中,可以根据执行计划来分配计算资源和存储资源。
本实施例中,为融合操作分配硬件平台的计算资源可以为:根据执行计划,在硬件平台上为融合操作进行必要的硬件配置,并分配硬件资源。另外,分配硬件资源后,即可根据融合操作生成硬件平台可以识别的代码,即根据所述目标计算图生成适用于所述硬件平台的代码,以将目标计算图部署在硬件平台上。
本实施例中,通过硬件平台的存储资源中转所述计算结果具体可以包括:根据融合操作,在硬件平台上确定融合操作对应的存储空间,存储空间为可在多线程之间共享的存储空间,进而可以通过硬件平台的存储资源中转计算结果,进而可以解耦融合操作。
具体地,所述通过硬件平台的存储资源中转所述计算结果包括:
确定所述融合操作的存储空间需求,根据所述存储空间需求为所述融合操作分配硬件平台的存储资源,以通过所述存储资源中转所述融合操作的计算结果。
本实施例的一种实现方式中,融合操作的空间需求可以根据上述步骤中的执行计划确定。
另外,由于所述融合操作中可以有多个节点链,则其可以对应有多个计算结果。因此,本步骤S412中,根据所述存储空间需求为所述融合操作分配硬件平台的存储资源时,还可以包括:
确定所述融合操作中各个计算结果的生命周期数据,以确定可复用存储资源的计算结果;根据所述存储空间需求以及可复用存储资源的计算结果,为所述融合操作分配硬件平台的存储资源。
本实施例中,计算结果的生命周期数据可以为计算结果存在的时间周期,通过分析各个计算结果的生命周期数据,可以进行空间分享分析,通过空间分享分析,可以将可复用存储资源的计算结果分配同一存储资源,从而可以充分利用硬件平台的存储资源。
此外,本实施例中,所述硬件平台的存储资源包括片上高速缓存资源、片外存储资源,则所述为所述融合操作分配硬件平台的存储资源包括:
确定所述融合操作的临时计算结果和最终计算结果,为所述临时计算结果分配所述片上高速缓存资源,为所述最终计算结果分配所述片外存储资源。
具体地,可以通过融合操作中包括的计算图的节点类型,确定其对应的计算结果为临时计算结果或者为最终计算结果。例如,如果节点是根节点,则计算结果为融合操作输出的最终计算结果,此时,可以为其分配片外存储资源;根节点之外的其他节点的计算结果为临时计算结果,则可以为其分配片上高速缓存资源,从而通过片上高速缓存资源来提高计算结果中转的效率。
由于,一般情况下,硬件平台上的片上高速缓存资源较为宝贵,因此,在实际使用时,可以通过片上软件管理片上高速缓存资源,例如,如上所述,可以通过片上软件确定可复用片上高速缓存资源的临时计算结果,并为其分配同一片上高速缓存资源,以节约片上高速缓存资源;或者,可以通过片上软件回顾已经被分配过的片上高速缓存资源,并确定其存储的临时计算结果对应的张量操作,然后根据该张量操作的优先级以及当前待分配片上高速缓存资源的张量操作的优先级,可以将优先级较低的张量操作对应的临时计算结果通过片外存储资源进行中转,而将优先级较高的张量操作对应的临时计算结果通过片上高速缓存资源进行中转。
另外,本实施例中,若在分配的过程中确定硬件平台的片上高速缓存资源不足以满足所有融合操作的存储空间需求,则可以重新进行节点融合,并返回步骤S402执行,本实施例对此不进行限定。
本实施例提供的方案,通过硬件平台的存储资源中转融合操作的计算结果,使得融合操作的计算结果可以在多个线程之间共享,也可以通过硬件平台的存储资源中转融合操作的计算结果来解耦融合操作的内部实现,从而降低各个计算数据的存储过程中发生冲突的概率,并以充分发挥硬件平台的性能;且本实施例中,通过确定符合部署标准的执行计划,则根据该执行计划进行部署后,可以提高融合操作执行时的性能,进而提高硬件平台的效率。
上述实施例一至四中的节点融合方法或者代码生成方法可以由任意适当的具有数据处理能力的终端设备执行,包括但不限于:移动终端(如平板电脑、手机等)和PC机。
实施例五
参照图5a,示出了根据本发明实施例五的一种张量操作以及代码生成方法的流程示意图。通过本实施例,对上述节点融合以及代码生成过程地结合进行实例性说明。
本实施例提供的方法包括以下步骤:
S502、对输入的目标计算图中的节点进行编号。
具体地,对输入的目标计算图的具体要求参见上述步骤S102,本实施例不再赘述。
本实施例中,如图5b所示,对目标计算图进行编号的方法包括:
S5021、初始化节点队列中的节点为根节点,并为根节点编号。
S5022、判断节点队列是否为空。如果为空,则结束;如果不为空,则执行步骤S5023。
S5023、弹出节点队列中位于对列头的节点,并确定弹出节点的生产者节点列表。
S5024、判断生产者节点列表是否为空。如果为空,则执行步骤S5022;如果不为空,则执行步骤S5025。
S5025、确定生产者节点列表中的一生产者节点,然后执行下述步骤S5026。
S5026、判断该生产者节点的所有消费者节点是否均已编号。如果是,则执行步骤S5027;如果不是,则执行S5024。
S5027、为该生产者节点编号,并将该生产者节点插入节点队列的队尾。然后执行S5024。
通过上述编号方式,可以保证某一节点的消费者节点均编号后,再对该节点进行编号,进而可以保证目标计算图中生产者节点的编号大于其消费者节点的编号。
S504、根据编号结果确定所述节点所在的层,并根据调用第三方库的张量操作确定起始层,并根据确定的起始层进行节点融合,确定对应的融合操作。
本实施例中,上述确定的生产者节点的编号可以为其消费者节点编号中的最大值加1,在根节点的编号均为0的情况下,可以根据编号结果确定编号相同的节点在一层;另外,若节点对应的张量操作为用于调用第三方库的操作,则将该节点所在的层确定为起始层。
具体地,如图5c所示,根据确定的起始层进行节点融合包括以下步骤:
S5041、确定起始层集合。
S5042、根据起始层集合获取一起始层。
S5043、判断是否成功获取起始层,如是,则执行步骤S5044;如否,则表示所有起始层融合完毕,结束流程。
S5044、以获取的起始层为起点,向生产者方向逐层进行节点融合,确定对应的融合操作,直至遇到下一起始层或层次图中的节点融合完成。然后再次执行步骤S5042。
具体逐层融合的方法参照上述实施例二,本实施例在此不再赘述。
S506、根据硬件平台的计算资源、存储资源以及所述融合操作,确定所述融合操作对应的执行计划的计划参数,并对计划参数进行调优。
具体地,如图5d所示,步骤S506具体可以包括以下步骤:
S5061、生成执行计划,并确定执行计划对应的计划参数。
计划参数可以包括但不限于:规划实现参数和规划平台参数,其中,规划实现参数包括:融合操作中张量维度的划分位置、行主导或列主导,融合操作中包括的张量操作的形状、张量操作类型;规划平台参数包括:硬件平台的资源划分规则、资源约束规则等。资源划分规则是指硬件平台中划分计算资源和存储资源的划分规则;资源约束规则是指硬件平台中的计算资源、存储资源的约束,例如可分配的计算资源和存储资源的大小等。
S5062、根据计划参数确定执行计划的性能数据,进而根据性能数据确定执行计划的评估结果。
具体地,可以根据计划参数生成查询值,并根据查询值在性能库中进行性能数据的检索,然后判断是否存在命中的性能数据。如果存在,则将命中的性能数据作为执行计划的性能数据。如果不存在,则可以根据执行计划生成计算实例,然后在硬件平台上运行该计算实例以确定性能数据。另外,确定后,还可以将计算实例对应的性能数据更新至性能库中。
S5063、根据评估结果判断是否要更新保留的执行计划。如是,则执行步骤S5064;否,则不更新,并执行步骤S5065。
具体确定是否更新保留的执行计划的方法参见上述实施例四,本实施例在此不再赘述。
S5064、将当前的执行计划更新为保留的执行计划。
S5065、判断是否继续确定融合操作对应的执行计划。如是,则再次执行步骤S5061,以生成新的执行计划;否则结束。
本实施例中,确定结束流程后,可以根据保留的执行计划执行步骤S508。
S508、根据执行计划的计划参数,判断参数化调优是否成功,若成功,则执行步骤S510,否则执行步骤S504,以确定新的融合操作。
S510、根据执行计划,为所述融合操作分配硬件平台的计算资源来确定所述融合操作的计算结果,并通过硬件平台的存储资源中转所述计算结果,以根据所述目标计算图生成适用于所述硬件平台的代码。
具体地,如图5e所示,步骤S510具体可以包括以下步骤:
S5101、根据执行计划在硬件平台上进行硬件配置,并根据执行计划生成代码,为代码分配计算资源来确定所述融合操作的计算结果。
S5102、判断计算结果是否为融合操作的临时计算结果。如果是,则执行步骤S5103;如果不是,则执行步骤S5104。
S5103、将该计算结果写入片上高速缓存资源。
具体分配片上高速缓存资源的方法参考上述实施例四,本实施例在此不再赘述。
S5104、判断计算结果对应的节点是否为融合操作的根节点。如果是,则执行步骤S5105;否则执行步骤S5106。
S5105、将计算结果写入片外存储资源。计算结果可以供其他融合操作计算使用,或者作为目标计算图的最终输出结果。
S5106、若确定使用该计算结果的节点是否有多个生产者节点,则为多个生产者节点对应的张量操作设置同步逻辑。
本实施例中,通过设置同步逻辑,可以使得计算得到多个生产者节点的计算结果的时间点较为接近,从而尽量避免等待的情况,提高了计算效率。
本实施例中,目标计算图可以对应有多个融合操作,一个或者多个融合操作可以对应有一个执行计划,则目标计算图可以对应有多个执行计划,则通过步骤S5101-S5106,可以生成一个执行计划对应的代码,并确定其计算资源以及存储资源;通过多次执行上述步骤S5101-S5106,可以为所有的执行计划生成代码,以将完整的目标计算图部署到硬件平台上。
实施例六
参照图6,示出了根据本发明实施例六的一种节点融合装置的结构框图。
本实施例提供的装置包括:编号模块602以及融合模块604。
编号模块602,用于根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量。
融合模块604,用于根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合。
在一种可选的实施方式中,所述编号模块602具体用于:以所述目标计算图的根节点为起点,依照生产者与消费者的依赖关系,遍历所述目标计算图中的节点,以根据目标计算图中节点间的依赖关系,对所述节点进行编号,其中,节点中生产者节点的节点编号大于该生产者节点对应的消费者节点的节点编号。
在一种可选的实施方式中,所述编号模块602具体包括:根节点编号模块,用于对所述目标计算图的根节点进行编号,所述根节点为消费者节点;生产者节点编号模块,用于依照生产者与消费者的依赖关系,多次确定已编号节点的生产者节点,若确定的所述生产者节点的所有消费者节点均已编号,则对确定的所述生产者节点进行编号,直至遍历完所述目标计算图中的所有节点。
在一种可选的实施方式中,所述节点融合装置还包括:节点队列建立模块,用于建立节点队列,将编号后的节点入队;已编号节点确定模块,用于通过所述节点队列确定已编号节点,以确定已编号节点的生产者节点。
在一种可选的实施方式中,所述生产者节点的节点编号为其所有消费者节点的节点编号中的最大值加a,其中,a为一大于0的常数。
在一种可选的实施方式中,所述融合模块604包括:层次图确定模块,用于确定节点编号相同的所述节点在同一层,并将所述节点编号作为该层的层编号,以确定所述目标计算图对应的层次图。
在一种可选的实施方式中,所述起始层融合模块包括:第一起始层融合模块,用于确定层次图中的第一起始层,并将所述第一起始层作为融合起始层,以对所述第一起始层中的节点进行融合,得到候选计算图;递增融合模块,用于以所述第一起始层为起点,按照层编号递增的顺序,依次确定各层为融合备选层,直至与第一起始层相邻的第二起始层为止,且将所述融合备选层中的节点融合进所述候选计算图中。
在一种可选的实施方式中,所述融合模块604包括:起始层确定模块,用于确定所述张量操作中用于调用第三方库的张量操作,并将确定的张量操作的节点所在的层作为起始层。
在一种可选的实施方式中,所述递增融合模块包括:依赖节点融合模块,用于确定所述融合备选层中与所述候选计算图存在依赖关系的依赖节点,并依照所述依赖关系将所述依赖节点融合进所述候选计算图中;非依赖节点融合模块,用于确定所述融合备选层中剩余的节点为非依赖节点,将所述非依赖节点融合进所述候选计算图中。
本实施例提供的节点融合方案,通过根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量,从而保证了节点关系不会发生混淆;根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合,从而可以对层间不具有依赖关系的节点同样进行融合,从而扩大了节点融合后对应的融合操作的计算粒度较大,进而解决现有技术中融合后得到的融合操作计算粒度较小,无法充分发挥现有的硬件平台的计算性能的问题。
实施例七
参照图7,示出了根据本发明实施例七的一种代码生成装置的结构框图。
本实施例提供的装置包括:融合操作确定模块702以及代码生成模块704。
融合操作确定模块702,用于根据完成节点融合的目标计算图,得到计算粒度符合预设粒度界限的融合操作。
代码生成模块704,用于为所述融合操作分配硬件平台的计算资源来确定所述融合操作的计算结果,并通过硬件平台的存储资源中转所述计算结果,以将所述目标计算图部署在所述硬件平台上。
在一种可选的实施方式中,所述代码生成装置还包括:计划参数确定模块,用于根据硬件平台的计算资源、存储资源以及所述融合操作,确定所述融合操作对应的执行计划的计划参数;评估模块,用于根据所述计划参数确定所述执行计划的评估结果;确定模块,用于若根据所述评估结果确定出所述执行计划符合预设的部署标准,则继续执行根据所述目标计算图生成适用于所述硬件平台的代码的操作。
在一种可选的实施方式中,所述评估模块包括:检索模块,用于根据所述计划参数生成查询值,并根据所述查询值在性能库中进行性能数据的检索,所述性能库用于存储历史执行计划的所述性能数据;评估结果确定模块,用于若存在命中的所述性能数据,则将所述命中的所述性能数据作为所述执行计划的性能数据,以确定所述评估结果。
在一种可选的实施方式中,所述代码生成装置还包括:计算实例生成模块,用于若不存在命中的所述性能数据,则根据所述执行计划生成计算实例;所述评估结果确定模块,还用于在所述硬件平台运行所述计算实例,确定所述执行计划的性能数据,以确定所述评估结果。
在一种可选的实施方式中,所述代码生成装置还包括:再次融合模块,用于若不能确定出符合预设的部署标准的执行计划,则再次融合目标计算图中包括的节点,以得到计算粒度符合预设粒度界限的新的融合操作。
在一种可选的实施方式中,所述代码生成模块704包括:存储资源分配模块,用于确定所述融合操作的存储空间需求,根据所述存储空间需求为所述融合操作分配硬件平台的存储资源,以通过所述存储资源中转所述融合操作的计算结果。
在一种可选的实施方式中,所述融合操作对应有多个计算结果,则所述存储资源分配模块包括:复用确定模块,用于确定所述融合操作中各个计算结果的生命周期数据,以确定可复用存储资源的计算结果;复用存储资源分配模块,用于根据所述存储空间需求以及可复用存储资源的计算结果,为所述融合操作分配硬件平台的存储资源。
在一种可选的实施方式中,所述硬件平台的存储资源包括片上高速缓存资源、片外存储资源,则所述存储资源分配模块具体用于:确定所述融合操作的临时计算结果和最终计算结果,为所述临时计算结果分配所述片上高速缓存资源,为所述最终计算结果分配所述片外存储资源。
本实施例提供的代码生成方案,通过硬件平台的存储资源中转融合操作的计算结果,使得融合操作的计算结果可以在多个线程之间共享;同时,通过硬件平台的存储资源中转融合操作的计算结果来解耦融合操作的内部实现,从而降低各个计算数据的存储过程中发生冲突的概率,并以充分发挥硬件平台的性能。
实施例八
一种终端设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如上所述的节点融合方法对应的操作。
另外,所述可执行指令还可以使所述处理器执行如上所述的代码生成方法对应的操作。
具体地,参照图8,示出了根据本发明实施例八的一种终端设备的结构示意图,本发明具体实施例并不对终端设备的具体实现做限定。
如图8所示,该终端设备可以包括:处理器(processor)802、通信接口(Communications Interface)804、存储器(memory)806、以及通信总线808。
其中:
处理器802、通信接口804、以及存储器806通过通信总线808完成相互间的通信。
通信接口804,用于与其它终端设备或服务器进行通信。
处理器802,用于执行程序810,具体可以执行上述实施例中的相关步骤。
具体地,程序810可以包括程序代码,该程序代码包括计算机操作指令。
处理器802可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。终端设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器806,用于存放程序810。存储器806可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序810具体可以用于使得处理器802执行以下节点融合操作:根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量;根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合。
在一种可选的实施方式中,根据目标计算图中节点间的依赖关系,对所述节点进行编号包括:以所述目标计算图的根节点为起点,依照生产者与消费者的依赖关系,遍历所述目标计算图中的节点,以根据目标计算图中节点间的依赖关系,对所述节点进行编号,其中,节点中生产者节点的节点编号大于该生产者节点对应的消费者节点的节点编号。
在一种可选的实施方式中,所述以所述目标计算图的根节点为起点,依照生产者与消费者的依赖关系,遍历所述目标计算图中的节点,以根据目标计算图中节点间的依赖关系,对所述节点进行编号包括:对所述目标计算图的根节点进行编号,所述根节点为消费者节点;依照生产者与消费者的依赖关系,多次确定已编号节点的生产者节点,若确定的所述生产者节点的所有消费者节点均已编号,则对确定的所述生产者节点进行编号,直至遍历完所述目标计算图中的所有节点。
在一种可选的实施方式中,还包括:建立节点队列,将编号后的节点入队;通过所述节点队列确定已编号节点,以确定已编号节点的生产者节点。
在一种可选的实施方式中,所述生产者节点的节点编号为其所有消费者节点的节点编号中的最大值加a,其中,a为一大于0的常数。
在一种可选的实施方式中,所述根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图包括:确定节点编号相同的所述节点在同一层,并将所述节点编号作为该层的层编号,以确定所述目标计算图对应的层次图。
在一种可选的实施方式中,逐层融合任意两个相邻起始层间的节点对应的张量操作包括:确定层次图中的第一起始层,并将所述第一起始层作为融合起始层,以对所述第一起始层中的节点进行融合,得到候选计算图;以所述第一起始层为起点,按照层编号递增的顺序,依次确定各层为融合备选层,直至与第一起始层相邻的第二起始层为止,且将所述融合备选层中的节点融合进所述候选计算图中。
在一种可选的实施方式中,所述根据所述层次图进行张量操作的逐层融合包括:确定所述张量操作中用于调用第三方库的张量操作,并将确定的张量操作的节点所在的层作为起始层。
在一种可选的实施方式中,所述将所述融合备选层中的节点融合进所述候选计算图中包括:确定所述融合备选层中与所述候选计算图存在依赖关系的依赖节点,并依照所述依赖关系将所述依赖节点融合进所述候选计算图中;确定所述融合备选层中剩余的节点为非依赖节点,将所述非依赖节点融合进所述候选计算图中。
程序810中各步骤的具体实现可以参见上述节点融合方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
当本实施例的终端设备中的程序810中执行上述节点融合方案时,通过根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量,从而保证了节点关系不会发生混淆;根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合,从而可以对层间不具有依赖关系的节点同样进行融合,从而扩大了节点融合后得到的融合操作的计算粒度较大,进而解决现有技术中融合后得到的融合操作计算粒度较小,无法充分发挥现有的硬件平台的计算性能的问题。
另外,程序810具体还可以用于使得处理器802执行以下代码生成方法操作:根据完成节点融合的目标计算图,得到计算粒度符合预设粒度界限的融合操作;为所述融合操作分配硬件平台的计算资源来确定所述融合操作的计算结果,并通过硬件平台的存储资源中转所述计算结果,以根据所述目标计算图生成在适用于所述硬件平台的代码。
在一种可选的实施方式中,所述根据完成节点融合的目标计算图,得到计算粒度符合预设粒度界限的融合操作,之后还包括:根据硬件平台的计算资源、存储资源以及所述融合操作,确定所述融合操作对应的执行计划的计划参数;根据所述计划参数确定所述执行计划的评估结果;若根据所述评估结果确定出所述执行计划符合预设的部署标准,则继续执行根据所述目标计算图生成适用于所述硬件平台的代码的操作。
在一种可选的实施方式中,根据所述计划参数确定所述执行计划的评估结果包括:根据所述计划参数生成查询值,并根据所述查询值在性能库中进行性能数据的检索,所述性能库用于存储历史执行计划的所述性能数据;若存在命中的所述性能数据,则将所述命中的所述性能数据作为所述执行计划的性能数据,以确定所述评估结果。
在一种可选的实施方式中,所述根据所述计划参数生成查询值,根据所述查询值在性能库中进行检索之后,还包括:若不存在命中的所述性能数据,则根据所述执行计划生成计算实例;在所述硬件平台运行所述计算实例,确定所述执行计划的性能数据,以确定所述评估结果。
在一种可选的实施方式中,所述根据所述计划参数确定所述执行计划的评估结果之后,还包括:若不能确定出符合预设的部署标准的执行计划,则再次融合目标计算图中包括的节点,以得到计算粒度符合预设粒度界限的新的融合操作。
在一种可选的实施方式中,所述通过硬件平台的存储资源中转所述计算结果包括:确定所述融合操作的存储空间需求,根据所述存储空间需求为所述融合操作分配硬件平台的存储资源,以通过所述存储资源中转所述融合操作的计算结果。
在一种可选的实施方式中,所述融合操作对应有多个计算结果,则所述根据所述存储空间需求为所述融合操作分配硬件平台的存储资源包括:确定所述融合操作中各个计算结果的生命周期数据,以确定可复用存储资源的计算结果;根据所述存储空间需求以及可复用存储资源的计算结果,为所述融合操作分配硬件平台的存储资源。
在一种可选的实施方式中,所述硬件平台的存储资源包括片上高速缓存资源、片外存储资源,则所述为所述融合操作分配硬件平台的存储资源包括:确定所述融合操作的临时计算结果和最终计算结果,为所述临时计算结果分配所述片上高速缓存资源,为所述最终计算结果分配所述片外存储资源。
程序810中各步骤的具体实现可以参见上述代码生成方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
当本实施例的终端设备中的程序810中执行上述代码生成方案时,通过硬件平台的存储资源中转融合操作的计算结果,使得融合操作的计算结果可以在多个线程之间共享;同时,通过硬件平台的存储资源中转融合操作的计算结果来解耦融合操作的内部实现,从而降低各个计算数据的存储过程中发生冲突的概率,并以充分发挥硬件平台的性能。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的收藏对象的调整方法。此外,当通用计算机访问用于实现在此示出的收藏对象的调整方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的收藏对象的调整方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。
Claims (19)
1.一种节点融合方法,其特征在于,包括:
根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量;
根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合。
2.根据权利要求1所述的方法,其中,
以所述目标计算图的根节点为起点,依照生产者与消费者的依赖关系,遍历所述目标计算图中的节点,以根据目标计算图中节点间的依赖关系,对所述节点进行编号,其中,节点中生产者节点的节点编号大于该生产者节点对应的消费者节点的节点编号。
3.根据权利要求2所述的方法,其中,
对所述目标计算图的根节点进行编号,所述根节点为消费者节点;
依照生产者与消费者的依赖关系,多次确定已编号节点的生产者节点,若确定的所述生产者节点的所有消费者节点均已编号,则对确定的所述生产者节点进行编号,直至遍历完所述目标计算图中的所有节点。
4.根据权利要求3所述的方法,其中,
建立节点队列,将编号后的节点入队;
通过所述节点队列确定已编号节点,以确定已编号节点的生产者节点。
5.根据权利要求3所述的方法,其中,所述生产者节点的节点编号为其所有消费者节点的节点编号中的最大值加a,其中,a为一大于0的常数。
6.根据权利要求1所述的方法,其中,确定节点编号相同的所述节点在同一层,并将所述节点编号作为该层的层编号,以确定所述目标计算图对应的层次图。
7.根据权利要求1所述的方法,其中,
确定层次图中的第一起始层,并将所述第一起始层作为融合起始层,以对所述第一起始层中的节点进行融合,得到候选计算图;
以所述第一起始层为起点,按照层编号递增的顺序,依次确定各层为融合备选层,直至与第一起始层相邻的第二起始层为止,且将所述融合备选层中的节点融合进所述候选计算图中。
8.根据权利要求7所述的方法,其中,
确定所述张量操作中用于调用第三方库的张量操作,并将确定的张量操作的节点所在的层作为起始层。
9.根据权利要求7所述的方法,其中,
确定所述融合备选层中与所述候选计算图存在依赖关系的依赖节点,并依照所述依赖关系将所述依赖节点融合进所述候选计算图中;
确定所述融合备选层中剩余的节点为非依赖节点,将所述非依赖节点融合进所述候选计算图中。
10.一种代码生成方法,其特征在于,包括:
根据完成节点融合的目标计算图,得到计算粒度符合预设粒度界限的融合操作;
为所述融合操作分配硬件平台的计算资源来确定所述融合操作的计算结果,并通过硬件平台的存储资源中转所述计算结果,以根据所述目标计算图生成在适用于所述硬件平台的代码。
11.根据权利要求10所述的方法,其中,根据硬件平台的计算资源、存储资源以及所述融合操作,确定所述融合操作对应的执行计划的计划参数;
根据所述计划参数确定所述执行计划的评估结果;
若根据所述评估结果确定出所述执行计划符合预设的部署标准,则继续执行根据所述目标计算图生成适用于所述硬件平台的代码的操作。
12.根据权利要求11所述的方法,其中,
根据所述计划参数生成查询值,并根据所述查询值在性能库中进行性能数据的检索,所述性能库用于存储历史执行计划的所述性能数据;
若存在命中的所述性能数据,则将所述命中的所述性能数据作为所述执行计划的性能数据,以确定所述评估结果。
13.根据权利要求12所述的方法,其中,
若不存在命中的所述性能数据,则根据所述执行计划生成计算实例;
在所述硬件平台运行所述计算实例,确定所述执行计划的性能数据,以确定所述评估结果。
14.根据权利要求11所述的方法,其中,
若不能确定出符合预设的部署标准的执行计划,则再次融合目标计算图中包括的节点,以得到计算粒度符合预设粒度界限的新的融合操作。
15.根据权利要求10所述的方法,其中,确定所述融合操作的存储空间需求,根据所述存储空间需求为所述融合操作分配硬件平台的存储资源,以通过所述存储资源中转所述融合操作的计算结果。
16.根据权利要求15所述的方法,其中,确定所述融合操作中各个计算结果的生命周期数据,以确定可复用存储资源的计算结果;
根据所述存储空间需求以及可复用存储资源的计算结果,为所述融合操作分配硬件平台的存储资源。
17.根据权利要求15所述的方法,其中,确定所述融合操作的临时计算结果和最终计算结果,为所述临时计算结果分配所述片上高速缓存资源,为所述最终计算结果分配所述片外存储资源。
18.一种节点融合装置,其特征在于,包括:
编号模块,用于根据目标计算图中节点间的依赖关系,对所述节点进行编号,目标计算图中存在依赖关系的节点之间通过边连接,每个节点均对应一个张量操作,每个边均对应一个张量;
融合模块,用于根据编号结果确定所述节点所在的层,以确定所述目标计算图对应的层次图,且根据所述层次图进行张量操作的逐层融合。
19.一种代码生成装置,其特征在于,包括:
融合操作确定模块,用于根据完成节点融合的目标计算图,得到计算粒度符合预设粒度界限的融合操作;
代码生成模块,用于为所述融合操作分配硬件平台的计算资源来确定所述融合操作的计算结果,并通过硬件平台的存储资源中转所述计算结果,以根据所述目标计算图生成适用于所述硬件平台的代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910060111.4A CN111459464B (zh) | 2019-01-22 | 2019-01-22 | 节点融合方法、代码生成方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910060111.4A CN111459464B (zh) | 2019-01-22 | 2019-01-22 | 节点融合方法、代码生成方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459464A true CN111459464A (zh) | 2020-07-28 |
CN111459464B CN111459464B (zh) | 2023-04-25 |
Family
ID=71682309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910060111.4A Active CN111459464B (zh) | 2019-01-22 | 2019-01-22 | 节点融合方法、代码生成方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459464B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342345A (zh) * | 2021-05-17 | 2021-09-03 | 北京百度网讯科技有限公司 | 深度学习框架的算子融合方法、装置 |
CN115408568A (zh) * | 2021-05-26 | 2022-11-29 | 中科寒武纪科技股份有限公司 | 一种对神经网络的算子进行融合的方法和相关产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180203673A1 (en) * | 2017-01-13 | 2018-07-19 | Nvidia Corporation | Execution of computation graphs |
CN108345937A (zh) * | 2017-01-06 | 2018-07-31 | 谷歌有限责任公司 | 循环与库融合 |
CN108460458A (zh) * | 2017-01-06 | 2018-08-28 | 谷歌有限责任公司 | 在图形处理单元上执行计算图 |
-
2019
- 2019-01-22 CN CN201910060111.4A patent/CN111459464B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108345937A (zh) * | 2017-01-06 | 2018-07-31 | 谷歌有限责任公司 | 循环与库融合 |
CN108460458A (zh) * | 2017-01-06 | 2018-08-28 | 谷歌有限责任公司 | 在图形处理单元上执行计算图 |
US20180203673A1 (en) * | 2017-01-13 | 2018-07-19 | Nvidia Corporation | Execution of computation graphs |
CN108304177A (zh) * | 2017-01-13 | 2018-07-20 | 辉达公司 | 计算图的执行 |
Non-Patent Citations (2)
Title |
---|
PARTH CHADHA等: "Performance Analysis of Accelerated Linear Algebra Compiler for TensorFlow" * |
包皓宇: "基于TVM的循环神经网络的嵌入式平台部署与加速优化研究" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342345A (zh) * | 2021-05-17 | 2021-09-03 | 北京百度网讯科技有限公司 | 深度学习框架的算子融合方法、装置 |
CN115408568A (zh) * | 2021-05-26 | 2022-11-29 | 中科寒武纪科技股份有限公司 | 一种对神经网络的算子进行融合的方法和相关产品 |
WO2022247880A1 (zh) * | 2021-05-26 | 2022-12-01 | 中科寒武纪科技股份有限公司 | 一种对神经网络的算子进行融合的方法和相关产品 |
CN115408568B (zh) * | 2021-05-26 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种对神经网络的算子进行融合的方法和相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN111459464B (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200125400A1 (en) | Selecting threads for concurrent processing of data | |
CN112559163A (zh) | 优化张量计算性能的方法及装置 | |
CN110233802B (zh) | 一种构建一主链多侧链的区块链架构的方法 | |
CN112286659A (zh) | 云计算任务跟踪处理方法及云计算系统 | |
CN111459464B (zh) | 节点融合方法、代码生成方法、装置 | |
CN109885310A (zh) | 一种降低手机游戏Shader模块内存占用的方法及装置 | |
CN117271101B (zh) | 一种算子融合方法、装置、电子设备及存储介质 | |
CN115098257A (zh) | 一种资源调度方法、装置、设备以及存储介质 | |
CN111857984A (zh) | 银行系统中的作业调用处理方法、装置和计算机设备 | |
CN113672375B (zh) | 资源分配预测方法、装置、设备及存储介质 | |
CN106708566B (zh) | 一种判断应用程序是否被安装的方法及其判断系统 | |
CN112488563A (zh) | 一种算力参数的确定方法和装置 | |
CN116909573A (zh) | 计算图的节点融合方法、装置、电子设备及存储介质 | |
CN115461718A (zh) | 神经网络中的内存分配 | |
CN115883550A (zh) | 任务处理方法、装置、电子设备、存储介质及程序产品 | |
CN113342500B (zh) | 任务执行方法、装置、设备及存储介质 | |
CN111198766B (zh) | 数据库访问操作部署方法、数据库访问方法及装置 | |
CN116933841A (zh) | 算子融合方法及装置、电子设备、计算机可读介质 | |
KR101558807B1 (ko) | 호스트 프로세서와 협업 프로세서 간에 협업 처리를 위한 프로세서 스케줄링 방법 및 그 방법을 수행하는 호스트 프로세서 | |
CN111143033B (zh) | 基于可伸缩操作系统的操作执行方法及装置 | |
Górski et al. | Adaptive GP-based Algorithm for Hardware/Software Co-design of Distributed Embedded Systems. | |
CN112800425A (zh) | 一种基于图计算的代码分析的方法和装置 | |
CN114064258A (zh) | 一种面向异构计算资源的非实时资源调度方法及装置 | |
CN110780993A (zh) | 一种基于Kubernetes的资源调度优化的方法、设备及介质 | |
US20200175017A1 (en) | Cost ranking determining device, method and program |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40034086 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |