CN112070202B - 一种融合图的生成方法、生成装置和计算机可读存储介质 - Google Patents

一种融合图的生成方法、生成装置和计算机可读存储介质 Download PDF

Info

Publication number
CN112070202B
CN112070202B CN202010658767.9A CN202010658767A CN112070202B CN 112070202 B CN112070202 B CN 112070202B CN 202010658767 A CN202010658767 A CN 202010658767A CN 112070202 B CN112070202 B CN 112070202B
Authority
CN
China
Prior art keywords
control flow
node
machine learning
fusion
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010658767.9A
Other languages
English (en)
Other versions
CN112070202A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN202010658767.9A priority Critical patent/CN112070202B/zh
Publication of CN112070202A publication Critical patent/CN112070202A/zh
Application granted granted Critical
Publication of CN112070202B publication Critical patent/CN112070202B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本披露涉及一种融合图的生成方法、生成装置和计算机可读存储介质。该生成装置可以作为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案可以对带控制流的IR图进行预处理,以适合于机器学习处理器的算子融合需求,随后可以基于预处理后的IR图来生成机器学习处理器的融合图。

Description

一种融合图的生成方法、生成装置和计算机可读存储介质
技术领域
本披露涉及计算机领域。更具体地,涉及一种融合图的生成方法、生成装置和计算机可读存储介质。
背景技术
在深度学习的网络结构中,一般都会包含诸如循环和条件分支之类的动态控制流结构。PyTorch是当前流行的深度学习框架,其包括两种机制:JIT Trace和JIT Script。然而,在机器学习处理器上,当前基于PyTorch JIT Trace机制生成的用于机器学习处理器的融合图不能很好地处理控制流。具体而言,当循环次数或条件判断改变时,通过PyTorchJIT Trace生成的机器学习处理器的融合图会运行出错误的结果。虽然通过PyTorch JITScript机制可以获得带控制流的中间表达图(IR图,Intermediate Representation),但是PyTorch中已有的中央处理器(CPU)控制流逻辑不能满足机器学习处理器的要求。一方面,CPU控制流不能满足机器学习处理器的离线部署需求,另一方面,也不能满足机器学习处理器对于控制流算子或节点融合的需求。
发明内容
为了至少解决如上所提到的一个或多个技术问题,本披露在多个方面中提出了机器学习处理器的融合图的生成方案。通过本披露的融合图生成方案,可以对带控制流的IR图进行预处理,以适合于机器学习处理器的算子融合需求,随后可以基于预处理后的IR图来生成机器学习处理器的融合图。
在第一方面中,本披露提供了一种由处理器执行的机器学习处理器的融合图的生成方法。该方法包括:获取表示将在所述机器学习处理器上运行的机器学习应用的中间表达图,所述中间表达图带有控制流节点;基于所述机器学习处理器上的节点融合要求,对所述中间表达图上的控制流节点进行预处理;以及利用预处理后的中间表达图,将多个所述控制流节点融合成控制流融合节点,以构建所述机器学习处理器的融合图。
在第二方面中,本披露提供了一种机器学习处理器的融合图的生成装置,包括:处理器,其配置用于执行程序指令;以及存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述装置执行根据本披露第一方面任一实施例所述的方法。
在第三方面中,本披露提供了一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行根据本披露第一方面任一实施例所述的方法。
通过如上所提供的机器学习处理器的融合图生成方法、生成装置和计算机可读存储介质,本披露的方案通过对带控制流的IR图进行基于机器学习处理器的定制化预处理,可以满足机器学习处理器对于控制流算子/节点融合的需求。进一步地,在本披露的一些实施例中,通过在算子融合时识别出机器学习处理器支持的算子,可以满足机器学习处理器的离线部署需求。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出了编程栈的示意结构;
图2A-图2B示出了算子融合的简单示例;
图3示出了根据本披露实施例的机器学习处理器的融合图生成方法的示例流程;
图4示出了根据本披露实施例的判断算子是否能在机器学习处理器上支持的方法的流程图;
图5示出了根据本披露实施例的一种判断方法的流程图;
图6示出了根据本披露实施例的用于生成白名单的方法的流程图;
图7是示出根据本披露实施例的一种组合处理装置的结构图;以及
图8是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
如前文所提到的,针对现有深度学习框架不能很好地处理控制流,尤其是不能满足机器学习处理器的融合图需求的问题,本披露在多个方面中提出了机器学习处理器的融合图的生成方案。本披露实施例的方案通过对带控制流的中间表达图(IR图)进行基于机器学习处理器的定制化预处理,可以满足后续机器学习处理器对于控制流算子/节点融合的需求。进一步地,在本披露的一些实施例中,通过在算子融合时识别出机器学习处理器支持的算子,可以满足机器学习处理器的离线部署需求。
关于在本披露实施例中提到的术语“算子”和“节点”,需要说明的是,术语“算子”是从计算机的计算层面来说的(或者从软件层面或算法层面来说的);而术语“节点”是一个更形象的说法(从图形层面或者更加直观的层面来说的)。从所指代的内容上来讲,术语“算子”和“节点”实际上指代相同。也即,在本披露的实施例中,可以认为术语“算子”和“节点”具有相同的含义,可互换使用,只是从不同的侧面进行描述。
下面结合附图来详细描述本披露的具体实施方式。
为了更好地理解本披露的实施例,图1示出了编程栈100的示意结构。
如图1所示,该编程栈100包括机器学习应用110、深度学习框架120、IR图130、抽象语言表示140以及机器学习硬件150。
机器学习应用110针对不同的应用场景,提供对应的机器学习算法模型。这些算法模型可以直接被深度学习框架120的编程接口解析。
深度学习框架120可以包括多种编程框架,例如谷歌的张量流图TensorFlow、深度学习框架Caffe、Caffe2、MXNet、PyTorch等。对于各种机器学习应用110的机器学习算法模型,深度学习框架120用作主要的编程接口来构建对应的机器学习/深度学习网络。
深度学习框架120可以将构建的网络转换成图形级别的中间表达(IR),简称IR图或计算图。IR图包括节点和边。IR图的每个节点表示一个操作或算子,可能会应用在某个输入上,并能够生成传递给其他节点的输出。IR图中的边表示数据的流向。
针对IR图,可以进行各种图形级别的优化。这些优化可以包括但不限于:常量折叠、算子融合、图替代等。深度学习中的一种典型优化是算子融合,即在单个内核中将多个算子一起计算,而不将中间结果保存回全局内存。
为了更好地理解算子融合,图2A-图2B示出了算子融合的简单示例。
假设图中存在两个顺次执行的算子:第一算子和第二算子,下面用①和②来代替。图2A为不采用算子融合的运算流程,此时运算过程如下:
1)从DRAM(动态随机存储器)读取整个计算图的输入(也就是①的输入)到片上存储器,例如PNM(并行神经元存储器,parallel neuron memory),读取①的权值到片上存储器,例如PWM(并行权值存储器,parallel weight memory)中;
2)PFU(并行功能单元,parallel functional unit)运算单元从PNM和PWM取数完成运算,并将①的结果写回到PNM上;
3)把①的结果从PNM写回到DRAM中,作为②的输入。
然后,执行第二算子②。
4)从DRAM读取②的输入到PNM,②的权值到PWM中;
5)PFU运算单元从PNM和PWM取数完成运算,并将②的结果写回到PNM上。
6)把②的结果写回到DRAM中,作为整个计算图的输出。
图2B示出了采用算子融合后的运算流程,此时运算过程如下:
A)从DRAM读取整个计算图的输入(也就是①的输入)到PNM,①和②的权值到PWM中;
B)PFU运算单元从PNM和PWM取数完成运算,并将①的结果写回到PNM上;
C)PFU运算单元从PNM和PWM取数完成运算,并将②的结果写回到PNM上;
D)把②的结果写回到DRAM中,作为整个计算图的输出。
从上面两个过程的对比可以看出,算子融合能够减少未融合前运算过程中的步骤3)和4),也即减少同一块数据(在此示例中为①的结果,其作为②的输入)冗余地从PNM->DRAM和DRAM->PNM的数据搬运,也即减少中间结果的数据访存步骤,从而提高运算速度。
具体实现中,融合后的算子在编译期间会采用内存复用、访存优化、指令流水、数据类型优化(例如,针对可以适用的不同的数据类型进行选择)等编译优化手段,从而显著提升融合算子的整体性能。
回到图1,优化后的IR图可以编译成抽象语言表示140,也即各种指令。这些指令可以由底层的机器学习硬件150来执行。机器学习硬件150例如可以是机器学习处理器。
本披露的实施例针对现有深度学习框架不能很好地处理控制流,尤其是不能满足机器学习处理器的融合图需求的问题,在多个方面中提出了将机器学习/深度学习网络中的控制流映射到机器学习处理器上的方案。
图3示出了根据本披露实施例的机器学习处理器的融合图生成方法300的示例流程。该机器学习处理器的融合图的生成方法300例如可以由处理器来执行,以生成可以在机器学习处理器上编译和运行的融合图。
如图3所示,方法300开始于步骤S310,处理器获取表示将在机器学习处理器上运行的机器学习应用的中间表达图(IR图),该IR图带有控制流节点。
如前面所提到的,当前PyTorch JIT Trace机制不能很好地处理控制流,因为它不会记录任何控制流操作,只记录张量上的操作。虽然通过PyTorch JIT Script机制可以获得带控制流的IR图,但是PyTorch中已有CPU控制流逻辑,因此,这种带控制流的IR图适合于CPU控制流逻辑,并不适合于机器学习处理器。鉴于此,可以以带控制流的IR图为基础,来进行后续处理。带控制流的IR图例如可以基于PyTorch JIT Script机制获得。
接着,在步骤S320处,处理器基于机器学习处理器上的节点融合要求,对中间表达图(IR图)上的控制流节点进行预处理。
从前面的描述可知,当前的IR图不能满足机器学习处理器的融合图需求。因此,在一些实施例中,可以对IR图上的控制流节点进行预处理,从而对该IR图进行基于机器学习处理器的定制化操作。
在一些实施例中,对IR图上的控制流节点进行预处理可以包括:针对每个控制流节点,修改该控制流节点的输入。
原生PyTorch生成IR图时,针对控制流节点会删除一些变量,或者仅包含外层的变量,这些信息不足以支持在机器学习处理器上进行控制流算子的融合。因此,需要修改这些控制流节点的输入。
具体地,在一些实施例中,修改控制流节点的输入可以包括:添加与机器学习处理器的融合相关的变量作为输入,以及排除/删除常量输入。
另外,控制流节点中可能存在嵌套的情况,此时需要将嵌套中可能存在的变量都提取出来,作为该控制流节点的输入。因此,在一些实施例中,添加与机器学习处理器的融合相关的变量作为输入可以包括:递归地扫描控制流节点的结构,以提取每个代码块内对应的变量,作为该控制流节点的输入。
控制流节点通常包括循环控制节点(例如,while循环节点,for节点)和条件分支节点(例如,if条件节点)。以下针对这两种控制流节点详细描述预处理操作。
对于IR图上的循环控制节点,例如while循环节点,原生PyTorch会删除与循环不相关的变量。但是,机器学习处理器进行融合图分段时需要这些循环不相关的变量作为融合的输入。因此,在一些实施例中,对于循环控制节点,添加该循环控制节点中的循环不相关变量作为输入。
如果while循环节点中包含嵌套,则可以通过递归地扫描该while循环节点的结构,记录结构中每个代码块(例如,block)内对应的变量,作为该while循环节点的变量。
对于IR图上的条件分支节点,例如if条件节点,原生PyTorch中只有条件变量。但是,机器学习处理器在进行融合图分段时会需要if条件节点的true(真)分支和false(假)分支中所有的外部输入作为融合输入。因此,在一些实施例中,对于条件分支节点,添加该条件分支节点的各个条件分支(例如,包括true分支和false分支)中的所有外部输入作为输入。
如果if条件节点中包含嵌套,则可以通过递归地扫描该if条件节点的结构,记录结构中每个代码块(例如,block)内对应的变量,作为该if条件节点的变量。
同时,对于一些常量输入,机器学习处理器在进行算子融合时并不需要。因此,可以将这些常量输入从控制流节点的输入中排除。这些常量输入例如可以包括但不限于权重、偏置等等。
在基于机器学习处理器的节点融合要求,对IR图预处理完成之后,方法300可以继续到步骤S330。
在步骤S330处,处理器利用预处理后的IR图,将多个控制流节点融合成控制流融合节点,以构建机器学习处理器的融合图。
在IR图中,控制流节点通常存在几种类型,例如循环控制流节点,条件分支控制流节点等。因此,在一些实施例中,将多个控制流节点融合成控制流融合节点包括:将不同类型的控制流节点,基于其类型分别融合成相应的控制流融合节点。
具体地,将多个控制流节点融合成控制流融合节点进一步可以包括:将同一类型的各个控制流节点中的控制流算子添加到对应类型的控制流融合节点中;以及基于预处理后的IR图上的控制流节点的输入,调用相关接口来设置相应控制流融合节点的输入和/或输出。
例如,仍然以前面提到的两种类型的控制流节点为例,也即循环控制节点(例如,while循环节点)和条件分支节点(例如,if条件节点),详细描述融合操作。
对于IR图上的循环控制节点,例如while循环节点,可以将其融合成循环控制融合节点。具体地,可以将while循环节点中的循环体的算子添加到该循环控制融合节点中。本领域技术人员可以理解,循环体是指循环中反复执行的部分。
进一步地,针对该循环控制融合节点,调用对应的接口来设置其输入和/或输出。例如,基于前面预处理后的IR图上的while循环节点的输入,调用相关的接口分别对循环相关变量和循环不相关变量进行设置。
例如,对于循环相关变量,对应的接口接受的输入可以包括以下至少一项:初始化值(init)、输入值(enter)、下一值(next)和退出值(exit)。初始化值决定循环的初始状态,即与循环相关的变量的初始值。该初始化值在循环体外部设置。输入值是指循环体中变量的输入值。下一值是指用于下一循环的变量的输入值。退出值是指决定循环结束的变量值。本领域技术人员可以理解,不是所有算子都需要这四个输入,对于有些算子,只有部分输入是有效的。例如,对于条件算子,只有init和next的值是有效的。
对于循环不相关变量,对应的接口接受的输入可以包括以下至少一项:初始化值(init)和输入值(enter)。
对于IR图上的条件分支节点,例如if条件节点,可以将其融合成条件分支融合节点。具体地,可以将if条件节点中的各个条件分支的算子添加到该条件分支融合节点中。本领域技术人员可以理解,if条件节点中的条件分支包括ture(真)分支和false(假)分支。
进一步地,针对该条件分支融合节点,调用相关接口来设置其输入和/或输出。例如,基于前面预处理后的IR图上的if条件节点的输入,调用对应的接口将各个条件分支的输出与该条件分支融合节点的最终输出绑定,以及调用对应的接口将该条件分支融合节点的所有输入和输出绑定。更具体地,对于条件算子的true和false分支的输入,可以循环调用n次接口将这些输入和条件算子对应的输出进行绑定,其中n为条件算子输出的个数。然后,对于条件算子的m个输入和n个输出,调用接口进行输入输出(IO)绑定。
由此,利用预处理后的IR图,可以将控制流节点融合成控制流融合节点,从而构建机器学习处理器的融合图。
从上面参考图3描述的本披露实施例的机器学习处理器融合图的生成方法可知,通过对带控制流的IR图进行基于机器学习处理器设备的定制化预处理,可以满足后续机器学习处理器对于控制流算子/节点融合的需求。换言之,可以将例如PyTorch的控制流图映射成机器学习处理器上支持的控制流图。另一方面,这也扩展了PyTorch中的机器学习处理器的融合图机制,增加了带控制流的机器学习处理器融合图。
另一方面,发明人注意到,PyTorch在生成带控制流的IR图时不会运行逐层算子,这导致在生成带控制流的机器学习处理器的融合图时无法获取算子是否能在机器学习处理器上支持的信息。然而,机器学习处理器上基于融合模式的控制流算子(也即,控制流融合算子/节点)需要判断循环体和条件分支中的算子是否能在机器学习处理器上支持。如果控制流中存在机器学习处理器不支持的算子并且在构建机器学习处理器的融合图时该算子没有被识别到,则后续控制流融合会失败并且无法切换到CPU上运行控制流。
鉴于此,需要一种有效的判断控制流内的算子是否能在机器学习处理器上支持的方法。
图4示出了根据本披露实施例的判断算子是否能在机器学习处理器上支持的方法400的流程图。该方法400可以在图3的步骤S330中由处理器执行,也即在构建机器学习处理器的融合图时执行该方法400。
如图4所示,在步骤S410中,在将控制流节点融合成控制流融合节点时,处理器判断控制流节点中的各个控制流算子是否能在机器学习处理器上支持。
可以采用多种方式来判断机器学习处理器是否支持控制流算子。图5示出了根据本披露实施例的一种判断方法500的流程图。本领域技术人员可以理解,方法500例如可以由处理器来执行,其是图4的步骤S410的一种实现方式。
如图5所示,判断方法500可以包括在步骤S510处,处理器在预先设置的白名单中查找控制流算子。若查找到该控制流算子,则方法500前进到步骤S520,处理器确定机器学习处理器支持该控制流算子。否则,方法500前进到步骤S530,处理器将该控制流算子标记为机器学习处理器不支持。
白名单可以是一种列表或其他数据结构,其上预先存储有机器学习处理器支持的控制流算子。通过预先设置白名单,在进行控制流节点融合时可以方便、快速地判断控制流算子是否能够得到机器学习处理器的支持,从而决定是否融合该控制流算子。白名单的设置使得使用起来非常方便,并能及时反馈信息,例如控制流算子得不到机器学习处理器支持的信息,以供后续处理。
图6示出了根据本披露实施例的用于生成白名单的方法600的流程图。该方法600例如可以由处理器来执行。本领域技术人员可以理解,此处的处理器可以与前述方法中提及的处理器相同或不同。
如图6所示,在步骤S610中,在构建算子代码时,处理器调用白名单注册器。白名单注册器例如可以是注册机器学习处理器融合算子的白名单的宏。白名单中例如可以存储机器学习处理器支持的融合算子的名称。白名单具有全局唯一性,也即,至少在该机器学习处理器的融合图的整个生成过程期间都可以访问到该白名单,并且该白名单是唯一的。
白名单的全局唯一性例如可以通过单例模式来实现。单例模式(SingletonPattern)是一种简单的设计模式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。单例模式的意图在于保证一个类仅有一个实例,并提供一个访问它的全局访问点。
接着,在步骤S620中,在编译该算子代码时,处理器利用白名单注册器,将机器学习处理器支持的算子写入在白名单中。
具体地,在编译算子代码时,可以利用宏展开,也即将注册机器学习处理器融合算子的白名单的宏展开,从而将机器学习处理器支持的所有融合算子都写到白名单中。
从上面过程可知,由于在编译时即可确定机器学习处理器融合算子是否能在机器学习处理器上支持,而不是运行一次机器学习处理器逐层算子来获得算子支持信息,因此处理效率可以更高。
由此,通过参考图6描述的方法可以预先生成白名单,以供后续构建机器学习处理器融合图时直接使用。
可选地或附加地,可以提供在白名单中动态注册算子和/或删除算子的接口,从而根据需要修改白名单。例如,在测试环境中可以通过添加或删除算子来动态控制白名单的成员,从而完成网络分段模型的测试和/或调试。
通过提供这种灵活的接口来控制白名单成员,可以动态调整网络分段的状态,给网络测试和调试提供了极大的便利。
回到图4,在例如基于预先设置的白名单来判断控制流算子是否能够得到机器学习处理器的支持之后,在步骤S420中,处理器基于步骤S410的判断结果,仅将机器学习处理器支持的控制流算子添加到对应类型的控制流融合节点中。通过仅添加机器学习处理器支持的控制流算子在控制流融合节点中,使得机器学习处理器融合图可以满足机器学习处理器的离线部署要求,也即该机器学习处理器融合图可以独立地在机器学习处理器设备上运行,而无需切换到CPU设备。
可选地或附加地,方法400还可以包括步骤S430,处理器基于步骤S410的判断结果,将机器学习处理器设备不支持的控制流算子标记为CPU模式和/或提供出错/警告信息。
在一些实施例中,如果判断控制流算子不能得到机器学习处理器的支持,例如在白名单中没有找到该控制流算子,则可以中断机器学习处理器的控制流节点的融合过程,将该控制流算子标记为CPU模式,以便后续切换到CPU模式。可选地或附加地,也可以提供出错/警告信息,以提醒相关人员做出合适处理。
上面参考方法流程图详细描述了根据本披露实施例的机器学习处理器设备的融合图的生成方法。
随后,可以在机器学习处理器上对根据本披露实施例生成的机器学习处理器设备的融合图进行编译。在一些实施例中,在控制流融合节点中,通过调用对应的机器学习处理器接口,将控制流融合节点的输入和/或输出信息传递到机器学习处理器上。
当编译机器学习处理器融合图时,对于控制流节点,可以进入机器学习处理器控制流融合节点/算子的创建;对于非控制流节点(例如,一般节点),可以进入机器学习处理器一般融合节点/算子创建。
例如,对于控制流节点,具体地,可以解析例如while循环控制融合节点和/或if条件分支融合节点,调用对应机器学习处理器融合的while算子和/或if算子。在机器学习处理器融合的while算子和/或if算子内部,扫描控制流融合节点所包含的子图中的所有算子并调用对应的机器学习处理器融合算子。对于子图内嵌套的while节点和/或if节点,递归地调用while节点及if节点自身。在机器学习处理器融合的while及if的融合算子内将while及if对应的输入及输出通过调用对应的机器学习处理器接口将输入输出信息传递到机器学习处理器上。循环体中代码块(block)中的输入会根据循环while的输入进行自适应调整,包括类型及形状等推导。
所有节点都创建完成之后,就可以在机器学习处理器上运行该机器学习处理器的融合图。
运行时,可以在机器学习处理器上调用控制流(例如while和/或if)对应的运行接口,根据在机器学习处理器上生成的机器学习处理器控制流融合图,执行对应的带控制流循环和/或条件分支(例如while和/或if)结构的机器学习处理器指令完成一次运行。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
本披露实施例还公开了一种机器学习处理器的融合图的生成装置。该装置可以包括:处理器,其配置用于执行程序指令;以及存储器,其配置用于存储该程序指令。当程序指令由该处理器加载并执行时,使得该生成装置执行前面本披露各实施例所描述的方法。
因此,本披露实施例还提供了一种计算机可读存储介质,其中存储有程序指令,当该程序指令由处理器加载并执行时,使得处理器执行前面本披露各实施例所描述的方法。
图7是示出根据本披露实施例的一种组合处理装置700的结构图。如图7中所示,该组合处理装置700包括计算处理装置702、接口装置704、其他处理装置706和存储装置708。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置710,该计算装置可以配置成上文描述的机器学习处理器的融合图的生成装置,以用于执行本文结合附图3-6所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图8中示出的芯片802)。在一种实现中,该芯片是一种***级芯片(System on Chip,SoC),并且集成有一个或多个如图7中所示的组合处理装置。该芯片可以通过对外接口装置(如图8中示出的对外接口装置806)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图8对该板卡进行详细地描述。
图8是示出根据本披露实施例的一种板卡800的结构示意图。如图8中所示,该板卡包括用于存储数据的存储器件804,其包括一个或多个存储单元810。该存储器件可以通过例如总线等方式与控制器件808和上文所述的芯片802进行连接和数据传输。进一步,该板卡还包括对外接口装置806,其配置用于芯片(或芯片封装结构中的芯片)与外部设备812(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图7和图8的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款1.一种由处理器执行的机器学习处理器的融合图的生成方法,包括:
获取表示将在所述机器学习处理器上运行的机器学习应用的中间表达图,所述中间表达图带有控制流节点;
基于所述机器学习处理器上的节点融合要求,对所述中间表达图上的控制流节点进行预处理;以及
利用预处理后的中间表达图,将多个所述控制流节点融合成控制流融合节点,以构建所述机器学习处理器的融合图。
条款2.根据条款1所述的方法,其中对中间表达图上的控制流节点进行预处理包括:
添加与机器学习处理器的融合相关的变量作为输入,和/或
排除常量输入。
条款3.根据条款2所述的方法,其中添加与机器学习处理器的融合相关的变量作为输入包括:
递归地扫描所述控制流节点的结构,以提取每个代码块内对应的变量,作为所述控制流节点的输入。
条款4.根据条款2-3任一所述的方法,其中所述常量输入包括以下任一:权重和偏置。
条款5.根据条款2-4任一所述的方法,其中所述控制流节点包括以下任一:循环控制节点和条件分支节点,并且添加与机器学习处理器的融合相关的变量作为输入,包括:
对于循环控制节点,添加所述循环控制节点中的循环不相关变量作为输入;和/或
对于条件分支节点,添加所述条件分支节点的各个条件分支中的所有外部输入作为输入。
条款6.根据条款1-5任一所述的方法,其中将多个所述控制流节点融合成控制流融合节点包括:将不同类型的控制流节点,基于所述类型分别融合成相应的控制流融合节点。
条款7.根据条款6所述的方法,其中将多个所述控制流节点融合成控制流融合节点进一步包括:
将同一类型的各个控制流节点中的控制流算子添加到对应类型的控制流融合节点中;以及
基于所述中间表达图上的控制流节点的输入,调用相关接口来设置所述控制流融合节点的输入和/或输出。
条款8.根据条款7所述的方法,其中所述控制流节点包括以下任一:循环控制节点和条件分支节点,并且将同一类型的各个控制流节点中的控制流算子添加到对应类型的控制流融合节点中包括:
对于循环控制节点,将所述循环控制节点中的循环体的算子添加到循环控制融合节点中;和/或
对于条件分支节点,将所述条件分支节点中的各个条件分支的算子添加到条件分支融合节点中。
条款9.根据条款8所述的方法,其中调用相关接口来设置所述控制流融合节点的输入和/或输出,包括:
对于循环控制融合节点,调用对应的接口分别对循环相关变量和循环不相关变量进行设置;和/或
对于条件分支融合节点,调用对应的接口将各个条件分支的输出与所述条件分支融合节点的最终输出绑定,以及调用对应的接口将所述条件分支融合节点的所有输入和输出绑定。
条款10.根据条款6-9任一所述的方法,其中将多个所述控制流节点融合成控制流融合节点进一步包括:
判断各个控制流节点中的控制流算子是否能在所述机器学习处理器上支持;以及
基于所述判断的结果,仅将所述机器学习处理器支持的控制流算子添加到对应类型的控制流融合节点中。
条款11.根据条款10所述的方法,进一步包括:
基于所述判断的结果,将所述机器学习处理器不支持的控制流算子标记为CPU模式和/或提供出错信息。
条款12.根据条款10-11任一所述的方法,其中判断各个控制流节点中的控制流算子是否能在所述机器学习处理器上支持,包括:
在预先设置的白名单中查找所述控制流算子;以及
若查找到,则确定所述机器学习处理器支持所述控制流算子;
否则,将所述控制流算子标记为不支持。
条款13.根据条款12所述的方法,其中所述预先设置的白名单是预先按如下方法生成的:
在构建算子代码时,调用白名单注册器;以及
在编译所述算子代码时,利用所述白名单注册器,将所述机器学习处理器支持的算子写入在所述白名单中。
条款14.根据条款12-13任一所述的方法,其中所述白名单具有全局唯一性,并且所述白名单能够通过接口进行成员添加和/或成员删除。
条款15.根据条款1-14任一所述的方法,其中所述带控制流的中间表达图是基于PyTorch JIT Script机制获得的。
条款16.一种机器学习处理器的融合图的生成装置,包括:
处理器,其配置用于执行程序指令;以及
存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述装置执行根据条款1-15任一所述的方法。
条款17.一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行根据条款1-15任一所述的方法。
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。

Claims (17)

1.一种由处理器执行的机器学习处理器的融合图的生成方法,包括:
获取表示将在所述机器学习处理器上运行的机器学习应用的中间表达图,所述中间表达图带有控制流节点,其中所述控制流节点包括循环控制节点和/或条件分支节点;
基于所述机器学习处理器上的节点融合要求,对所述中间表达图上的控制流节点进行预处理,其中所述预处理包括修改所述中间表达图上的控制流节点的输入;以及
利用预处理后的中间表达图,将多个所述控制流节点融合成控制流融合节点,以构建所述机器学习处理器的融合图。
2.根据权利要求1所述的方法,其中修改所述中间表达图上的控制流节点的输入包括:
添加与机器学习处理器的融合相关的变量作为输入,和/或
排除常量输入。
3.根据权利要求2所述的方法,其中添加与机器学习处理器的融合相关的变量作为输入包括:
递归地扫描所述控制流节点的结构,以提取每个代码块内对应的变量,作为所述控制流节点的输入。
4.根据权利要求2所述的方法,其中所述常量输入包括以下任一:权重和偏置。
5.根据权利要求2所述的方法,其中添加与机器学习处理器的融合相关的变量作为输入,包括:
对于循环控制节点,添加所述循环控制节点中的循环不相关变量作为输入;和/或
对于条件分支节点,添加所述条件分支节点的各个条件分支中的所有外部输入作为输入。
6.根据权利要求1-5任一所述的方法,其中将多个所述控制流节点融合成控制流融合节点包括:将不同类型的控制流节点,基于所述类型分别融合成相应的控制流融合节点。
7.根据权利要求6所述的方法,其中将多个所述控制流节点融合成控制流融合节点进一步包括:
将同一类型的各个控制流节点中的控制流算子添加到对应类型的控制流融合节点中;以及
基于所述中间表达图上的控制流节点的输入,调用相关接口来设置所述控制流融合节点的输入和/或输出。
8.根据权利要求7所述的方法,其中所述控制流节点包括以下任一:循环控制节点和条件分支节点,并且将同一类型的各个控制流节点中的控制流算子添加到对应类型的控制流融合节点中包括:
对于循环控制节点,将所述循环控制节点中的循环体的算子添加到循环控制融合节点中;和/或
对于条件分支节点,将所述条件分支节点中的各个条件分支的算子添加到条件分支融合节点中。
9.根据权利要求8所述的方法,其中调用相关接口来设置所述控制流融合节点的输入和/或输出,包括:
对于循环控制融合节点,调用对应的接口分别对循环相关变量和循环不相关变量进行设置;和/或
对于条件分支融合节点,调用对应的接口将各个条件分支的输出与所述条件分支融合节点的最终输出绑定,以及调用对应的接口将所述条件分支融合节点的所有输入和输出绑定。
10.根据权利要求6所述的方法,其中将多个所述控制流节点融合成控制流融合节点进一步包括:
判断各个控制流节点中的控制流算子是否能在所述机器学习处理器上支持;以及
基于所述判断的结果,仅将所述机器学习处理器支持的控制流算子添加到对应类型的控制流融合节点中。
11.根据权利要求10所述的方法,进一步包括:
基于所述判断的结果,将所述机器学习处理器不支持的控制流算子标记为CPU模式和/或提供出错信息。
12.根据权利要求10所述的方法,其中判断各个控制流节点中的控制流算子是否能在所述机器学习处理器上支持,包括:
在预先设置的白名单中查找所述控制流算子;以及
若查找到,则确定所述机器学习处理器支持所述控制流算子;
否则,将所述控制流算子标记为不支持。
13.根据权利要求12所述的方法,其中所述预先设置的白名单是预先按如下方法生成的:
在构建算子代码时,调用白名单注册器;以及
在编译所述算子代码时,利用所述白名单注册器,将所述机器学习处理器支持的算子写入在所述白名单中。
14.根据权利要求12所述的方法,其中所述白名单具有全局唯一性,并且所述白名单能够通过接口进行成员添加和/或成员删除。
15.根据权利要求1所述的方法,其中所述带控制流的中间表达图是基于PyTorch JITScript机制获得的。
16.一种机器学习处理器的融合图的生成装置,包括:
处理器,其配置用于执行程序指令;以及
存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述装置执行根据权利要求1-15任一所述的方法。
17.一种计算机可读存储介质,其中存储有程序指令,当所述程序指令由处理器加载并执行时,使得所述处理器执行根据权利要求1-15任一所述的方法。
CN202010658767.9A 2020-07-09 2020-07-09 一种融合图的生成方法、生成装置和计算机可读存储介质 Active CN112070202B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010658767.9A CN112070202B (zh) 2020-07-09 2020-07-09 一种融合图的生成方法、生成装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010658767.9A CN112070202B (zh) 2020-07-09 2020-07-09 一种融合图的生成方法、生成装置和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112070202A CN112070202A (zh) 2020-12-11
CN112070202B true CN112070202B (zh) 2021-09-03

Family

ID=73657057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010658767.9A Active CN112070202B (zh) 2020-07-09 2020-07-09 一种融合图的生成方法、生成装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112070202B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010177B (zh) * 2021-02-09 2022-04-05 广州思林杰科技股份有限公司 软件定义的仪器和信息采集方法、计算机、存储介质
CN113065639B (zh) * 2021-03-08 2023-06-13 深圳云天励飞技术股份有限公司 算子融合方法、***、设备及存储介质
CN113050951A (zh) * 2021-03-31 2021-06-29 上海天旦网络科技发展有限公司 基于计算图的协议描述和解码方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US10031732B1 (en) * 2016-08-02 2018-07-24 Xilinx, Inc. Operation processing for high level synthesis
CN110766147A (zh) * 2018-07-25 2020-02-07 赛灵思公司 神经网络编译器架构及编译方法
CN110764744A (zh) * 2018-07-25 2020-02-07 赛灵思公司 用于神经网络计算的中间表示生成方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6964029B2 (en) * 2002-10-31 2005-11-08 Src Computers, Inc. System and method for partitioning control-dataflow graph representations
US10445356B1 (en) * 2016-06-24 2019-10-15 Pulselight Holdings, Inc. Method and system for analyzing entities

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US10031732B1 (en) * 2016-08-02 2018-07-24 Xilinx, Inc. Operation processing for high level synthesis
CN110766147A (zh) * 2018-07-25 2020-02-07 赛灵思公司 神经网络编译器架构及编译方法
CN110764744A (zh) * 2018-07-25 2020-02-07 赛灵思公司 用于神经网络计算的中间表示生成方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Work-in-progress: IR-level annotation strategy dealing with aggressive loop optimizations for performance estimation in native simulation;Omayma Matoussi等;《2017 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS)》;20171113;1-2 *
神经网络专用编程语言;王秉睿;《中国优秀硕士学位论文全文数据库信息科技辑》;20190815(第08期);31-37 *

Also Published As

Publication number Publication date
CN112070202A (zh) 2020-12-11

Similar Documents

Publication Publication Date Title
CN107895191B (zh) 一种信息处理方法及相关产品
KR102470264B1 (ko) 완전연결층 신경망 역방향 트레이닝 실행용 장치와 방법
CN109086877B (zh) 一种用于执行卷积神经网络正向运算的装置和方法
CN112070202B (zh) 一种融合图的生成方法、生成装置和计算机可读存储介质
WO2018171717A1 (zh) 面向神经网络处理器的自动化设计方法和***
KR102486030B1 (ko) 완전연결층 신경망 정방향 연산 실행용 장치와 방법
WO2021000970A1 (zh) 深度学习算法的编译方法、装置及相关产品
CN112465133B (zh) 控制流多核并行方法、计算机设备和存储介质
CN114580606A (zh) 数据处理方法、装置、计算机设备和存储介质
CN114035916A (zh) 计算图的编译、调度方法及相关产品
CN115756478A (zh) 计算图的算子自动融合方法及相关产品
CN115129460A (zh) 获取算子硬件时间的方法、装置、计算机设备和存储介质
CN112465116B (zh) 编译方法、运算方法、电子设备和存储介质
CN113469326B (zh) 在神经网络模型中执行剪枝优化的集成电路装置及板卡
CN115840894A (zh) 一种用于处理多维张量数据的方法及其相关产品
CN115373646A (zh) 扩展信息方法、装置和相关产品
CN112463158B (zh) 编译方法、装置、电子设备和存储介质
CN114281561A (zh) 处理单元、用于处理单元的同步方法及相应产品
CN112667227A (zh) 可视化设计流水线的方法及可读存储介质
Yu et al. INCAME: Interruptible CNN accelerator for multirobot exploration
CN112395009A (zh) 运算方法、装置、计算机设备和存储介质
CN112395008A (zh) 运算方法、装置、计算机设备和存储介质
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
CN109543834B (zh) 运算方法、装置及相关产品
CN117648091A (zh) 计算图的编译方法及相关产品

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