Static block frequency prediction in irreducible loops within computer code

    公开(公告)号:US11829738B2

    公开(公告)日:2023-11-28

    申请号:US17643665

    申请日:2021-12-10

    IPC分类号: G06F8/41

    CPC分类号: G06F8/4441

    摘要: A block frequency of a block in an irreducible loop in computer code is statically determined. The statically determining includes splitting an incoming block mass among multiple loop headers of the irreducible loop to provide an initial mass for the block. A bottom-up traversal and a top-down traversal of a plurality of loops of the computer code including the irreducible loop are iteratively performed to update a mass of the block. The iteratively performing commences with propagating the initial mass of the block to one or more blocks of one or more loops of the plurality of loops and continues with propagating and updating masses of select blocks of the plurality of loops until a predefined point is reached providing a resulting mass for the block. The block frequency of the block is determined using the resulting mass and is to be used in processing associated with the computer code.

    Recursive expression simplification

    公开(公告)号:US09424011B2

    公开(公告)日:2016-08-23

    申请号:US14231895

    申请日:2014-04-01

    IPC分类号: G06F9/45

    CPC分类号: G06F8/443 G06F8/4441

    摘要: A computer-implemented method, carried out by one or more processors, for recursive expression reduction. In an embodiment, the method comprises the steps of identifying a candidate loop, where the candidate loop includes at least one or more reduction variables and reduction operations; altering grouping of loop invariants and loop variants within the candidate loop; and performing recursive expression simplification for an inner loop, wherein the inner loop is located within the candidate loop.

    Predictive Dead Store Elimination
    3.
    发明公开

    公开(公告)号:US20240248716A1

    公开(公告)日:2024-07-25

    申请号:US18157990

    申请日:2023-01-23

    IPC分类号: G06F9/30 G06F9/32

    CPC分类号: G06F9/30043 G06F9/325

    摘要: Predictive dead store elimination is provided. The method comprises identifying, in a program, a first store operation and a second store operation in a program loop that comprise a store pair with a same loop-invariant base address and determining whether the store pair is a predictive dead store elimination candidate. Responsive to a determination that the store pair is a predictive dead store elimination candidate, the method eliminates the first store operation in each iteration of the program loop, except the last DSRC (dead store recurrence constant) iterations and sinks the first store operation in the last DSRC iterations to after the program loop.

    TRANSFORMATION OF COMPUTER CODE BASED ON IDIOM RECOGNITION AND VALUE CONSTRAINT ANALYSIS

    公开(公告)号:US20230195434A1

    公开(公告)日:2023-06-22

    申请号:US17644730

    申请日:2021-12-16

    IPC分类号: G06F8/41

    CPC分类号: G06F8/41

    摘要: Code pattern matching is performed within computer code to determine whether the computer code includes an idiom from a predefined set of idioms. Based on determining that the computer code includes the idiom, a set of data items of the idiom to be analyzed is determined. The set of data items is analyzed with respect to one or more corresponding values from the computer code based on a set of constraints defined for the idiom to determine whether the set of data items satisfy one or more predefined conditions for the idiom. Based on the analyzing indicating that the one or more predefined conditions are satisfied, one or more code segments of the computer code including the idiom are replaced with replacement code to provide revised computer code.

    DATA SPLITTING FOR RECURSIVE DATA STRUCTURES

    公开(公告)号:US20150331682A1

    公开(公告)日:2015-11-19

    申请号:US14811755

    申请日:2015-07-28

    IPC分类号: G06F9/45 G06F17/30

    摘要: Embodiments of the present invention provide a method, system and computer program product for the data splitting of recursive data structures. In one embodiment of the invention, a method for data splitting recursive data structures can be provided. The method can include identifying data objects of a recursive data structure type, such as a linked list, within source code, the recursive data structure type defining multiple different data fields. The method further can include grouping the data objects into some memory pool units, each of which can contain the same number of data objects. Each memory pool unit can be seen as an array of data objects. The method can include data splitting, which could be maximal array splitting in each different memory pool unit. Finally, the method can include three different approaches, including field padding, field padding and field splitting, to handle irregular field sizes in the data structure.

    DATA SPLITTING FOR MULTI-INSTANTIATED OBJECTS
    6.
    发明申请
    DATA SPLITTING FOR MULTI-INSTANTIATED OBJECTS 有权
    数据分析用于多重对象

    公开(公告)号:US20150046913A1

    公开(公告)日:2015-02-12

    申请号:US14308994

    申请日:2014-06-19

    发明人: Shimin Cui Yan Zhang

    IPC分类号: G06F9/45

    摘要: Embodiments relate to data splitting for multi-instantiated objects. An aspect includes receiving a portion of source code for compilation having a dynamic object to split using object size array data splitting. Another aspect includes replacing all memory allocations for the dynamic object with a total size of an object size array and object field arrays including a predetermined padding. Another aspect includes inserting statements in the source code after the memory allocations to populate the object size array with a value of a number of elements of the object size array. Another aspect includes updating a stride for load and store operations using dynamic pointers. Yet another aspect includes modifying field references by adding a distance between the object size array and the object field array to respective address operations.

    摘要翻译: 实施例涉及多实例化对象的数据分割。 一个方面包括接收用于编译的源代码的一部分,其具有使用对象大小阵列数据分割来分割的动态对象。 另一方面包括用动态对象的所有内存分配替换对象大小数组的总大小和包括预定填充的对象字段数组。 另一方面包括在内存分配之后在源代码中插入语句以使用对象大小数组的元素数量填充对象大小数组。 另一方面包括使用动态指针来更新用于加载和存储操作的步幅。 另一方面包括通过将对象大小阵列和对象场阵列之间的距离添加到相应的地址操作来修改字段引用。

    Pointer alignment computation in program code according to code pattern analyses

    公开(公告)号:US11662989B2

    公开(公告)日:2023-05-30

    申请号:US17304223

    申请日:2021-06-16

    发明人: Shimin Cui

    IPC分类号: G06F8/41

    CPC分类号: G06F8/4441

    摘要: Pointer alignment in a computer programming to obtain information enabling a compiler to optimize program code. Equivalence classes of pointers are collected in a program using a flow-insensitive yet field-sensitive pointer analysis operation iterating through an entire program code of the program. The equivalence classes of pointers, once collected, are mapped to and recorded in an equivalence class mapping table (ECTable). A portion of the collected equivalence classes of pointers are identified, from the ECTable, as pointer candidates for a pointer alignment computation according to a code pattern analysis of each pointer candidate. The code pattern analysis is based on available alignment information, and whether the alignment information would enable a compiler to optimize pointer references of the candidate pointer. The pointer alignment computation is then performed for each identified pointer candidate to obtain the alignment information used to optimize execution of the program.

    Data splitting for recursive data structures

    公开(公告)号:US10095491B2

    公开(公告)日:2018-10-09

    申请号:US14811755

    申请日:2015-07-28

    IPC分类号: G06F9/44 G06F8/41 G06F17/30

    摘要: Embodiments of the present invention provide a method, system and computer program product for the data splitting of recursive data structures. In one embodiment of the invention, a method for data splitting recursive data structures can be provided. The method can include identifying data objects of a recursive data structure type, such as a linked list, within source code, the recursive data structure type defining multiple different data fields. The method further can include grouping the data objects into some memory pool units, each of which can contain the same number of data objects. Each memory pool unit can be seen as an array of data objects. The method can include data splitting, which could be maximal array splitting in each different memory pool unit. Finally, the method can include three different approaches, including field padding, field padding and field splitting, to handle irregular field sizes in the data structure.

    Reducing compilation time using profile-directed feedback

    公开(公告)号:US09727319B1

    公开(公告)日:2017-08-08

    申请号:US15292638

    申请日:2016-10-13

    IPC分类号: G06F9/45

    CPC分类号: G06F8/4441 G06F11/36

    摘要: A method for significantly reducing compilation time of an application program is provided for compiling the program using profile-directed feedback (PDF). The method applies an additional analysis process between a training run of the application program and a whole program compilation of the application. This analysis process examines a PDF profile file(s) produced during the training run and aggregates data from the PDF file to determine a maximum block counter associated with each source file of the application. Only those source files having maximum block counters in a specified top percent of all the source files of the application have their fat binaries included in the whole program compilation.

    STATIC BLOCK FREQUENCY PREDICTION IN IRREDUCIBLE LOOPS WITHIN COMPUTER CODE

    公开(公告)号:US20230185551A1

    公开(公告)日:2023-06-15

    申请号:US17643665

    申请日:2021-12-10

    IPC分类号: G06F8/41

    CPC分类号: G06F8/4441

    摘要: A block frequency of a block in an irreducible loop in computer code is statically determined. The statically determining includes splitting an incoming block mass among multiple loop headers of the irreducible loop to provide an initial mass for the block. A bottom-up traversal and a top-down traversal of a plurality of loops of the computer code including the irreducible loop are iteratively performed to update a mass of the block. The iteratively performing commences with propagating the initial mass of the block to one or more blocks of one or more loops of the plurality of loops and continues with propagating and updating masses of select blocks of the plurality of loops until a predefined point is reached providing a resulting mass for the block. The block frequency of the block is determined using the resulting mass and is to be used in processing associated with the computer code.