开发异构型多处理器计算机系统上的并行性的方法和系统的制作方法

文档序号:6650786阅读:208来源:国知局
专利名称:开发异构型多处理器计算机系统上的并行性的方法和系统的制作方法
技术领域
本发明总体涉及计算机程序开发领域,更具体地,涉及一种用于开发异构型多处理系统内的并行性的系统和方法。
背景技术
现代的计算机系统经常使用复杂的体系结构,这些体系结构可包括具有不同的配置和能力的多种处理单元。在普通的配置内,所有处理单元都是同样或同类的。比较特殊地,可使用两个或多个不同的或异类的处理单元。例如,在宽带处理机体系结构(BPA)内,不同的处理器将具有专为特定任务而设计的指令集或者能力。每个处理器可更适合不同类型的处理,特别地,一些处理器固有地不能完全执行特定功能。在此情况下,当需要时,那些功能必须在能够执行它们的处理器上执行,并且最佳地是在最适合于该任务的处理器上执行,如果这样做在总体上不会损害该系统的性能的话。
通常,在多处理器系统内,一般假设通过将计算负荷分摊在该系统的所有节点上,来实现最高或接近最高的性能。在具有异型处理单元的系统内,不同类型的处理节点会使计算或其他负荷的分配变复杂,但是实现的性能可能优于同构型系统。本领域内的技术人员应理解,同构型系统和异构型系统之间的性能折衷可依赖于每个系统的特定组件。
存在多种技术用于分摊计算或其他负荷,通常称作“并行化”,这些技术包括从由熟练程序员进行的仔细的手动处理到由完善的编译器进行的自动并行化。随着这些技术日益成熟,自动并行化变得更加普遍。但是,现代的用于具有多个异型处理部件的多处理器系统的自动并行化技术并不易于使用,这些技术还会增加程序设计复杂性。例如,在宽带处理器体系结构(BPA)系统内,为了达到可实现的性能,应用开发人员即程序员必须非常了解该应用,必须详细理解该体系结构,并且必须理解该系统的数据传送机制的命令和特性,以便以可获得最优或接近最优性能的方式将该程序代码和数据分区。尤其在BPA系统内,还因需要目标有两个截然不同的ISA而更增加了复杂性,因此,高性能的程序设计的任务变得相当劳动密集,并且将存在于非常专门化的应用程序员的领域内。
但是,通过在系统的处理单元上执行专门设计的软件(这里称作计算机程序或代码)这一过程,可实现计算机系统的使用。这些代码通常是由程序员以计算机语言编写而生成,并且使用编译器来准备在计算机系统上执行。程序设计任务的简易性以及该代码在计算机系统上的最终执行的效率受到编译器所提供的功能的极大影响。许多现代的简单编译器为单个处理器生成缓慢执行的代码。已构造出了其他的编译器,其为同构型多处理系统内的一个或多个处理器生成可相当快地执行代码。
通常,为了准备程序在异构型多处理系统上执行,典型的现代系统需要程序员使用一些编译器,并费力地组合这些工作的结果以构建最终的代码。为此,程序员必须按以下方式将其源程序分区,即使用适合的处理器执行代码的不同功能。当该系统内的某些处理器不能执行特定功能时,该程序或应用必须被分区以在提供此能力的特定处理器上执行那些功能。
但是,只有这种功能划分是不能实现整个系统的最高或接近最高的性能的。在诸如BPA的异构型系统内,通过使整个异构型系统内的两个或多个同样的处理器对程序或应用的给定部分或子任务并行执行,可获得最优性能。明显地,熟练程序员需要向从异构型的并行处理器提取性能所必需的技能组中添加并行化技术,这会进一步增加任务的复杂性。往往,诸如上面描述的系统足够强大,在实现最优性能所需的技能与手工操作这样的被最优分区和并行化的应用所需的时间之间可实现折衷。在开发的原型速成阶段,创建应用所需的时间常常与完成的应用的执行时间一样重要。
因此,需要一种用于为异构型多处理系统进行计算机程序分区和并行化的系统和/或方法,其至少可解决一些与传统系统和方法相关的问题和缺陷。

发明内容
本发明提供了一种用于利用“单个源编译器”对异构型多处理器系统进行计算机程序代码并行化和分区的方法。准备一个或多个源文件,以便在无需引用异构型多处理系统内的基本处理器的特性或数字的情况下执行。编译器接受此单个源文件,并使用与同构型多处理环境内的自动并行化所用的相同的分析技术,来确定该程序的可并行化的那些区域。然后,将此信息输入到整体程序分析中,该分析检查数据引用模式和代码特性,以确定该特定程序在基础体系结构的不同指令集上的最优分区/并行化策略。此方法的优点在于,可使应用程序员无需管理此体系结构的复杂细节。这对于原型速成来说是必不可少的,但是也是不需要以最高性能执行的应用的开发的优选方法。该单个源编译器使得这种异构型体系结构可由更广泛的用户访问。


参照下文结合附图进行的说明,可更充分地理解本发明及其优点,在附图中图1是示出计算机程序代码分区和并行化系统的框图;以及图2是示出计算机程序代码分区和并行化方法的流程图。
具体实施例方式
这里公开了一种编译方法,其将现有的同构型多处理器的并行化技术扩展到上述类型的异构型多处理器。具体地,这里所针对的处理器包括通过软件模拟的共享存储器(诸如与软件管理的高速缓存相关联的)或通过显式数据传送命令(诸如DMA)相互通信的单个主处理器和多个附属同构型处理器。这一方法的新颖性部分地在于,其允许用户在就好像应用是用于单体系结构和编译器的情形下对该应用进行编程,该编译器是由用户提示引导的或其使用自动技术,该编译器将在两个层次上处理程序分区将创建该代码的各段的多个副本以在附属处理器上并行运行;并且还将创建将在主处理器上运行的对象。将以对用户透明的方式适合于目标体系结构地对这两组对象进行编译。另外,编译器将通过在概述函数的合适位置插入必要的数据传送命令,来编排该应用的有效并行执行。因此,本公开以一系列方式来扩展传统的并行化技术。
具体地,除了通常的数据依赖问题之外,还考虑被考虑进行并行化的操作的本质以及它们对某一个目标处理器的适用性、被概述进行并行执行的段的大小以及存储器引用模式,其会影响并行执行的段的组合或定序。通常,这些分析技术不认为目标处理器是非同构型的;此信息被并入应用于成本模型的试探法中。当调用特定体系结构的代码生成器时,仅在处理的后一阶段,对于目标体系结构的认知才变得明显。如这里所用的,“单个源或组合源”编译器通常是指源编译器,之所以这样命名是因为它代替了多个编译器和数据传送命令,并允许用户提供“单个源”。如这里所用的,“单个源”是指其目的是在一般的并行系统上执行的、任选地包含用户提示或指示的一个或多个特定语言的源文件的集合。
在下面的讨论中,说明了众多特定的细节以便提供对本发明的彻底理解。但是,本领域内的技术人员应理解,本发明可在不具有这种特定细节的情况下实现。在其他情况下,已用示意图或框图形式示出了公知的组件,以便不会以不必要的细节来混淆本发明。另外,在很大程度上已省略了关于网络通信、电磁信号传输技术、用户接口或输入/输出技术等的细节,这是因为这些细节不被认为对于充分理解本发明来说是必须的,而是被认为处于本领域普通技术人员的理解范围内。
还应指出,除非另外说明,否则文中所述的所有功能可以硬件或软件来实现,或者以它们的某些组合来实现。但是,在优选实施例内,除非另外说明,否则这些功能是由诸如计算机或电子数据处理器的处理器根据诸如计算机程序代码、软件的代码、和/或由被编码为执行这些功能的集成电路来实现的。
参照图1,参考标号10总体指诸如文中所述的单个源编译器的编译器。本领域内的技术人员应理解,文中所述的方法的替换方法通常需要两个不同的这种编译器,每个编译器专门针对一个特定的体系结构。编译器10是电路或其他适合的逻辑,并且其被配置成计算机程序代码编译器。在一个特定实施例内,如下面更详细描述的,编译器10是被配置成将源代码编译成目标代码的软件程序。通常,编译器10被配置成接收特定语言的源代码,该源代码任选地包含用户提供的注释或指示,并且任选地应用通过用户接口60交互地提供的用户提供的调整参数,并通过目标文件读入器25接收目标代码。此代码随后通过整体程序分析器及优化器30、和并行化分区模块40,并最终到达特定于处理器的后端代码模块50,该模块生成适合的特定于目标的指令集,这在下文将更详细地描述。
具体地,在所示实施例内,编译器10包含特定语言的源代码处理器(前端)20。前端20包含用户提供的“编译指示(pragmas)”或命令与通过命令行或在编译文件(makefile)命令或脚本内提供的编译器选项标志的组合。另外,编译器10包括用户接口60。用户接口60是电路或其他适合的逻辑,并且其被配置成通常通过图形用户接口从用户接收输入。用户接口60提供调整机制,籍此编译器可根据其分析阶段将防碍该程序的有效并行的难题或问题反馈回用户,并向用户提供进行微小调整或断言特定数据项的特性或预期应用的选项。
编译器10还包括目标文件读入器模块25。目标文件读入器模块25是电路或其他适合的逻辑,且其被配置成读取目标代码并识别编译后的代码将在其上执行的计算机系统的特定参数。通常,目标代码是编译器10先前处理前端代码模块20接收到的源代码并存储关于通过该编译器内的分析得出的所述源代码的信息的保存结果。在一个特定实施例内,目标文件读入器模块25是软件程序,且其被配置成识别并映射编译后的代码将在其上执行的计算机系统(即“目标”系统)的各处理节点。另外,目标文件读入器模块25还被配置成识别已识别出的节点的处理能力。
编译器10还包括整体程序分析器及优化器模块30。整体程序分析器及优化器模块30是电路或其他适合的逻辑,其分析接收到的源和/或目标代码,这在下文将更详细地说明。在一个特定实施例内,整体程序分析器及优化器模块30是这样的软件程序,即其创建接收到的源和/或目标代码的整体程序表示,其目的是确定所述代码跨异构型多处理系统内的多个同样的协同处理器的最有效的并行分区。这种分析的侧面作用是识别所述计算机程序代码的特定节点段。因此,通常,整体程序分析器及优化器模块30可被配置成分析具有可能的用户修改的整个计算机程序源代码,即接收的源或目标代码,以在用户提供的提示的帮助下,识别所述源代码的可在特定类型的处理节点上并行处理的段,并将识别出的段隔离成子程序,这些子程序随后可针对特定需要的处理节点(即“目标”节点)而被编译。在一个实施例内,整体程序分析器及优化器模块30还被配置成将自动并行化技术应用于接收到的源和/或目标代码。如文中使用的,本领域内的技术人员应理解,整个计算机程序源代码是构成分立的计算机程序的一组计算机程序代码行。
具体地,在一个实施例内,整体程序分析器及优化器模块30被配置成接收源和/或目标代码20,并创建所接收代码的整体程序表示。如文中所用的,整体程序表示是构成整个计算机程序源代码的各个代码段的表示。在一个实施例内,整体程序分析器及优化器模块30被配置成对所接收的代码执行过程间分析,以创建整体程序表示。通常,诸如过程间分析的整体程序分析技术对于并行化优化来说是强大的工具,并且对于本领域内的技术人员来说是公知的。本领域内的技术人员应理解,还可使用其他方法来创建接收到的计算机程序源代码的整体程序表示。
在一个实施例内,整体程序分析器及优化器模块30还被配置成对整体程序表示执行并行化技术。本领域内的技术人员应理解,该并行化技术可包括使用接受分析的程序代码的标准数据依赖特性。在一个特定实施例内,整体程序分析器及优化器模块30被配置成执行自动并行化技术。在可选实施例内,整体程序分析器及优化器模块30被配置成执行基于通过用户接口60从用户接收到的用户输入的引导并行化技术。
在可选实施例内,整体程序分析器及优化器模块30被配置成执行自动并行化技术和基于通过用户接口60从用户接收到的用户输入的引导并行化技术。因此,在一个特定实施例内,整体程序分析器及优化器模块30可被配置成执行自动并行化技术和/或接收用户的提示、建议和/或其他输入。因此,编译器10可被配置成执行基本的并行化技术,而附加的定制和优化来自于程序员。
具体地,在一个实施例内,编译器10可被配置成接收单个源文件,并自动应用与对于同构型多处理环境内的自动并行化将使用的所相同的分析技术,以确定程序的可被并行化的那些区域,而附加的输入适当地来自于程序员,以解决异构型多处理环境。本领域内的技术人员应理解,还可使用其他配置。
另外,在一个实施例内,整体程序分析器及优化器模块30可被配置成使用整体程序分析内的自动和/或引导并行化技术的结果。具体地,可将自动和/或引导并行化技术的结果用于这样的整体程序分析中,即该整体程序分析检查数据引用模式和代码特性以为特定程序确定一个或多个最优分区和/或并行化策略。在一个实施例内,整体程序分析器及优化器模块30被配置成自动应用该结果。在一个特定实施例内,整体程序分析器及优化器模块30被配置成以完全自动的模式进行操作,其可基于本领域内的技术人员已知的各种分区和/或并行化策略。
在可选实施例内,整体程序分析器及优化器模块30被配置成使用该结果以根据用户输入确定一个或多个最优分区和/或并行化策略。在一个实施例内,在半自动操作模式下,用户输入可包括对所呈现的选项的接受或拒绝。在可选实施例内,用户输入可包括用户指定的分区和/或并行化策略。因此,编译器10可被配置成使应用程序员不用管理体系结构的复杂细节,同时允许程序员对最终分区和/或并行化策略进行控制。本领域内的技术人员应理解,还可使用其他配置。
另外,整体程序分析器及优化器模块30可被配置成根据所应用的并行化技术和/或所接收的用户输入来注释整体程序表示。在可选实施例内,整体程序分析器及优化器模块30还可被配置成识别和标记程序内可并行化的循环或循环嵌套。因此,整体程序分析器及优化器模块30可被配置成将不管是自动的还是基于用户输入的并行化技术并入整体程序表示内,例如包含在整个程序的注释和/或被标记的段内。
编译器10还包括并行化分区模块40。并行化分区模块40是电路或其他适合的逻辑,且其总体上被配置成在成本/收益主题下分析被注释的整体程序表示,根据成本/收益分析对该程序进行分区,将所确定的并行区域划分为子程序,并针对该特定子程序将在其上执行的目标节点对该子程序进行编译。因此,在一个特定实施例内,并行化分区模块40被配置成分析会影响程序的分区和/或并行化策略的其他代码特性。本领域内的技术人员应理解,其他代码特性可包括代码分支和/或命令的数量或复杂性、数据引用模式、系统访问、本地存储能力和/或其他代码特性。
另外,并行化分区模块40可被配置成根据被注释的整体程序表示和成本/收益主题分析生成程序的成本模型。在一个特定实施例内,本领域内的技术人员应理解,生成程序的成本模型可包括对所识别的循环、循环嵌套和/或函数内和/或之间的数据引用模式进行分析。在可选实施例内,生成程序的成本模型可包括分析其他代码特性,其中该其他代码特性可影响对是否执行异构型多处理环境内的某一个特定节点或处理器类型上的一个或多个识别出的并行区域的判定。
另外,并行化分区模块40还被配置成分析被注释的整体程序表示的成本模型的成本/收益分析。在一个实施例内,执行成本/收益分析包括应用数据传送试探以进一步精确对可并行化的程序段的识别。作为对数据传送试探的输入,并行化分区模块40将考虑可并行化的循环或区域内和它们之间的存储器引用信息,以确定一种通过维护所述区域内的数据本地性和计算强度来最小化数据传送成本的分区。本领域内的技术人员应理解,该成本/收益分析可包括估算特定循环或循环嵌套将可能进行的迭代次数、该迭代是否由一个或多个分立的异构型处理单元进行、以及确定使该特定循环或循环嵌套并行化的收益是否超过与使该特定循环或循环嵌套并行化相关的时间、传输和/或能力成本。本领域内的技术人员应理解,还可使用其他配置。
并行化分区模块40还可配置成根据成本/收益分析修改程序代码。在一个实施例内,并行化分区模块40可被配置成根据成本/收益分析自动修改程序代码。在可选实施例内,并行化分区模块40被配置成根据从用户接收到的用户输入修改程序代码,该用户输入可响应于对用户的查询而被接收到以接受基于成本/收益分析的代码修改。在可选实施例内,并行化分区模块40被配置成根据成本/收益分析和用户输入来自动修改程序代码。本领域内的技术人员应理解,还可使用其他配置。
并行化分区模块40还可配置成将接收到的源和/或目标代码编译成一个或多个特定于处理器的后端代码段,这是根据编译后的特定于处理器的后端代码段将在其上执行的特定处理节点即“目标”节点而进行的。因此,在通过并行化技术和成本/收益分析对特定于处理器的后端代码段进行了优化后,针对支持该特定于处理器的后端代码段内包括的特定功能所需的特定节点功能,来编译该代码段。
在一个特定实施例内,本领域内的技术人员应理解,并行化分区模块40被配置成走查被注释的整体程序表示,以从被确定为可有利地并行化的那些代码部分生成概述过程。这些概述过程可被配置成表示例如将在异构型多处理系统的并行处理器上执行的代码段,以及对将在该异构型多处理系统的一个或多个其他处理器上执行的数据传送命令和/或指令的适当调用。所得的包括多个中间程序格式的子过程的程序段可被编译成各个执行处理器的指令或目标格式。可将编译后的段输入到程序装入程序,以与其余未编译的程序段(如果存在的话)相结合来生成表现为单个可执行程序的可执行程序。本领域内的技术人员应理解,还可使用其他配置。
因此,编译器10可被配置成使某些时间密集的程序设计活动(例如识别和划分可有利的并行化的程序代码段)自动进行,从而移去了程序员的负担,否则程序员将不得不执行这些任务。因此,编译器10可被配置成将计算机程序代码分区以便在异构型多处理环境内并行化,针对特定段将在其上执行的特定类型的目标节点编译这些段。
参照图2,参考标号200总体指示示出计算机程序并行化和分区方法的流程图。该过程在步骤205开始,其中接收到或扫描输入将被分析的计算机程序代码。此步骤可由例如图1的编译器前端模块20和/或目标文件读入器模块25执行。本领域内的技术人员应理解,接收或扫描输入将被分析的代码包括检索硬盘驱动器或其他适合的存储设备上存储的数据,并将这些数据加载到系统存储器。另外,在编译器前端的情况下,此步骤还可包括对源语言程序进行分析,并产生中间形式代码。在目标文件读入器模块25的情况下,此步骤可包括从计算机程序代码的目标代码文件提取中间表示。
在下一步骤210,根据接收到的计算机程序代码生成整体程序表示。此步骤可由例如图1的整体程序分析器及优化器模块30执行。此步骤包括进行本领域内的技术人员应理解的过程间分析。在下一步骤215,将并行化技术应用于该整体程序表示。该并行化分析或者是用户指导的,即引入指示可并行执行的循环或程序部分的编译指示(pragmas)命令,或者是完全自动的,在编译时使用主动的数据依赖性分析。此步骤可由例如图1的整体程序分析器及优化器模块30执行。此步骤包括使用本领域内的技术人员应理解的标准数据依赖性分析。步骤215的结果是将用户程序分区为可在附属处理器上并行执行的区域。另外,可对并行化的障碍进行标记以便在下一步骤呈现给用户;这些障碍可包括或者禁止并行化、导致不必要的数据传送,或者需要过度的同步和串行化的依赖性破坏。其他对并行化的障碍也可表现为禁止并行区域在不支持这种操作的附属处理器上执行的语句/机器指令或系统调用的形式。
在下一步骤220,可将并行化建议呈现给用户以便用户进行输入。此步骤可由例如图1的整体程序分析器及优化器模块30和用户接口60执行。在下一步骤225,接收到用户输入。此步骤可由例如图1的整体程序分析器及优化器模块30和用户接口60执行。本领域内的技术人员应理解,此步骤可包括用户接受和/或拒绝的并行化建议。
在下一步骤230,根据任选地接收到的用户输入,任选地注释该整体程序表示,以反映出更新后的可并行化区域。此步骤可由例如图1的整体程序分析器及优化器模块30执行。在下一步骤235,进一步分析该注释的整体程序表示,以确定在并行的附属处理器上执行所述识别出的可并行化区域的成本效率。此步骤包括如在纯功能分区中对处理器类型的分析,但是另外可将这些分析扩展为包括指令序列,这些指令序列包含过量的标量引用、分支指令或较差地执行或者这些附属的并行处理器所不支持的其他类型的代码。在这一点上,对成本模型的另一输入是如下判定,即串行执行所述部分的决策是否会导致并行处理器保持空闲直到遇到下一个有利的并行部分。此步骤可由例如图1的并行化分区模块40执行。如上文更详细地说明的,此步骤可包括分析数据引用模式和其他代码特性,以识别可有利地并行化的代码段。
在下一步骤240,注释整体程序表示以反映识别出的成本模型块。此步骤可由例如图1的并行化分区模块40执行。在下一步骤245,可对该成本模型块应用有效性试探。此步骤可由例如图1的并行化分区模块40执行。本领域内的技术人员应理解,如上文更详细地说明的,有效性试探包括成本/收益试探、数据传送试探、和/或其他适合于成本/收益分析的主题。如上文更详细地说明的,此步骤可包括识别和标记可有利地并行化的那些段。本领域内的技术人员应理解,此步骤可还包括修改程序代码以包括根据需要在处理器之间传送代码和/或数据的指令,以及检查在其他处理器上执行的分区的完成并执行其他适当动作的指令。
在下一步骤250,为可有利地并行化的识别出的成本模型块生成概述过程。此步骤可由例如图1的并行化分区模块40执行。在下一步骤255,编译该概述过程以为已被识别为可有利地并行化的每个成本模型块生成特定于处理器的代码,并且该过程结束。此步骤可由例如图1的并行化分区模块40执行。本领域内的技术人员应理解,此步骤还可包括编译程序代码的其余部分,将所得的后端代码组合成单个程序,并根据该组合的代码生成单个可执行程序。
因此,可根据在异构型多处理环境中的优化策略将计算机程序划分为可并行化的段,针对特定节点类型对这些段进行编译,对修改结果定序以编排此目标系统内的各个节点类型之间的通信。因此,可按与为同构型多处理器系统设计的计算机程序代码相同的方式,来优化为具有异类的或异构型处理组件的多处理器系统设计的计算机程序代码,并对其进行配置以实现某些需要在特定类型的节点上执行的功能。具体地,以将此功能暴露给不同技术级别的程序开发人员的方式,自动或半自动地进行异构型系统的多处理能力的开发。
上面公开的特定实施例仅是说明性的,因为本发明可按不同但等效的方式来修改和实现,这些方式对于受益于本文的教导的本领域技术人员来说是显而易见的。此外,除了下面权利要求所描述的之外,本发明并不局限于这里所示的结构或设计细节。因此很明显,上面公开的特定实施例可被替换或修改,所有这样的变型均被认为落入本发明的范围和精神之内。因此,下面的权利要求中说明了所寻求的保护范围。
权利要求
1.一种用于为异构型多处理器系统进行计算机程序代码并行化和分区的方法,包括接收包括数据引用模式和代码特性的被称为单个源的一个或多个源文件的集合;对该接收到的一个或多个源文件应用并行化分析技术;根据所应用的并行化分析技术,识别该接收到的一个或多个源文件的可并行化区域;分析上述识别出的并行区域的数据引用模式和代码特性,以生成分区策略,以使被分区的对象的实例可并行执行;在上述被分区的对象内插入数据传送调用;在需要的位置插入同步以保持正确执行;根据上述分区策略,对上述单个源文件进行分区;以及生成至少一个异构型的可执行对象。
2.如权利要求1所述的方法,其中生成上述分区策略是自动进行的。
3.如权利要求1所述的方法,其中生成上述分区策略是基于静态的用户指示进行的。
4.如权利要求1所述的方法,其中生成上述分区策略是基于静态和动态的用户输入进行的。
5.如权利要求1所述的方法,其中生成上述分区策略是自动以及基于静态和动态的用户输入进行的。
6.如权利要求1所述的方法,其中还包括生成整体程序表示。
7.如权利要求6所述的方法,其中生成整体程序表示包括过程间分析。
8.如权利要求1所述的方法,其中分析数据引用模式和代码特性包括根据上述识别出的并行区域内和之间的数据引用模式生成成本模型;根据上述识别出的并行区域的代码特性精确该成本模型;以及对该成本模型应用数据传送试探。
9.如权利要求1所述的方法,还包括将上述各识别出的并行区域概述为各唯一的函数。
10.如权利要求9所述的方法,还包括为附属处理器编译上述概述的函数。
11.如权利要求1所述的方法,还包括为主处理器编译未概述的函数。
12.如权利要求8所述的方法,还包括根据编译后的概述的和主函数生成单个可执行程序。
13.一种用于为异构型多处理器系统进行计算机程序代码并行化和分区的计算机程序产品,包括用于接收包括数据引用模式和代码特性的被称为单个源的一个或多个源文件的集合的计算机程序代码;用于对该接收到的一个或多个源文件应用并行化分析技术的计算机程序代码;用于根据所应用的并行化分析技术识别该接收到的一个或多个源文件的可并行化区域的计算机程序代码;用于分析上述识别出的并行区域的数据引用模式和代码特性,以生成分区策略,以使被分区的对象的实例可并行执行的计算机程序代码;用于在上述被分区的对象内插入数据传送调用的计算机程序代码;用于在需要的位置插入同步以保持正确执行的计算机程序代码;用于根据上述分区策略对上述单个源文件进行分区的计算机程序代码;以及用于生成至少一个异构型的可执行对象的计算机程序代码。
14.如权利要求13所述的产品,其中生成分区策略是自动进行的。
15.如权利要求13所述的产品,其生成分区策略是基于静态的用户指示进行的。
16.如权利要求13所述的产品,其中生成分区策略是基于静态和动态的用户输入进行的。
17.如权利要求13所述的产品,其中生成分区策略是自动以及基于静态和动态的用户输入进行的。
18.如权利要求13所述的产品,还包括用于生成整体程序表示的计算机程序代码。
19.如权利要求18所述的产品,其中生成整体程序表示包括过程间分析。
20.如权利要求13所述的产品,其中用于分析数据引用模式和代码特性的计算机程序代码包括用于根据上述识别出的并行区域内和之间的数据引用模式生成成本模型的计算机程序代码;用于根据上述识别出的并行区域的代码特性精确该成本模型的计算机程序代码;以及用于对该成本模型应用数据传送试探的计算机程序代码。
21.如权利要求13所述的产品,还包括用于将上述各识别出的并行区域概述为各唯一的函数的计算机程序代码。
22.如权利要求21所述的产品,还包括用于为附属处理器编译上述概述的函数的计算机程序代码。
23.如权利要求13所述的产品,还包括用于为主处理器编译未概述的函数的计算机程序代码。
24.如权利要求23所述的产品,还包括用于根据编译后的概述的和主函数生成单个可执行程序的计算机程序代码。
全文摘要
本发明提供了一种用于为异构型多处理器系统进行计算机程序代码并行化和分区的方法。接收针对一般的多处理环境的单个源文件。对所接收到的单个源文件应用并行化分析技术。根据所应用的并行化分析技术,识别该单个源文件的并行化区域。分析数据引用模式、代码特性和存储器传送需求,以生成该程序的最优分区。将分区后的区域编译成适合的指令集体系结构,并生成单个绑定可执行文件。
文档编号G06F9/45GK1783014SQ20051012367
公开日2006年6月7日 申请日期2005年11月18日 优先权日2004年12月2日
发明者J·K·P·奥布赖恩, K·M·奥布赖恩 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1