CN1949176A - 用于管理试探特性的方法和系统 - Google Patents
用于管理试探特性的方法和系统 Download PDFInfo
- Publication number
- CN1949176A CN1949176A CNA2006101321823A CN200610132182A CN1949176A CN 1949176 A CN1949176 A CN 1949176A CN A2006101321823 A CNA2006101321823 A CN A2006101321823A CN 200610132182 A CN200610132182 A CN 200610132182A CN 1949176 A CN1949176 A CN 1949176A
- Authority
- CN
- China
- Prior art keywords
- heuristic properties
- heuristic
- properties
- conversion
- behavior
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000005457 optimization Methods 0.000 claims abstract description 40
- 238000004590 computer program Methods 0.000 claims abstract description 7
- 238000006243 chemical reaction Methods 0.000 claims description 81
- 238000012986 modification Methods 0.000 claims description 51
- 230000004048 modification Effects 0.000 claims description 51
- 230000007246 mechanism Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 abstract description 9
- 230000009466 transformation Effects 0.000 abstract description 7
- 230000008859 change Effects 0.000 abstract description 5
- 239000003607 modifier Substances 0.000 abstract description 4
- 230000006399 behavior Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 230000001276 controlling effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012797 qualification Methods 0.000 description 4
- 238000005538 encapsulation Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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
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)
Abstract
提供用于管理试探特性的方法、系统和计算机程序产品,该试探特性用于控制数据处理系统中的编译器中或其它用试探方式控制的软件中的优化变换。用于控制用试探方式控制的软件中的优化变换的计算机实现的方法包括:限定用于控制优化变换的行为的至少一个试探特性,和为优化变换的行为的各希望的变化产生至少一个试探特性修改元。然后通过使用至少一个试探特性修改元,修改至少一个试探特性中的至少一个以实现优化变换的行为的每一希望的变化。
Description
技术领域
本发明一般涉及数据处理领域,更具体地,涉及用于管理试探特性的计算机实现的方法、系统和计算机程序产品,该试探特性用于控制数据处理系统中的编译器中或其它用试探方式控制的软件中的优化变换。
背景技术
编译器是将以高级、人可读的程序设计语言写成的源代码程序翻译成可被计算机执行的机器语言形式的等同的对象代码程序的机构。对于各个主源程序和多个附加的源程序或子例程,编译器将程序中的各个语句翻译成等同的机器语言。编译器的输出是与输入的源代码程序对应的多个对象代码程序。链接程序然后组合由编译器产生的对象代码程序(即,供给程序部分之间的互连链接),以产生单个机器可执行程序。
多个编译器优化使用试探值以控制例如对多个分支、缺省展开因子(default unroll factor)的限制等的行为。这些试探值通常基于从编译基准程序和其它程序积累的经验被调整。在一些情况下,基于命令行选项选择不同的试探值,例如,可以根据目标处理器选择不同的缺省展开因子。
除了试探特性的缺省值,诸如请求产生的代码变得简洁(即,相对于较快的代码,更偏爱较小的尺寸)的一些命令行修改元(modifier)要求修改或重设某些试探值,例如,限制展开因子。
当前的使得各个优化变换在逻辑上确定其试探特性的缺省的方法具有在变换代码内封装缺省值选择的优点。但这样做具有变得更加难以从中心位置控制多个探试特性的缺点。结果,需要在代码中的这些试探值被确定(和使用)的每个位置处理如何对不同的情况选择这些试探值的策略的任何变化。由于需要对可能受新的控制影响的每一种试探特性定位和更新,因此对编译器添加诸如紧致控制或新的优化级的对多个试探值具有广泛影响的功能会十分麻烦且易于出错。
试探值的替代性解决方案是,包含中心数据库(或数据结构,类似于Java特性的思想-Java开发工具箱中的用于管理特性的类,该类可被存储、被转储(dump)到文件和被读回;和系统特性-可通过-D命令行选项不被考虑(override)的特定子集)中的所有的试探值,然后,当添加或修改新的优化控制时,将它们适当更新/修改。这种方法的缺点是缺少封装,即,如果对需要改变其试探特性的缺省的变换的逻辑做任何变化,编译器编写员(writer)需要确定在管理这些试探法的中心数据库中也反映这些变化。中心数据库的另一缺点在于,访问会被频繁访问的试探特性增加开销。虽然这些值可被缓存,但这样做使代码增加不必要的复杂性,并要求编译器编写员知道缓存技术。
因此,存在对于更有效地管理试探特性的机构的需要,该试探特性用于控制数据处理系统中的编译器中或其它用试探方式控制的软件中的优化变换。
发明内容
本发明提供用于管理试探特性的方法、系统和计算机程序产品,该试探特性用于控制数据处理系统中的编译器中或其它用试探方式控制的软件中的优化变换。用于控制用试探方式控制的软件中的优化变换的计算机实现的方法包括:限定用于控制优化变换的行为的至少一个试探特性,和为优化变换的行为的各希望的变化产生至少一个试探特性修改元。然后通过使用至少一个试探特性修改元,修改至少一个试探特性中的至少一个以实现优化变换的行为的每一希望的变化。
附图说明
在所附的权利要求书中阐述认为表示本发明的特征的新型性特征。但是,通过结合附图阅读示例性实施例的以下详细说明,将最好地理解本发明本身、优选的使用方式及其目的和优点,其中,
图1是可实现本发明的多个方面的数据处理系统的图示;
图2是表示可实现本发明的多个方面的数据处理系统的框图;
图3是示意性地表示可实现本发明的多个方面的编译器系统的框图;
图4是表示根据本发明的示例性实施例的、用于控制数据处理系统中的用试探方式控制的软件中的优化变换的方法的流程图;
图5是表示根据本发明的示例性实施例的、用于限定用于控制用试探方式控制的软件中的优化变换的方法的流程图。
具体实施方式
提供的图1~2是可实现本发明的实施例的数据处理环境的示例性示图。应当理解,图1~2仅是示例性的,意图不在于关于可实现本发明的方面或实施例的环境声明或意旨任何限制。在不背离本发明的精神和范围的情况下,可以对解释的环境做各种修改。
现在参照附图,特别是参照图1,示出可实现本发明的多个方面的数据处理系统的图示。图中的计算机100包括系统单元102、视频显示终端104、键盘106、可包含软盘驱动器和其它类型的固定和可移动存储介质的存储设备108、和鼠标110。个人计算机100可包括其它输入设备,诸如,例如,游戏杆、触摸板、触摸屏、跟踪球和麦克风等。可通过使用任何适当的计算机,诸如作为位于Armonk,New York的国际商用机器公司(International Business Machines Corporation)的产品的IBM eServer计算机或IntelliStation计算机,实现计算机100。虽然示出的示图表示计算机,但也可以以诸如网络计算机的其它类型的数据处理系统实现本发明的其它实施例。计算机100还优选包括在计算机100内在操作中通过驻留在计算机可读介质中的系统软件实现的图形用户界面(GUI)。
现在参照图2,示出可实现本发明的多个方面的数据处理系统的框图。数据处理系统200是诸如图1中的计算机100的计算机的例子,其中,可放置实现本发明的处理的代码或指令。在示出的例子中,数据处理系统200使用包含北桥和存储控制器集线器(MCH)202和南桥和输入/输出(I/O)控制器集线器(ICH)204的集线器结构。处理器206、主存储器208和图形处理器210与北桥和存储控制器集线器202连接。例如,图形处理器210可通过加速图形端口(AGP)与MCH连接。
在示出的例子中,局域网(LAN)适配器212与南桥和I/O控制器集线器204连接,音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口,其它通信端口232和PCI/PCIe设备234通过总线238和总线240与南桥和I/O控制器集线器204连接。PCI/PCIe设备可包括例如以太网适配器、内插式卡、和用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe则不。ROM 224可以为例如闪速二进制输入/输出系统(BIOS)。硬盘驱动器226和CD-ROM驱动器230可使用例如集成驱动电子技术(IDE)或串行高级技术配件(SATA)接口。超级I/O(SIO)设备236可与南桥和I/O控制器集线器204连接。
操作系统在处理器206上运行,并协调和提供图2中的数据处理系统200内的各种部件的控制。操作系统可以为市售的操作系统,诸如MicrosoftWindowsXP(Microsoft和Windows是在美国、其它国家或同时在美国和其它国家的Microsoft Coporation的商标)。面向对象的程序设计系统,诸如JavaTM程序设计系统,可与操作系统一起运行,并提供从Java的操作程序或在数据处理系统200上执行的应用到该操作系统的调用(Java是在美国、其它国家或同时在美国和其它国家的Sun Microsystems,Inc.的商标)。
用于操作系统、面向对象的程序设计系统、应用或程序的指令位于诸如硬盘驱动器226的存储设备中,并可被加载到主存储器208中用于被处理器206执行。通过使用可位于诸如例如主存储器208、只读存储器224或一个或更多个外设中的计算机执行的指令,处理器206执行本发明的处理。
本领域技术人员将理解,图1~2中的硬件可根据实现而改变。除了图1~2中示出的硬件或作为它们的替代,可以使用诸如闪速存储器、等同的非易失性存储器或光盘驱动器等的其它内部硬件或外设。并且,本发明的处理可被应用于多处理器数据处理系统。
在一些示例性例子中,数据处理系统200可以是配有闪速存储器以提供用于存储操作系统文件和/或用户产生的数据的非易失性存储器的个人数据助理(PDA)。总线系统可由一条或更多条诸如系统总线、I/O总线和PCI总线的总线构成。当然,可以通过使用为在连接到通信结构或构造上的不同部件或设备之间传输数据而提供的任何类型的通信结构或构造,实现总线系统。通信单元可包含一个或更多个用于发送和接收数据的设备,诸如调制解调器或网络适配器。存储器可例如为主存储器208或在北桥和存储控制器集线器202中的高速缓存。处理单元可包括一个或更多个处理器或CPU。图1~2中的示例和上述例子不意味着意旨结构限制。例如,除了采取PDA的形式外,数据处理系统200也可为板状(tablet)计算机、膝上型计算机或电话设备。
本发明提供用于管理试探特性的计算机实现的方法、系统和计算机程序产品,该试探特性用于控制数据处理系统中的编译器中或其它用试探方式控制的软件中的优化变换。根据本发明的示例性实施例,为了调整试探特性,将“试探修改元(modifier)”应用于多组试探特性。
图3是示意性地表示可实现本发明的多个方面的编译器系统的框图。该系统由附图标记300总体表示,并且,如图所示,诸如程序员的用户可限定以高级、人可读语言写成的源代码程序302。一旦源代码程序302被限定,编译器304就将源代码程序翻译成机器语言形式的等同的对象代码程序306,使得它可由计算机执行。可以以诸如图2中所示的数据处理系统200的数据处理系统实现编译器304。
本发明提供封装和中心管理两者以及较低的开销的有利特征。另外,本发明不必修改编译器源就可对试探值提供粗粒(coarse-grain)和细粒(fine-grain)控制,同时提供基于“修改逻辑”完成试探特性的“完全修改”的内置逻辑。例如,根据本发明的示例性实施例,当施加紧致控制修改时,所有相关的试探值被修改以满足由“紧致”所指的约束。这些完全修改也可以以一个优先于另一个的方式施加,从而有助于实现根据用户要求(通过命令行选项给出)对编译器预期的不同行为的简化。例如,可以相互在其上组合“紧致”控制和“偏好编译速度”控制以提供期望的行为。通过接连对中心管理的试探上下文(“数据库”)施加这里也被称为“试探上下文修改元”的适当的“完全修改元”,完成这种组合。
根据本发明的示例性实施例,各优化变换被赋予表示变换的缩略语,即,唯一的没有空格的文本串。例如,展开和阻塞(unroll-and-jam)变换由缩略语“unrolljam”表示。索引集分割(Index-Set Splitting)变换由缩略语“ixsplit”表示,等等。
对于每一变换,限定一组控制变换的“行为”的试探特性;并且,对各特性赋予缩略语。缩略语优选被选择为足够通用,使得如果多个优化变换共享同一试探特性,可以为该试探特性使用单一的缩略语。用于各个被控制的变换的单独情况仍被使用,使得它们可被独立地控制。但是,共同的缩略语可提供迅速、容易地控制取决于该试探特性的所有变换的方式。例如,“Use Register Pressure”试探特性被赋予“regpr”缩略语。多个变换受这种试探特性影响,包括Unroll-and-Jam和Predictive Commoning。
对于试探特性的各实例,定义以下分量:
1.缩略语-如上所述,用于表示试探特性的、没有空格的短名。以下将该分量称为<abbrev>。
2.变换缩略语-其中试探特性的该实例被定义且试探特性所控制的优化变换的缩略语。以下将该分量称为<transabbrev>。
3.缺省值-是试探特性的缺省值。即,如果没有施加于试探特性的修改,那么它将是试探特性值。
4.范围-该特性容许的容许值的范围。例如,对于逻辑(布尔(Boolean))试探特性,该值的范围可以为{Off,On}或{False,True}或{0,1}。范围可被限定为子范围的并集。即,试探特性的范围可被限定为{1~4,8~15},这意味着该特性的容许值为从1到4或从8到15的任意值。因此,2和9是该范围中的容许值,但7和19不是容许值(假定数值范围是1个或更多个按顺序的子范围的序列,并且各子范围不交迭)。
5.说明-试探特性的短的文本说明、或由产品支持的一组本机(native)语言中的、包含试探特性的说明的多语言目录的关键字。
试探上下文是试探特性实例登记的数据结构。各优化变换对其限定的试探特性直接引用;但是,当试探特性被限定时,它在一些试探上下文中自动登记。试探上下文允许对在该上下文中登记的所有试探特性进行集中访问。通过使用由特性的“<transabbrev>.<abbrev>”构成的关键字,一般访问试探上下文中的试探特性实例。例如,要访问Unroll-and-jam变换的“Use Register Pressure”试探特性,使用关键字“unrolljam.regpr”。
试探上下文修改元是一组(<key>,<operator>,<value>)三元组,这里<operator>是{“=”,“<”,“>”}中的一个,<key>和<value>是其中没有空格的字符串。例如,以下的试探上下文修改元{(“unrolljam.regpr”,=,“false”),(“ixsplit.maxibranch”,<,3)}将Unroll-and-jam变换的“Use Register Pressure”试探特性修改为“false”,并增加对“索引集分割”变换的“最大引起分枝”试探特性的临时约束使其小于3(参见下面关于使用临时约束的说明)。
试探上下文可登记以被登记的次序施加的多个试探上下文修改元。在试探特性在上下文中登记时完成任意修改元的施加。这使得试探上下文修改元能够在变换实际开始前、或者任何试探特性在试探上下文中登记之前被登记。这还使得试探特性值的修改基于修改的源(如将在下面解释的那样,允许用于修改的多个“源”:变换本身、试探上下文修改元,和外部文件或命令行选项)被给予优先级。
当使用涉及只包含试探特性的<abbrev>的关键字的修改元时,增加额外的灵活性。例如,试探上下文修改元{(“regpr”,=,“false”)}将导致限定它的任何变换的“Use Register Pressure”试探特性具有值“false”。另一方面,由于修改元的优先级,因此,除了希望被使用的变换外,可以在任何地方非常容易地关闭登记压力(register pressure)的使用。例如,除了Unroll-and-jam,试探上下文修改元{(“regpr”,=,“false”),(“unrolljam.regpr”,=,“true”)}将在每一个变换中关闭登记压力的使用。
对试探上下文修改元增加简单的语法分析分量和通过使用输入字符串允许试探上下文修改元实例的构造大大简化这些修改元的限定。例如,可以通过使用字符串“regpr=false:unrolljam.regpro=true”限定来自上述例子的试探上下文修改元。
增加解析器极大增加了的灵活性。例如,所有的试探特性和它们在给定的上下文中的值可随“注释”(“#”字符被定义为在行的末尾结束的注释的开始)被转储到文件。注释可包含对于各试探特性、其缺省值和允许的值的范围的说明文本。然后可使用简单的文本编辑器以修改文件中的特性值,并将该文件反馈回希望的试探上下文修改元的结构中。通过考虑可以以试探上下文修改元字符串作为它的最后施加到任何试探特性上的值的命令行选项,还可以使这种灵活性更进一步。
在解析器中,“:”或空格用作试探特性值的定义之间的分隔符。上述例子使用“:”是因为它模拟可在命令行上给出这些选项的方式。这通过以下步骤简化调节编译器的过程:使用命令行以调节某些试探特性而不需要每次重建编译器,然后将作为字符串的该命令行粘贴到试探上下文修改元的结构中。
如上所述,试探上下文修改元包含一组(<key>,<operator>,<value>)三元组。上面说明了赋值算符“=”的使用。也就是说,修改元可包含特性的新值的赋值(注意,该值必须在为该特性限定的容许值的范围内)。
“<”(小于)算符用于对试探特性的值设定“临时约束”(注意:临时约束仅适于数值的试探特性)。即,在修改元被施加时,试探特性的值必须在为该特性限定的容许范围内并在可能的情况下满足该约束。例如,上面提到的试探特性“ixsplit.maxibranch”可具有缺省值4和1~16的容许值范围。要施加的修改元“ixsplit.maxibranch<3”要求该特性的值将最大为2。由于在施加修改元之前,试探特性临时包含值4(其是缺省值,并大于要求的最大值),因此用2设定试探特性“ixsplit.maxibranch”。
但是,如果试探特性“ixsplit.maxibranch”的缺省值被设为1(或者,如果该值被前面的一些试探上下文修改元设为1),那么,由于当前的值已满足约束,因此,施加修改元“ixsplit.maxibranch<3”不会影响该特性的值。
“>”(大于)算符以类似的方式被使用(对特性的值要求临时下边界而不是临时上边界)。回到上面的“ixsplit.maxibranch”试探特性包含临时值4(容许范围为1~16)的例子,如果修改元“ixsplit.maxibranch>20”被施加,那么用作为最接近要求的值的容许值(即,在特性的容许值范围内)的值16设定试探特性“ixsplit.maxibranch”。
应当清楚,如果例如“a.b”的试探特性的容许值范围是例如(1~4,8~16)的多范围,并且“a.b”试探特性具有比方说3的当前值,那么临时约束“a.b>6”会导致将“a.b”设定为值8。
临时约束算符(即,算符“<”和“>”)被限定为比赋值算符(即,算符“=”)更“宽松”,因为希望能够将它们以一个优先于另一个的方式施加并尽可能多地保留以前的设定。即,如果特性的值被设定为一些较小的值,那么设定下边界的任何约束会试图保持该较小值(即,如果该值小于下边界,那么将它设定为下边界)。如果该值较大并且较小的下边界被设定,那么该下边界不会对该值产生任何影响(即,该值会仍为与被缺省或被以前的修改元设定的一样大)。
使用试探上下文修改元的方法使得能够对编译器限定“试探方面”。即,确定编译器的一般的希望的行为的、用于变换的一组行为(由值或临时约束确定)。试探方面的例子是“紧致性”。一般地,紧致性需要优化变换以产生“紧致的”代码,即,产生的代码应先于代码速度优先考虑代码尺寸。这可要求关闭一些优化,并约束其它变换的行为。根据本发明的示例性实施例,“紧致性”被限定为被不同的变换限定的试探特性的一组值修改。对一些试探特性也使用临时约束修改元。当编译器的用户规定紧致的选项时,“紧致性”方面然后被限定为向试探上下文登记的试探上下文修改元。得到的由优化变换登记的试探特性的值会导致编译器的行为改变,即,产生紧致码。
“试探方面”的另一例子是“偏好编译速度”。一般地,“偏好编译速度”要求优化变换相对于产生的代码的性能更偏好较快的编译时间。这意味着,某些变换会需要被关闭,并且其它变换需要被约束(或部分约束)以使得它们能够更快(牺牲潜在的运行时间性能增益)。当编译器的用户需要更快的编译时间时,“偏好编译速度”方面然后被限定为向试探上下文登记的试探上下文修改元。
用于管理试探特性的架构的设计使得能够以一个优先于另一个的方式施加试探上下文修改元。这意味着,可以在施加任何优化变换之前以偏好的次序的试探上下文登记它们,并且,当它们通过变换登记时,将它们施加到试探特性。由于可以以尽可能少的相互间的矛盾简单地以一个优先于另一个的方式施加这些试探上下文修改元,因此这使得例如能够容易地支持在“紧致性”和“偏好编译速度”两个方面编译器的用户的请求。
为了进一步阐明本发明的这一方面,以下解释在这种施加过程中特定的试探特性上发生了什么以及这些值如何影响编译器。
首先,确定施加修改元的次序。由于最新施加最新的修改元,因此这意味着它具有较高的优先级。因此,“紧致性”修改元被限定为被最新施加(由于在紧致性和编译速度均被请求时紧致性比编译速度优先)。
假定“偏好编译速度”关闭,比方说,“循环合并(Loop Fusion)”(通过使各变换限定它在执行前检查的“启用的”试探特性,实现变换的关闭。因此,如果任何“启用的”特性被设定为关,那么变换将被关闭)。“偏好编译速度”实际上更主动(并对此使用架构的另一特征)。它通过使用一般的“启用的”缩略语关闭所有的变换以完成这一点,然后仅打开变换的子集,例如,“unrolliam.enabled=true”。这样,当新的变换被添加到编译器时,它们将通过“偏好编译速度”方面的缺省被关闭,并且,如果被选择为这样做(即,如果它们足够快),那么它们可被启用。
还假定“偏好编译速度”对于所有的变换关闭Register Pressure的使用(“regpr=false”),并在索引集分割变换中对“最大引起分枝(inductive branch)”试探特性设定上边界临时约束(“ixsplit.maxibranch<3”)。
“紧致性”方面可对循环合并设定一些特性(例如,“fusion.guarded=false”),但是,由于“紧致性”不具体打开循环合并,因此,使用其在关闭合并前施加的“偏好编译速度”,当这两个修改元被组合时,该特性的设定将没有任何影响。
“紧致性”方面可设定在索引集分割变换中对“最大引起分枝”试探特性确定较小的上边界的“ixsplit.maxibranch<2”。当被优先施加于“偏好编译速度”方面时,这会导致“ixsplit.maxibranch”的试探值被设为1。由于这里使用临时约束替代绝对值,因此,如果在“偏好编译速度”方面之前而不是在其后施加“紧致性”方面,不会出现什么差别,这是因为,在“ixsplit.maxibranch<3”之前施加“ixsplit.maxibranch<2”仍会导致“ixsplit.maxibranch”被设为1。
另一方面,施加“其它循环合并”方面(如果已产生了一个),可能会明确地打开循环合并(如果它过去是关),和循环合并的其它子特征,并且还启用更多的索引集分割(即,增加“ixsplit.maxibranch”的下边界,以使得能够将得到的循环分成不包含引起分枝的单独的嵌套(nest)(更容易优化))。虽然这会在一般水平上与“紧致性”和“偏好编译速度”矛盾,但这些修改会特别适用于循环合并和索引集分割,由此不影响对其它变换所做的任何修改。结果是,除了受附加的修改元影响的两个变换,由“紧致性”或“偏好编译速度”(或两者共同)意旨的一般行为会仍存在。
从以上说明可以看出,根据本发明的示例性实施例的架构使得能够极灵活地控制试探特性。试探值的本质在于它们通常不是绝对的(即,不同的方面可对这些值具有不同的影响),并且需要一些调整工作以为试探特性设定缺省,但是,为不同的用户选项和选项的不同组合调整不同的值太复杂。本发明的架构允许限定与用户选项对应的“试探方面”,和组合不同的方面(在其它的情况中,由于临时约束的使用)以产生希望的组合的行为。
以下说明提供根据本发明的示例性实施例的用于实现用于管理数据处理系统中的编译器中或其它用试探方式控制的软件中的试探特性的架构的机构的概要。
(HeuristicContext)
试探上下文包含试探特性的散列表。在上下文中登记的每一种试探特性通过使用其“关键字”(即,由“<transabbrev>.<abbrev>”构成的字符串)作为散列表的关键字,使对其的引用添加到该散列表上。
试探上下文还包含HeuristicContextModifier引用的有序列表。在HeuristicContext中登记HeuristicContextModifier的过程将对HeuristicContextModifier的引用附加到有序的列表上。
各三元组的“关键字”字段被用于访问表中的条目,试探上下文修改元只是一组三元组(关键字、算符、值),除了作为散列表被管理,此外没有更多的逻辑。当试探特性在HeuristicContext中登记时,发生实际逻辑。
(登记试探特性)
对于正在被登记的各试探特性:
以“<transabbrev>.<abbrev>”组合字符串作为关键字和试探特性对象引用作为数据,在试探特性的散列表中条目被加入。
试探特性的值被设为其指定的缺省值(其在架构中是试探特性的定义的一部分)。
对于按照向HeuristicContext登记的次序的各个HeuristicContextModifier(用于定义试探修改的命令行选项被附加作为最新的(last)修改元):
如果HeuristicContextModifier包含三元组(关键字、算符、值),其中,关键字是“<transabbrev>.<abbrev>”,那么,
参照试探特性以及三元组中的算符和值调用SetHeuristicPropertyValue。
另外,如果HeuristicContextModifier包含三元组(关键字、算符、值),其中,关键字是“<abbrev>”,那么,
参照试探特性以及三元组中的算符和值调用SetHeuristicPropertyValue。
(过程SetHeuristicPropertyValue(ref, op,val))
输入:
ref-对试探特性的引用
op-算符(“<”“=”“>”之一)
val-用于修改试探特性的值
输出:
可修改ref.value的值
算法:
如果算符是“=”,那么
将ref.value设为val
另外,如果算符是“<”,并且ref.value大于或等于val,那么
将ref.value设为ClosestsLowerInRange(ref,val)
另外,如果算符是“>”,并且ref.value小于或等于val,那么
将ref.value设为ClosestsHigherInRange(ref,val)
(功能ClosestsLowerInRange(ref,val))
输入:
ref-对试探特性的引用
val-用于修改试探特性的值
输出:
仍小于val的试探特性ref的最大“容许”值(如果一个存在,或者否则在ref.Range中的最小的容许值)
算法:
将closest_range设为nil
对于从第一个到最后一个的ref.Range中的各个子范围[下边界,上边界],并在下边界小于val时,
将closest_range设为[下边界,上边界]
如果closest_range是一些[下边界,上边界](即,不是nil),那么
如果上边界大于或等于val,那么返回结果val-1
否则,返回上边界
否则,
使[下边界,上边界]为ref.Range中的第一个子范围
返回下边界
(功能ClosestsHigherInRange(ref,val))
输入:
ref-对试探特性的引用
val-用于修改试探特性的值
输出:
仍大于val的试探特性ref的最小“容许”值(如果一个存在,或者否则在ref.Range中的最大的容许值)
算法:
将closest_range设为nil
对于从最后一个到第一个的ref.Range中的各个子范围[下边界,上边界],并在上边界大于val时,
将closest_range设为[下边界,上边界]
如果closest_range是一些[下边界,上边界](即,不是nil),那么
如果下边界小于或等于val,那么返回结果val+1
否则,
使[下边界,上边界]为ref.Range中的最后的子范围
返回上边界
图4是表示根据本发明的示例性实施例的、用于控制数据处理系统中的用试探方式控制的软件中的优化变换的方法的流程图。该方法由附图标记400总体表示,并从识别要执行的各个优化变换(步骤402)开始。至少一个试探特性然后被限定,用于控制要执行的各优化变换的行为(步骤404)。
图5是更详细地解释步骤404的流程图。具体而言,图5是表示根据本发明的示例性实施例的、用于限定用于控制用试探方式控制的软件中的优化变换的试探特性的方法的流程图。该方法由附图标记500总体表示,并且,对于被限定的各试探特性,包含:设定识别试探特性的缩略语和说明(步骤502和504),设定试探特性的缺省值(步骤506),和设定试探特性容许的容许值的范围(步骤508)。容许值的范围可包含作为子范围的序列给出的一组子范围,这些子范围以数值上的升序并且不交迭。
返回图4,在用于控制各优化变换的行为的试探特性在步骤404中被限定后,对用试探方式控制的软件的各限定的行为变化产生一组试探特性修改元(步骤406)。试探修改元然后被组合在一起,以形成可用于改变用试探方式控制的软件的行为(或整个行为)的特定方面的试探上下文修改元(步骤408),并且,需要被修改以实现希望的优化的行为的试探特性然后被修改以完成处理(步骤410)。每当要被添加的各行为变化需要时,步骤406~410可被重复。
本发明因此提供用于管理试探特性的方法、系统和计算机程序产品,该试探特性用于控制数据处理系统中的编译器中或其它用试探方式控制的软件中的优化变换。用于控制用试探方式控制的软件中的优化变换的计算机实现的方法包括:限定用于控制优化变换的行为的至少一个试探特性,和为优化变换的行为的各希望的变化产生至少一个试探特性修改元。然后通过使用至少一个试探特性修改元,修改至少一个试探特性中的至少一个以实现优化变换的行为的每一希望的变化。
本发明可采取完全为软件实施例或同时包含硬件和软件要素的实施例的形式。在优选实施例中,以包含但不限于固件、常驻软件、微代码等的软件实现本发明。
并且,本发明可采取可从提供计算机可用或计算机可读程序代码的计算机可用或计算机可读介质访问的计算机程序产品的形式,该计算机可用或计算机可读程序代码被计算机或任何指令执行系统使用或与其相关。为了说明这一点,计算机可用或计算机可读介质可以为可包含、存储、传送、传播或传输被指令执行系统、装置或设备使用或与其相关的程序的任何有形装置。
该介质可以为电子、磁、光、电磁、红外或半导体系统(或装置或设备)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移除计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。当前的光盘的例子包括紧致盘-只读存储器(CD-ROM)、紧致盘-读/写(CD-R/W)和DVD。
适用存储和/或执行程序代码的数据处理系统将包括通过系统总线与存储元件直接或间接耦合的至少一个处理器。存储元件可包含在程序代码的实际执行中使用的局部存储器、大容量存储器和为了减少在执行中从大容量存储器检索代码的次数提供至少一些程序代码的暂时存储的高速缓冲存储器。
输入/输出或I/O设备(包含但不限于键盘、显示器、指示装置等)可直接或通过居间的I/O控制器与系统耦合。
网络适配器也可与系统耦合,以使得数据处理系统变得能够通过居间的专用或公共网络与其它数据处理系统或远程打印机或存储设备耦合。调制解调器、电缆调制解调器和以太卡只是几种当前可用的类型的网络适配器。
为了解释和说明给出了本发明的说明书,其目的不在于穷尽或将本发明限于公开的形式。对于本领域技术人员来说,许多修改和变化是显而易见的。为了更好地解释本发明的原理、实际应用,并使得其它的本领域技术人员能够理解本发明的适于考虑的特定用途的具有各种修改的各种实施例,选择和说明了实施例。
Claims (23)
1.一种计算机实现的方法,用于控制用试探方式控制的软件中的优化变换,该计算机实现的方法包括:
限定用于控制优化变换的行为的至少一个试探特性;
为优化变换的行为的各希望的变化产生至少一个试探特性修改元;和
通过使用至少一个试探特性修改元,修改至少一个试探特性中的至少一个以实现优化变换的行为的每一希望的变化。
2.根据权利要求1的计算机实现的方法,其中,限定用于控制优化变换的行为的至少一个试探特性包含以下步骤:
识别各个至少一个试探特性;和
为各个至少一个试探特性设定容许值的范围。
3.根据权利要求2的计算机实现的方法,其中,识别各个至少一个试探特性包括:
提供表示各个至少一个试探特性的缩略语。
4.根据权利要求3的计算机实现的方法,其中,识别各个至少一个试探特性还包括:
提供各个至少一个试探特性的文本说明。
5.根据权利要求2的计算机实现的方法,其中,为各个至少一个试探特性设定容许值的范围包括:
为各个至少一个试探特性中的至少一个设定容许值的多个子范围。
6.根据权利要求2的计算机实现的方法,其中,限定用于控制优化变换的行为的至少一个试探特性还包括:
为各个至少一个试探特性设定缺省值。
7.根据权利要求1的计算机实现的方法,其中,对于各个至少一个试探特性修改元,为优化变换的行为的各希望的变化产生至少一个试探特性修改元包括:
形成表示相关的试探特性的标识符;
形成用于识别对相关的试探特性进行的修改的算符;和
形成用于修改的值。
8.根据权利要求7的计算机实现的方法,其中,形成用于识别对相关的试探特性进行的修改的算符包括:
形成用于对相关的试探特性赋予新的值的赋值算符。
9.根据权利要求7的计算机实现的方法,其中,形成用于识别对相关的试探特性进行的修改的算符包括:
形成用于对相关的试探特性的值设定临时约束的临时约束算符,其中,临时约束算符包含大于临时约束算符和小于临时约束算符中的一个。
10.根据权利要求1的计算机实现的方法,其中,至少一个试探特性缩略语指示多个试探特性,并且,该计算机实现的方法还包括:
为被所述至少一个试探特性缩略语指示的所有多个试探特性设定第一值;和
为包含多个试探特性中的至少一个的多个试探特性的特定子集设定与第一值不同的值,其中,用表示其中试探特性被限定的优化变换的变换缩略语和试探特性缩略语指示在多个试探特性的子集中包含的各个至少一个试探特性。
11.根据权利要求1的计算机实现的方法,其中,为优化变换的行为的各希望的变化产生至少一个试探特性修改元包含以下步骤:
为优化变换的行为的至少一个希望的变化产生多个试探特性修改元;并且,通过使用至少一个试探特性修改元修改至少一个试探特性中的至少一个以实现优化变换的行为的每一希望的变化包含以下步骤:
通过以优先级的次序以一个优先于另一个的方式使用多个试探特性修改元,修改至少一个试探特性中的一个。
12.根据权利要求1的计算机实现的方法,还包括:
将各个至少一个试探特性修改元组合到试探上下文修改元以实现优化变换的行为的希望的变化。
13.根据权利要求1的计算机实现的方法,其中,用试探方式控制的软件包含编译器。
14.一种计算机程序产品,包括:
具有计算机可用的程序代码的计算机可用介质,该计算机可用的程序代码用于执行权利要求1~13中的任意一项的方法中的步骤。
15.一种用于控制数据处理系统中的用试探方式控制的软件中的优化变换的系统,包括:
用于限定用于控制优化变换的行为的至少一个试探特性的机构;
用于为优化变换的行为的各希望的变化产生至少一个试探特性修改元的机构;和
用于通过使用用于实现优化变换的行为的各希望的变化的至少一个试探特性修改元修改至少一个试探特性中的至少一个的机构。
16.根据权利要求15的系统,其中,用于限定用于控制优化变换的行为的至少一个试探特性的机构包含:
用于识别各个至少一个试探特性的试探特性标识符;和
用于各个至少一个试探特性的容许值的范围。
17.根据权利要求16的系统,其中,试探特性标识符包含表示各个至少一个试探特性的缩略语。
18.根据权利要求17的系统,其中,试探特性标识符还包含各个至少一个试探特性的文本说明。
19.根据权利要求16的系统,其中,用于限定用于控制优化变换的行为的至少一个试探特性的机构还包含用于各个至少一个试探特性的缺省值。
20.根据权利要求15的系统,其中,对于各个至少一个试探特性,用于为优化变换的行为的各希望的变化产生至少一个试探特性修改元的机构包含:
表示相关的试探特性的标识符;
用于识别对相关的试探特性进行的修改的算符;和
用于修改的值。
21.根据权利要求20的系统,其中,用于识别对相关的试探特性进行的修改的算符包含用于对相关的试探特性赋予新值的赋值算符和用于对相关的试探特性的值设定临时约束的临时约束算符中的一个。
22.根据权利要求15的系统,还包括:
组合用于实现优化变换的行为的希望的变化的各个至少一个试探特性修改元的试探上下文修改元。
23.根据权利要求15的系统,其中,用试探方式控制的软件包含编译器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/249,542 US20070089104A1 (en) | 2005-10-13 | 2005-10-13 | Method and system for managing heuristic properties |
US11/249,542 | 2005-10-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1949176A true CN1949176A (zh) | 2007-04-18 |
CN100399272C CN100399272C (zh) | 2008-07-02 |
Family
ID=37949563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101321823A Expired - Fee Related CN100399272C (zh) | 2005-10-13 | 2006-10-12 | 用于管理试探特性的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US20070089104A1 (zh) |
CN (1) | CN100399272C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100272885A1 (en) | 2006-08-16 | 2010-10-28 | SeekTech, Inc., a California corporation | Marking Paint Applicator for Portable Locator |
US8127281B2 (en) * | 2007-12-12 | 2012-02-28 | International Business Machines Corporation | Method and apparatus for efficient multiple-pattern based matching and transformation of intermediate language expression trees |
US8495558B2 (en) * | 2008-01-23 | 2013-07-23 | International Business Machines Corporation | Modifier management within process models |
US9329846B1 (en) * | 2009-11-25 | 2016-05-03 | Parakinetics Inc. | Cooperative program code transformation |
US9444674B2 (en) | 2012-10-02 | 2016-09-13 | Microsoft Technology Licensing, Llc | Heuristic analysis of responses to user requests |
JP6160232B2 (ja) * | 2013-05-17 | 2017-07-12 | 富士通株式会社 | コンパイルプログラムおよびコンパイル方法 |
US10105723B1 (en) | 2016-06-14 | 2018-10-23 | SeeScan, Inc. | Trackable dipole devices, methods, and systems for use with marking paint sticks |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2102089C (en) * | 1993-10-29 | 1999-05-25 | David M. Gillies | Recompilation of computer programs for enhanced optimization |
US6718541B2 (en) * | 1999-02-17 | 2004-04-06 | Elbrus International Limited | Register economy heuristic for a cycle driven multiple issue instruction scheduler |
US6922829B2 (en) * | 1999-10-12 | 2005-07-26 | Texas Instruments Incorporated | Method of generating profile-optimized code |
CA2288614C (en) * | 1999-11-08 | 2004-05-11 | Robert J. Blainey | Loop allocation for optimizing compilers |
US7120902B2 (en) * | 2000-12-04 | 2006-10-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for automatically inferring annotations |
US7086045B2 (en) * | 2001-10-19 | 2006-08-01 | Sun Microsystems, Inc. | Heuristic to improve register allocation using pass degree |
US20030088860A1 (en) * | 2001-11-02 | 2003-05-08 | Fu-Hwa Wang | Compiler annotation for binary translation tools |
US6834212B1 (en) * | 2002-07-03 | 2004-12-21 | Blue Control Technologies, Inc. | Method and apparatus for APC solver engine and heuristic |
US6970985B2 (en) * | 2002-07-09 | 2005-11-29 | Bluerisc Inc. | Statically speculative memory accessing |
CA2453776A1 (en) * | 2003-12-19 | 2005-06-19 | Ibm Canada Limited-Ibm Canada Limitee | Compiler optimization |
US20060047794A1 (en) * | 2004-09-02 | 2006-03-02 | Microsoft Corporation | Application of genetic algorithms to computer system tuning |
-
2005
- 2005-10-13 US US11/249,542 patent/US20070089104A1/en not_active Abandoned
-
2006
- 2006-10-12 CN CNB2006101321823A patent/CN100399272C/zh not_active Expired - Fee Related
-
2008
- 2008-05-29 US US12/128,929 patent/US8146068B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20070089104A1 (en) | 2007-04-19 |
US20080229294A1 (en) | 2008-09-18 |
US8146068B2 (en) | 2012-03-27 |
CN100399272C (zh) | 2008-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1152287C (zh) | 二进制程序转换设备和转换方法 | |
CN1949176A (zh) | 用于管理试探特性的方法和系统 | |
CN101035125A (zh) | 用于处理Web服务请求的方法和系统 | |
CN1361891A (zh) | 用于可扩展宏语言的方法和系统 | |
CN1834922A (zh) | 程序变换方法及程序变换系统 | |
US11487522B1 (en) | Training and/or using neural network model to generate target source code from lower-level representation | |
CN1784680A (zh) | 搜索条件的逐渐放宽 | |
CN1781075A (zh) | 电子文件更新期间的设备存储器管理 | |
CN1855039A (zh) | 用于创建、储存、管理和消费文化专用数据的方法和系统 | |
CN1229944A (zh) | 用于减少预装类的脚印的系统和方法 | |
CN1645323A (zh) | 以存储技术抽象方式在文件内创建文件系统 | |
CN1808379A (zh) | 作为操作系统原语的应用程序对象 | |
CN1661551A (zh) | 代码重写 | |
CN1858742A (zh) | 一种在实时数据库中实现更新数据的方法和系统 | |
CN1547116A (zh) | 软件中语言资源本地化的实现方法 | |
CN1799024A (zh) | 处理消息摘要指令 | |
CN1313926C (zh) | 模板编译方法 | |
CN1294501C (zh) | 控制系统中装置的控制方法 | |
CN1664813A (zh) | 构建、展开、服务并管理可定制和可配置可重复使用应用程序的框架 | |
CN1255744C (zh) | 智能卡通用高速发卡机及其发卡方法 | |
CN1967470A (zh) | 处理安全消息认证控制指令 | |
CN1716249A (zh) | 延迟取出用户定义类型的指定成员的系统和方法 | |
CN1737779A (zh) | 一种扩展外设的方法及系统 | |
CN1245685C (zh) | 基于构件的操作系统动态设备驱动的方法 | |
CN1230732A (zh) | 便携式电子装置 |
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 |
Granted publication date: 20080702 Termination date: 20211012 |
|
CF01 | Termination of patent right due to non-payment of annual fee |