Compiling source code to reduce run-time execution of vector element reverse operations

US9569190B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9569190-B1
Application numberUS-201514817695-A
CountryUS
Kind codeB1
Filing dateAug 4, 2015
Priority dateAug 4, 2015
Publication dateFeb 14, 2017
Grant dateFeb 14, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Compiling source code to reduce run-time execution of vector element reverse operations, includes: identifying, by a compiler, a first loop nested within a second loop in a computer program; identifying, by the compiler, a vector element reverse operation within the first loop; moving, by the compiler, the vector element reverse operation from the first loop to the second loop.

First claim

Opening claim text (preview).

What is claimed is: 1. An apparatus for compiling source code to reduce run-time execution of vector element reverse operations, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of: identifying, by a compiler, a first loop and a second loop in a computer program, wherein the first loop is embedded within the second loop; identifying, by the compiler, at least one vector element reverse operation within the first loop; analyzing, by the compiler, a dataflow graph containing that at least one vector element reverse operation within the first loop, including determining whether all vector operations in a portion of the dataflow graph including the first loop are lane-insensitive and determining whether all vector operations in the portion of the dataflow graph containing the first loop are lane-adjustable; and responsive to the analysis, replacing, by the compiler, the vector element reverse operations from the first loop by placing the vector element reverse operations inside the second loop; moving, by the compiler and within the second loop, a plurality of vector element reverse operations to the perimeter of the first loop; and for each pair of vector element reverse operations moved to the perimeter of the first loop in which a result of one of the vector element reverse operations in the pair is the source of the other vector element reverse operation in the pair: removing at least one of the vector element reverse operations in the pair. 2. The apparatus of claim 1 wherein: identifying at least one vector element reverse operation within the first loop further comprises identifying at least one vector operation within the first loop having a live-in vector value; and replacing the vector element reverse operations from the first loop by vector element reverse operations outside the first loop further comprises inserting vector element reverse operations at an incoming perimeter of the first loop. 3. The apparatus of claim 1 wherein: identifying at least one vector element reverse operation within the first loop further comprises identifying at least one vector operation within the first loop having a live-out vector value; and replacing the vector element reverse operations from the first loop by vector element reverse operations in outside the first loop further comprises inserting vector element reverse operations at an outgoing perimeter of the first loop. 4. The apparatus of claim 1 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of removing, by the compiler, one or more additional vector element reverse operations. 5. The apparatus of claim 1 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of: determining, in dependence upon an operational profile, whether the first loop is likely to execute at run-time a number of times exceeding a predefined threshold; and identifying the at least one vector element reverse operation within the first loop and replacing the vector element reverse operations from the first loop by vector element reverse operations in the second loop only if the first loop is likely to execute at run-time a number of times exceeding the predefined threshold. 6. A non-transitory computer readable medium including a computer program product for compiling source code to reduce run-time execution of vector element reverse operations, the computer program product comprising computer program instructions that, when executed by the computer processor, cause a computer to carry out the steps of: identifying, by a compiler, a first loop and a second loop in a computer program, wherein the first loop is embedded within the second loop; identifying, by the compiler, at least one vector element reverse operation within the first loop; analyzing, by the compiler, a dataflow graph containing that at least one vector element reverse operation within the first loop, including determining whether all vector operations in a portion of the dataflow graph including the first loop are lane-insensitive and determining whether all vector operations in the portion of the dataflow graph containing the first loop are lane-adjustable; and responsive to the analysis, replacing, by the compiler, the vector element reverse operations from the first loop by placing the vector element reverse operations inside the second loop; moving, by the compiler and within the second loop, a plurality of vector element reverse operations to the perimeter of the first loop; and for each pair of vector element reverse operations moved to the perimeter of the first loop in which a result of one of the vector element reverse operations in the pair is the source of the other vector element reverse operation in the pair: removing at least one of the vector element reverse operations in the pair. 7. The non-transitory computer readable medium of claim 6 wherein: identifying at least one vector element reverse operation within the first loop further comprises identifying at least one vector operation within the first loop having a live-in vector value; and replacing the vector element reverse operations from the first loop by vector element reverse operations outside the first loop further comprises inserting vector element reverse operations at an incoming perimeter of the first loop. 8. The non-transitory computer readable medium of claim 6 wherein: identifying at least one vector element reverse operation within the first loop further comprises identifying at least one vector operation within the first loop having a live-out vector value; and replacing the vector element reverse operations from the first loop by vector element reverse operations in outside the first loop further comprises inserting vector element reverse operations at an outgoing perimeter of the first loop. 9. The non-transitory computer readable medium of claim 6 further comprising computer program instructions that, when executed by the computer processor, cause the computer to carry out the steps of removing, by the compiler, one or more additional vector element reverse operations. 10. The non-transitory computer readable medium of claim 6 further comprising computer program instructions that, when executed, cause the computer to carry out the steps of: determining, in dependence upon an operational profile, whether the first loop is likely to execute at run-time a number of times exceeding a predefined threshold; and identifying the at least one vector element reverse operation within the first loop and replacing the vector element reverse operations from the first loop by vector element reverse operations in the second loop only if the first loop is likely to execute at run-time a number of times exceeding the predefined threshold.

Assignees

Inventors

Classifications

  • G06F8/452Primary

    Loops · CPC title

  • G06F8/4441Primary

    Reducing the execution time required by the program code · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9569190B1 cover?
Compiling source code to reduce run-time execution of vector element reverse operations, includes: identifying, by a compiler, a first loop nested within a second loop in a computer program; identifying, by the compiler, a vector element reverse operation within the first loop; moving, by the compiler, the vector element reverse operation from the first loop to the second loop.
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification G06F8/452. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Feb 14 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).