用于在异构计算机上编译和运行高级程序的技术制造技术

技术编号:10118995 阅读:147 留言:0更新日期:2014-06-11 10:51
一种用于在异构计算机上编译和运行高级程序的技术可以包括将程序代码划分成两个或更多逻辑单元,并将每个所述逻辑单元编译成一个或多个可执行实体。将至少某些所述逻辑单元编译成两个或更多可执行实体,所述两个或更多可执行实体是同一逻辑单元的不同编译。所述两个或更多可执行实体兼容以便在具有不同体系架构的相应两个或更多平台上运行。

【技术实现步骤摘要】
【国外来华专利技术】用于执行应用的方法和系统、具有机器指令的电路
本申请一般地涉及计算机和应用,更具体地说,涉及用于在异构计算机或处理器上编译和运行程序的技术。
技术介绍
构成计算机的计算元件的混合物变得越来越异构。当今计算机已经将传统处理器(例如,中央处理单元(CPU))与图形处理器(GPU)耦合,并且对GPU越来越感兴趣,不仅仅将其用于图形处理,因为其在具体问题上具有特殊计算能力。这样,具有CPU和GPU的计算机是异构的,因为它为适合其体系架构的计算任务提供专用计算元件(GPU),并且为所有其它任务(例如,如果需要,则包括非常适合于GPU的计算任务)提供真正通用计算元件(CPU)。GPU是硬件加速器的一个实例。除了GPU之外,越来越广泛地考虑其它形式的硬件加速器,并且已经具有现场可编程门阵列(FPGA)和固定功能加速器形式的加速器实例,这些加速器用于加密、XML解析、正则表达式匹配、物理引擎等。存在单独用于CPU、GPU、FPGA和各种加速器的程序设计技术。例如,用于GPU的程序设计语言包括OpenMP、CUDA和OpenCL,所有这些语言均可以被视为C程序设计语言的扩展。GPU特定的编译器输入采用这些语言之一编写的程序,并且预处理程序以便将GPU特定的代码(此后称为设备代码)与其余程序代码(此后称为主机代码)分离。设备代码通常通过显式设备特定的语言扩展的存在、或编译器指令(例如,pragma)、或语法(例如,在CUDA中使用<<<…>>>启动内核)识别。将设备代码进一步转换并编译成设备特定的机器代码(此后称为工件(artifact))。将主机代码作为编译过程的一部分而修改,以便在执行程序时调用设备工件。可以将设备工件嵌入到主机代码中,或者它可以存在于储存库中并且通过作为调用过程的一部分的唯一标识符来标识。用于包括FPGA的异构计算机的程序设计语言和解决方案堪比GPU程序设计解决方案,尽管FPGA仍未享受广为接受的C方言带来的好处。各种FPGA技术供应商提供的C语言具有多种扩展,所有这些供应商通常以非常类似于用于GPU的编译器所遵循的方式,编译采用其C方言编写的代码:编译器将程序划分成设备(FPGA)代码和主机代码,单独编译每种代码,修改主机代码以便调用设备工件。无论计算机中的处理元件的异构混合为何,程序设计过程迄今为止通常是类似的,并且共有以下特征。第一,必须对不同体系架构进行编程采用的不同语言或方言使得单个程序员或程序设计团队难以同样很好地处理项目的所有方面。第二,对以下各项的关注度相对较小:共同执行、使用无缝共同工作的多个不同计算元件协调程序执行的问题。这需要将程序划分为可以映射到计算元件的任务、在计算元件上映射或调度任务,以及处理计算元件之间的通信,该通信本身需要对数据进行串行化并准备数据以便传输,在处理器之间路由数据,以及接收数据并对数据进行解串行化。给定与在异构计算机上协调程序执行关联的复杂性,必须尽早针对将在何处执行何种操作做出静态决策,随着项目的进展,重新访问该决策很困难并且很昂贵。这由于以下事实而加剧:某些加速器(例如,FPGA)难以很好地编程,并且为程序员增加沉重的工程负担。
技术实现思路
在一个方面,一种用于执行一个或多个应用的方法可以包括:由程序编译器自动将程序代码划分成两个或更多逻辑单元;以及将每个所述逻辑单元编译成一个或多个可执行实体,将至少某些所述逻辑单元编译成两个或更多可执行实体,所述两个或更多可执行实体是同一逻辑单元的不同机器特定的编译。在另一个方面,一种执行一个或多个应用的方法可以包括:确定哪一或哪些平台可用于程序执行;在程序代码的每个指定点,确定用于执行的逻辑单元,以及选择与所确定的逻辑单元关联并与被确定为可用的一个或多个平台兼容的一个或多个可执行实体;以及将所选择的一个或多个可执行实体分配给被确定为可用的相应一个或多个平台。在一个方面,一种用于执行一个或多个应用的系统可以包括:编译器模块,其可操作以将程序代码划分成两个或更多逻辑单元,并将每个所述逻辑单元编译成一个或多个可执行实体。可以将至少某些所述逻辑单元编译成两个或更多可执行实体。所述两个或更多可执行实体是同一逻辑单元的不同机器特定的编译。运行时模块可操作以确定哪一或哪些平台可用于程序执行。在所述程序代码的每个指定点,所述运行时模块还可操作以确定用于执行的逻辑单元。所述运行时模块还可操作以选择与所确定的逻辑单元关联并与被确定为可用的一个或多个平台兼容的一个或多个可执行实体。还可以提供一种电路,所述电路在机器上嵌入要执行的指令,所述指令包括在此描述的方法。下面参考附图详细描述各种实施例的其它特性以及结构和操作。在附图中,相同的参考标号指示相同或功能类似的元素。附图说明图1是示出一个实施例中的本公开的编译器和运行时方法的示意图;图2是示出本公开的一个实施例中的编译器方法的流程图;图3是示出本公开的一个实施例中的运行时方法的流程图;图4是一个实施例中的本公开的编译和运行时体系架构的实例体系架构概览图;图5示出本公开的一个实施例中的编译器框架和/或运行时系统可以在其上操作的实例系统。具体实施方式本公开描述多个过程,这些过程用于编译应用以便在不同处理器上(例如,在具有包含不同执行体系架构的两个或更多处理器的异构计算机(也称为混合计算机)上)执行。还可以提供运行时过程,该过程在适当的处理器上选择、分配和执行编译的组件。在一个方面,本公开的一种方法可以使能编译单一源语言以便在异构计算机上共同执行,并使用编译和/或运行时技术,这些技术解决现有解决方案中出现的早期划分和共同执行问题。例如,主机编译器可以处理整个程序(其可以采用单一源语言编写),并生成机器特定的代码以便在通用CPU上运行该程序。此外,还可以允许任何数量的设备特定的编译器处理整个程序,并且每个这种编译器可以选择独立于其它设备编译器进行的选择而执行设备特定的代码生成。这样,本公开的方法可以克服对程序进行一次预处理和划分(分为主机代码和设备代码)的问题,因为它允许不同编译器对同一源代码进行编译并且产生功能等效的机器特定的实现。保证至少一个所述编译器(通常为主机编译器)针对程序的所有部分生成代码。一个或多个编译器可以针对输入程序的子集生成代码。例如,因为设备编译器通常比主机编译器更具限制性,所以设备编译器可能针对输入程序的子集生成可执行代码(也称为可执行实体或工件)。因此,在本公开的一个实施例中,多个编译器可以针对输入程序生成可执行实体(工件),并且任何给定的编译器可以针对同一程序生成多个可执行实体(工件),它们例如对应于该程序的不同部分或子集。在另一个方面,本公开还描述一种技术,该技术用于使用唯一标识符结构关联通过不同编译器编译的相同程序部分,该结构确保通过不同编译器编译的程序的相同部分始终生成相同标识符。例如,在本公开的方法的一个实施例中,每个工件使用其对应的标识符标记,并且放置在根据计算机中的一组所需设备组织的工件存储库中。工件存储库可以是各种编译器产生的所有工件的储存库。在一个实施例中,使用一对关键字从存储库中检索工件:一个关键字标识所需设备,另一个关键字标识唯一工件。例如,第一个关键字标识所需设备,第二个关键字是唯一工件标识符。关本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201280038632.html" title="用于在异构计算机上编译和运行高级程序的技术原文来自X技术">用于在异构计算机上编译和运行高级程序的技术</a>

【技术保护点】
一种用于执行一个或多个应用的方法,包括:由程序编译器自动将程序代码划分成两个或更多逻辑单元;以及将每个所述逻辑单元编译成一个或多个可执行实体,将至少某些所述逻辑单元编译成两个或更多可执行实体,所述两个或更多可执行实体是同一逻辑单元的不同机器特定的编译。

【技术特征摘要】
【国外来华专利技术】2011.08.02 US 13/196,3001.一种用于执行一个或多个应用的方法,包括:由程序编译器自动将程序代码划分成两个或更多逻辑单元;以及将每个所述逻辑单元编译成一个或多个可执行实体,将至少某些所述逻辑单元编译成两个或更多可执行实体,所述两个或更多可执行实体是同一逻辑单元的不同机器特定的编译,其中所述编译进一步包括向不同的机器特定的编译器输入逻辑单元以产生所述两个或更多可执行实体;将所述一个或多个可执行实体与至少两个关键字一起存储,一个关键字标识从中编译所述一个或多个可执行实体的逻辑单元,以及另一个关键字标识所述一个或多个可执行实体所兼容的平台。2.根据权利要求1的方法,还包括:为从所述同一逻辑单元编译的所有可执行实体分配相同标识符。3.根据权利要求1的方法,还包括:确定哪一或哪些平台可用于程序执行;以及在所述程序代码的每个指定点,确定用于执行的逻辑单元,以及选择与所确定的逻辑单元关联并与被确定为可用的一个或多个平台兼容的一个或多个可执行实体。4.根据权利要求3的方法,将所选择的一个或多个可执行实体分配给被确定为可用的相应一个或多个平台。5.根据权利要求1的方法,其中在所述程序代码中的数据流边界处进行所述划分。6.根据权利要求1的方法,其中针对至少一个特定机器的所述程序的所有部分生成可执行实体。7.根据权利要求1的方法,其中所述不同机器特定的编译包括可在通用计算平台、专用计算平台或可重新配置的计算平台的两个或更多组合上执行的编译。8.一种执行一个或多个应用的方法,包括:确定哪一或哪些平台可用于程序执行;在程序代码的每个指定点,确定用于执行的逻辑单元,以及选择与所确定的逻辑单元关联并与被确定为可用的一个或多个平台兼容的一个或多个可执行实体,其中至少某些所述逻辑单元被编译成两个或更多可执行实体,所述两个或更多可执行实体是同一逻辑单元的不同机器特定的编译,所述两个或更多可执行实体是基于编译包括多个逻辑单元的所述程序代码而产生的;以及将所选择的一个或多个可执行实体分配给被确定为可用的相应一个或多个平台;其中所述一个或多个可执行实体包括至少两个关键字,一个关键字标识从中编译所述一个或多个可执行实体的逻辑单元,以及另一个关键字标识所述一个或多个可执行实体所兼容的平台。9.根据权利要求8的方法,其中针对通用计算平台、专用计算平台或可重新配置的计算平台的两个或更多组合编译所述逻辑实体。10.一种具有机器指令的电路,所述机器指令用于执行一种执行一个或多个应用的方法,所述方法包括:将程序代码划分成两个或更多逻辑单元;以及将每个所述逻辑单元编译成一个或多个可执行实体,将至少...

【专利技术属性】
技术研发人员:J·S·奥尔巴克D·F·培根P·S·郑R·拉巴赫
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1