CN102081544B - 应用程序生成系统和方法 - Google Patents
应用程序生成系统和方法 Download PDFInfo
- Publication number
- CN102081544B CN102081544B CN201010543253.5A CN201010543253A CN102081544B CN 102081544 B CN102081544 B CN 102081544B CN 201010543253 A CN201010543253 A CN 201010543253A CN 102081544 B CN102081544 B CN 102081544B
- Authority
- CN
- China
- Prior art keywords
- execution pattern
- optimization table
- execution
- hardware resource
- list
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种应用程序生成系统和方法。通过执行相对于源代码的库组件生成优化表以及通过使用所产生的优化表自动地分配计算资源,以及为混合系统(其中,资源通过网络相互连接起来)执行网络嵌入,通过计算机处理,生成优化的可执行代码。执行模式由数据并行化(并行度1,2,3,…,n)、加速器以及其使用(图形处理单元),以及其组合组成。在通过计算机处理使用所产生的优化表自动地分配计算资源的步骤中,假设要执行的处理通过流图来表示,对于流图上的所有用户定义的操作符(UDOP),执行从优化表中临时选择具有最短的流水线间距的执行模式的步骤,删除计算资源的约束的步骤,以及网络嵌入处理的步骤。
Description
技术领域
本发明涉及用于生成在计算机上操作的应用程序的技术,具体而言,涉及用于生成在与网络连接的混合系统上操作的应用程序的系统、方法,以及程序。
背景技术
另外,还制造出了由所谓的混合系统构成的并行高速计算机,在所述混合系统中,具有不同的体系结构的处理器通过多个网络或总线连接在一起。
虽然如上所述计算机硬件的发展是显著的,在开发与混合系统兼容的应用程序的过程中产生了困难。
然而,在混合系统中,有各种处理器、加速器功能、硬件体系结构、网络拓扑等等。因此,考虑到相异性,人工开发应用程序极为困难。例如,前述的Roadrunner具有两种类型的100,000个核。考虑到这种复杂的计算机资源,只有非常有限的专家能够生成应用程序代码和资源映射。
日本未经审查的专利出版物No.Hei 8-106444公开了包括多个CPU的信息处理器系统,在将CPU替换为不同类型的CPU的情况下,该系统自动地生成并加载与CPU兼容的负载模块。
日本未经审查的专利出版物No.2006-338660公开了一种通过提供下列步骤支持并行/分布式应用程序的开发的方法:在设计阶段提供用于表示连接性图的元素以及元素之间的连接性的脚本语言;在实现阶段提供用于实现应用程序功能的预定义的模块;在实现阶段提供用于定义模块执行类型的预定义的执行程序;在实现阶段提供用于在多个计算设备之间分布应用程序的预定义的进程实例;以及在测试阶段提供用于监视和测试应用程序的预定义的抽象层次。
日本未经审查的专利出版物No.2006-505055公开了用于编译根据高级语言标准编写的计算机代码以生成包含用于可重新配置的处理器的硬件逻辑的统一的可执行元素,用于常规处理器(指令处理器)的指令,以及用于管理在混合硬件平台上的执行的关联支持代码的系统和方法。
日本未经审查的专利出版物No.2007-328415公开了一种异构型多处理器系统,该系统包括具有相互不同的指令集和结构的多个处理器元件,用于基于多个任务之间的预设的依存关系提取可执行的任务;基于所提取的任务之间的依存关系,将多个第一处理器分配到通用处理器组;将第二处理器分配到加速器组;基于每一个任务的预设优先级值,确定要从所提取的任务分配的任务;将由第一处理器执行确定的任务的执行成本与由第二处理器执行该任务的执行成本进行比较;以及将任务分配到通用处理器组和加速器组中的作为成本比较的结果被判断为执行成本比较低的那一个。
日本未经审查的专利出版物No.2007-328416公开了一种异构型多处理器系统,其中,由编译器自动地提取具有并行性的任务,从作为处理目标的输入程序中提取要由专用处理器有效地处理的一部分,并估计处理时间,从而,根据PU特性来安排任务,由此进行有效地并行地操作多个PU的调度。
虽然前面引用的传统技术文件公开了为混合硬件平台编译源代码的技术,但是,这些文件没有公开生成关于要使用的资源或处理速度而被优化的可执行代码的技术。
现有技术文件
专利文件
[专利文件1]
日本未经审查的专利出版物No.Hei 8-106444
[专利文件2]
日本未经审查的专利出版物No.2006-338660
[专利文件3]
日本未经审查的专利出版物No.2007-328415
[专利文件4]
日本未经审查的专利出版物No.2007-328416
发明内容
本发明解决的问题
因此,本发明的目的是提供能够生成可执行代码的代码生成技术,所述可执行代码关于由多个计算机系统(可以通过网络相互连接)组成的混合系统上的资源的使用和执行速度尽可能地优化。
解决问题的手段
本发明被提供来实现上面的目的,因此,本发明通过执行根据源代码的库组件生成优化表以及通过使用所产生的优化表自动地分配计算资源的处理,以及通过计算机处理为混合系统(其中资源通过网络相互连接)执行网络嵌入,生成优化的可执行代码。
在生成优化表的处理中,测量资源和流水线间距(pipeline pitch)(即,没有优化的情况和针对每一个库组件应用优化的情况所需的流水线处理的一级处理时间)并且它们被注册为执行模式。对于每一个库组件,可以有多个执行模式。虽然注册通过增加资源来改善流水线间距的执行模式,但是优选地不注册不通过增加资源来改善流水线间距的执行模式。
注意,以诸如C、C++、C#或之类的任意程序语言编写并执行某一共同的功能的一组程序被称为库组件。例如,在某些情况下,库组件相当于中的功能块,但是,在其他情况下,当以要实现的算法为单位查看时,由多个功能块构成的组合被视为库组件。
另一方面,执行模式由数据并行化(并行度1,2,3,---,n)、加速器以及其使用(图形处理单元),以及其组合组成。
在通过计算机处理使用所产生的优化表自动地分配计算资源的步骤中,假设要执行的处理通过流图(stream graph)来表示,针对流图上的所有用户定义的操作符(UDOP),执行为流水线处理的一级处理时间从优化表中临时选择具有最短的流水线间距的执行模式(具体而言,流图格式源代码上的所有组件)的步骤,删除计算资源的约束的步骤,以及网络嵌入处理的步骤。
在上文中,UDOP是像例如矩阵的乘积和计算之类的抽象处理的单元。
此外,删除计算资源的约束的步骤包括下列步骤:以升序在流图上列出每一个库组件的流水线间距;以及从列表的顶部,参考优化表,将执行模式替换为其中消耗较少计算资源的执行模式。
执行网络嵌入的步骤包括下列步骤:根据通信大小,按降序在流图上安排边缘,以生成边缘列表;以及,优选地将边缘列表上的共享头部的两个UDOP分配到相同硬件资源。
本发明的优点
根据本发明,能够通过参考基于库组件所生成的优化表,生成关于混合系统上的资源的使用和执行速度尽可能地优化的可执行代码。
附图说明
图1是示出用于实施本发明的硬件结构的概图的图示;
图2是实施本发明的功能框图;
图3是示出生成优化表的处理的流程图的图示;
图4是示出生成执行模式的示例的图示;
图5是示出数据相关的矢量的示例的图示,该矢量表示拆分数组用于并行处理的条件;
图6是示出优化表的示例的图示;
图7是示出网络嵌入处理的概图的流程图的图示;
图8是示出将计算资源分配给UDOP的处理的流程图的图示;
图9是示出流图和可用资源的示例的图示;
图10是示出在将计算资源分配给UDOP之后所需的资源的示例的图示;
图11是示出分配改变处理的示例的图示;
图12是示出群集处理的流程图的图示;
图13是示出由执行模式扩大的流图的示例的图示;
图14是示出将内核分配给节点的示例的图示;
图15是示出群集分配处理的流程图的图示;
图16是示出硬件配置的示例的图示;
图17是示出路由表和网络容量表的示例的图示;以及
图18是示出群集之间的连接的示例的图示。
具体实施方式
下面,将根据附图详细描述本发明的优选实施例。除非另作说明,在各个附图中,使用相同的附图标记来表示相同的元件。应该理解,下面的描述只是本发明的一个实施例,并不打算将本发明限制到优选实施例中所描述的内容。
参考图1,示出了实施本发明的硬件结构的框图。此结构包含芯片级别的混合节点102、常规节点104、各自都具有CPU和加速器的混合节点106和108。
芯片级别的混合节点102具有这样的结构:总线102a连接到包括多种类型的CPU的混合CPU 102b、主存储器(RAM)102c、硬盘驱动器(HDD)102d,以及网络接口卡(NIC)102e。
常规节点104具有这样的结构:总线104a连接到由多个相同的核组成的多核CPU 104b、主存储器104c、硬盘驱动器104d,以及网络接口卡(NIC)104e。
混合节点106具有这样的结构:总线106a连接到CPU 106b、加速器106c(例如图形处理单元)、主存储器106d、硬盘驱动器106e,以及网络接口卡106f。
混合节点108与混合节点106具有相同结构,其中,总线108a连接到CPU 108b、加速器108c(例如图形处理单元)、主存储器108d、硬盘驱动器108e,以及网络接口卡108f。
芯片级别的混合节点102和常规节点104通过相应的网络接口卡,使用InfiniBand彼此连接在一起,InfiniBand是服务器/群集高速I/O总线体系结构和互连技术。
虽然未示出,但是,节点102、104、106,以及108各自都具有诸如键盘、鼠标、显示器等等供操作员或用户用来进行操作的接口单元。
图1所示出的结构在节点的数量和类型方面只是说明性的,并可以由更多节点或不同类型的节点组成。此外,节点之间的连接模式可以是诸如LAN、WAN、通过因特网的VPN等等之类的提供所需的通信速度的任意结构。
参考图2,示出了与本发明的结构有关的功能块。这里所示出的功能块可以存储在图1所示出的节点102、104、106,以及108的硬盘驱动器中。可另选地,可以将功能块加载到主存储器中。
此外,用户还能够通过操纵节点102、104、106,以及108之一上的键盘或鼠标,来执行根据本发明的处理的操作。
在图2中,库组件202相当于功能块作为示例,在某些情况下,当以要实现的算法为单位查看时,多个功能块的组合被视为一个库组件。然而,库组件202不限于功能块,以诸如C、C++、C#或之类的任意程序语言编写并执行某一共同功能的一组程序在这里被视为库组件。
库组件202优选地由专家程序员预先生成,并优选地存储在除节点102、104、106,以及108以外的另一计算机系统的硬盘驱动器中。
优化表生成模块204也优选地存储在除节点102、104、106,以及108以外的另一计算机系统的硬盘驱动器中,通过使用编译器206并访问执行环境208,参考库组件202生成优化表210。所生成的优化表210也优选地存储在除节点102、104、106,以及108以外的另一计算机系统的硬盘驱动器或主存储器中。稍后将详细地描述优化表210的生成处理。优化表生成模块204能够以诸如C、C++、C#、等等的已知适当的任意编程语言编写。
流图格式源代码212是以流格式存储的、用户需要在图1所示出的混合系统中执行的程序的源代码。典型的格式由功能框图来表示。流图格式源代码212优选地存储在除节点102、104、106,以及108以外的另一计算机系统的硬盘驱动器中。
编译器206具有根据节点配置群集(cluster)计算资源的功能和将逻辑节点分配到物理节点的网络并确定节点之间的通信方法的功能,以及为节点102、104、106,以及108的各种环境编译代码以生成可执行代码的功能。稍后将更详细地描述编译器206的功能。
执行环境208是总体上示出图1所示的混合硬件资源的框图。
下面参考图3的流程图描述由优化表生成模块204执行的优化表生成处理。
在图3中,在步骤302中,优化表生成模块204选择库组件202中的UDOP,即,某一抽象处理的单元。这里将描述库组件202和UDOP之间的关系。库组件202是一组用于执行某一共同功能的程序,像例如快速傅里叶变换(FFT)模块、逐次超松弛(SOR)方法模块,以及用于查找正交矩阵的雅克比方法模块。
因此,UDOP是例如抽象处理,像例如由优化表生成模块204所选的矩阵的乘积和计算,并用在例如雅克比方法模块中。
在步骤304中,获取用于执行所选UDOP的内核定义。这里,内核定义是取决于与此实施例中的UDOP相对应的硬件体系结构的具体代码。
在步骤306中,优化表生成模块204访问执行环境208,以获取要执行的硬件配置。
在步骤308中,优化表生成模块204初始化要使用的体系结构的组合和要使用的资源的数量的设置,即,Set{(Arch,R)}到Set{(default,1)}。
接下来,在步骤310中,判断所有资源的尝试是否完成。如果完成,结束处理。否则,在步骤312中,优化表生成模块204为当前资源选择可执行的内核。
在步骤314中,优化表生成模块204生成执行模式。下面将描述执行模式。
转动循环(Rolling loop):A+A+A...A=>loop(n,A)
这里,A+A+A...A是对A的串行处理,而loop(n,A)表示将A转动n次的循环。
展开循环(Unrolling loop):loop(n,A)=>A+A+A...A
串行循环(Series Rolling):split_join(A,A...A)=>loop(n,A)
这意味着从并行A,A...A变为loop(n,A)。
并行循环(Parallel unrolling loop):loop(n,A)=>split_joing(A,A,A...A)
这意味着从loop(n,A)变为并行A,A...A。
循环拆分(Loop splitting):loop(n,A)=>loop(x,A)+loop(n-x,A)
并行循环拆分(Parallel Loop splitting):loop(n,A)=>split_join(loop(x,A),loop(n-x,A))
循环融合(Loop fusion):loop(n,A)+loop(n,B)=>loop(n,A+B)
串行循环融合(Series Loop fusion):split_join(loop(n,A),loop(n,B))=>loop(n,A+B)
循环分布(Loop distribution):loop(n,A+B)=>loop(n,A)+loop(n,B)
并行循环分布(Parallel Loop distribution):loop(n,A+B)=>split_join(loop(n,A),loop(n,B))
节点合并(Node merging):A+B=>{A,B}
节点拆分(Node splitting):{A,B}=>A+B
循环替换(Loop replacement):loop(n,A)=>X/*X is lower cost*/
节点替换(Node replacement):A=>X/*X is lower cost*/
在步骤314中,取决于内核,以上全部执行模式并不总是可生成的。因此,在步骤314中,只根据内核生成可生成的执行模式。
在步骤316中,由编译器206编译所生成的执行模式,由执行环境208中的选定资源执行所产生的可执行代码,并测量流水线间距(时间)。
在步骤318中,优化表生成模块204在数据库(优化表)210中注册所选UDOP、所选内核、执行模式、测量的流水线间距,以及Set{Arch,R)}。
在步骤320中,改变要使用的资源的数量或要使用的体系结构的组合。例如,对要使用的节点组合(参见图1)或要使用的CPU和加速器的组合进行改变。
接下来,返回到步骤310,判断所有资源的尝试是否完成。如果是,结束处理。否则,在步骤312中,优化表生成模块204为在步骤320中选定的资源选择可执行的内核。
参考图4,示出了针对具有大数组float[6000][6000]的库组件A生成执行模式的示例的图形,聚焦于下列两个内核
kernel_x86(float[1000][1000]in,float[1000][1000]out){
}
and
kernel_cuda(float[3000][3000]in,float[3000][3000]out){
}
在图4中,执行模式1是通过loop(36,kernel_x86)执行kernel_x86 36次。
在执行模式2中,在处理被分配给两个x86系列CPU以实现并行执行之前,循环通过split_join(loop(18,kernel_x86),loop(18,kernel_x86))被分成两个循环loop(18,kernel_x86),此后,结果被连接。
在执行模式3中,在处理被分配给cude系列CPU和x86系列CPU 以实现并行执行之前,循环通过split_join(loop(2,kernel_cuda),loop(18,kernel_x86))被分成loop(2,kernel_cuda)和loop(18,kernel_x86),此后,结果被连接。
由于可以有各种执行模式,因此,当执行所有可能的组合时,可能会发生组合爆炸。因此,在此实施例中,在允许的时间的范围内,执行可能的执行模式,无需执行所有可能的组合。
参考图5,示出了拆分图4所示出的内核中的数组float[6000][6000]的条件的图形。例如,在通过使用大数组求解诸如拉普拉斯方程之类的偏微分方程的边界值问题的情况下,计算出的数组的元素具有彼此依存关系,因此,如果计算被并行化,在拆分行时有相关(dependence)关系。
因此,根据数组计算的内容,定义并使用用于指定拆分的条件的诸如d{in(a,b,c)}之类的数据相关矢量(data-dependent vector)。d{in(a,b,c)}中的字符a、b,c都取0或1值:a=1表示第一维的相关性,换言之,数组在水平方向是块-可拆分的;b=1表示第二维的相关性,换言之,数组在垂直方向上是块-可拆分的;而c=1表示时间轴的相关性,换言之,输出端的数组相对于输入端的数组的相关性。
图5示出了那些相关性的示例。另外,d{in(0,0,0)}表示数组在任意方向是可拆分的。取决于计算的性质来准备数据相关矢量,以便在步骤314中只生成满足由数据相关矢量所指定的条件的执行模式。
图6示出了上述的所生成的优化表210的示例。
下面参考图7和后续的附图描述通过参考所生成的优化表210来生成在如图1所示的混合系统中可执行的程序的方法。
具体而言,图7示出了生成可执行程序的整个处理的总流程图。尽管此一系列过程基本上由编译器206执行,但是,编译器206引用库组件202、优化表210、流图格式源代码212,以及执行环境208。
在步骤702中,编译器206将计算资源分配到操作符,即UDOP。稍后将参考图8的流程图详细地描述此过程。
在步骤704中,编译器206根据节点配置来群集计算资源。稍后将参考图12的流程图详细地描述此过程。
在步骤706中,编译器206将逻辑节点分配给物理节点的网络,并确定节点之间的通信方法。稍后将参考图15的流程图详细地描述此过程。
随后,将参考图8的流程图更详细地描述步骤702中的向UDOP的计算资源分配。
在图8中,假设预先准备了流图格式源代码212(流图)、资源约束(硬件配置),以及优化表210。图9示出了由功能块A、B、C,以及D和资源约束构成的流图212的示例。
编译器206在步骤802中执行过滤。换言之,编译器206从优化表210只提取所提供的硬件配置和可执行的模式,并生成优化表(A)。
在步骤804中,编译器206参考优化表(A),生成执行模式组(B),其中,将具有最短的流水线间距的执行模式分配给流图中的相应UDOP。图10示出了它被分配到流图的每一个块的情况的示例。
接下来,在步骤806中,编译器206判断执行模式组(B)是否满足所提供的资源约束。
如果在步骤806中编译器206判断执行模式组(B)满足所提供的资源约束,则过程完成。
如果在步骤806中编译器206判断执行模式组(B)不满足所提供的资源约束,则控制前进到步骤808以生成列表(C),其中,按照流水线间距的顺序对执行模式组(B)中的执行模式进行排序。
此后,控制前进到步骤810,在此编译器206从列表(C)中选择具有带有最短流水线间距的执行模式的UDOP(D)。
然后,控制前进到步骤812,在此编译器206判断优化表(A)是否包含对于UDOP(D)消耗更少资源的执行模式(下一候选)(E)。
如果包含,则控制前进到步骤814,在此编译器206判断执行模式(下一候选)(E)的流水线间距是否小于列表(C)中关于UDOP(D)的最长值。
如果是,控制前进到步骤816,在此编译器206分配执行模式(下一候选)(E)作为用于UDOP(D)的新执行模式,然后更新执行模式组(B)。
控制从步骤816返回到步骤806以进行判断。
如果步骤814或步骤812中的判断是否定的,则控制前进到步骤818,在此编译器206从列表(C)中删除UDOP。
此后,控制前进到步骤820,在此编译器206判断列表(C)中是否存在元素。如果存在,控制返回到步骤808。
如果编译器206在步骤820中判断列表(C)中不存在元素,则控制前进到步骤822,在此编译器206生成列表(F),在该列表中,按照执行模式组(B)的最长的流水线间距与下一候选的流水线间距之间的差值的顺序来排序执行模式组(B)中的执行模式。
接下来,在步骤824中,编译器206判断在列表(F)中具有流水线间距最小差值的执行模式(G)是否比当前指示的资源需要更少的资源。
如果是,控制前进到步骤826,在此编译器206分配执行模式(G)作为新的执行模式,并更新执行模式组(B),然后控制前进到步骤806。否则,编译器206在步骤828中从列表(F)中删除相关的UDOP,控制返回到步骤822。
参考图11,示出了前述的通过替换执行模式组而进行的优化的示例的图形。在图11中,D4被替换为D5,以便删除资源约束。
参考图12,更详细地示出了根据步骤704中的节点配置群集计算资源的流程图。
首先,在步骤1202中,编译器206使用在图8所示出的流程图的处理中分配的执行模式来部署流图。在图13中示出了此结果的示例。在图13中,cuda被缩写为cu。
接下来,在步骤1204中,编译器206计算“执行时间+通信时间”作为每一个执行模式的新的流水线间距。
接下来,在步骤1206中,编译器206按照新流水线间距的顺序对执行模式进行排序,并生成列表。
随后,在步骤1208中,编译器206从列表中选择具有最大的新流水线间距的执行模式。
接下来,在步骤1210中,编译器206判断相邻的内核是否已经被分配给流图中的逻辑节点。
如果编译器206在步骤1210中判断相邻的内核已经被分配给流图中的逻辑节点,则控制前进到步骤1212,在此编译器206判断分配给相邻内核的逻辑节点是否具有满足体系结构约束的空闲区域。
如果在步骤1212中编译器206判断分配给相邻内核的逻辑节点具有满足体系结构约束的空闲区域,则控制前进到步骤1214,在此将相关内核分配给相邻内核被分配到的逻辑节点。
控制从步骤1214前进到步骤1218。另一方面,如果步骤1210或步骤1212中的判断是否定的,则控制直接地从那里前进到步骤1216,在此编译器206将相关内核分配给满足体系结构约束的逻辑节点中具有最大的空闲区域的逻辑节点。
随后,在步骤1218(控制从步骤1214或从步骤1216前进到此)中,编译器206从列表中删除已分配的内核作为列表更新。
接下来,在步骤1220中,编译器206判断所有内核是否都已经被分配给逻辑节点。如果是,结束处理。
如果在步骤1220中编译器206判断不是所有内核都被分配给逻辑节点,则控制返回到步骤1208。
在图14中示出了节点分配的示例。具体而言,重复此处理,直到将所有内核都分配给节点。注意,在图14的一部分,cuda被缩写为cu。
图15更详细地示出了步骤706中的将逻辑节点分配给物理节点的网络并确定节点之间的通信方法的处理的流程图。
在步骤1502中,编译器206提供群集的流图(图12所示出的流程图的结果)和硬件配置。图16中示出了其示例。
在步骤1504中,编译器206从硬件配置生成物理节点之间的路由表和网络的容量表。图17作为示例示出了路由表1702和容量表1704。
在步骤1506中,编译器206开始从通信流量繁重的边缘附近的逻辑节点分配到物理节点。
在步骤1508中,编译器206从网络容量表中分配具有大容量的网络。结果,如图18所示,将群集连接在一起。
在步骤1510中,编译器206更新网络容量表。它由图18中的框1802来表示。
在步骤1512中,编译器206判断分配是否对于所有群集都完成。如果是,结束处理。否则,控制返回到步骤1506。
虽然上文结合特定实施例描述了本发明,但是,应该理解,所示出的硬件、软件,以及网络配置只是说明性的,本发明可通过在功能上等同于它们的任意配置来实现。
Claims (5)
1.一种通过计算机的处理生成在所述计算机上操作的应用程序的方法,包括下列步骤:
准备用于生成所述应用程序的库组件;
获取可用硬件资源的状态;
对于所述库组件中的操作,根据所述可用硬件资源的状态生成一个或多个执行模式;
测量每个执行模式在所述可用硬件资源上的执行速度,并将测量结果存储在优化表中,所述优化表包含所述执行模式、所述可用硬件资源、以及所述执行速度作为条目,所述优化表存储到计算机的存储装置中;
准备所述应用程序的源代码;
参考所述优化表,将所述优化表中的所述执行模式应用到所述源代码中的所述操作,以便实现最小执行时间;以及
参考所述优化表,替换应用于所述源代码中的所述操作的所述执行模式,以便满足所述可用硬件资源的约束;
其中:
所述源代码采用流图格式;
按照所述库组件的所述执行时间,在所述流图上排序并以列表列出所述执行模式;以及
从所述列表的顶部,参考所述优化表,将所述执行模式替换为消耗较少计算资源的执行模式。
2.如权利要求1所述的方法,其中,提供了混合系统,在所述混合系统中,所述硬件资源通过网络彼此连接在一起,并且所述混合系统允许具有相互不同的体系结构的节点被混合。
3.如权利要求2所述的方法,进一步包括下列步骤:根据通信大小,按降序在流图中安排边缘,以生成边缘列表;以及将边缘列表上共享头部的两个操作分配给相同的硬件资源。
4.一种通过计算机的处理生成在所述计算机上操作的应用程序的系统,所述系统包括:
用于生成所述应用程序的库组件的装置;
用于获取可用硬件资源的状态的装置;
用于针对所述库组件中的操作,根据所述可用硬件资源的状态生成一个或多个执行模式的装置;
用于测量每一个执行模式的所述可用硬件资源的执行速度并将优化表存储到存储设备中的装置,所述优化表包含所述执行模式、所述可用硬件资源、以及所述执行速度作为条目;
用于准备所述应用程序的源代码的装置;
用于参考所述优化表,将所述优化表中的所述执行模式应用到所述源代码中的所述操作,以便实现最小执行时间的装置;
用于参考所述优化表,替换应用于所述源代码中的所述操作的所述执行模式,以便满足所述可用硬件资源的约束的装置;
其中:
所述源代码采用流图格式;以及
所述系统还包括:用于按照所述库组件的所述执行时间,在所述流图上排序并以列表列出所述执行模式的装置;以及用于从所述列表的顶部,参考所述优化表将所述执行模式替换为消耗较少计算资源的执行模式的装置。
5.如权利要求4所述的系统,还包括:用于根据通信大小,按降序在流图上安排边缘,以生成边缘列表的装置;以及用于将边缘列表上共享头部的两个操作分配给相同硬件资源的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009271308A JP4959774B2 (ja) | 2009-11-30 | 2009-11-30 | アプリケーション生成システム、方法及びプログラム |
JP2009-271308 | 2009-11-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102081544A CN102081544A (zh) | 2011-06-01 |
CN102081544B true CN102081544B (zh) | 2014-05-21 |
Family
ID=44069819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010543253.5A Expired - Fee Related CN102081544B (zh) | 2009-11-30 | 2010-11-15 | 应用程序生成系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20110131554A1 (zh) |
JP (1) | JP4959774B2 (zh) |
CN (1) | CN102081544B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5667024B2 (ja) * | 2011-09-28 | 2015-02-12 | 株式会社東芝 | プログラム生成装置、プログラム生成方法及びプログラム |
FR2985824B1 (fr) * | 2012-01-17 | 2014-02-07 | Thales Sa | Procede d'optimisation de traitement parallele de donnees sur une plateforme materielle |
FI20135946L (fi) * | 2013-09-23 | 2015-03-24 | Procomp Solutions Oy | Rinnakkainen ratkaisun muodostaminen |
CN104504143B (zh) | 2015-01-04 | 2017-12-29 | 华为技术有限公司 | 一种流图优化方法及其装置 |
CN107408051B (zh) * | 2015-03-12 | 2020-11-06 | 华为技术有限公司 | 用于处理系统上的程序的动态调度的系统和方法 |
CN107766132B (zh) * | 2017-06-25 | 2019-03-15 | 平安科技(深圳)有限公司 | 多任务调度方法、应用服务器及计算机可读存储介质 |
CN108616590B (zh) * | 2018-04-26 | 2020-07-31 | 清华大学 | 十亿规模网络嵌入的迭代随机投影算法及装置 |
US20230010019A1 (en) * | 2021-07-08 | 2023-01-12 | International Business Machines Corporation | System and method to optimize processing pipeline for key performance indicators |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504795A (zh) * | 2008-11-03 | 2009-08-12 | 天津理工大学 | 应用于立体车库车位调度的dsp控制系统的工作方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0773044A (ja) * | 1993-09-02 | 1995-03-17 | Mitsubishi Electric Corp | 最適化コンパイル方法及び最適化コンパイル装置 |
JPH08106444A (ja) * | 1994-10-05 | 1996-04-23 | Nec Eng Ltd | ロードモジュール取込み制御システム |
US20030167320A1 (en) * | 2002-02-26 | 2003-09-04 | Sun Microsystems, Inc. | Registration service for registering plug-in applications with a management console |
US6983456B2 (en) * | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
US7478377B2 (en) * | 2004-06-07 | 2009-01-13 | International Business Machines Corporation | SIMD code generation in the presence of optimized misaligned data reorganization |
US7367026B2 (en) * | 2004-06-07 | 2008-04-29 | International Business Machines Corporation | Framework for integrated intra- and inter-loop aggregation of contiguous memory accesses for SIMD vectorization |
EP1729213A1 (en) * | 2005-05-30 | 2006-12-06 | Honda Research Institute Europe GmbH | Development of parallel/distributed applications |
US7571301B2 (en) * | 2006-03-31 | 2009-08-04 | Intel Corporation | Fast lock-free post-wait synchronization for exploiting parallelism on multi-core processors |
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US8296521B2 (en) * | 2006-06-30 | 2012-10-23 | Mosaid Technologies Incorporated | Method of configuring non-volatile memory for a hybrid disk drive |
US8281287B2 (en) * | 2007-11-12 | 2012-10-02 | Finocchio Mark J | Compact, portable, and efficient representation of a user interface control tree |
US8601458B2 (en) * | 2009-05-14 | 2013-12-03 | International Business Machines Corporation | Profile-driven data stream processing |
US8490072B2 (en) * | 2009-06-23 | 2013-07-16 | International Business Machines Corporation | Partitioning operator flow graphs |
US8595709B2 (en) * | 2009-12-10 | 2013-11-26 | Microsoft Corporation | Building an application call graph from multiple sources |
-
2009
- 2009-11-30 JP JP2009271308A patent/JP4959774B2/ja not_active Expired - Fee Related
-
2010
- 2010-11-15 CN CN201010543253.5A patent/CN102081544B/zh not_active Expired - Fee Related
- 2010-11-29 US US12/955,147 patent/US20110131554A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504795A (zh) * | 2008-11-03 | 2009-08-12 | 天津理工大学 | 应用于立体车库车位调度的dsp控制系统的工作方法 |
Non-Patent Citations (2)
Title |
---|
JP特开2007-328416A 2007.12.20 |
JP特开平7-73044A 1995.03.17 |
Also Published As
Publication number | Publication date |
---|---|
JP4959774B2 (ja) | 2012-06-27 |
CN102081544A (zh) | 2011-06-01 |
US20110131554A1 (en) | 2011-06-02 |
JP2011113449A (ja) | 2011-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102081544B (zh) | 应用程序生成系统和方法 | |
Catanzaro et al. | A map reduce framework for programming graphics processors | |
EP3189417B1 (en) | Compiling graph-based program specifications for enabling a runtime system to determine an efficient execution | |
EP3189428B1 (en) | Compilation of graph-based program specifications with automated clustering of graph components based on the identification of particular data port connections | |
Duarte et al. | Parallel variable neighbourhood search strategies for the cutwidth minimization problem | |
US7409656B1 (en) | Method and system for parallelizing computing operations | |
JP4886838B2 (ja) | 並列化方法、システム、及びプログラム | |
EP2510433B1 (en) | Canonicalized versions of reuse candidates in graphical state diagrams | |
US8620628B2 (en) | Run-time tunable sample time in programming or modeling environments | |
JP5479942B2 (ja) | 並列化方法、システム、及びプログラム | |
Orr et al. | Integrating task duplication in optimal task scheduling with communication delays | |
de Andrade et al. | Software deployment on heterogeneous platforms: A systematic mapping study | |
Zhao et al. | A study of heterogeneous computing design method based on virtualization technology | |
Plastino et al. | Developing SPMD applications with load balancing | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
Dieterle et al. | Iterating Skeletons: Structured Parallelism by Composition | |
Papa et al. | Automatic large-scale integrated circuit synthesis using allocation-based scheduling algorithm | |
CN110221838B (zh) | 一种基于遗传算法和有向无环图进行程序自动设计优化的方法 | |
CN111857833A (zh) | 并行计算智能处理器及并行计算智能处理方法 | |
Enmyren et al. | Towards a tunable multi-backend skeleton programming framework for multi-GPU systems | |
Chennupati et al. | Automatic evolution of parallel recursive programs | |
CN109799973B (zh) | 一种数据驱动的用户透明的可扩展编程方法 | |
Chalmers | Communicating Process Architectures in the Light of Parallel Design Patterns and Skeletons | |
Ivanov et al. | Management of computations with LRnLA algorithms in adaptive mesh refinement codes | |
Yu et al. | VinaSC: Scalable Autodock Vina with fine-grained scheduling on heterogeneous platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140521 Termination date: 20181115 |