CN114127681A - 用于实现数据流ai应用的自主加速的方法和装置 - Google Patents

用于实现数据流ai应用的自主加速的方法和装置 Download PDF

Info

Publication number
CN114127681A
CN114127681A CN202080052164.2A CN202080052164A CN114127681A CN 114127681 A CN114127681 A CN 114127681A CN 202080052164 A CN202080052164 A CN 202080052164A CN 114127681 A CN114127681 A CN 114127681A
Authority
CN
China
Prior art keywords
operators
given
given candidate
binary code
candidate group
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.)
Pending
Application number
CN202080052164.2A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN114127681A publication Critical patent/CN114127681A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一种方法,包括分析表示数据流应用的运算符之间的数据依赖关系的数据流图,以识别所述运算符的多个候选组。根据给定硬件加速器的特征和所述多个候选组中给定候选组的运算符,确定所述给定候选组的所述运算符是否要被组合。在确定所述给定候选组的所述运算符要被组合之后,检索与所述给定候选组的所述运算符对应的可执行二进制代码段;生成二进制代码单元,所述二进制代码单元包括所述可执行二进制代码段和表示所述可执行二进制代码段之中执行控制流的元数据;并且将所述代码单元调度到所述给定硬件加速器以执行所述代码单元。

Description

用于实现数据流AI应用的自主加速的方法和装置
相关申请交叉引用
本申请要求于2019年9月13日提交的序列号为16/570,822、发明名称为“用于实现数据流AI应用的自主加速的方法和装置(METHOD AND APPARATUS FOR ENABLINGAUTONOMOUS ACCELERATION OF DATAFLOW AI APPLICATIONS)”的美国专利申请的优先权,其内容通过全文引用并入本文。
技术领域
本发明涉及数据流应用领域,具体涉及一种方法和装置,用于通过降低与将运算符卸载到硬件加速器以进行执行相关的卸载开销来提高数据流编程应用的性能。
背景技术
数据流应用是使用数据流编程方法编写的计算机程序(例如软件)。现代数据流应用使用运算符系统来最大限度地提高软件兼容性和可组合性。现代数据流应用的开发人员使用运算符来创建新的算法,方式是将运算符组装为这些算法的构建块。数据流图(见图2)可用于表示数据流应用中算法的不同运算符(operators,ops)之间的数据流动方式。在运行时间内,主机处理单元的执行引擎将数据流应用中的运算符卸载到不同的执行单元,例如中央处理单元(central processing unit,CPU)、图形处理单元(graphic processingunit,GPU)或其它形式的专用硬件加速器。在这种方法中,硬件加速器被动地运行,即,在新的运算符形成并由在主机处理单元上运行的执行引擎卸载到这些硬件加速器之前,这些硬件加速器保持空闲。将单个运算符卸载到硬件加速器的开销可能会相当大,尤其是当运算符的计算时间相对较短时。
需要一种方法和装置,用于降低与将数据流应用中的运算符卸载到硬件加速器以进行执行相关的卸载开销。
提供该背景信息是为了揭示申请人认为可能与本发明相关的信息。不必有意承认,也不应该解释任何前述信息构成针对本发明的现有技术。
发明内容
本发明的实施例的目的是提供一种方法和装置,用于通过降低与将运算符卸载到硬件加速器以进行执行相关的卸载开销来提高数据流应用的性能。
根据本发明的实施例,提供了一种方法,包括分析表示数据流应用的运算符之间的数据依赖关系的数据流图,以识别所述运算符的多个候选组。根据给定硬件加速器的特征和所述多个候选组中给定候选组的运算符,确定所述给定候选组的所述运算符是否要被组合。在确定所述给定候选组的所述运算符要被组合之后,检索与所述给定候选组的所述运算符对应的可执行二进制代码段;生成二进制代码单元,所述二进制代码单元包括所述可执行二进制代码段和表示所述可执行二进制代码段之中执行控制流的元数据;并且将所述代码单元调度到所述给定硬件加速器以执行所述代码单元。
在另一个实施例中,确定所述给定候选组的所述运算符是否要被分组在一起包括:根据所述给定候选组的运算符是否被限制为在多个硬件加速器中的不同硬件加速器上执行来确定所述运算符是否应该被组合。
在另一个实施例中,确定所述给定候选组的所述运算符是否要被分组在一起包括:根据所述给定硬件加速器的可用资源确定所述运算符是否应该被组合。
在另一个实施例中,确定所述给定候选组的所述运算符是否要被分组在一起包括:根据所述给定候选组的所述运算符的数量确定所述运算符是否应该被组合。
在另一个实施例中,确定所述给定候选组的所述运算符是否要被分组在一起包括:根据与执行所述给定候选组的所有所述运算符相关联的计算运行时间确定所述运算符是否应该被组合。
在另一个实施例中,生成所述二进制代码单元包括:生成表示所述给定候选组的每个运算符的输入参数和输出参数的元数据。
在另一个实施例中,生成所述二进制代码单元包括生成表示多个导航表条目的元数据。所述多个导航表条目中的给定条目包括与所述给定条目的大小相关联的字段和指向所述多个可执行二进制代码段中的给定可执行二进制代码段的指针。
根据本发明的实施例,提供了一种计算机系统,包括处理器、硬件加速器和用于存储指令的非瞬时性存储器。当处理器执行指令时,所述指令使该处理器执行二进制代码单元,所述二进制代码单元包括可执行二进制代码段和表示所述可执行二进制代码段之中执行控制流的元数据。所述可执行二进制代码段对应于给定候选组的运算符。所述给定候选组的所述运算符通过如下方式选择:分析表示数据流应用的运算符之间的数据依赖关系的数据流图,以识别所述运算符的多个候选组,并根据所述硬件加速器的特征和所述多个候选组中的所述给定候选组的所述运算符,确定所述给定候选组的所述运算符要被组合。所述代码单元被调度到所述硬件加速器以执行所述代码单元。
在另一个实施例中,确定所述给定候选组的所述运算符要被分组在一起包括:根据所述硬件加速器的约束确定所述运算符被组合。
在另一个实施例中,确定所述给定候选组的所述运算符要被分组在一起包括:根据所述硬件加速器的可用资源确定所述运算符应该被组合。
在另一个实施例中,确定所述给定候选组的所述运算符要被分组在一起包括:根据所述给定候选组的所述运算符的数量确定所述运算符应该被组合。
在另一个实施例中,确定所述给定候选组的所述运算符要被分组在一起包括:根据与执行所述给定候选组的所有所述运算符相关联的计算运行时间确定所述运算符应该被组合。
在另一个实施例中,生成所述二进制代码单元包括:生成表示所述给定候选组的每个运算符的输入参数和输出参数的元数据。
在另一个实施例中,生成所述二进制代码单元包括生成表示多个导航表条目的元数据。所述多个导航表条目中的给定条目包括与所述给定条目的大小相关联的字段和指向所述多个可执行二进制代码段中的给定可执行二进制代码段的指针。
在另一个实施例中,所述二进制代码单元包括胶水代码。
根据本发明的一个实施例,提供了一种存储有指令的非瞬时性存储器。所述指令由处理器执行时使该处理器执行二进制代码单元,所述二进制代码单元包括可执行二进制代码段和表示所述可执行二进制代码段之中执行控制流的元数据。所述可执行二进制代码段对应于给定候选组的运算符。所述给定候选组的所述运算符通过分析表示数据流应用的运算符之间的数据依赖关系的数据流图,以识别所述运算符的多个候选组来选择。根据硬件加速器的特征和所述多个候选组中所述给定候选组的所述运算符,确定所述给定候选组的所述运算符要被组合。将所述代码单元调度到所述硬件加速器以执行所述代码单元。
在另一个实施例中,确定所述给定候选组的所述运算符要被分组在一起包括:根据所述硬件加速器的约束确定所述运算符被组合。
在另一个实施例中,确定所述给定候选组的所述运算符要被分组在一起包括:根据与执行所述给定候选组的所有所述运算符相关联的计算运行时间确定所述运算符应该被组合。
在另一个实施例中,确定所述给定候选组的所述运算符要被分组在一起包括:根据与执行所述给定候选组的所有所述运算符相关联的计算运行时间确定所述运算符应该被组合。
附图说明
结合附图,通过以下详细描述,本发明的进一步特征和优点将变得显而易见,在附图中:
图1示出了使用一个实施例的开发工作流和执行工作流的流程图;
图2示出了数据流应用的示例性数据流图;
图3示出了一个实施例提供的超级运算符(super-op)编译器的组件;
图4示出了一个实施例提供的能够执行超级运算符的加速器硬件;
图5示出了一个实施例提供的用于超级运算符的导航表;
图6示出了一个实施例提供的超级运算符编程模型;
图7示出了本发明提供的装置的配置。
需要说明的是,在整个附图中,相同的特征由相同的附图标记标识。
具体实施方式
本发明的实施例包括用于提高基于调度到加速器硬件以进行执行的运算符的数据流应用的性能的方法和装置。实施例包括使硬件加速器能够在主机处理器的最小干预下自主执行数据流图的超级运算符(多运算符部分)的系统。数据流应用在包括主机处理单元和一个或多个硬件加速器的计算机系统上执行。主机处理单元控制程序的整体执行,并可以调度运算符或超级运算符,以在硬件加速器上执行。主机处理器的执行引擎将运算符(或超级运算符)调度到硬件加速器称为“卸载”。
实施例包括架构,该架构包括用于数据流编程应用的开发环境和运行时环境。用户(如应用开发人员)利用所提出系统的架构来开发和运行数据流应用。基于应用的数据流图表示102,用户使用超级运算符编译器104(下文描述)来产生输出可执行二进制。然后,编译器104的可执行输出可以由运行时系统用来执行程序,该程序包括将超级运算符(运算符组)卸载到加速器硬件108。
图1示出了一个实施例提供的开发工作流100和运行时工作流101的流程图。开发工作流100和运行时工作流101可以顺序执行,也可以独立执行。开发工作流100由超级运算符编译器104执行,开始于:图分析器304分析(110)数据流应用的数据流图表示102,以分析数据流图102的运算符之间的数据依赖关系。图分析器识别(112)可存储在超级运算符候选存储库(repository,repo)306中的运算符的多个候选组308。确定(114)所要组合的运算符组从逻辑加速器资源模型312获取输入,所述逻辑加速器资源模型312包括系统可用的一个或多个硬件加速器108的能力或约束的参数。可执行二进制代码段由超级运算符代码生成器312生成,并且可以存储在运算符二进制存储库(operators binary repository,opsbin repo)316中,以便将来使用。如果超级运算符代码生成器312确定可执行二进制代码段318已经存在,则可以从运算符二进制存储库316获得可执行二进制代码段318,而无需重新编译该可执行二进制代码段318。然后,超级运算符代码生成器312生成(116)二进制代码单元。二进制代码单元包括运行时系统执行数据流程序(包括卸载到硬件加速器108)所需的所有必要二进制、导航表314、元数据、参数等。
二进制代码单元可以由运行时工作流101用于立即执行或在稍后时间执行。运行时工作流101包括将代码单元调度到主机处理器的运行时系统以进行执行。作为主机处理器执行的一部分,运行时系统然后可以根据二进制代码单元的指示将运算符和超级运算符卸载到硬件加速器108。
图2示出了用于由本发明的超级运算符编译器编译的数据流应用的示例性数据流图102。示例性数据流图102包括六个运算符(以下称为ops):Op1、Op2、Op3、Op4、Op5和Op6。如Op5等运算符由表示数据路径的数据流图102的边缘链接。给定表示为数据流图102的基于运算符的计算,识别可以组合成单个运算符的子图。然后分析作为子图计算一部分所需的参数。参数可以包括数据类型、张量形状、数据格式和子图内个体运算符特有的任何其它超参数。子图的参数的值用于生成代码,这些代码将整个子图的计算表示为一个大运算符,在此称为超级运算符。超级运算符可以卸载到硬件加速器108。超级运算符在计算上相当于分别卸载到硬件加速器的许多基本的小运算符,但是超级运算符的卸载开销要小得多。应当理解,尽管图2中所示的示例性数据流图包括六个运算符,但数据流图可以包括任何数量的运算符。
图3示出了本发明的实施例提供的超级运算符编译器104。超级运算符编译器104是包括可由计算系统(例如计算系统700(见图7))的处理器执行的指令的软件。超级运算符编译器104包括逻辑加速器资源模型302、图分析器304、超级运算符候选存储库306、超级运算符代码生成器312和运算符二进制存储库316(以下称为ops bin存储库316)。超级运算符编译器的图分析器304接收数据流应用的数据流图102,分析数据流图102,识别数据流图102中可以被组合成超级运算符,从而可以传递到超级运算符代码生成器312的运算符,并输出包括可以组合的运算符的超级运算符候选。图分析器304在进行这种识别时可以利用来自逻辑加速器资源模型302和各种其它源的信息和约束。逻辑加速器资源模型302包括关于硬件加速器108的可用资源的信息和硬件加速器108的约束。数据流图102可以包括指示哪些运算符可以卸载到硬件加速器(包括如果有一个以上硬件加速器,指示哪个硬件加速器可用),或者指示是否允许卸载的信息。程序员可以明确或隐含地提供关于运算符卸载的决策(称为卸载决策)。卸载决策也可以由卸载分析器(未示出)确定,该卸载分析器指示可以卸载的运算符。图分析器304分析数据流图以确定调度(即,卸载)每个运算符或运算符组的可行性和性能成本。约束的一个示例是,指定调度(即卸载)到不同硬件加速器的两个运算符不能被组合。其它约束包括目标硬件加速器是否拥有足够的片上资源(例如,计算能力、内存大小、带宽等),以高效运行预期的超级运算符。成本模型还考虑了启发式因素,如超级运算符内运算符的数量、运算符的计算要求、最终图中所得到的超级运算符数量,以及一个超级运算符内运算符之间的执行依赖关系,以平衡系统的超级运算符益处和并行机会。
在某些情况下,超级运算符编译器可以大幅降低卸载开销。因此,卸载分析器(未示出)和超级运算符图分析器304可以利用两者之间的共同启发来决定其各自的输出。在一些实施例中,用户还能够提供指示要组合哪些运算符或子图的指令。在这些实施例中,用户只需要指定要组合哪个子图,而不需要为子图提供融合实现。运算符是基于“浅融合”方法组合的,在这种方法中,原样采用运算符的现有实现,然后组合在一起,以构建超级运算符。使用浅融合方法,不必创建带有附加约束的融合运算符的新实现。
超级运算符候选存储库306从图分析器304接收超级运算符候选,并存储定义哪些运算符310要被组合的有效数据流图结构。这些子图308中的节点是与来自原始数据流图102的运算符相同的运算符(例如,Op5 202)。
超级运算符代码生成器312从超级运算符候选存储库306接收候选超级运算符(即,组合的运算符表示308),并生成新的超级运算符,该新的超级运算符在计算上等效于用于创建超级运算符的个体运算符的子图。需要说明的是,新超级运算符的生成是系统性的,不需要程序员为组合的运算符提供新的实现来生成超级运算符。可以生成附加元数据并附加到新的超级运算符,以便调试和分析候选超级运算符308内的个体运算符Op4、Op5、Op6的计算。这使用户可以调试和分析超级运算符,如同这些超级运算符是数据流图102中的个体运算符一样。
超级运算符代码生成器312生成指示哪些运算符已被组合的新主机源代码。超级运算符代码生成器312还生成导航表314,该导航表314包括表示所有个体运算符的参数的参数列表,以及使加速器108能够从一个运算符的计算集导航到下一个计算集的附加元数据。由超级运算符代码生成器312新生成的超级运算符318被附加到加速器库运算符的列表中。在运行时间内,主机处理单元106的运行时系统选择超级运算符318以卸载到硬件加速器,而不是单独卸载个体运算符。
为了使超级运算符编译器系统地生成超级运算符,(基本)运算符以‘基本运算符中间表示(Intermediate Representation,IR)’格式表示,该格式有助于图分析器304确定运算符是否可以与其它运算符组合成超级运算符。
运算符二进制存储库(repo)316存储超级运算符的现有目标特定实现。例如,每个超级运算符都将其目标特定实现作为预编译的共享对象文件。针对与共享对象相同架构的任何其它应用都能够在编译期间包括和链接预编译的共享对象文件。存储库316还可以存储超级运算符的源级实现318及其包含的运算符。这支持灵活使用不同的编译器优化重新编译为二进制。
提供导航表314,以便使加速器108能够使用单个卸载的超级运算符来执行相当于多个运算符的计算。超级运算符使用封装的数据格式。导航表314用于数据,作为超级运算符的导航指南,以便它能够向每个运算符提供必要的参数,以及从一个运算符到下一个运算符的控制流。生成一个参数表,该参数表存储超级运算符内运算符的输入和输出参数的数据结构。数据结构内容由主机填充。除了所存储的输入和输出参数之外,导航表314还包含指示从当前运算符到要在超级运算符内调用的下一个运算符的控制流的元数据。在一些实施例中,该元数据包括运算符本身的函数指针。如图4所示,该信息提供给硬件加速器108。硬件加速器108接收包含报头代码402、运算符404、406和408以及导航表408的超级运算符,执行操作并按照指示返回任何得到的数据。运算符二进制存储库316将每个运算符的二进制存储在超级运算符中,并且超级运算符代码生成器312向主机处理器的运行时系统提供超级运算符报头代码加上运算符的二进制。
作为卸载过程的一部分,个体运算符(称为基本运算符)接收其计算所需的提供参数。为了促进超级运算符的自动生成,基本运算符的实现必须以中间表示(intermediaterepresentation,IR)表示。与IR相关联的是编译器,该编译器可以从基本运算符的IR中生成单独的主机和加速器硬件108代码。加速器硬件108代码包括在加速器硬件108上实现运算符或超级运算符的内核函数。编译器将根据导航表314信息定义基本运算符中的输入参数和数据,从而将超级运算符中所有基本运算符的主机和加速器硬件108代码组合在一起。IR使编译器可以生成可以由加速器硬件108执行的二进制运算符代码和由主机处理器执行的主机代码,以准备二进制运算符代码的参数,并在加速器硬件108上调用二进制运算符代码。这是为个体运算符分别完成的,并支持在主机中定义输入参数,并且支持根据基本运算符与超级运算符内的其它基本运算符组合的方式更新二进制运算符代码。在一些实施例中,IR由接口描述符组成,这些接口描述符指定设备侧基本运算符内核函数的输入和输出数据的属性。在一些实施例中,基本运算符内核函数的输入和输出数据被指定为函数参数,并且必须由内核函数中的符号名称(即,没有硬编码的存储器地址)引用。在一些实施例中,内核函数的主体不能有除了在接口描述符上指定的副作用之外的任何副作用。IR可以表示算术运算、变量访问和控制流的有限形式。它还支持调用外部函数(即未在IR中实现的函数),只要不违反基本运算符内核函数的接口属性即可。
在实施例中,超级运算符包含相当于多个运算符的计算。当超级运算符卸载到硬件加速器时,该超级运算符包括参数的导航表314。参数的导航表314包括每个个体原始运算符所需的参数和有助于超级运算符确定必须为其进行函数调用的运算符的顺序的附加元数据。
图5示出了导航表314的结构。导航表314具有超级运算符中的每个运算符的基地址502和子表504和506。超级运算符代码知道应该从哪个子表504或506检索数据。参考op1子表504,报头参数条目大小508描述每个子表504的总大小。利用该信息,超级运算符能够计算从一个子表504遍历到下一个子表506的偏移。
在计算加载在连续子表中的偏移之后,超级运算符能够读取子表中的条目,该条目指示要作为函数(例如,函数指针)调用的运算符。调用该函数指针,子表的参数条目作为函数参数输入。
主机处理单元106的传统编程会要求硬件加速器108在主机处理单元与硬件加速器108之间产生成本昂贵的通信,以便计算出应该执行的下一个计算集。导航表314放松了该约束,并使硬件加速器108能够自我获知它应该执行的后续计算任务,而不必与主机处理单元迭代地通信以获得下一个指令集。
将运算符卸载到硬件加速器的过程会产生大量的卸载开销,由于硬件加速器的硬件设计受限,所产生的卸载开销很难减少。超级运算符是单个运算符,它产生相当于许多个体运算符的计算,同时只产生一次卸载开销。超级运算符对多个运算符的函数调用在硬件加速器本身内,因此相比于与主机处理单元和硬件加速器之间的通信相关的开销,卸载开销要小得多。
实施例不限于任何特定的数据流框架。实施例也可以用于使用数据流编程技术的神经网络应用。可以实现实施例的神经网络框架包括TensorFlow、PyTorch等。此外,实施例可以应用于使用主机-设备卸载模型的硬件加速器的不同变体,例如GPU、DSP、FPGA等。
图6示出了编程模型600,以及如何通过在主机处理器上运行的代码(称为主机代码602)将运算符卸载到加速器硬件108。主机代码602表示根据运算符确定应该卸载的运算符的执行。超级内核604包括用于初始化硬件加速器108的prolog 606。prolog 606之后是第一传统内核调用608。在内核调用之间提供包括同步、导航表等的胶合代码610。通过减少在运行时间内主机处理单元需要与硬件加速器108通信的次数,缩短了数据流应用的端到端执行时间。
下文描述实施例提供的生成超级运算符的系统方法。首先,创建描述运算符特征的目标特定的函数对象。该目标特定的函数对象包括运算符类型、输入/输出形状、数据类型、超参数和目标架构。接着,描述具有唯一标识的占位符的输入/输出数据流。该输入/输出数据流具有在运行时估算的变量函数。这些占位符绑定到函数对象。该过程在每个运算符中迭代。
作为启发式的一部分,选择表示可以组合成超级运算符的运算符的所有函数对象的子集列表。启发式中的其它变量包括所发生的卸载开销时间的成本效益模型。一个标准是,所有函数对象必须属于相同的目标架构。调用一个合成API,该合成API接收函数对象列表,该函数对象列表将返回表示超级运算符的新函数对象。这将组合包含在每个个体函数对象中的所有元数据信息,这在上文关于导航表408进行了描述。
然后,新返回的函数对象可以作为函数调用,并卸载到设备,并且每个超级运算符会产生一次主机-设备运行时开销。
图7是运行执行本文公开的方法的软件编译器的计算系统的框图。在一些方面,函数可以跨越多个地理位置在多个计算系统中执行。计算系统700可以提供应用开发商用于开发实施例提供的软件的计算硬件的示例。该计算硬件的示例可以包括托管和运行超级运算符编译器104和运行时系统106。它还可以用于执行实施例提供的软件。计算系统700可以充当主机系统,以将超级运算符调度到加速器硬件108。加速器硬件108通过多个模块耦合到主机处理单元700。该加速器硬件108可以作为核心耦合在与计算系统相同的晶片上。它可以是多芯片封装集成电路(integrated circuit,IC)内的单独晶片。它可以是与计算系统在同一PCB上的单独IC。它可以是计算机机箱内的单独模块或卡。它也可以单独安装,靠近计算机系统,或远离计算机系统。加速器硬件108可以通过任何数量的模块(包括内部总线)耦合到IC或多芯片模块、I/O接口760,例如SATA接口、USB接口或雷电接口。它还可以通过网络接口750使用有线或无线技术耦合。加速器硬件108可以使用多个模块耦合到主计算机系统700。
特定实施例可以使用所示出的所有组件或仅使用所述组件的子集,且计算系统之间的集成程度可能不同。此外,计算系统可以包含组件的多个实例,例如多个处理单元、处理器、存储器、发射器、接收器等。计算系统700通常包括中央处理单元(centralprocessing unit,CPU)710、总线和存储器720,并且可选地还可以包括大容量存储设备730、视频适配器740和I/O接口760(各自以虚线示出以指示它们是可选的)。计算系统还可以包括一个或多个网络接口750,用于将计算系统连接到通信网络755。
CPU可以包括任何类型的电子数据处理器,并且可以包括一个或多个核心或处理元件。存储器可以包括任何类型的非瞬时性系统存储器,例如静态随机存取存储器(staticrandom access memory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、只读存储器(read-only memory,ROM)或其组合。在一个实施例中,存储器可以包括在开机时使用的ROM以及在执行程序时使用的存储程序和数据的DRAM。总线可以是任何类型的几种总线架构中的一种或多种,包括存储器总线或存储器控制器、外设总线或视频总线。
大容量存储器可以包括用于存储数据、程序和其它信息并使数据、程序和其它信息能够通过总线访问的任何类型的非瞬时性存储设备。例如,大容量存储器可以包括固态硬盘、硬盘驱动器、磁盘驱动器或光盘驱动器中的一种或多种。
视频适配器740和I/O接口760提供可选接口以将外部输入和输出设备耦合到处理单元。输入和输出设备的示例包括与视频适配器740耦合的显示器770和与I/O接口760耦合的I/O设备780,例如触摸屏。其它设备可以耦合到处理单元,并且可以利用更多或更少的接口。例如,可使用如通用串行总线(universal serial bus,USB)等串行接口(未示出)为外部设备提供接口。或者,计算系统可以依靠一个或多个网络接口连接到网络上可用的一个或多个大容量存储器、一个或多个视频适配器和一个或多个I/O接口。
除非另有定义,否则本文所用的所有技术和/或科学术语都具有与本发明普通技术人员公知的含义相同的含义。
通过上述实施例的描述,本发明可以仅使用硬件实现,也可以使用软件和必要的通用硬件平台实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现。软件产品可以存储在非易失性或非瞬时性存储介质中,非易失性或非瞬时性存储介质可以是光盘只读存储器(compact disk read-only memory,CD-ROM)、USB、闪存盘或移动硬盘。软件产品包括许多指令,这些指令使计算机设备(个人计算机、服务器或网络设备)能够执行本发明的实施例中提供的方法。例如,这种执行可以对应于本文所述的逻辑操作的模拟。软件产品可以另外或可替换地包括使计算机设备能够执行本发明的实施例提供的用于配置或编程数字逻辑装置的操作的指令的数量。
尽管已经参考本发明的特定特征和实施例描述了本发明,但是明显可以在不脱离本发明的情况下制定本发明的各种修改和组合。说明书和附图因此仅被视为所附权利要求书所定义的本发明的说明并且考虑落于本说明书的范围内的任何和所有修改、变体、组合或均等物。

Claims (20)

1.一种由软件编译器执行的方法,其特征在于,所述方法包括:
分析表示数据流应用的运算符之间的数据依赖关系的数据流图,以识别所述运算符的多个候选组;
根据给定硬件加速器的特征和所述多个候选组中给定候选组的运算符,确定所述给定候选组的所述运算符是否要被组合;
在确定所述给定候选组的所述运算符要被组合之后:
检索与所述给定候选组的所述运算符对应的可执行二进制代码段;
生成二进制代码单元,所述二进制代码单元包括所述可执行二进制代码段和表示所述可执行二进制代码段之中执行控制流的元数据;
将所述代码单元调度到所述给定硬件加速器以执行所述代码单元。
2.根据权利要求1所述的方法,其特征在于,确定所述给定候选组的所述运算符是否要被分组在一起包括:根据所述给定候选组的运算符是否被限制为在多个硬件加速器中的不同硬件加速器上执行来确定所述运算符是否应该被组合。
3.根据权利要求1或2所述的方法,其特征在于,确定所述给定候选组的所述运算符是否要被分组在一起包括:根据所述给定硬件加速器的可用资源确定所述运算符是否应该被组合。
4.根据权利要求1至3中任一项所述的方法,其特征在于,确定所述给定候选组的所述运算符是否要被分组在一起包括:根据所述给定候选组的所述运算符的数量确定所述运算符是否应该被组合。
5.根据权利要求1至4中任一项所述的方法,其特征在于,确定所述给定候选组的所述运算符是否要被分组在一起包括:根据与执行所述给定候选组的所有所述运算符相关联的计算运行时间确定所述运算符是否应该被组合。
6.根据权利要求1至5中任一项所述的方法,其特征在于,生成所述二进制代码单元包括:生成表示所述给定候选组的每个运算符的输入参数和输出参数的元数据。
7.根据权利要求1至6中任一项所述的方法,其特征在于,生成所述二进制代码单元包括生成表示多个导航表条目的元数据,其中,所述多个导航表条目中的给定条目包括与所述给定条目的大小相关联的字段和指向所述多个可执行二进制代码段中的给定可执行二进制代码段的指针。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述二进制码单元包括胶水代码。
9.一种计算机系统,其特征在于,包括:
处理器;
硬件加速器;
用于存储指令的非瞬时性存储器,当所述处理器执行所述指令时,使所述处理器:
执行二进制代码单元,所述二进制代码单元包括可执行二进制代码段和表示所述可执行二进制代码段之中执行控制流的元数据,所述可执行二进制代码段对应于给定候选组的运算符,所述给定候选组的所述运算符通过如下方式选择:分析表示数据流应用的运算符之间的数据依赖关系的数据流图,以识别所述运算符的多个候选组,并根据所述硬件加速器的特征和所述多个候选组中的所述给定候选组的所述运算符,确定所述给定候选组的所述运算符要被组合;
将所述代码单元调度到所述硬件加速器以执行所述代码单元。
10.根据权利要求9所述的计算机系统,其特征在于,确定所述给定候选组的所述运算符要被分组在一起包括:根据所述硬件加速器的约束确定所述运算符被组合。
11.根据权利要求9或10所述的计算机系统,其特征在于,确定所述给定候选组的所述运算符要被分组在一起包括:根据所述硬件加速器的可用资源确定所述运算符应该被组合。
12.根据权利要求9至11中任一项所述的计算机系统,其特征在于,确定所述给定候选组的所述运算符要被分组在一起包括:根据所述给定候选组的所述运算符的数量确定所述运算符应该被组合。
13.根据权利要求9至12中任一项所述的计算机系统,其特征在于,确定所述给定候选组的所述运算符要被分组在一起包括:根据与执行所述给定候选组的所有所述运算符相关联的计算运行时间确定所述运算符应该被组合。
14.根据权利要求9至13中任一项所述的计算机系统,其特征在于,生成所述二进制代码单元包括:生成表示所述给定候选组的每个运算符的输入参数和输出参数的元数据。
15.根据权利要求9至14中任一项所述的计算机系统,其特征在于,生成所述二进制代码单元包括生成表示多个导航表条目的元数据,其中,所述多个导航表条目中的给定条目包括与所述给定条目的大小相关联的字段和指向所述多个可执行二进制代码段中的给定可执行二进制代码段的指针。
16.根据权利要求9至15中任一项所述的计算机系统,其特征在于,所述二进制码单元包括胶水代码。
17.一种非瞬时性存储器,其特征在于,其中存储有指令,当处理器执行所述指令时,使所述处理器:
执行二进制代码单元,所述二进制代码单元包括可执行二进制代码段和表示所述可执行二进制代码段之中执行控制流的元数据,所述可执行二进制代码段对应于给定候选组的运算符,所述给定候选组的所述运算符通过如下方式选择:分析表示数据流应用的运算符之间的数据依赖关系的数据流图,以识别所述运算符的多个候选组,并根据硬件加速器的特征和所述多个候选组中的所述给定候选组的所述运算符,确定所述给定候选组的所述运算符要被组合;
将所述代码单元调度到所述硬件加速器以执行所述代码单元。
18.根据权利要求17所述的非瞬时性存储器,其特征在于,确定所述给定候选组的所述运算符要被分组在一起包括:根据所述硬件加速器的约束确定所述运算符被组合。
19.根据权利要求17或18所述的非瞬时性存储器,其特征在于,确定所述给定候选组的所述运算符要被分组在一起包括:根据与执行所述给定候选组的所有所述运算符相关联的计算运行时间确定所述运算符应该被组合。
20.根据权利要求17至19中任一项所述的非瞬时性存储器,其特征在于,确定所述给定候选组的所述运算符要被分组在一起包括:根据与执行所述给定候选组的所有所述运算符相关联的计算运行时间确定所述运算符应该被组合。
CN202080052164.2A 2019-09-13 2020-09-14 用于实现数据流ai应用的自主加速的方法和装置 Pending CN114127681A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/570,822 US11144290B2 (en) 2019-09-13 2019-09-13 Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US16/570,822 2019-09-13
PCT/CN2020/114944 WO2021047662A1 (en) 2019-09-13 2020-09-14 Method and apparatus for enabling autonomous acceleration of dataflow ai applications

Publications (1)

Publication Number Publication Date
CN114127681A true CN114127681A (zh) 2022-03-01

Family

ID=74866558

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080052164.2A Pending CN114127681A (zh) 2019-09-13 2020-09-14 用于实现数据流ai应用的自主加速的方法和装置

Country Status (4)

Country Link
US (2) US11144290B2 (zh)
EP (1) EP3991027A4 (zh)
CN (1) CN114127681A (zh)
WO (1) WO2021047662A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021137669A1 (ko) * 2019-12-30 2021-07-08 매니코어소프트주식회사 딥러닝을 위한 가속기용 프로그램 생성 방법

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100088490A1 (en) * 2008-10-02 2010-04-08 Nec Laboratories America, Inc. Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator
US20120215934A1 (en) * 2011-02-17 2012-08-23 International Business Machines Corporation Estimating load shed data in streaming database applications
CN102667761A (zh) * 2009-06-19 2012-09-12 布雷克公司 可扩展的集群数据库
CN102902595A (zh) * 2011-10-21 2013-01-30 微软公司 注入组合查询的单子评估
CN104011679A (zh) * 2011-12-01 2014-08-27 超威半导体公司 异构并行处理平台的软件库
US20150046428A1 (en) * 2013-08-07 2015-02-12 International Business Machines Corporation Scalable acceleration of database query operations
US20150281966A1 (en) * 2014-03-28 2015-10-01 Qualcomm Incorporated Provisioning credentials in wireless communications
CN105144725A (zh) * 2012-12-21 2015-12-09 阿卡麦科技公司 可伸缩的内容交付网络请求处理机制
CN106415496A (zh) * 2014-05-30 2017-02-15 苹果公司 统一中间表示
US20180049369A1 (en) * 2016-08-19 2018-02-22 Tribine Industries Llc Electronics For an Articulated Harvesting Combine
US10028442B1 (en) * 2013-05-31 2018-07-24 Lon Owen Crosby Self-propelled, close-coupled, autonomous grain cart

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004099896A2 (en) * 2003-05-12 2004-11-18 An Mo Jeong Method and system of developing a software with utilizing extented metadata of component under component-based development environment
US7627671B1 (en) * 2004-05-22 2009-12-01 ClearApp, Inc. Monitoring and performance management of component-based applications
US7343482B2 (en) * 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
US20060123401A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system
US8108871B2 (en) * 2005-01-13 2012-01-31 Hewlett-Packard Development Company, L.P. Controlling computer resource utilization
US20100005077A1 (en) * 2008-07-07 2010-01-07 Kickfire, Inc. Methods and systems for generating query plans that are compatible for execution in hardware
US8161483B2 (en) * 2008-04-24 2012-04-17 International Business Machines Corporation Configuring a parallel computer based on an interleave rate of an application containing serial and parallel segments
US8510744B2 (en) * 2009-02-24 2013-08-13 Siemens Product Lifecycle Management Software Inc. Using resource defining attributes to enhance thread scheduling in processors
US8490072B2 (en) 2009-06-23 2013-07-16 International Business Machines Corporation Partitioning operator flow graphs
US20120096445A1 (en) * 2010-10-18 2012-04-19 Nokia Corporation Method and apparatus for providing portability of partially accelerated signal processing applications
WO2012062595A1 (de) * 2010-11-11 2012-05-18 Siemens Aktiengesellschaft Verfahren und vorrichtung zum bewerten von software-parallelisierung
GB2511672B (en) * 2011-11-04 2020-04-15 Univ Waseda Processor system and accelerator
US9298438B2 (en) * 2012-06-20 2016-03-29 Microsoft Technology Licensing, Llc Profiling application code to identify code portions for FPGA implementation
US9170794B2 (en) * 2012-08-28 2015-10-27 International Business Machines Corporation Automatic exploitation of data parallelism in streaming applications
US20140068581A1 (en) * 2012-08-30 2014-03-06 International Business Machines Corporation Optimized division of work among processors in a heterogeneous processing system
US10102039B2 (en) * 2013-05-17 2018-10-16 Entit Software Llc Converting a hybrid flow
US9632761B2 (en) * 2014-01-13 2017-04-25 Red Hat, Inc. Distribute workload of an application to a graphics processing unit
US9442706B2 (en) * 2014-05-30 2016-09-13 Apple Inc. Combining compute tasks for a graphics processing unit
US10318261B2 (en) * 2014-11-24 2019-06-11 Mentor Graphics Corporation Execution of complex recursive algorithms
US9785413B2 (en) * 2015-03-06 2017-10-10 Intel Corporation Methods and apparatus to eliminate partial-redundant vector loads
US9792098B2 (en) * 2015-03-25 2017-10-17 International Business Machines Corporation Unaligned instruction relocation
US11423311B2 (en) 2015-06-04 2022-08-23 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
US10332230B2 (en) * 2015-08-31 2019-06-25 Qualcomm Incorporated Characterizing GPU workloads and power management using command stream hinting
US11106467B2 (en) * 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
US10394991B2 (en) * 2016-10-06 2019-08-27 Altera Corporation Methods and apparatus for dynamically configuring soft processors on an integrated circuit
CN108062239B (zh) * 2016-11-09 2020-06-16 华为技术有限公司 一种加速器加载方法、系统和加速器加载装置
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10209764B2 (en) * 2016-12-20 2019-02-19 Intel Corporation Apparatus and method for improving power-performance using a software analysis routine
JP6988040B2 (ja) * 2016-12-31 2022-01-05 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置
US10656964B2 (en) * 2017-05-16 2020-05-19 Oracle International Corporation Dynamic parallelization of a calculation process
US10372497B1 (en) * 2017-09-05 2019-08-06 Parallels International Gmbh Offloading GPU computations for computers and virtual machines
WO2019051113A1 (en) * 2017-09-06 2019-03-14 BigML, Inc. PREDICTION CHARACTERIZATION FOR AUTOMATIC LEARNING MODELS OF BLACK BOX
US10445118B2 (en) * 2017-09-22 2019-10-15 Intel Corporation Methods and apparatus to facilitate field-programmable gate array support during runtime execution of computer readable instructions
US10740659B2 (en) 2017-12-14 2020-08-11 International Business Machines Corporation Fusing sparse kernels to approximate a full kernel of a convolutional neural network
US10754630B2 (en) * 2018-06-06 2020-08-25 International Business Machines Corporation Build-time code section-specific compiler selection
US10996860B2 (en) * 2018-10-31 2021-05-04 Intel Corporation Method to improve mixed workload performance on storage devices that use cached operations
US10733016B1 (en) * 2019-04-26 2020-08-04 Google Llc Optimizing hardware FIFO instructions
US20190317880A1 (en) * 2019-06-27 2019-10-17 Intel Corporation Methods and apparatus to improve runtime performance of software executing on a heterogeneous system

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100088490A1 (en) * 2008-10-02 2010-04-08 Nec Laboratories America, Inc. Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator
CN102667761A (zh) * 2009-06-19 2012-09-12 布雷克公司 可扩展的集群数据库
US20120215934A1 (en) * 2011-02-17 2012-08-23 International Business Machines Corporation Estimating load shed data in streaming database applications
CN102902595A (zh) * 2011-10-21 2013-01-30 微软公司 注入组合查询的单子评估
CN104011679A (zh) * 2011-12-01 2014-08-27 超威半导体公司 异构并行处理平台的软件库
CN105144725A (zh) * 2012-12-21 2015-12-09 阿卡麦科技公司 可伸缩的内容交付网络请求处理机制
US10028442B1 (en) * 2013-05-31 2018-07-24 Lon Owen Crosby Self-propelled, close-coupled, autonomous grain cart
US20150046428A1 (en) * 2013-08-07 2015-02-12 International Business Machines Corporation Scalable acceleration of database query operations
US20150281966A1 (en) * 2014-03-28 2015-10-01 Qualcomm Incorporated Provisioning credentials in wireless communications
CN106415496A (zh) * 2014-05-30 2017-02-15 苹果公司 统一中间表示
US20180049369A1 (en) * 2016-08-19 2018-02-22 Tribine Industries Llc Electronics For an Articulated Harvesting Combine

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WANG, F等: ""A novel knowledge database construction method for operation guidance expert system based on HAZOP analysis and accident analysis"", 《JOURNAL OF LOSS PREVENTION IN THE PROCESS INDUSTRIES》, 19 December 2012 (2012-12-19) *
王金保: ""基于GPU的IPSec VPN加速技术研究"", 《中国优秀博硕士学位论文全文数据库 信息科技辑》, 15 June 2014 (2014-06-15) *

Also Published As

Publication number Publication date
US20210081184A1 (en) 2021-03-18
WO2021047662A1 (en) 2021-03-18
US11573777B2 (en) 2023-02-07
EP3991027A1 (en) 2022-05-04
US11144290B2 (en) 2021-10-12
EP3991027A4 (en) 2022-08-24
US20210182041A1 (en) 2021-06-17

Similar Documents

Publication Publication Date Title
US11243816B2 (en) Program execution on heterogeneous platform
TWI806550B (zh) 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體
Vocke et al. Extending halide to improve software development for imaging dsps
Wozniak et al. Language features for scalable distributed-memory dataflow computing
Rasch et al. dOCAL: high-level distributed programming with OpenCL and CUDA
CN114327405A (zh) 数据处理方法、装置、设备及存储介质
Ansel Autotuning programs with algorithmic choice
Paudel et al. Using the cowichan problems to investigate the programmability of x10 programming system
US8041551B1 (en) Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
Aumage et al. Combining both a component model and a task-based model for hpc applications: a feasibility study on gysela
KR102161055B1 (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
KR20160098794A (ko) 디바이스 프로그램 구조 모델링 기반 골격코드 생성 장치 및 방법
US8856760B2 (en) Streaming programming generator
CN114174983B (zh) 用于高级构造的优化的自动验证的方法和系统
CN114925591A (zh) 基于多面体模型建模的自动并行策略搜索方法及相关设备
Benoit et al. Using an intermediate representation to map workloads on heterogeneous parallel systems
Wu et al. Accelerating OpenVX through Halide and MLIR
Santana et al. ARTful: A specification for user-defined schedulers targeting multiple HPC runtime systems
Brandner A platform-agnostic model and benchmark suite for serverless workflows
Wu et al. Task Mapping and Scheduling on RISC-V MIMD Processor With Vector Accelerator Using Model-Based Parallelization
Granell Escalfet Accelerating Halide on an FPGA
CN114169525A (zh) 推理框架的调用方法和调用装置
Michalainas Efficient probability distribution fitting in High Energy Physics: optimizing CERN’s RooFit toolkit for modern computer hardware
Zhao et al. Accelerating OpenVX Application Kernels Using Halide Scheduling

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