IP Library › Granted Patent US 11,455,153
Granted Patent B2
US 11,455,153 · App. 16/544,796 · Granted Sep 27, 2022

Dynamic instances semantics

Inventor: Nicolai Haehnle (Munich, DE)
Assignee: Advanced Micro Devices, Inc.
G06F8/433
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,455,153
App. No.
16/544,796
Granted
Sep 27, 2022
Kind
B2
Abstract

A computing system includes a processor and a memory storing instructions for a compiler that, when executed by the processor, cause the processor to generate a control flow graph of program source code by receiving the program source code in the compiler, in the compiler, generating a structure point representation based on the received program source code by inserting into the program source code a set of structure points including an anchor structure point and a join structure point associated with the anchor structure point, and based on the structure point representation, generating the control flow graph including a plurality of blocks each representing a portion of the program source code. In the control flow graph, a block A between the anchor structure point and the join structure point post-dominates each of the one or more divergent branches between the anchor structure point and the join structure point.

Claims (88)

1. A computing system, comprising:

a processor;

a memory storing instructions for a compiler that, when executed by the processor, cause the processor to generate a control flow graph of program source code by:

receiving the program source code in the compiler, wherein the program source code includes one or more divergent branches;

in the compiler, generating a structure point representation based on the received program source code by inserting into the program source code a set of structure points including an anchor structure point and a join structure point associated with the anchor structure point; and

based on the structure point representation, generating the control flow graph including a plurality of blocks each representing a portion of the program source code, wherein, in the control flow graph, a block A between the anchor structure point and the join structure point post-dominates each of the one or more divergent branches between the anchor structure point and the join structure point.

2. The computing system of claim 1 , wherein:

generating the structure point representation further comprises inserting a set of structure points based on locations of flow control statements in the program source code;

the set of structure points includes the join structure point and one or more tip structure points associated with the anchor structure point; and

in the control flow graph, a block B containing the join structure point excludes all of the one or more tip structure points.

3. The computing system of claim 2 , wherein the inserting further comprises, in the program source code:

inserting one of a first plurality of join structure points immediately following each if conditional statement in the program source code;

inserting one of a second plurality of join structure points immediately following each switch statement and each case statement reachable by fallthrough in the switch statement; and

inserting the anchor structure point at a location immediately preceding a loop condition evaluation.

4. The computing system of claim 1 , wherein generating the control flow graph comprises:

generating an initial version of the control flow graph based on the structure point representation; and

performing a set of compiler optimizations by modifying the initial version of the control flow graph.

5. The computing system of claim 1 , wherein generating the control flow graph comprises:

converting the structure point representation to a normal form control flow graph, wherein any join structure points of the set of structure points that are located in the same block in the normal form control flow graph are associated with no more than one anchor structure point;

in the normal form control flow graph, for each block B that excludes any anchor structure point or join structure point, in response to determining that a block C that is an immediate dominator of block B is not post dominated by block B, and that block C is not a unique predecessor of block B:

inserting a flow block F,

creating a new arc FB between flow block F and block B, and

for each arc of a set of arcs ending at block B, rerouting the arc to flow block F; and

inserting a post-dominating join statement in block A.

6. The computing system of claim 1 , wherein the instructions, when executed by the processor, further cause the processor to generate the control flow graph by:

transforming the structure point representation to a post-dominating join representation including a set of post-dominating join statements; and

identifying one or more principal post-dominating join statements in the set of post-dominating join statements by, for each of the one or more principal post-dominating join statements:

determining that a cross-lane operation is reachable from a block J containing the principal post-dominating join statement without passing through any other post-dominating join statement that post-dominates the principal post-dominating join statement in the post-dominating join representation; and

determining that at least one non-uniform conditional branch exists in a region of the post-dominating join representation that:

is post-dominated by the block J containing the principal post-dominating join statement, and

is not post-dominated by any children of block J in a post-dominator tree that includes block J.

7. The computing system of claim 6 , wherein the instructions, when executed by the processor, further cause the processor to generate the control flow graph by:

generating a first post-dominator tree based on the program source code;

generating a second post-dominator tree based on traversing the first post-dominator tree, wherein the second post-dominator tree includes a set of vertices each representing one of the set of post-dominating join statements, and a set of edges each representing a post-dominance relationship between two of the post-dominating join statements in the set of post-dominating join statements; and

simplifying the post-dominating join representation by removing a set of nonessential post-dominating join statements of the set of post-dominating join statements, wherein the set of nonessential post-dominating join statements excludes the one or more principal post-dominating join statements.

8. A method, comprising:

receiving program source code in a compiler, wherein the program source code includes one or more divergent branches;

in the compiler, generating a structure point representation based on the received program source code by inserting into the program source code a set of structure points including an anchor structure point and a join structure point associated with the anchor structure point; and

based on the structure point representation, generating a control flow graph including a plurality of blocks each representing a portion of the program source code, wherein, in the control flow graph, a block A between the anchor structure point and the join structure point post-dominates each of the one or more divergent branches between the anchor structure point and the join structure point.

9. The method of claim 8 , wherein:

generating the structure point representation further comprises inserting a set of structure points based on locations of flow control statements in the program source code;

the set of structure points includes the join structure point and one or more tip structure points associated with the anchor structure point; and

in the control flow graph, a block B containing the join structure point excludes all of the one or more tip structure points.

10. The method of claim 9 , wherein the inserting further comprises, in the program source code:

inserting one of a first plurality of join structure points immediately following each if conditional statement in the program source code;

inserting one of a second plurality of join structure points immediately following each switch statement and each case statement reachable by fallthrough in the switch statement; and

inserting the anchor structure point at a location immediately preceding a loop condition evaluation.

11. The method of claim 8 , wherein generating the control flow graph comprises:

generating an initial version of the control flow graph based on the structure point representation; and

performing a set of compiler optimizations by modifying the initial version of the control flow graph.

12. The method of claim 8 , wherein generating the control flow graph comprises:

converting the structure point representation to a normal form control flow graph, wherein any join structure points of the set of structure points that are located in the same block in the normal form control flow graph are associated with no more than one anchor structure point;

in the normal form control flow graph, for each block B that excludes any anchor structure point or join structure point, in response to determining that a block C that is an immediate dominator of block B is not post dominated by block B, and that block C is not a unique predecessor of block B:

inserting a flow block F,

creating a new arc FB between flow block F and block B, and

for each arc of a set of arcs ending at block B, rerouting the arc to flow block F; and

inserting a post-dominating join statement in block A.

13. The method of claim 8 , further comprising:

transforming the structure point representation to a post-dominating join representation including a set of post-dominating join statements; and

identifying one or more principal post-dominating join statements in the set of post-dominating join statements by, for each of the one or more principal post-dominating join statements:

determining that a cross-lane operation is reachable from a block J containing the principal post-dominating join statement without passing through any other post-dominating join statement that post-dominates the principal post-dominating join statement in the post-dominating join representation; and

determining that at least one non-uniform conditional branch exists in a region of the post-dominating join representation that:

is post-dominated by the block J containing the principal post-dominating join statement, and

is not post-dominated by any children of block J in a post-dominator tree that includes block J.

14. The method of claim 13 , further comprising:

generating a first post-dominator tree based on the program source code;

generating a second post-dominator tree based on traversing the first post-dominator tree, wherein the second post-dominator tree includes a set of vertices each representing one of the set of post-dominating join statements, and a set of edges each representing a post-dominance relationship between two of the post-dominating join statements in the set of post-dominating join statements;

simplifying the post-dominating join representation by removing a set of nonessential post-dominating join statements of the set of post-dominating join statements, wherein the set of nonessential post-dominating join statements excludes the one or more principal post-dominating join statements.

15. The method of claim 8 , further comprising:

transforming the control flow graph into a reconverging form of the control flow graph by inserting into the control flow graph at least one flow block between two blocks of the control flow graph.

16. The method of claim 8 , further comprising:

modifying the control flow graph for wave-level control flow by inserting into the control flow graph one or more mask handling instructions for updating execution mask values and rejoin mask values.

17. A non-transitory computer readable storage medium storing instructions for a compiler, wherein the instructions are executable by a processor to:

receive program source code in the compiler, wherein the program source code includes one or more divergent branches;

in the compiler, generate a structure point representation based on the received program source code by inserting into the program source code a set of structure points including an anchor structure point and a join structure point associated with the anchor structure point; and

based on the structure point representation, generate a control flow graph including a plurality of blocks each representing a portion of the program source code, wherein, in the control flow graph, a block A between the anchor structure point and the join structure point post-dominates each of the one or more divergent branches between the anchor structure point and the join structure point.

18. The non-transitory computer readable storage medium of claim 17 , wherein the instructions are further executable by the processor to:

transform the control flow graph into a reconverging form of the control flow graph by inserting into the control flow graph at least one flow block between two blocks of the control flow graph; and

generate a wave level control flow graph by inserting into the reconverging control flow graph one or more mask handling instructions for updating execution mask values and rejoin mask values.

19. The non-transitory computer readable storage medium of claim 17 , wherein:

generating the structure point representation further comprises:

inserting one of a first plurality of join structure points immediately following each if conditional statement in the program source code,

inserting one of a second plurality of join structure points immediately following each switch statement and each case statement reachable by fallthrough in the switch statement, and

inserting the anchor structure point at a location immediately preceding a loop condition evaluation; and

the set of structure points includes the join structure point and one or more tip structure points associated with the anchor structure point; and

in the control flow graph, a block B containing the join structure point excludes all of the one or more tip structure points.

20. The non-transitory computer readable storage medium of claim 17 , wherein the instructions are further executable by the processor to:

transform the structure point representation to a post-dominating join representation by inserting a post-dominating join statement in block A.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2019
From: HAEHNLE, NICOLAI
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 050093/0797 →
Continuity (2)
Provisional Application 62820008 · Mar 18, 2019
Related Publication 20200301681A1 · Sep 24, 2020