Finding Dominators in Flowgraphs - PowerPoint PPT Presentation

About This Presentation
Title:

Finding Dominators in Flowgraphs

Description:

Title: PowerPoint Presentation Author: Loukas Georgiadis Last modified by: Loukas Georgiadis Created Date: 11/11/2003 2:05:46 AM Document presentation format – PowerPoint PPT presentation

Number of Views:472
Avg rating:3.0/5.0
Slides: 37
Provided by: LoukasGe7
Category:

less

Transcript and Presenter's Notes

Title: Finding Dominators in Flowgraphs


1
Finding Dominators in Flowgraphs Linear-Time
Algorithm 1 and Experimental Study 2 Loukas
Georgiadis 1 joint work with Robert E.
Tarjan 2 joint work with Renato F. Werneck,
Robert E. Tarjan,
Spyridon Triantafyllis and David I.
August
2
Dominators in a Flowgraph
Flowgraph G (V, E, r) each v in V is
reachable from r
v dominates w if every path from r to w
includes v
r
v
w
3
Dominators in a Flowgraph
Flowgraph G (V, E, r) each v in V is
reachable from r
v dominates w if every path from r to w
includes v
Set of dominators Dom(w) v v
dominates w Trivial dominators ? w ? r,
w, r ? Dom(w) Immediate dominator idom(w) ?
Dom(w) w and dominated by every v in
Dom(w) w
4
Dominators in a Flowgraph
Flowgraph G (V, E, r) each v in V is
reachable from r
v dominates w if every path from r to w
includes v
Set of dominators Dom(w) v v
dominates w Trivial dominators ? w ? r,
w, r ? Dom(w) Immediate dominator idom(w) ?
Dom(w) w and dominated by every v in
Dom(w) w
Goal Find idom(v) for each v in V
(immediate dominator tree)
Applications Program optimization, code
generation, circuit
testing
5
History
  • 1979 Lengauer and Tarjan O(m ?(m,n)) time.
  • 1997 Alstrup, Harel, Lauridsen and Thorup
    O(nm) time for RAM.
  • 1998 Buchsbaum, Kaplan, Rogers and Westbrook
    claimed
  • O(nm) for Pointer Machine. (Corrected
    in 2004 to work in
  • linear time for RAM.)
  • 2004 G. and Tarjan
  • We showed that the Buchsbaum et al. algorithm
    runs in
  • O(m ?(m,n)) time.
  • Based on Buchsbaum et al. we gave a linear-time
    algorithm for
  • Pointer Machine, simpler than Alstrup et al.
    (no complicated
  • data structures).

6
The Lengauer-Tarjan Algorithm
Depth-First Search ? DFS Tree D We refer to
the vertices by their DFS numbers v lt w v
was visited by DFS before w
r
1
2
3
4
6
5
7
8
7
The Lengauer-Tarjan Algorithm Semidominators
Depth-First Search ? DFS Tree D We refer to
the vertices by their DFS numbers v lt w v
was visited by DFS before w Semidominator path
(SDOM-path) P (v0 v, v1, v2, , vk
w) such that vigtw, for 1 ? i ? k-1
r
1
2
3
4
6
5
7
8
8
The Lengauer-Tarjan Algorithm Semidominators
Depth-First Search ? DFS Tree D We refer to
the vertices by their DFS numbers v lt w v
was visited by DFS before w Semidominator path
(SDOM-path) P (v0 v, v1, v2, , vk
w) such that vigtw, for 1 ? i ?
k-1 Semidominator sdom(w) min v ?
SDOM-path from v to w
r
1
2
3
4
6
5
7
8
9
The Lengauer-Tarjan Algorithm
  • Overview
  • Carry out a DFS.
  • Process the vertices in reverse preorder.
  • For vertex w, compute sdom(w).
  • Implicitly define idom(w).
  • Explicitly define idom(w) by a preorder pass.

10
The Lengauer-Tarjan Algorithm Evaluate minima
on tree paths
Data Structure Maintain forest F and supports
the operations link(v, w) Add the edge
(v,w) to F. eval(v) Let r root
of the tree that contains v in F.
If v r then return v.
Otherwise return any vertex
with minimum sdom among the vertices u
that are proper descendants of r
and ancestors of v. Initially every vertex in
V is a root in F.
11
The Lengauer-Tarjan Algorithm Evaluate minima
on tree paths
Data Structure Maintain forest F and supports
the operations link(v, w) Add the edge
(v,w) to F. eval(v) Let r root
of the tree that contains v in F.
If v r then return v.
Otherwise return any vertex
with minimum sdom among the vertices u
that are proper descendants of r
and ancestors of v. Initially every vertex in
V is a root in F. Simple version n links, m
evals in O(mlogn). Sophisticated version n
links, m evals in O(ma(m,n)).
12
The Linear-Time Algorithm
Partition D into trivial and nontrivial
microtrees. Dixon and Tarjan 97 Nontrivial
microtree Maximal subtree of D of size ?
g that contains at least one leaf of
D. Trivial microtree Single internal vertex of
D.
1
2
3
22
15
4
5
7
17
16
21
6
8
18
9
12
19
20
10
11
13
14
13
The Linear-Time Algorithm
Partition D into trivial and nontrivial
microtrees. Dixon and Tarjan 97 Nontrivial
microtree Maximal subtree of D of size ?
g that contains at least one leaf of
D. Trivial microtree Single internal vertex of
D.
1
2
3
22
trivial microtree
15
4
5
7
17
16
21
6
8
18
9
12
nontrivial microtree
19
20
10
11
13
14
g 3
14
The Linear-Time Algorithm
Partition D into trivial and nontrivial
microtrees. Dixon and Tarjan 97 Nontrivial
microtree Maximal subtree of D of size ?
g that contains at least one leaf of
D. Trivial microtree Single internal vertex of
D. Core C Tree D nontrivial microtrees
has ? ? n/g leaves.
1
2
3
22
15
4
5
7
17
16
21
6
8
18
9
12
19
20
10
11
13
14
15
The Linear-Time Algorithm
Partition D into trivial and nontrivial
microtrees. Dixon and Tarjan 97 Nontrivial
microtree Maximal subtree of D of size ?
g that contains at least one leaf of
D. Trivial microtree Single internal vertex of
D. Core C Tree D nontrivial microtrees
has ? ? n/g leaves. Line Path (v1s, v2, ,
vkt) in C such that outdegreeC(vi)1,
1?i?k-1, and outdegreeC(vk) 0 or gt1.
1
2
3
22
15
4
5
7
17
16
21
6
8
18
9
12
19
20
10
11
13
14
16
The Linear-Time Algorithm
Partition D into trivial and nontrivial
microtrees. Dixon and Tarjan 97 Nontrivial
microtree Maximal subtree of D of size ?
g that contains at least one leaf of
D. Trivial microtree Single internal vertex of
D. Core C Tree D nontrivial microtrees
has ? ? n/g leaves. Line Path (v1s, v2, ,
vkt) in C such that outdegreeC(vi)1,
1?i?k-1, and outdegreeC(vk) 0 or gt1.
line
1
2
3
22
15
4
5
7
17
16
21
6
8
18
9
12
19
20
10
11
13
14
17
The Linear-Time Algorithm
Partition D into trivial and nontrivial
microtrees. Dixon and Tarjan 97 Nontrivial
microtree Maximal subtree of D of size ?
g that contains at least one leaf of
D. Trivial microtree Single internal vertex of
D. Core C Tree D nontrivial microtrees
has ? ? n/g leaves. Line Path (v1s, v2, ,
vkt) in C such that outdegreeC(vi)1,
1?i?k-1, and outdegreeC(vk) 0 or
gt1. There are L ? 2n/g lines. Contract each
line into a single vertex ? tree C with L
nodes.
1, 2, 3
4, 7, 8
15, 17
18
The Linear-Time Algorithm
Extend the definition of semidominators for the
vertices of the nontrivial microtrees Buchsbaum
et al. Pushed external dominator path
(PXDOM-path) P (v0 v, v1, v2, , vk
w) such that vi ? root of microtree of w,
for 1 ? i ? k-1. Pushed external dominator
pxdom(w) min v ?
PXDOM-path from v to w
pxdom(w)
sdom(w)
w
19
The Linear-Time Algorithm
Extend the definition of semidominators for the
vertices of the nontrivial microtrees Buchsbaum
et al. Pushed external dominator path
(PXDOM-path) P (v0 v, v1, v2, , vk
w) such that vi ? root of microtree of w,
for 1 ? i ? k-1. Pushed external dominator
pxdom(w) min v ?
PXDOM-path from v to w For any vertex w
of the core C pxdom(w)
sdom(w)
pxdom(w)
sdom(w)
w
20
The Linear-Time Algorithm
  • Overview
  • Compute internal dominators in each nontrivial
    microtree.

21
The Linear-Time Algorithm
  • Overview
  • Compute internal dominators in each nontrivial
    microtree.
  • Compute pxdoms in each nontrivial microtree t
    by link and eval on C and Nearest Common
    Ancestor (NCA) queries on a tree built by the
    sdom values of the line that contains the parent
    of the root of t.

22
The Linear-Time Algorithm
  • Overview
  • Compute internal dominators in each nontrivial
    microtree.
  • Compute pxdoms in each nontrivial microtree t
    by link and eval on C and Nearest Common
    Ancestor (NCA) queries on a tree built by the
    sdom values of the line that contains the parent
    of the root of t.
  • Compute sdoms in each line l by a top-down pass
  • using link and eval on C and
    contracting connected components in l.

23
The Linear-Time Algorithm
  • Overview
  • Compute internal dominators in each nontrivial
    microtree.
  • Compute pxdoms in each nontrivial microtree t
    by link and eval on C and Nearest Common
    Ancestor (NCA) queries on a tree built by the
    sdom values of the line that contains the parent
    of the root of t.
  • Compute sdoms in each line l by a top-down pass
  • using link and eval on C and
    contracting connected components in l.
  • Remarks link and eval run in linear-time on C
    .
  • Buchsbam et al. claimed that
    link and eval run
  • in linear time on C but the claim is
    false.

24
The Iterative Algorithm Set-based
Dominators can be computed by solving iteratively
the set of equations Allen and Cocke,
1972 Dom(v) ( ? u ? pred(v) Dom(u) ) ?
v, v ? r Initialization Dom(r)
r Dom(v) ?, v ? r In the intersection
we consider only the nonempty Dom(u).
25
The Iterative Algorithm Set-based
  • Dominators can be computed by solving iteratively
    the set of equations Allen and Cocke, 1972
  • Dom(v) ( ? u ? pred(v) Dom(u) ) ? v, v ?
    r
  • Initialization
  • Dom(r) r
  • Dom(v) ?, v ? r
  • In the intersection we consider only the nonempty
    Dom(u).
  • Each Dom(v) set can be represented by an n-bit
    vector.
  • Intersection ? bit-wise AND.
  • Requires n2 space. Very slow in practice.

26
The Iterative Algorithm Tree-based
Efficient implementation Cooper, Harvey and
Kennedy 2000 dfs(r) T ? r changed ?
true while ( changed ) do changed ?
false for all v in V r in reverse
postorder do x ? nca(pred(v)) if x ?
parent(v) then parent(v) ? x changed ?
true end done done
27
The Iterative Algorithm
Running Time Each pair wise intersection takes
O(n) time. The number of iterations is ? d
3. Kam and Ullman 76 d max back-edges
in any cycle-free path of G
O(n) Running time O(mn2) This bound is
tight, but very pessimistic in practice.
28
The Iterative Algorithm Generic Tree-based
T ? T0 / a spanning (sub)tree of G
/ changed ? true while ( changed )
do changed ? false for all v in V r in
order ? do x ? nca(pred(v)) if x ?
parent(v) then parent(v) ? x changed ?
true end done done
29
The Iterative Algorithm Generic Tree-based
T ? T0 / a spanning (sub)tree of G
/ changed ? true while ( changed )
do changed ? false for all v in V r in
order ? do x ? nca(pred(v)) if x ?
parent(v) then parent(v) ? x changed ?
true end done done Good choices (in
practice) T0 a Bread-First Search (BFS)
tree ? BFS order
30
A Hybrid Algorithm
Lemma For any vertex w ? r, idom(w) NCA(
I, parent(w), sdom(w) ). I (immediate)
dominator tree parent(w) parent of w in the
DFS tree D
31
A Hybrid Algorithm
  • Lemma For any vertex w ? r,
  • idom(w) NCA( I, parent(w), sdom(w) ).
  • I (immediate) dominator tree
  • parent(w) parent of w in the DFS tree D
  • SEMI-NCA
  • Compute sdoms as in simple version of LT.
  • Construct I incrementally applying Lemma.
  • (NCA calculations implemented naïvely)

32
Experimental Results
  • Algorithms
  • SLT simple version of Lengauer-Tarjan
  • LT almost-linear-time version of Lengauer-Tarjan
  • IDFS DFS tree-based iterative
  • IBFS BFS tree-based iterative
  • SNCA SEMI-NCA

33
Experimental Results
  • Inputs
  • Control-flow graphs from SPARC 95 generated by
    the SUIF compiler (Stanford).
  • gt 4900 graphs, avg vertices 40, edges 55
  • max vertices 2100, edges 3200
  • Control-flow graphs from SPARC 00 generated by
    the IMPACT compiler (UIUC).
  • gt 2000 graphs, avg vertices 25, edges
    70
  • max vertices580, edges3100
  • VLSI circuits from ISCAS89 suite.
  • 50 graphs, avg vertices 3200, edges
    5000
  • max vertices
    24000, edges 34000

34
Experimental Results
Times relative to BFS geometric mean and
geometric standard deviation
IDFS IBFS
LT SLT
SNCA mean dev mean
dev mean dev mean dev mean
dev CIRCUITS 5.89 1.19 6.17 1.42
6.71 1.18 4.62 1.15 4.40 1.14
SUIF-INT 2.45 1.50 2.25 1.62
3.69 1.40 2.48 1.33 2.73 1.45
IMPACT 2.60 1.65 2.24 1.77
4.02 1.40 2.74 1.33 2.56
1.31 IMPACTP 2.58 1.63 2.25 1.82
3.84 1.44 2.61 1.30 2.52 1.29
35
Experimental Results

iterations comparisons per
vertex
SDP() IDFS IBFS IDFS
IBFS LT SLT SNCA CIRCUITS
76.7 2.8000 3.2000 32.6
39.3 12.0 9.9 8.9 IMPACT
73.4 2.0686 1.4385 30.9
28.0 15.6 12.8 11.1 IMPACTP 88.6
2.0819 1.5376 30.2 32.2
15.5 12.3 10.9 SUIF-INT 63.9
2.0009 1.6659 14.9 17.2 11.2
8.6 7.2
SDP percentage of vertices v that have
parent(v) sdom(v)
36
Experimental Results
Write a Comment
User Comments (0)
About PowerShow.com