49
San Diego October 4-7, 2006 •Over 1,000 women in computing •Events for undergraduates considering careers and graduate school •Events for graduate students •Parties, company representatives, and more! The Anita Borg Institute for Women and Technology and the Association for Computing Machinery Present Volunteers Needed! http://www.cs.ucsd.edu/~ bsimon

San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

  • View
    219

  • Download
    1

Embed Size (px)

Citation preview

Page 1: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

San DiegoOctober 4-7, 2006

•Over 1,000 women in computing•Events for undergraduates considering careers and graduate school•Events for graduate students•Parties, company representatives, and more!

The Anita Borg Institute for Women and Technology and the Association for Computing Machinery Present

Volunteers Needed!http://www.cs.ucsd.edu/~bsimon

Free registration!

Page 2: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Keynote Speakers

• Shirley Tilghman, President, Princeton University

• Sally Ride, former NASA astronaut and professor UCSD

• Helen Greiner, President, iRobot

Page 3: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Administrative info

• Subscribe to the class mailing list!!!– instructions are on the class web page, which is

accessible from my home page, which is accessible by searching for Sorin Lerner on google

Page 4: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

From last lecture

• Flow functions: Given information in before statement s, Fs(in) returns information after statement s

• Flow functions are a central component of a dataflow analysis

• They state constraints on the information flowing into and out of a statement

Page 5: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

1: x := ...

2: y := ...

3: y := ...

4: p := ...

if(...)

... x ...

5: x := ...

... y ...

... x ...

6: x := ...

7: *p := ...

merge

... x ...

... y ...

8: y := ...

d0

d1

d2

d3

d5

d6

d7

d9

d10

d11

d13

d14

d15

d16

d12

d4

d8

Back to exampled1 = Fa(d0)

d2 = Fb(d1)

d3 = Fc(d2)

d4 = Fd(d3)

d5 = Fe(d4)

d6 = Fg(d5)

d7 = Fh(d6)

d8 = Fi(d7)

d10 = Fj(d9)

d11 = Fk(d10)

d12 = Fl(d11)

d9 = Ff(d5)

d13 = Fm(d12, d8)

d14 = Fn(d13)

d15 = Fo(d14)

d16 = Fp(d15)

How to find solutions for di?

Page 6: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

How to find solutions for di?

• This is a forward problem– given information flowing in to a node, can determine

using the flow function the info flow out of the node

• To solve, simply propagate information forward through the control flow graph, using the flow functions

• What are the problems with this approach?

Page 7: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

First problem

• What about the incoming information?– d0 is not constrained

– so where do we start?

• Need to constrain d0

• Two options:– explicitly state entry information– have an entry node whose flow function sets the

information on entry (doesn’t matter if entry node has an incoming edge, its flow function ignores any input)

Page 8: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Entry node

s: entry

in

out

out = { x ! s | x 2 Formals }

Page 9: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

1: x := ...

2: y := ...

3: y := ...

4: p := ...

if(...)

... x ...

5: x := ...

... y ...

... x ...

6: x := ...

7: *p := ...

merge

... x ...

... y ...

8: y := ...

d0

d1

d2

d3

d5

d6

d7

d9

d10

d11

d13

d14

d15

d16

d12

d4

d8

Back to exampled1 = Fa(d0)

d2 = Fb(d1)

d3 = Fc(d2)

d4 = Fd(d3)

d5 = Fe(d4)

d6 = Fg(d5)

d7 = Fh(d6)

d8 = Fi(d7)

d10 = Fj(d9)

d11 = Fk(d10)

d12 = Fl(d11)

d9 = Ff(d5)

d13 = Fm(d12, d8)

d14 = Fn(d13)

d15 = Fo(d14)

d16 = Fp(d15)

d0 = Fentry()

Which order to process nodes in?

Page 10: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

How to find solutions for di?

• Sort nodes in topological order– each node appears in the order after all of its

predecessors

• Just run the flow functions for each of the nodes in the topological order

Page 11: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Second problem

• When there are loops, there is no topological order!

• What to do?

• Let’s try and see what we should do

Page 12: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

1: x := ...

2: y := ...

3: y := ...

4: p := ...

... x ...

5: x := ...

... y ...

... x ...

6: x := ...

7: *p := ...

... x ...

... y ...

8: y := ...

Page 13: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

1: x := ...

2: y := ...

3: y := ...

4: p := ...

... x ...

5: x := ...

... y ...

... x ...

6: x := ...

7: *p := ...

... x ...

... y ...

8: y := ...

Page 14: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Solution: iterate!

• Initialize all di to the empty set

• Store all nodes onto a worklist

• while worklist is not empty:– remove node n from worklist– apply flow function for node n

– update the appropriate di, and add nodes whose inputs have changed back onto worklist

Page 15: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Worklist algorithm

let m: map from edge to computed value at edgelet worklist: work list of nodes

for each edge e in CFG do m(e) := ;

for each node n do worklist.add(n)

while (worklist.empty.not) do let n := worklist.remove_any; let info_in := m(n.incoming_edges); let info_out := F(n, info_in); for i := 0 .. info_out.length do if (m(n.outgoing_edges[i]) info_out[i]) m(n.outgoing_edges[i]) := info_out[i]; worklist.add(n.outgoing_edges[i].dst);

Page 16: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Issues with worklist algorithm

Page 17: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Two issues with worklist algorithm

• Oreding– In what order should the original nodes be added to

the worklist?– What order should nodes be removed from the

worklist?

• Does this algorithm terminate?

Page 18: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Order of nodes

• Topological order assuming back-edges have been removed

• Reverse depth first order

• Use an ordered worklist

Page 19: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Termination

• Why is termination important?

• Can we stop the algorithm in the middle and just say we’re done...

• No: we need to run it to completion, otherwise the results are not safe...

Page 20: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Termination

• Assuming we’re doing reaching defs, let’s try to guarantee that the worklist loop terminates, regardless of what the flow function F does

while (worklist.empty.not) do let n := worklist.remove_any; let info_in := m(n.incoming_edges); let info_out := F(n, info_in); for i := 0 .. info_out.length do if (m(n.outgoing_edges[i]) info_out[i]) m(n.outgoing_edges[i]) := info_out[i]; worklist.add(n.outgoing_edges[i].dst);

Page 21: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Termination

• Assuming we’re doing reaching defs, let’s try to guarantee that the worklist loop terminates, regardless of what the flow function F does

while (worklist.empty.not) do let n := worklist.remove_any; let info_in := m(n.incoming_edges); let info_out := F(n, info_in); for i := 0 .. info_out.length do let new_info := m(n.outgoing_edges[i]) [ info_out[i]; if (m(n.outgoing_edges[i]) new_info]) m(n.outgoing_edges[i]) := new_info; worklist.add(n.outgoing_edges[i].dst);

Page 22: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Structure of the domain

• We’re using the structure of the domain outside of the flow functions

• In general, it’s useful to have a framework that formalizes this structure

• We will use lattices

Page 23: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Background material

Page 24: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Relations

• A relation over a set S is a set R µ S £ S– We write a R b for (a,b) 2 R

• A relation R is:– reflexive iff

8 a 2 S . a R a– transitive iff

8 a 2 S, b 2 S, c 2 S . a R b Æ b R c ) a R c– symmetric iff

8 a, b 2 S . a R b ) b R a– anti-symmetric iff

8 a, b, 2 S . a R b ) :(b R a)

Page 25: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Relations

• A relation over a set S is a set R µ S £ S– We write a R b for (a,b) 2 R

• A relation R is:– reflexive iff

8 a 2 S . a R a– transitive iff

8 a 2 S, b 2 S, c 2 S . a R b Æ b R c ) a R c– symmetric iff

8 a, b 2 S . a R b ) b R a– anti-symmetric iff

8 a, b, 2 S . a R b Æ b R a ) a = b

Page 26: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Partial orders

• An equivalence class is a relation that is:

• A partial order is a relation that is:

Page 27: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Partial orders

• An equivalence class is a relation that is:– reflexive, transitive, symmetric

• A partial order is a relation that is:– reflexive, transitive, anti-symmetric

• A partially ordered set (a poset) is a pair (S,·) of a set S and a partial order · over the set

• Examples of posets: (2S, µ), (Z, ·), (Z, divides)

Page 28: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Lub and glb

• Given a poset (S, ·), and two elements a 2 S and b 2 S, then the:– least upper bound (lub) is an element c such that

a · c, b · c, and 8 d 2 S . (a · d Æ b · d) ) c · d– greatest lower bound (glb) is an element c such that

c · a, c · b, and 8 d 2 S . (d · a Æ d · b) ) d · c

Page 29: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Lub and glb

• Given a poset (S, ·), and two elements a 2 S and b 2 S, then the:– least upper bound (lub) is an element c such that

a · c, b · c, and 8 d 2 S . (a · d Æ b · d) ) c · d– greatest lower bound (glb) is an element c such that

c · a, c · b, and 8 d 2 S . (d · a Æ d · b) ) d · c

• lub and glb don’t always exists:

Page 30: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Lattices

• A lattice is a tuple (S, v, ?, >, t, u) such that:– (S, v) is a poset– 8 a 2 S . ? v a– 8 a 2 S . a v >– Every two elements from S have a lub and a glb– t is the least upper bound operator, called a join– u is the greatest lower bound operator, called a meet

Page 31: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Examples of lattices

• Powerset lattice

Page 32: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Examples of lattices

• Booleans expressions

Page 33: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

End of background material

Page 34: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Back to our example

• We formalize our domain with a powerset lattice

• What should be top and what should be bottom?

• Does it matter?

Page 35: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Back to our example

• We formalize our domain with a powerset lattice

• What should be top and what should be bottom?

• Does it matter?– It matters because, as we’ve seen, there is a notion of

approximation, and we will this notion to show up in the lattice

Page 36: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Direction of lattice

• Unfortunately:– dataflow analysis community has picked one direction– abstract interpretation community has picked the

other

• We will work with the abstract interpretation direction

• Bottom is the most precise (optimistic) answer, Top the most imprecise conservative

Page 37: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Direction of lattice

• Always safe to go up in the lattice

• Can always set the result to >

• Hard to go down in the lattice

• So ... Bottom will be the empty set in reaching defs

Page 38: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Worklist algorithm using latticeslet m: map from edge to computed value at edgelet worklist: work list of nodes

for each edge e in CFG do m(e) := ?

for each node n do worklist.add(n)

while (worklist.empty.not) do let n := worklist.remove_any; let info_in := m(n.incoming_edges); let info_out := F(n, info_in); for i := 0 .. info_out.length do let new_info := m(n.outgoing_edges[i]) t info_out[i]; if (m(n.outgoing_edges[i]) new_info]) m(n.outgoing_edges[i]) := new_info; worklist.add(n.outgoing_edges[i].dst);

Page 39: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Termination of this algorithm?

• For reaching definitions, it terminates...

• Why?– lattice is finite

• Can we loosen this requirement?– Yes, we only require the lattice to have a finite height

• Height of a lattice: length of the longest ascending or descending chain

• Height of lattice (2S, µ) =

Page 40: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Termination of this algorithm?

• For reaching definitions, it terminates...

• Why?– lattice is finite

• Can we loosen this requirement?– Yes, we only require the lattice to have a finite height

• Height of a lattice: length of the longest ascending or descending chain

• Height of lattice (2S, µ) = | S |

Page 41: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Termination

• Still, it’s annoyting to have to perform a join in the worklist algorithm

• It would be nice to get rid of it, if there is a property of the flow functions that would allow us to do so

while (worklist.empty.not) do let n := worklist.remove_any; let info_in := m(n.incoming_edges); let info_out := F(n, info_in); for i := 0 .. info_out.length do let new_info := m(n.outgoing_edges[i]) t info_out[i]; if (m(n.outgoing_edges[i]) new_info]) m(n.outgoing_edges[i]) := new_info; worklist.add(n.outgoing_edges[i].dst);

Page 42: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Even more formal

• To reason more formally about termination and precision, we re-express our worklist algorithm mathematically

• We will use fixed points to formalize our algorithm

Page 43: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Fixed points

• Recall, we are computing m, a map from edges to dataflow information

• Define a global flow function F as follows: F takes a map m as a parameter and returns a new map m’, in which individual local flow functions have been applied

Page 44: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Fixed points

• We want to find a fixed point of F, that is to say a map m such that m = F(m)

• Approach to doing this?

• Define ?, which is ? lifted to be a map:? = e. ?

• Compute F(?), then F(F(?)), then F(F(F(?))), ... until the result doesn’t change anymore

Page 45: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Fixed points

• Formally:

• We would like the sequence Fi(?) for i = 0, 1, 2 ... to be increasing, so we can get rid of the outer join

• Require that F be monotonic:– 8 a, b . a v b ) F(a) v F(b)

Page 46: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Fixed points

Page 47: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Back to termination

• So if F is monotonic, we have what we want: finite height ) termination, without the outer join

• Also, if the local flow functions are monotonic, then global flow function F is monotonic

Page 48: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Another benefit of monotonicity

• Suppose Marsians came to earth, and miraculously give you a fixed point of F, call it fp.

• Then:

Page 49: San Diego October 4-7, 2006 Over 1,000 women in computing Events for undergraduates considering careers and graduate school Events for graduate students

Another benefit of monotonicity

• We are computing the least fixed point...