US4710872A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Method for vectorizing and executing on an SIMD machine outer loops in the presence of recurrent inner loops
Assignee: International Business Machines Corp
•
Filing: 1985-08-07
•
Granted: 1987-12-01
•
Expires: 2005-08-07
Abstract
Abstract A method is disclosed for increasing the number of procedural language scalar instructions which may be executed on a vector SIMD machine. The method, operative in the compiling of the source-to-object code, utilizes a mapping representation of the source code statements onto a dependence graph and noting that the innermost sensitive level n and loop-independent edges of the program mapped onto the graph can be vectorized if every level n dependence can be reordered to operate as an innermost loop and if there are no cycles after the reordering. This indicates that the code can be vectorized at level n.
Inventors
- 👤 Randolph G. Scarborough
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-10-28 08:39
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/45
Claims Analysis
Total Claims: 10
Claim 1
Independent Claim
197 words
A method for execution on an SISD machine for ascertaining any source code procedural language statements which are amenable to being compiled into object code for execution on an SIMD machine, comprising the steps of: (a) mapping in said SISD machine said source code statements onto n counterpart nodes of a dependence graph, said graph (FIGS. 2A, 2B) having directed edges, the edges connecting nodes according to dependences and selectively forming closed traverses or loops, the edges further being selectively nested and labeled with a level number (FIGS. 2A, 3A, edges labeled 4) indicating the level of any node (1, 2, . . . , n) causing the dependence, each edge (FIG. 2B) being further labeled with indicia as to whether it is either innermost-sensitive or innermost-preventing; (b) identifying in said SISD machine the statements at the nodes bounding each level of any innermost-sensitive and loop-independent edges of the graph, if at that level, the edges having the labeled dependences can be reordered to operate as an innermost loop and if there are no cycles in the graph after recording; and (c) generating in said SISD machine object code obtained from any statements identified in step (b).
Claim 2
Independent Claim
197 words
A method for execution on an SISD machine for ascertaining any source code procedural language statements which are amenable to being compiled into object code for execution on an SIMD machine, comprising the steps of: (a) mapping in said SISD machine said source code statements onto n counterpart nodes of a dependence graph, said graph (FIGS. 2A, 2B) having directed edges, the edges connecting nodes according to dependences and selectively forming closed traverses or loops, the edges further being selectively nested and labeled with a level number (FIGS. 2A, 3A, edges labeled 4) indicating the level of any node (1, 2, . . . , n) causing the dependence, each edge (FIG. 2B) being further labeled with indicia as to whether it is either innermost-sensitive or innermost-preventing; (b) identifying in said SISD machine the statements at the nodes bounding each level of any innermost-sensitive and loop-independent edges of the graph, if at that level, the edges having the labeled dependences can be reordered to operate as an innermost loop and if there are no cycles in the graph after recording; and (c) generating in said SISD machine object code obtained from any statements identified in step (b).
Claim 3
Dependent Claim
36 words
The method according to claim 1, wherein the source code procedural language statements are consistently selected from one strongly-typed language drawn from a set of strongly-typed languages including FORTRAN, PL/1, PASCAL, ALGOL, ADA, and their equivalents.
Claim 4
Dependent Claim
19 words
The method according to claim 1, wherein the dependences include control and data dependences, loop-independent, innermost-sensitive, and interchange-preventing dependences.
Claim 5
Independent Claim
297 words
A method for vectorizing and compiling object code for execution on an SIMD machine, said object code being derived from procedural language source code statements, said source code including nested loops in which at least one loop is innermost and at least one loop is outermost, said nested loops occurring where at least one innermost loop and at least one outermost loop recur, said method being executable on an SISD machine, comprising the steps of: (a) converting in said SISD machine source code into an intermediate language string and optimizing said string; (b) forming in said SISD machine a dependence graph from the string, said dependence graph including at least one node, the nodes of the dependence graph representing statements in the string; (c) partitioning the dependence graph into regions, said partitioning occurring within the SISD machine, the regions being denominated "strongly-connected regions" (SCRs), each node in an SCR being connected to every other node by at least one path, said partitioning being conducted on a level-by-level basis from outside to inside; (d) ascertaining in said SISD machine which SCRs of said dependence graph partitioned according to step (c) are executable on an SIMD machine by: (1) ascertaining at each level within a region and for each dependence at that level whether the dependence at that level is interchangeable with each successive inner loop until any preselected one of the loops at that level is the innermost loop, and (2) forming in said SISD machine a subgraph from all dependences at that level which are ascertained to be interchangeable to the innermost loop and all loop-independent dependences, the statements constituting the subgraph being vectorized at that level if said subgraph is acyclic; and (e) generating in said SISD machine object code for the statements constituting the subgraph.
Claim 6
Independent Claim
297 words
A method for vectorizing and compiling object code for execution on an SIMD machine, said object code being derived from procedural language source code statements, said source code including nested loops in which at least one loop is innermost and at least one loop is outermost, said nested loops occurring where at least one innermost loop and at least one outermost loop recur, said method being executable on an SISD machine, comprising the steps of: (a) converting in said SISD machine source code into an intermediate language string and optimizing said string; (b) forming in said SISD machine a dependence graph from the string, said dependence graph including at least one node, the nodes of the dependence graph representing statements in the string; (c) partitioning the dependence graph into regions, said partitioning occurring within the SISD machine, the regions being denominated "strongly-connected regions" (SCRs), each node in an SCR being connected to every other node by at least one path, said partitioning being conducted on a level-by-level basis from outside to inside; (d) ascertaining in said SISD machine which SCRs of said dependence graph partitioned according to step (c) are executable on an SIMD machine by: (1) ascertaining at each level within a region and for each dependence at that level whether the dependence at that level is interchangeable with each successive inner loop until any preselected one of the loops at that level is the innermost loop, and (2) forming in said SISD machine a subgraph from all dependences at that level which are ascertained to be interchangeable to the innermost loop and all loop-independent dependences, the statements constituting the subgraph being vectorized at that level if said subgraph is acyclic; and (e) generating in said SISD machine object code for the statements constituting the subgraph.
Claim 7
Dependent Claim
43 words
The method according to claim 4, wherein in step (d) if any such dependence cannot be interchanged, then the SCR cannot be vectorized at that level; and if the dependence disappears upon interchange, then it constitutes a processing nullity and may be ignored.
Claim 8
Dependent Claim
36 words
The method according to claim 4, wherein the source code procedural language statements are consistently selected from one strongly-typed language drawn from a set of strong-typed languages including FORTRAN, PL/1, PASCAL, ALGOL, ADA, and their equivalents.
Claim 9
Dependent Claim
19 words
The method according to claim 4, wherein the dependence include control and data dependences, loop-independent, innermost-sensitive, and interchange-preventing dependences.
Claim 10
Dependent Claim
47 words
The method according to claim 4, wherein said method further comprises the step of ascertaining in said SISD machine a least-cost path through the dependence graph taking into account a predetermined type, number, and distribution of statements, execution time of the statements, and cost of associated resources.
References Cited (Backward Citations)
US4479196A
Cited
US4567574A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 1990-11-30 | 1991-06-01 | 1991-12-01 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 1994-11-30 | 1995-06-01 | 1995-12-01 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 1998-11-30 | 1999-06-01 | 1999-12-01 | $7700.00 | Window Closed / Lapsed |