CN105474172B - 用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配 - Google Patents

用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配 Download PDF

Info

Publication number
CN105474172B
CN105474172B CN201480045480.1A CN201480045480A CN105474172B CN 105474172 B CN105474172 B CN 105474172B CN 201480045480 A CN201480045480 A CN 201480045480A CN 105474172 B CN105474172 B CN 105474172B
Authority
CN
China
Prior art keywords
node
processor
computing device
combination
patterns
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.)
Expired - Fee Related
Application number
CN201480045480.1A
Other languages
English (en)
Other versions
CN105474172A (zh
Inventor
D·杜拉蒂
M·金
C·维克
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN105474172A publication Critical patent/CN105474172A/zh
Application granted granted Critical
Publication of CN105474172B publication Critical patent/CN105474172B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

用于自动地确定如何对应用程序进行划分和卸载,用于由移动设备内的通用应用处理器和辅助处理器(例如,DSP、GPU等等)执行的方法、设备和系统。移动设备可以基于有向非循环图(DAG)的模式匹配来确定应用代码中最适合于在辅助处理器上执行的部分。特别地,移动设备可以识别代码中的(特别是代码的数据流程图中的)一种或多种模式,将每一种识别的代码模式与已知当在辅助处理器(例如,DSP)上执行时具有某种利益的预定义的图形模式进行比较。移动设备可以确定在辅助处理器上执行代码的部分的开销和/或利益,并且可以对具有与辅助处理器有关的低开销和/或高利益的部分进行卸载。

Description

用于实现代码划分和在异构处理器内核上执行的高效有向非 循环图模式匹配
技术领域
概括地说,本公开内容涉及计算设备,并且更具体地,涉及用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配。
背景技术
移动电子设备(例如,蜂窝电话、手表、头戴式耳机、远程控制等等)与以往任何时候相比变得更加复杂,并且现在通常包括多个处理器、片上系统(SoC)、以及允许移动设备用户在其移动设备上执行复杂的和功率密集的软件应用(例如,视频流、视频处理等等)的其它资源。随着复杂度和功耗的增加,更好地利用移动设备的资源和能力的新的和改进的处理技术正在开始涌现。
这些新兴的技术包括能够对被设计用于在通用应用处理器上执行的代码进行编译,使得该代码适合于在诸如数字信号处理器(或DSP)之类的辅助处理器上执行的系统。特别地,应用程序可以被划分成单元或块,并且可以基于所识别的不同的处理部件(例如,DSP、图形处理单元或GPU等等)的效率/能力来将单元/块分布到该不同的处理部件。这使得主或中央处理单元(CPU)或应用处理器将其操作中的一些操作卸载到辅助处理器,以节省功率和/或改善性能。
但是,确定应用程序如何被划分以及哪些部分最适合于在辅助处理器上执行,经常是困难的设计任务。也就是说,只要存在用于识别并且将给定的代码段划分成非常适合于在不同类型的内核或处理单元中执行的部件的有效方式,将操作卸载到辅助处理器就可以改善移动设备的性能和功耗特性。
现有的技术可以利用不同的技术来识别和/或处理代码。一些技术可以利用自动代码划分,并且可以通过程序依赖图来表示应用代码,用于使用固有的并行性和已知的通信开销来对代码进行划分。这些技术没有利用可能已知对特定的处理单元(诸如数字信号处理器(DSP))有益的预定义的模式。其它技术可以检测代码(或二进制)内的惯用语法(idiom)(或者已知的/预定义的指令集),并且利用硬件辅助指令(即,复杂指令集计算或“CISC”指令)来取代惯用语法。这些技术通常只可以处理有限的粒度(大部分是直线型的指令)和简单的模式,诸如精确的模式或者有限的自由度。另外,存在用于发现重复代码和使用高级源代码来检测克隆的某些技术。此外,图模式匹配已经被用在数据库系统中。
存在使用指令选择算法的其它技术,所述指令选择算法利用树型模式匹配来调整代码以包括低开销指令。特别地,自底向上的重写系统(或BURS)算法可以被用来通过迭代地匹配与输入代码(例如,应用、例程等等)有关的输入树内的各个子树以便发现最佳开销指令集(即,覆盖整棵树并且还提供最低开销/最高利益的指令的组合),来确定针对输入代码的最佳指令集。基于模式匹配,可以生成用于在计算设备上执行的新的、改进的指令集。
但是,当对使用基于图形表示的复杂的代码的部分进行卸载时,已知的技术可能是不适合的。换言之,现有的技术可能不使用代码的有向非循环表示进行匹配来识别用于异构多核或分布式系统的最佳卸载方式的编译器后端解决方案。
发明内容
在各个方面中,计算设备可以执行用于当可以自动地确定输入代码的部分非常适合于辅助处理器时,将该输入代码的部分从CPU或应用处理器(“第一处理器”)卸载到辅助处理器的方法。一个方面方法可以包括:生成输入代码的基于图形的中间表示,其中,输入代码的基于图形的中间表示可以是有向非循环图(DAG),将每一个节点或节点的组合与预定义的语法中的一种或多种模式进行比较,其中每一种模式可以是DAG模式并且可以与开销度量相关联,基于比较来识别部分地覆盖所述输入代码的基于图形的中间表示的模式集合,以及将输入代码的片段从第一处理器卸载到辅助处理器,所述输入代码的片段与所识别的模式集合中具有最佳累积效应的语法模式的组合相关联。在一个方面中,将每一个节点或节点的组合与预定义的语法中的一种或多种模式进行比较可以包括:将每一个节点或节点的组合与被存储在启发式表格中的模式信息进行比较。在一个方面中,该计算设备可以包括片上系统。在一个方面中,所述辅助处理器可以是数字信号处理器(DSP)和图形处理单元(GPU)中的一种。在一个方面中,已知所述预定义的语法中的模式非常适合于辅助处理器。在一个方面中,最佳累积效应可以是最低累积开销和最高累积利益中的一种。在一个方面中,该方法还可以包括:基于所述每一个节点或所述节点的组合与所述预定义的语法中的一种或多种模式的比较来生成用于向开发者呈现的信息,所述信息指示可以被配置用于辅助处理器的输入代码的片段。
在另一个方面中,被配置为当可以自动地确定输入代码的部分非常适合于辅助处理器时对该输入代码的部分进行卸载的计算设备可以包括:用于执行上面描述的方面方法的功能的单元。
在另一个方面中,被配置为当可以自动地确定输入代码的部分非常适合于辅助处理器时对该输入代码的部分进行卸载的计算设备可以包括:存储器、辅助处理器、以及耦合到所述存储器和所述辅助处理器的处理器,其中所述处理器可以被配置有用于执行上面描述的方面方法的操作的处理器可执行指令。
在另一个方面中,一种非暂时性处理器可读存储介质,其具有被存储在其上的处理器可执行软件指令,所述处理器可执行软件指令被配置为使处理器执行用于当可以自动地确定输入代码的部分非常适合于辅助处理器时计算设备对该输入代码的部分进行卸载的操作,其中所存储的操作包括上面描述的方面方法的操作。
附图说明
被并入本文并且构成本说明书的一部分的附图示出了本发明的示例性方面,并且连同上面给出的概括描述以及下面给出的具体实施方式用来解释本发明的特征。
图1是示出了用于基于有向非循环图(DAG)模式匹配来将用于执行的代码从CPU或应用处理器卸载到辅助处理器的方面方法的过程流程图。
图2是示出了用于基于有向非循环图(DAG)模式匹配来将用于执行的代码从CPU或应用处理器卸载到辅助处理器的另一个方面方法的过程流程图。
图3是示出了适合于与各个方面一起使用的示例性语法和代码输入DAG的图。
图4是示出了基于DAG模式匹配来将用于执行的代码部分从CPU或应用处理器卸载到辅助处理器的方面方法的过程流程图。
图5是示出了适合于与各个方面一起使用的示例性语法和代码输入DAG的图。
图6是适合于与各个方面一起使用的智能电话型移动计算设备的部件框图。
具体实施方式
将参照附图来详细地描述各个方面。在任何可能的情况下,将贯穿附图使用相同的附图标记来指代相同的或者类似的部件。对于特定示例和实现方式的提及是出于说明性的目的的,而不旨在限制本发明或者权利要求的范围。
本文使用词语“示例性的”来意指“充当示例、实例或说明”。本文中被描述为“示例性的”任何实现方式不必然地被解释为优选的或者比其它实现方式具有优势。
本文使用术语“移动计算设备”或“计算设备”来指代下列各项中的任何一项或者全部:蜂窝电话、智能电话(例如,)、手写电脑(web-pad)、平板计算机、具备互联网能力的蜂窝电话、具备WiFi能力的电子设备、个人数据助理(PDA)、膝上型计算机、个人计算机、以及被装备有至少应用处理器(或通用处理器)和辅助处理器(例如,数字信号处理器、协处理器、片上系统上的另一个处理器等等)的类似的电子设备。
各个方面提供了用于基于模式匹配表示输入代码的有向非循环图(DAG)来将用于执行的该输入代码的部分从CPU或应用处理器(在本文通常被称为“第一处理器”)卸载到计算设备内的辅助处理器的方法。计算设备可以执行该方面方法,以自动地和高效地检测该代码中已知对于利用特定类型的内核(例如,DSP、GPU等等)来进行处理有好处的感兴趣的模式。计算设备可以自动地识别部分地覆盖输入代码的输入数据流程图的DAG模式集合,并且可以当在辅助处理器上执行时对代码中与最小开销相关联的部分进行卸载,或者以其它方式从卸载中提供最高的利益。这些方面方法可以在利用典型的输入代码(例如,典型的Java语言源代码)进行工作的计算设备中实现,并且因此可能不需要由代码开发者进行任何特殊的预处理或者编排格式(例如,手动地添加指示符、API调用、预定义的代码格式化等等)。实现各个方面的计算设备可以自动地识别非常适合于卸载到辅助处理器的代码部分,并且使用传统的机制来发送、传送或者以别的方式规定对这样识别的非常适合的代码的卸载。
各个方面方法利用将DAG的节点与预定义的语法模式(其也包括DAG)进行比较的模式匹配算法。各个方面方法可以由计算设备来执行,以确定代码的中间表示(IR),并且生成可以通过模式匹配算法来处理的DAG表示。这样的算法可以尝试将代码的DAG表示中的模式与被存储在存储器中的DAG模式(被称为“语法”)进行匹配,所述被存储在存储器中的DAG模式已知非常适合于在辅助处理器上执行。可以对DAG表示进行修整,使得不存在循环。例如,语法中的DAG模式可以与在数字信号处理器(DSP)上高效地执行的某些简单的功能相对应。计算设备可以识别覆盖整个DAG的语法模式(例如,表示输入代码中的代码循环或方法的DAG),并且可以基于与语法模式相关联的开销(或利益)来识别最佳匹配模式。例如,可以将输入代码的特定DAG与语法内的若干模式进行匹配;但是,匹配模式中的一种匹配模式可以具有在辅助处理器上执行相关联的代码的相对低的开销。计算设备可以执行模式匹配,使得在输入IR代码内一次检测预定义的语法中的多个已知的DAG模式。在各个方面中,计算设备的操作可以在运行时间执行,例如,结合即时(JIT)编译器一起执行。换言之,利用与输入代码相关联的节点和边的图(即,在边方向和节点类型不能被分离情况下的DAG),计算设备可以执行模式匹配操作,以寻找该图中的节点/边与语法内的模式的精确匹配。从任一节点类型(例如,在模式中的位置处的类型A或类型B)的意义上说,匹配模式本身可以是灵活的。该精确匹配是针对输入代码的子图上的完全模式的。所以,计算设备可以从语法中发现均部分地覆盖该输入的、但是完全地覆盖该输入的子图的模式。
在一个方面中,对于输入代码的DAG中的每一个节点而言,计算设备可以计算与该节点连同预定义的语法的匹配规则/模式相匹配的所有可能“类型”的表格(如可以在BURS解决方案中类似地进行)。计算设备还可以自动地识别和/或存储针对以每一个节点为根的模式的累积开销(如可以在BURS解决方案中类似地进行)。计算设备还可以从根部的DAG执行自底向上的传递(如可以在BURS解决方案中类似地进行)。但是,当计算设备将节点与预定义的语法内的已知模式进行匹配时,计算设备可以使用先前针对该模式计算的结果,而无需重新计算该表格。另外,每当节点与语法中的特定模式相匹配时,计算设备就可以确认DAG中的节点之间的连接(或者经由有向边的共享)是否用匹配规则或模式来类似地表示。例如,当与功能(例如,‘存储’功能)相对应的节点匹配语法模式或规则时,计算设备可以检查共享(或者其它节点之间的连接),以确定匹配语法模式是否指示模式节点之间的类似关系(例如,“加载”和“存储”操作是否均在分别对于相同的数组数据结构进行读取和写入等等)。这些方面方法可以由计算设备来执行,以在与执行常规的树模式匹配相同的时间复杂度的情况下,将输入代码的中间表示中的DAG模式和预定义的语法进行匹配。
在一个方面中,计算设备可以利用适合于表达模式的模式规范语言(PSL)或PSL技术。例如,计算设备可以使用PSL来定义可以与代码表示进行比较的语法内的模式。此外,计算设备可以基于输入代码的数据流程图来使用PSL自动地生成代码。通过使用PSL,可以使得计算设备能够表达输入代码中的精确模式和‘宽松’模式二者。例如,宽松模式可以是包括一些通用算术计算,而无需实际地指定该算术计算应当是什么的模式。换言之,使用PSL可以由计算设备实现关联的或交换的模式匹配。在一个方面中,PSL还可以被用来利用宽松模式表达“包含仿射数组访问的循环”。
当前,很多软件开发者可能不具有对执行其应用的计算设备内的不同处理单元或内核的能力的理解,并且因此可能不知道其应用的部分是被定为目标还是以别的方式设计,以有效地使用这些不同的内核。在一个方面中,计算设备可以被配置为实现开发者工具包,其辅助这样的软件开发者识别其应用(或源代码)中的可以被优化或者被配置用于特定的辅助处理器或内核(例如,DSP或GPU)的代码部分(或者片段)。使用与下面描述的用于识别要被自动地卸载的代码部分的那些操作类似的操作,计算设备可以被配置为对代码进行处理和评估,以识别与语法内的预定义的DAG模式相对应的代码部分,并且生成指示所评估的代码中的某些部分可能非常适合于哪些内核的有帮助的信息或暗示。计算设备还可以被配置为呈现所生成的有帮助的信息(例如,向软件开发者提交有帮助的信息的呈现)。这样的有帮助的信息可以包括用于向开发者指示目标为了与编译器和/或手动配置操作一起使用以当在计算设备上被执行时增加整体代码效率的代码部分的建议。因此,利用该技术,软件开发者可能不需要理解特定的处理器细节,而可以用他们最喜爱的高级语言来简单地编写代码,并且计算设备可以识别和呈现用于指示用于与该代码的各个部分一起使用的正确的处理器的信息。
在下面的附图以及与图3和图5有关的描述中,描绘并且描述了示例性语法(关于规则和开销)和输入结构(例如,输入DAG),以说明各个方面方法和实现方式。这样的示例以及被包括在内部的任何特定的值、操作、功能或结构仅仅是出于说明的目的的,并不旨在限制权利要求书中记载的新颖的方面方法和设备的范围。特别地,在这样的说明中指示的具体示例性值(例如,与特定的功能、规则或结构相关联的数字“开销”)可以是任意的,并且仅仅出于说明的目的而提供,并且可能不具有与实际的功能或结构的实际开销或利益的任何关系。
图1示出了用于计算设备基于DAG模式匹配来选择用于从CPU或应用处理器卸载到辅助处理器(例如,DSP、GPU等等)的代码的方面方法100。方面方法100可以由计算设备(例如,膝上型计算机、智能电话等等)来执行,以针对包括DAG模式(即,已知DAG模式和相关联的开销和/或利益的库)的已知语法来执行模式匹配。
各种BURS算法可以通过对指令进行组合并且将与每一个指令/节点相关联的开销模型和每一个可能的指令组合的开销进行比较,来发现用于完成代码段的功能的最佳指令集。同样地,当BURS指令选择方法被应用于DAG时,其会需要对生成原始输入代码的复本以发现用于完成该原始输入代码的目的的最佳指令集的可能性进行探索,并且因此解决了“np完全”问题。方法100和下面描述的其它方面方法不生成用于输入代码的新指令(或替代指令),而是自动地识别针对DAG中的每一个节点或节点的组合的非常适合于将CPU或应用处理器卸载到辅助处理器(例如,DSP)的多种模式。换言之,方面方法可以由计算设备执行成非指数型算法以识别多种模式,并且选择最有性价比的代码来进行卸载,因此与BURS算法相比,解决了更简单的问题。
在框102中,计算设备可以生成输入代码的有向非循环图(DAG)中间表示。例如,DAG可以是基于方法的源代码、方法集或者整个应用来生成的。这样的基于图形的中间表示可以被称为数据流程图。通常,可以通过对输入代码(例如,软件应用程序或软件程序的部分)进行解析,并且确定该代码的结构的图形的或符号的映射来生成代码的中间表示。例如,诸如用于某种方法的输入代码的DAG之类的中间表示,可以指示代码内的句法和其它功能的或操作的要素。中间表示可以包括诸如注释之类的额外的信息,其可以由动态的或即时(JIT)编译器用来对该程序进行分析和配置。
DAG中间表示可以包括具有单向连接的节点(有时被称为顶点),该单向连接可以被称为边。DAG节点之间的这样的连接可以表示节点之间的逻辑关系。例如,叶节点和根节点之间的连接可以指示该叶节点是函数的操作数。此外,DAG可以不包括诸如表示代码循环的环。特别地,可以对所生成的DAG进行修整或调整,使得在中间表示中不存在环,而不管输入代码内固有的任何循环或环。在各个方面中,可以由计算设备来利用编译器例程、模块、指令或其它部件,以将应用的输入代码(例如,源代码、二进制代码等等)转换成连接的叶子和/或节点的DAG结构。
应当注意的是,DAG不与如可以在BURS算法中使用的输入树(或句法输入树)相同。例如,在各种BURS实现方式中,可以将输入代码转换为表达式输入树,其包括各种叶节点和子树,并且可以沿单个方向从任意叶节点遍历到根节点。方面方法可以生成包括比树更多的关于节点之间的连接的信息的DAG。DAG节点可以沿各个方向被连接和/或具有多个连接,因此如下文描述的需要另外的操作来评估节点和模式匹配。
在框104中,计算设备可以将所生成的DAG的每一个节点或节点的组合与语法中的一种或多种预定义的DAG模式进行比较,每一种模式与开销度量相关联。换言之,计算设备可以遍历所生成的DAG的节点,以检测与语法模式的匹配。计算设备可以以自底向上的方式来访问所生成的DAG的每一个节点,在访问一个节点自身之前,基本上访问该节点的子节点(或者叶节点)。当计算设备访问一个节点时,其可以搜索与该节点匹配的所有DAG模式(或子模式),并且将所有可能类型(例如,语法中的“非终结符(non-terminal)”)的表格更新为该节点可以与它们的启用模式规则标识符和相关联的开销(例如,以该节点为根的DAG模式的开销)相匹配。在所生成的DAG的根处,计算设备可以利用来自该语法的模式规则来发现覆盖所生成的DAG的每一个节点(或节点的组合)的低开销方式。
在各个方面中,该语法可以仅仅是存储预定义的DAG模式连同有关信息的数据结构。例如,该语法可以是与已知用某些方式、效率或开销在特定的架构、设备、操作系统等等上执行的指令相关联的DAG模式(或结构)的列表。不同于其它技术,方面方法可以在语法内存储多个预定义的DAG模式,而不是树。例如,可以将所存储的预定义的模式表达成根DAG的集合,所述根DAG的集合中的每一个根DAG可以包括针对相关联的模式的开销和/或利益度量。在各个方面中,该语法可以包括已知非常适合于特定的内核(例如,移动设备内的DSP或GPU)的DAG模式。下面描述了这样的方面语法的非限制性说明。
框104中的操作可以自动地确定非常适合用于卸载的代码,而无需任何开发者来手动地指示这样的非常适合的代码。在各个方面中,框104中操作的比较可以包括:基于节点特性或类型(例如,叶子、对应于特定的操作等等)和节点配置、连接或者排列(例如,特定的节点之间的有向连接)来确定语法模式是否匹配DAG节点。当进行该比较时,计算设备可以确定DAG内节点的方位、连接和依赖关系。例如,计算设备可以确定所生成的DAG内的节点的子组包括两个寄存器叶子(例如,被存储在寄存器内的整数值)和一个根节点,所述根节点与某个数学运算(例如,加法、乘法等等)相对应。在一个方面中,节点与语法的比较可以包括:将所生成的DAG的每一个节点或节点的组合与被存储在启发式表格中的模式信息进行比较。
在框106中,计算设备可以基于比较来识别部分地覆盖所生成的DAG的语法模式集合。换言之,基于框104中的操作中的比较,计算设备可以将语法中定义的各种DAG模式识别成与DAG的所有节点有关或者链接到DAG的所有节点(并且因此,输入代码的所有要素)。例如,识别的语法模式集合可以包括:与用所生成的DAG表示的每一个变量和函数相关联的语法模式。在各个方面中,所识别的集合可以包括针对所生成的DAG的特定要素的一种以上的语法模式(例如,具有相关联的开销/利益的多个存储的模式可以匹配所生成的DAG的特定的节点或节点的组合)。
在框108中,计算设备可以卸载输入代码的片段,所述输入代码的片段与所识别的模式集合中具有最佳识别的累积效应的语法模式的组合相关联。这可以通过确定所识别的语法模式集合的开销和利益,并且将与识别的模式组合相关联的具有最低开销的代码的片段从CPU或应用处理器卸载到辅助处理器(例如,DSP、GPU等等)来完成。在各个方面中,当最低累积开销(或最高/最大累积利益)超过预定义的门限值时,可以卸载该片段。例如,当所识别的语法模式集合与组合的开销相关联时,可以将输入代码(或者输入代码的片段)卸载到DSP,所述组合的开销不超过用于有益地从CPU或应用处理器卸载到DSP的最大开销门限值。
图2示出了用于计算设备基于DAG模式匹配来选择用于卸载到辅助处理器(例如,DSP、GPU等等)的代码的方面方法250。除了方法250包括用于对模式进行重新评估以便确认匹配模式包括与DAG内定义的节点之间的连接相同的连接的显示操作之外,方法250类似于上面描述的方法100。在框102中,如上所述,计算设备可以生成输入代码的有向非循环图(DAG)中间表示。在框104中,计算设备可以将所生成的DAG的每一个节点或节点的组合与语法中的一种或多种预定义的DAG模式进行比较,每一种模式与开销度量相关联。在框252中,当节点或节点的组合与语法中的模式相匹配时,计算设备可以对DAG进行重新评估以识别另外的模式和累积开销。换言之,由于DAG包括节点之间的有向边或连接,因此计算设备可以被配置为执行确认评估传递(例如,重新遍历该DAG),以便确保语法的任何匹配的模式与所生成的DAG内的节点的配置以及与该节点相关联的边的任何方向二者相匹配。在框106中,计算设备可以基于比较来识别部分地覆盖所生成的DAG的语法模式集合。例如,基于对DAG的遍历和重新遍历,计算设备可以识别被确认为与DAG的配置、节点类型和边相匹配的语法模式集合。在框108中,计算设备可以卸载输入代码的片段,所述输入代码的片段与所识别的模式集合中具有最佳累积效应的语法模式的组合相关联。
图3示出了适合于与各个方面一起使用的示例性语法300以及与输入代码有关的输入DAG 320。语法300可以包括规则304-306,其均包括规则标识符(例如,“[r]”、“[r’]”等等)、非终结符符号、与该规则相关联的开销(或开销度量)、以及与该规则相关联的DAG模式(例如,形成DAG模式或末端节点的节点集合,例如,整数)。由规则指示的开销和/或利益可以是对于计算设备和/或辅助处理器的、与执行和语法的DAG模式相关联的操作有关的费用、收费、时间或价值的一般表示,并且可以是处理周期、利用的资源、或者用于对其执行进行量化的其它度量的近似值。例如,规则的开销可以表示执行与单个规则相关联的指令所需要的处理器周期的数量、时间、电池寿命、或者其它资源。模板项302可以示出语法300内的规则的结构。在各个方面中,非终结符符号可以包括术语、符号、或者可以与结构或末端值相关联的其它信息,例如,寄存器或者函数或表达式的名称。
通常,为了访问或者处理已经被存储在寄存器中的值,可能不需要设备来花费任何资源。因此,各个方面语法可以包括用于引用寄存器的、以及可以与零(0)开销相关联(即,这样的语法规则可以不具有开销)或者可以不与零(0)开销相关联的规则。在各个方面中,DAG叶节点通常可以是末端(例如,整数)或者非末端。
规则304-306中的每一个规则可以与可能非常适合于在辅助处理器(例如,DSP)上执行的方法或其它操作相关联。例如,第一规则304(即,“[r]”规则)可以与“array_copy(数组复制)”操作相关联,当在DSP上被执行时,所述“array_copy”操作具有某个开销。这样的操作可以是用于将被存储在数组数据结构内的特定索引处的值(例如,整数)复制到该数组数据结构的另一个索引中的函数或例程。第二规则306(即,“[r’]”规则)可以与索引表达式相关联(例如,结合数组数据结构使用的整数索引值),并且可以具有另一个相关联的开销。
如上所述,输入代码可以是包括各种功能的软件指令,例如,源代码或二进制代码。例如,输入代码可以包括数学运算,例如,用于将被存储在寄存器中的两个值相加以存储在另一个寄存器中的运算。关于图3,用于与语法300一起使用的示例性输入代码可以是用以将数组的元素从一个索引复制到另一个索引的代码(即,数组复制函数)。例如,输入代码可以是由“A[6]=A[5]”表示的操作,其中‘A’可以是数组变量名。用于识别该数组分配函数的模式可以不被表达为简单的树,这是由于输入代码的特定要素可以被连接到一个以上的其它节点(例如,共享的节点)。因此,输入代码可以用输入DAG来表示。在一个方面中,解析器函数可以将“A[6]=A[5]”操作转换成下面的操作集:array_copy=store(array_base,index_expr,load(array_base,index_expr)),其中‘array_copy’是已知的函数,‘store(存储)’是用于将值存储或保存在特定位置(例如,与某个数组索引相关联的存储器位置)中的已知的函数,‘array_base’表示与数组数据结构有关的存储器位置,‘index_expr’是对数组索引进行寻址的指示,以及‘load(加载)’是使存储的值可访问的已知的函数,例如,通过将存储的值放在寄存器中。计算设备可以将这样的示例性输入代码转换成输入DAG 320。
输入DAG 320可以包括节点322-330,其表示如用于完成输入代码所需要的由解析器识别的操作和要素的集合。特别地,输入DAG 320可以包括:表示第一‘index_expr’元素(例如,数组索引‘5’)的第一节点324、表示第二‘index_expr’元素(例如,数组索引‘6’)的第二节点326、表示‘array_base’元素(例如,‘A’数组在计算设备存储器中的位置)的第三节点322、表示‘load(加载)’函数的第四节点328、以及表示‘store(存储)’函数的第五节点330。第三节点322可以是共享节点,这是由于其具有至第四节点328和第五节点330二者的连接(或边)。换言之,对于“A[6]=A[5]”的示例性输入代码而言,可能需要单个的‘load’和‘store’函数二者来访问数组‘A’,以分别对值进行加载和存储。
如上所述,可以将输入DAG 320与语法300进行比较。特别地,计算设备可以识别出:第一节点324与第二规则306(即,“[r’]”)相匹配,第二节点326也与第二规则306(即,“[r’]”)相匹配,以及输入DAG的整个模式(即,所有节点322-330)与第一规则304(即,“[r]”)相匹配。在各个方面中,输入DAG 320要素与语法300的匹配可以包括:将节点类型以及还有节点之间的连接进行匹配(即,确认要素之间的正确的共享)。基于这些匹配,计算设备可以确定输入DAG 320的要素的累积效应,以及因此在辅助处理器上执行的输入代码的开销或利益。出于非限制性说明的目的,基于图3的任意开销值:计算设备可以确定与第二规则306相匹配的两个节点均与开销一(1)相对应,并且整个输入DAG 320的匹配与开销十(10)相对应,达总开销十二(12)。
图4示出了用于计算设备基于DAG模式匹配来选择用于从CPU或应用处理器卸载到辅助处理器的代码的方面方法400。方法400可以被视为上面参照图1-2描述的方面方法的详细的实现方式。
在框402中,计算设备可以定义与已知非常适合于辅助处理器(例如,DSP、GPU等等)的函数有关的语法。该语法可以包括存储的集合、表格或者规则的数据库,它们与非终结符、操作数和/或具有相关联的开销度量的DAG模式相对应。例如,该语法可以包括规则,所述规则包括与已知非常适合于DSP的快速傅里叶变换(FFT)函数有关的开销或利益度量以及相关联的DAG模式。这样的语法可以是预先确定的,并且被加载或以其它方式被存储在计算设备上。
在框404中,计算设备可以生成输入代码的下一个部分的DAG中间表示。例如,计算设备可以生成针对应用内的方法的DAG。当第一次执行方法400时(即,第一次迭代),下一个部分可以是输入代码内的代码的第一部分。在一个方面中,计算设备可以利用模块、例程、软件或其它指令来将输入代码划分成方法或者其它的操作码块。此外,计算设备可以执行用于从所生成的DAG中去除环的操作,例如,当输入代码是循环时。在各个方面中,计算设备可以对输入代码进行划分,以使DAG表示操作循环(例如,‘for’循环等等)的代码。例如,计算设备可以只执行方法400来确定输入代码的方法中的循环是否非常适合于在辅助处理器上执行。
在框406中,计算设备可以将所生成的DAG的节点与所定义的语法模式进行比较,以识别匹配。例如,计算设备可以将所生成的DAG的被存储在计算设备的寄存器中的输入值(例如,整数、浮点值等等)与在语法的规则中定义的结构进行比较。所比较的节点可以是所生成的DAG内的叶节点、根节点、以及其它节点的组合。在各个方面中,针对方法400的每一个循环的所比较的节点可以是所生成的DAG的子集、所生成的DAG的预先确定数量的节点、或者经由边连接的节点的组合(例如,与所生成的DAG内表示的子例程或子函数有关的节点)。例如,与框406中的操作相比较的节点可以是所生成的DAG的节点的集合,其与‘load’函数或者‘store’函数(例如,表示数组的节点、表示索引表达式的节点、以及‘load’函数节点)相对应。替代地,可以在逐节点的基础上进行比较(例如,将叶节点与语法中的单个节点模式进行比较等等)。
此外,由于DAG利用节点之间的有向连接(例如,节点之间的有向边),因此识别匹配模式可能仅仅在所生成的DAG的节点与语法的模式相匹配时发生,所述语法的模式具有相同的节点(例如,被连接到另一种类型的另一个节点的某种类型的两个叶节点)配置和节点之间相同的边方向。换言之,模式匹配可以在所生成的DAG的节点类型和连接二者与语法相同时发生。因此,当所生成的DAG中的节点是共享的时(即,该节点是对于一个以上节点的输入),计算设备还可以对边方向进行比较,以确认任何匹配语法模式包括针对相应的节点的相同的边方向。例如,计算设备可以确定来自所生成的DAG的节点的组合和语法内的匹配模式是否共享匹配节点之间的相同的边方向。这可以被认为关于所比较的节点,对所生成的DAG进行重新遍历。
框406中的操作可以与上面参照图1-2描述的框104和252中的操作相类似。例如,计算设备可以识别在所定义的语法模式和所生成的DAG内的叶节点(例如,整数节点、寄存器节点等等)之间是否存在任何匹配。此外,框406中的操作可能不需要由代码开发者提供任何手动的指示(即,该比较可以是自动的)。
在判断框412中,计算设备可以基于比较来确定在所生成的DAG的节点和所定义的语法模式之间是否存在任何匹配。例如,计算设备可以确定所生成的DAG的叶节点是否与语法的规则内的任何模式/节点类型相匹配。如上所述,该语法可以包括多种模式(例如,叶节点和根节点),其表示不同的配置,但是仍然可以与DAG中的某种操作和/或各种操作(例如,移位、加载等等)相匹配。例如,计算设备可以将DAG(或者DAG的子集)与该语法进行比较,并且识别该语法内匹配的若干DAG模式。
如果基于比较不存在匹配(即,判断框412=“否”),则计算设备可以继续判断框416中的操作。
在可选的方面中,如果基于比较不存在匹配(即,判断框412=“否”),则计算设备可以继续判断框426中的操作。换言之,当任何节点或者节点的组合不能与所定义的语法内的模式匹配时,计算设备可以确定输入代码的当前部分不能被卸载到辅助处理器,并且可以继续下一个部分(如果有的话)。
但是,如果基于比较存在至少一个匹配(即,判断框412=“是”),则在框414中,计算设备可以选择具有最佳利益或开销的匹配模式。换言之,当所生成的DAG的当前节点或者节点的子集与语法内的多种DAG模式相匹配时,计算设备可以挑选具有最低开销或最高利益的匹配语法模式。例如,计算设备可以将与该模式匹配相关联的开销和语法内定义的开销进行比较,并且可以选择具有最低开销的模式。替代地,基于所定义的语法内的信息,计算设备可以评估与匹配模式相关联的任何利益,并且可以选择具有超过其它匹配模式中的任何一种模式的开销的利益的模式。例如,计算设备可以选择已知尤其非常适合于辅助处理器的匹配模式,例如,该模式由于DAG的节点的配置而具有非常低的开销或某种附加的利益。如上所述,可以关于每一种模式来将针对语法内的模式(或规则)的开销或利益存储在诸如关系数据库或其它数据结构内。在一个方面中,计算设备可以诸如通过将匹配模式的标识、指令的开销、或者在框418中的操作中可以访问和使用的其它标识信息存储在数据结构中来存储用于指示所选择的具有最佳效果的匹配模式的信息。
在判断框416中,计算设备可以确定是否已经对整个生成的DAG进行了评估。例如,当已经利用框406中的操作只将所生成的DAG的节点的子集与语法进行比较时,计算设备可以继续遍历所生成的DAG,直到已经对整个代码部分进行了评估为止。在各个方面中,所生成的DAG的根节点可以表示:输入代码内被用来生成该DAG的最终的或末端的操作、步骤、指令或连接器。
如果尚未对整个生成的DAG进行评估(即,判断框416=“否”),则计算设备可以通过在框406中,将所生成的DAG的更多节点与语法模式进行比较来继续对代码的其余部分进行评估。以这种方式,计算设备可以迭代地评估针对输入代码的部分所生成的DAG的节点中的所有节点。
当已经对整个生成的DAG进行了评估时(即,判断框416=“是”),在框418中,计算设备可以识别该输入代码部分针对辅助处理器的累积效应(例如,利益或开销)。例如,计算设备可以基于与该DAG相匹配的语法的单个模式的开销度量来确定组合的开销。计算设备可以通过将针对所生成的DAG内的每一个单个部分识别的开销和/或利益进行相加来识别该累积效应,并且框418中的操作可以包括:访问和组合在框414的操作期间存储的数据。在判断框420中,计算设备可以确定该累积效应对于辅助处理器(例如,DSP、GPU等等)是否有好处。在一个方面中,计算设备可以将如在框418中识别的累积利益或开销与被存储在该计算设备中的预定义的门限值进行比较。在另一个方面中,当所生成的DAG被完全地覆盖时,计算设备可以确定输入代码的该部分对于辅助处理器是有好处的。换言之,在当前DAG内的所有节点或节点的组合与所定义的语法内的模式相匹配时,计算设备可以确定有关的代码部分适合于卸载。如果累积效应对于辅助处理器有好处(即,判断框420=“是”),则在框424中,计算设备可以将输入代码的该部分从CPU或应用处理器卸载到辅助处理器。
如果计算设备确定累积效应对于辅助处理器没有好处(即,判断框420=“否”),或者如果该部分被卸载,则计算设备可以在判断框426中确定是否存在更多的代码部分要评估。例如,当计算设备被配置为在逐个方法的基础上对输入代码进行解析时,计算设备可以迭代地执行框404-424中的操作,直到已经对输入代码的全部进行了评估为止。如果存在更多的输入代码部分(即,判断框426=“是”),则计算设备可以继续框404中的操作。当不存在更多的输入代码部分时(即,判断框426=“否”),方法400可以结束。
图5示出了适合于与各个方面一起使用的示例性语法500以及与输入代码有关的输入DAG 550。图5的示例性语法500包括可以与输入DAG 550的各种模式和节点相匹配的众多规则504-514。模板项502可以示出语法500内的规则的结构。第一规则504(即,“[r0]”规则)可以与用DAG模式“S”表示的节点或节点的组合相关联,第二规则506(即,“[r1]”规则)可以与用DAG模式“A”表示的节点或节点的组合相关联,第三规则508(即,“[r2]”规则)可以与用DAG模式“B”表示的节点或节点的组合相关联,第四规则510(即,“[r3]”规则)可以与用DAG模式“C”表示的节点或节点的组合相关联,以及第五规则512(即,“[r4]”规则)可以与用DAG模式“D”表示的节点或节点的组合相关联。与规则504-512相关联的DAG模式可以表示各种节点类型和/或操作(例如,整数、寄存器、‘加载’、‘存储’、‘加’等等)。另外,规则506-512均可以具有第一开销,以及规则504可以具有第二开销。
但是,第六规则514(即,“[r’]”规则)可以与DAG模式相关联,所述DAG模式是DAG模式的针对规则506-512的组合(例如,DAG模式“A”、“B”、“C”和“D”的组合)。例如,第六规则514可以与特定的代码循环(例如,‘loop_a’)相对应。虽然第六规则514包括这些DAG模式中的所有DAG模式,但是针对第六规则514的开销可能非常低(即,低于与针对“A”、“B”、“C”和“D”的单个规则相关联的开销的组合)。这可能是辅助处理器特别好地执行某种操作组合时的情形,并且因此当输入代码包括该组合时获得极大的利益。
输入DAG 550示出了用于指示与DAG要素相匹配的最佳规则的注释。特别地,当计算设备执行如上面参照图1、图2或图4描述的方面方法时,节点552、562和564均可以与第一规则504(即,“[r0]”)相匹配。但是,节点554、556、558和560可以共同地与第六规则514(即,“[r’]”)相匹配。换言之,虽然节点554-560可以分别地与对应于某个累积开销的规则506-512相匹配,但是计算设备可以识别:可以对节点554-560进行组合,以匹配对应于更低开销(或更高利益)的第六规则514的模式。出于非限制性说明的目的,基于图5的任意开销值,可以将与节点552、562和564相关联的对应于第一规则504的开销与对应于第六规则514的开销组合,以发现对应于输入DAG 550的总开销十(10)。
图6是适合于与各个方面一起使用的智能电话型移动计算设备600的系统框图。该智能电话移动计算设备600可以包括耦合至内部存储器602、显示器603和至扬声器654的处理器601。该智能电话移动计算设备600还可以包括诸如数字信号处理器或DSP 606之类的辅助处理器。在各个方面中,DSP 606和处理器601可以诸如经由内部总线或作为片上系统设计的一部分被连接。另外,该智能电话移动计算设备600可以包括天线604用于发送和接收电磁辐射,所述天线604可以被连接到无线数据链路和/或远程无线信号收发机605(诸如蜂窝网络或WiFi无线电装置),所述远程无线信号收发机605被耦合到处理器601并且能够通过广域无线通信网络进行通信。在一个方面中,天线604还可以被耦合到DSP 606。智能电话移动计算设备600可以包括单独的短程无线收发机624,其能够与其它移动计算设备进行通信或配对。智能电话移动计算设备600通常还可以包括用于接收用户输入的菜单选择按钮或者摇杆开关608。另外,该智能电话移动计算设备600可以包括耦合到处理器601和/或DSP 606的加速计610、陀螺仪611和GPS接收机芯片614。在一个方面中,该智能电话移动计算设备600还可以包括耦合到处理器601和/或DSP 606的麦克风612和照相机613。在另一个方面中,该智能电话移动计算设备600还可以包括其它辅助处理器,例如,图形处理单元(未示出)。
处理器601和606可以是能够由软件指令(应用)来配置以执行各种各样的功能(其包括上面描述的各个方面的功能)的任何可编程的微处理器、微计算机或多个处理器芯片或数个芯片。在各个设备中,处理器601和606可以专用于特定的指令、软件、命令或其它用途。例如,一个处理器可以专用于无线通信功能,以及一个处理器可以专用于运行其它应用。通常,在访问软件应用并且将其加载到处理器601和606之前,可以将软件应用存储在内部存储器602中。处理器601和606可以包括足以存储应用软件指令的内部存储器。在很多设备中,内部存储器可以是易失性存储器或者非易失性存储器(例如,闪存)、或者二者的混合。出于该描述的目的,对于存储器的一般提及指代由处理器601和606可访问的存储器,包括内部存储器或者被插入到各个设备中的可移动存储器、以及处理器601和606内的存储器。
前述方法描述和过程流程图仅仅作为说明性的示例而提供,并不旨在要求或者暗示必须以呈现的顺序来执行各个方面的步骤。如将由本领域技术人员意识到的,可以以任何顺序来执行前述方面中的步骤的顺序。诸如“其后”、“然后”、“接着”等等之类的词语不旨在限制步骤的顺序;这些词语仅仅被用来引导读者从头到尾阅读该方法的描述。此外,任何对权利要求要素的单数提及,例如,使用冠词“一(a)”、“一个(an)”或者“所述(the)”不应当被解释为将该要素限制为单数形式。
结合本文公开的方面描述的各种说明性的逻辑框、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或二者的组合。为了清楚地说明硬件和软件的这种可交换性,上面已经对各种说明性的部件、框、模块、电路和步骤围绕其功能进行了总体描述。至于这样的功能是被实现为硬件还是软件,取决于特定的应用和施加到整个系统上的设计约束。熟练的技术人员可以针对每个特定的应用,以变通的方式实现所描述的功能,但是,这样的实现决策不应当被解释为导致背离本发明的范围。
可以利用被设计为执行本文描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件部件或者其任意组合来实现或执行结合本文公开的方面描述的被用来实现各种说明性的逻辑、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,但是在替代方案中,该处理器可以是任何常规的处理器、控制器、微控制器或者状态机。处理器还可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、结合DSP内核的一个或多个微处理器,或者任何其它这样的结构。替代地,一些步骤或方法可以由特定于给定的功能的电路来执行。
在一个或多个示例性方面中,描述的功能可以用硬件、软件、固件或其任意组合来实现。如果用软件来实现,则可以将功能存储在计算机可读介质上,或者作为计算机可读介质上的一个或多个指令或代码进行传输。本文公开的方法或算法的操作可以被体现在可以被存储在非暂时性处理器可读或者计算机可读存储介质上的处理器可执行软件模块(或者处理器可执行指令或处理器可执行软件指令)中。非暂时性处理器可读存储介质可以是可以由计算机或处理器存取的任何可用的介质。通过示例而非限制的方式,非暂时性计算机可读和处理器可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或者能够被用来存储具有指令或数据结构形式的期望的程序代码并且能够由计算机存取的任何其它介质。如本文使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上面的组合也应当被包括在非暂时性计算机可读和处理器可读介质的范围内。另外,方法或算法的操作可以作为一个代码和/或指令集或者其任意组合存在于有形的非暂时性机器可读介质和/或计算机可读介质上,所述有形的非暂时性机器可读介质和/或计算机可读介质可以被并入到计算机程序产品中。
为了使得本领域的任何技术人员能够实现或者使用本发明,提供了所公开的方面的先前描述。对于本领域技术人员来说,对这些方面的各种修改是显而易见的,并且本文定义的一般原理可以在不背离本发明的精神或范围的情况下被应用于其它方面。因此,本发明不旨在被限定到本文示出的方面,而是要符合与所附权利要求书和本文公开的原理和新颖性特征相一致的最宽的范围。

Claims (24)

1.一种用于当来自第一处理器的输入代码的部分被自动地确定为非常适合于辅助处理器时,计算设备卸载所述输入代码的所述部分用于在所述辅助处理器上执行的方法,包括:
生成所述输入代码的基于图形的中间表示,其中,所述输入代码的所述基于图形的中间表示包含有向非循环图DAG;
将所生成的基于图形的中间表示中的每一个节点或节点的组合与和所述辅助处理器相关联的预定义的语法中的一种或多种模式进行比较,其中,每一种模式是DAG模式并且与开销度量相关联,所述开销度量与所述每一种模式在所述辅助处理器上的执行有关;
基于每一个节点或所述节点的组合与所述预定义的语法中的所述一种或多种模式的所述比较来识别部分地覆盖所述输入代码的所述基于图形的中间表示的模式集合;以及
将所述输入代码的片段从所述第一处理器卸载到所述辅助处理器,所述输入代码的所述片段与所识别的模式集合中具有累积效应的模式的组合相关联,所述累积效应比所识别的模式集合的任意其它组合的累积效应要好并且在针对所述辅助处理器的预定义的门限内,其中,已知所述预定义的语法中的所述一种或多种模式非常适合于所述辅助处理器。
2.根据权利要求1所述的方法,其中,将每一个节点或节点的组合与预定义的语法中的一种或多种模式进行比较包括:将每一个节点或所述节点的组合与被存储在启发式表格中的模式信息进行比较。
3.根据权利要求1所述的方法,其中,所述计算设备是包括片上系统的设备。
4.根据权利要求1所述的方法,其中,所述辅助处理器是数字信号处理器DSP和图形处理单元GPU中的一种。
5.根据权利要求1所述的方法,其中,最佳累积效应是最低累积开销和最高累积利益中的一种。
6.根据权利要求1所述的方法,还包括:基于每一个节点或所述节点的组合与所述预定义的语法中的所述一种或多种模式的所述比较来生成用于向开发者呈现的信息,所述信息用于指示能够被配置用于所述辅助处理器的所述输入代码的片段。
7.一种计算设备,包括:
用于生成输入代码的基于图形的中间表示的单元,其中,所述输入代码的所述基于图形的中间表示是有向非循环图DAG;
用于将所生成的基于图形的中间表示中的每一个节点或节点的组合与和辅助处理器相关联的预定义的语法中的一种或多种模式进行比较的单元,其中,每一种模式是DAG模式并且与开销度量相关联,所述开销度量与所述每一种模式在所述辅助处理器上的执行有关;
用于基于每一个节点或所述节点的组合与所述预定义的语法中的所述一种或多种模式的所述比较来识别完全地覆盖所述输入代码的所述基于图形的中间表示的模式集合的单元;以及
用于将所述输入代码的片段从第一处理器卸载到所述辅助处理器的单元,所述输入代码的所述片段与所识别的模式集合中具有累积效应的模式的组合相关联,所述累积效应比所识别的模式集合的任意其它组合的累积效应要好并且在针对所述辅助处理器的预定义的门限内,其中,已知所述预定义的语法中的所述一种或多种模式非常适合于所述辅助处理器。
8.根据权利要求7所述的计算设备,其中,用于将每一个节点或节点的组合与预定义的语法中的一种或多种模式进行比较的单元包括:用于将每一个节点或所述节点的组合与被存储在启发式表格中的模式信息进行比较的单元。
9.根据权利要求7所述的计算设备,其中,所述计算设备包括片上系统。
10.根据权利要求7所述的计算设备,其中,所述辅助处理器是数字信号处理器DSP和图形处理单元GPU中的一种。
11.根据权利要求7所述的计算设备,其中,最佳累积效应是最低累积开销和最高累积利益中的一种。
12.根据权利要求7所述的计算设备,还包括:用于基于每一个节点或所述节点的组合与所述预定义的语法中的所述一种或多种模式的所述比较来生成用于向开发者呈现的信息的单元,所述信息用于指示能够被配置用于所述辅助处理器的所述输入代码的片段。
13.一种计算设备,包括:
存储器;
第一处理器;以及
辅助处理器,
其中,所述第一处理器被耦合至所述存储器和所述辅助处理器,并且被配置有用于执行包括下列各项的操作的处理器可执行指令:
生成输入代码的基于图形的中间表示,其中,所述输入代码的所述基于图形的中间表示包含有向非循环图DAG;
将所生成的基于图形的中间表示中的每一个节点或节点的组合与和所述辅助处理器相关联的预定义的语法中的一种或多种模式进行比较,其中,每一种模式是DAG模式并且与开销度量相关联,所述开销度量与所述每一种模式在所述辅助处理器上的执行有关;
基于每一个节点或所述节点的组合与所述预定义的语法中的所述一种或多种模式的所述比较来识别部分地覆盖所述输入代码的所述基于图形的中间表示的模式集合;以及
将所述输入代码的片段从所述第一处理器卸载到所述辅助处理器,所述输入代码的所述片段与所识别的模式集合中具有累积效应的模式的组合相关联,所述累积效应比所识别的模式集合的任意其它组合的累积效应要好并且在针对所述辅助处理器的预定义的门限内,其中,已知所述预定义的语法中的所述一种或多种模式非常适合于所述辅助处理器。
14.根据权利要求13所述的计算设备,其中,所述第一处理器被配置有用于执行操作使得将每一个节点或节点的组合与预定义的语法中的一种或多种模式进行比较包括将所述每一个节点或所述节点的组合与被存储在启发式表格中的模式信息进行比较的处理器可执行指令。
15.根据权利要求13所述的计算设备,其中,所述计算设备包括片上系统。
16.根据权利要求13所述的计算设备,其中,所述辅助处理器是数字信号处理器DSP和图形处理单元GPU中的一种。
17.根据权利要求13所述的计算设备,其中,最佳累积效应是最低累积开销和最高累积利益中的一种。
18.根据权利要求13所述的计算设备,其中,所述第一处理器被配置有用于执行还包括下列各项的操作的处理器可执行指令:基于每一个节点或所述节点的组合与所述预定义的语法中的所述一种或多种模式的所述比较来生成用于向开发者呈现的信息,所述信息用于指示能够被配置用于所述辅助处理器的所述输入代码的片段。
19.一种非暂时性处理器可读存储介质,其具有被存储在其上的处理器可执行软件指令,所述处理器可执行软件指令被配置为使处理器执行用于将输入代码的部分从第一处理器卸载到辅助处理器的操作,所述操作包括:
生成所述输入代码的基于图形的中间表示,其中,所述输入代码的所述基于图形的中间表示是有向非循环图DAG;
将所生成的基于图形的中间表示中的每一个节点或节点的组合与和所述辅助处理器相关联的预定义的语法中的一种或多种模式进行比较,其中,每一种模式是DAG模式并且与开销度量相关联,所述开销度量与所述每一种模式在所述辅助处理器上的执行有关;
基于每一个节点或所述节点的组合与所述预定义的语法中的所述一种或多种模式的所述比较来识别完全地覆盖所述输入代码的所述基于图形的中间表示的模式集合;以及
将所述输入代码的片段从所述第一处理器卸载到所述辅助处理器,所述输入代码的所述片段与所识别的模式集合中具有累积效应的模式的组合相关联,所述累积效应比所识别的模式集合的任意其它组合的累积效应要好并且在针对所述辅助处理器的预定义的门限内,其中,已知所述预定义的语法中的所述一种或多种模式非常适合于所述辅助处理器。
20.根据权利要求19所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器执行操作,使得将每一个节点或节点的组合与预定义的语法中的一种或多种模式进行比较包括:将每一个节点或所述节点的组合与被存储在启发式表格中的模式信息进行比较。
21.根据权利要求19所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行软件指令被配置为在包括片上系统的计算设备上执行。
22.根据权利要求19所述的非暂时性处理器可读存储介质,其中,所述辅助处理器是数字信号处理器DSP和图形处理单元GPU中的一种。
23.根据权利要求19所述的非暂时性处理器可读存储介质,其中,最佳累积效应是最低累积开销和最高累积利益中的一种。
24.根据权利要求19所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器执行还包括下列各项的操作:基于每一个节点或所述节点的组合与所述预定义的语法中的所述一种或多种模式的所述比较来生成用于向开发者呈现的信息,所述信息用于指示能够被配置用于所述辅助处理器的所述输入代码的片段。
CN201480045480.1A 2013-08-19 2014-08-11 用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配 Expired - Fee Related CN105474172B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/969,735 US9201659B2 (en) 2013-08-19 2013-08-19 Efficient directed acyclic graph pattern matching to enable code partitioning and execution on heterogeneous processor cores
US13/969,735 2013-08-19
PCT/US2014/050576 WO2015026554A1 (en) 2013-08-19 2014-08-11 Efficient directed acyclic graph pattern matching to enable code partitioning and execution on heterogeneous processor cores

Publications (2)

Publication Number Publication Date
CN105474172A CN105474172A (zh) 2016-04-06
CN105474172B true CN105474172B (zh) 2018-11-09

Family

ID=51422164

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480045480.1A Expired - Fee Related CN105474172B (zh) 2013-08-19 2014-08-11 用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配

Country Status (5)

Country Link
US (1) US9201659B2 (zh)
EP (1) EP3036624A1 (zh)
JP (1) JP2016531366A (zh)
CN (1) CN105474172B (zh)
WO (1) WO2015026554A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014116921A1 (en) * 2013-01-24 2014-07-31 New York University Utilization of pattern matching in stringomes
US20150046679A1 (en) * 2013-08-07 2015-02-12 Qualcomm Incorporated Energy-Efficient Run-Time Offloading of Dynamically Generated Code in Heterogenuous Multiprocessor Systems
US20170010915A1 (en) * 2014-01-31 2017-01-12 Hewlett Packard Enterprise Development Lp Performing processing tasks using an auxiliary processing unit
CN110874212B (zh) * 2015-06-30 2021-08-20 华为技术有限公司 一种硬件加速方法、编译器以及设备
US20170316060A1 (en) * 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Distributed execution of hierarchical declarative transforms
US20180032568A1 (en) * 2016-07-29 2018-02-01 Sysomos L.P. Computing System with Multi-Processor Platform for Accelerating Influence Maximization Computation and Related Methods
US10891326B2 (en) 2017-01-05 2021-01-12 International Business Machines Corporation Representation of a data analysis using a flow graph
CN110168548B (zh) * 2017-01-05 2023-05-26 皇家飞利浦有限公司 编译设备和方法
US10318306B1 (en) * 2017-05-03 2019-06-11 Ambarella, Inc. Multidimensional vectors in a coprocessor
US10388039B2 (en) 2017-05-31 2019-08-20 International Business Machines Corporation Accelerating data-driven scientific discovery
US10664278B2 (en) * 2017-08-17 2020-05-26 Huawei Technologies Co., Ltd. Method and apparatus for hardware acceleration in heterogeneous distributed computing
US20200249998A1 (en) * 2019-02-01 2020-08-06 Alibaba Group Holding Limited Scheduling computation graph heterogeneous computer system
US10818067B1 (en) * 2019-05-31 2020-10-27 Texas Instruments Incorporated GPU assist using DSP pre-processor system and method
CN111427582B (zh) * 2020-03-30 2023-06-09 飞腾信息技术有限公司 Rtl代码的管理方法、装置、设备及计算机可读存储介质
CN112230931B (zh) * 2020-10-22 2021-11-02 上海壁仞智能科技有限公司 适用于图形处理器的二次卸载的编译方法、装置和介质
US11580357B1 (en) * 2021-07-28 2023-02-14 Practical Posets Llc Self-organizing generalization hierarchy with bindings of propositions
US11494357B1 (en) * 2021-07-28 2022-11-08 Practical Posets Llc Directed acyclic graph path addressing

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202975A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership Method for optimizing instruction scheduling for a processor having multiple functional resources
US5613117A (en) * 1991-02-27 1997-03-18 Digital Equipment Corporation Optimizing compiler using templates corresponding to portions of an intermediate language graph to determine an order of evaluation and to allocate lifetimes to temporary names for variables
US6292938B1 (en) * 1998-12-02 2001-09-18 International Business Machines Corporation Retargeting optimized code by matching tree patterns in directed acyclic graphs
CN100377087C (zh) * 2003-05-02 2008-03-26 可递有限公司 生成用于程序代码转换的中间表示的方法和转换器装置
CN101421729A (zh) * 2006-03-03 2009-04-29 奥多比公司 有效表示和搜索数据库中的有向无环图结构的系统和方法
CN102707952A (zh) * 2012-05-16 2012-10-03 上海大学 嵌入式异构多核处理器上基于用户描述的程序设计方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL100987A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Method and device for encoding
DE69737750T2 (de) * 1997-12-17 2008-03-06 Hewlett-Packard Development Co., L.P., Houston Erst- und Zweitprozessoren verwendetes Verfahren
GB2398411B (en) * 2001-10-12 2005-04-27 Pts Corp Processors and compiling methods for processors
US20040025151A1 (en) * 2002-07-31 2004-02-05 Shan-Chyun Ku Method for improving instruction selection efficiency in a DSP/RISC compiler
US9038040B2 (en) 2006-01-25 2015-05-19 International Business Machines Corporation Method for partitioning programs between a general purpose core and one or more accelerators
US20100156888A1 (en) * 2008-12-23 2010-06-24 Intel Corporation Adaptive mapping for heterogeneous processing systems
US8458676B2 (en) 2009-06-30 2013-06-04 International Business Machines Corporation Executing platform-independent code on multi-core heterogeneous processors
US8495129B2 (en) 2010-03-16 2013-07-23 Microsoft Corporation Energy-aware code offload for mobile devices
US20110289519A1 (en) * 2010-05-21 2011-11-24 Frost Gary R Distributing workloads in a computing platform
US8918770B2 (en) 2011-08-25 2014-12-23 Nec Laboratories America, Inc. Compiler for X86-based many-core coprocessors
US9098309B2 (en) 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202975A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership Method for optimizing instruction scheduling for a processor having multiple functional resources
US5613117A (en) * 1991-02-27 1997-03-18 Digital Equipment Corporation Optimizing compiler using templates corresponding to portions of an intermediate language graph to determine an order of evaluation and to allocate lifetimes to temporary names for variables
US6292938B1 (en) * 1998-12-02 2001-09-18 International Business Machines Corporation Retargeting optimized code by matching tree patterns in directed acyclic graphs
CN100377087C (zh) * 2003-05-02 2008-03-26 可递有限公司 生成用于程序代码转换的中间表示的方法和转换器装置
CN101421729A (zh) * 2006-03-03 2009-04-29 奥多比公司 有效表示和搜索数据库中的有向无环图结构的系统和方法
CN102707952A (zh) * 2012-05-16 2012-10-03 上海大学 嵌入式异构多核处理器上基于用户描述的程序设计方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
"Generalized Instruction Selection using SSA-Graphs";Dietmar Ebner等;《LCTES’08: Proceedings of the 2008 ACM SIGPLAN-SIGBED conference on Languages, compilers, and tools for embedded systems》;20080613;第31-40页 *
"Near-Optimal Instruction Selection on DAGs";David Ryan Koes等;《CGO’08: Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization》;20080410;第45-54页 *
"Optimal Code Selection in DAGs";M.Anton Ertl;《POPL’99:Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages》;19990131;第242-249页 *
"可配置可扩展处理器编译器设计";钟松延;《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》;20120815;I137-15 *
"基于DAG图的自适应代码划分优化算法";周静等;《计算机工程》;20071020;第33卷(第20期);第15-17页 *
"基于可重构处理器的并行优化算法";刘石柱等;《计算机工程》;20121105;第38卷(第21期);第286-289页 *

Also Published As

Publication number Publication date
US9201659B2 (en) 2015-12-01
WO2015026554A1 (en) 2015-02-26
CN105474172A (zh) 2016-04-06
EP3036624A1 (en) 2016-06-29
US20150052331A1 (en) 2015-02-19
JP2016531366A (ja) 2016-10-06

Similar Documents

Publication Publication Date Title
CN105474172B (zh) 用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配
Sohrabizadeh et al. AutoDSE: Enabling software programmers to design efficient FPGA accelerators
CN102193810B (zh) 模块间内联候选标识
Marcus et al. Bao: Learning to steer query optimizers
US9009689B2 (en) Speculative compilation to generate advice messages
Brain et al. Debugging ASP programs by means of ASP
US11068247B2 (en) Vectorizing conditional min-max sequence reduction loops
Donaldson et al. Counterexample-guided abstraction refinement for symmetric concurrent programs
Sharif et al. ApproxHPVM: a portable compiler IR for accuracy-aware optimizations
Kokologiannakis et al. Truly stateless, optimal dynamic partial order reduction
Bouajjani et al. Analysis of recursively parallel programs
Plump From imperative to rule-based graph programs
Bobek et al. HEARTDROID—Rule engine for mobile and context‐aware expert systems
Neele et al. Solving parameterised boolean equation systems with infinite data through quotienting
De Nicola et al. A modal logic for mobile agents
US20100242019A1 (en) Semantic Intensity Based Decomposition of Software Systems
Huang et al. Partitioned hybrid learning of Bayesian network structures
CN112243509A (zh) 从异构源生成数据集用于机器学习的系统和方法
CN117348935A (zh) 指令处理方法、装置、计算机设备和存储介质
Vieira et al. Dyna: Toward a self-optimizing declarative language for machine learning applications
Huang et al. A formal algorithm for verifying the validity of clustering results based on model checking
Custers Algorithmic species: Classifying program code for parallel computing
Metzler et al. Efficient verification of program fragments: Eager POR
Mirhosseini et al. A fast MILP solver for high-level synthesis based on heuristic model reduction and enhanced branch and bound algorithm
Pfaffe Autotuning for Automatic Parallelization on Heterogeneous Systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181109

Termination date: 20210811

CF01 Termination of patent right due to non-payment of annual fee