CS137: Electronic Design Automation Today Last Time Force ...
CS137: Electronic Design Automation Today Last Time Force ...
CS137: Electronic Design Automation Today Last Time Force ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>CS137</strong>:<br />
<strong>Electronic</strong> <strong>Design</strong> <strong>Automation</strong><br />
<strong>Today</strong><br />
Day 20: November 23, 2005<br />
Scheduling<br />
Variants and Approaches<br />
• Scheduling<br />
– <strong>Force</strong>-Directed<br />
– SAT/ILP<br />
– Branch-and-Bound<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
1<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
2<br />
<strong>Last</strong> <strong>Time</strong><br />
<strong>Force</strong>-Directed<br />
• Resources aren’t free<br />
• Share to reduce costs<br />
• Schedule operations on resources<br />
• Greedy approximation algorithm<br />
• Problem: how exploit schedule freedom<br />
(slack) to minimize instantaneous<br />
resources<br />
– Directly solve time constrained<br />
– Trying to minimize resources<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
3<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
4<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
<strong>Force</strong>-Directed<br />
• Given a node, can schedule anywhere<br />
between ASAP and ALAP schedule<br />
time<br />
– Between latest schedule predecessor and<br />
ALAP<br />
– Between ASAP and already scheduled<br />
successors<br />
• N.b.: Scheduling node will limit freedom<br />
of nodes in path<br />
5<br />
Single Resource Challenge<br />
A1 A3 A5 A7 A8 A9 A10 A11 A12 A13<br />
A2 A4 A6<br />
B2<br />
B1<br />
B3<br />
B4<br />
B10<br />
B11<br />
B5<br />
B6<br />
B7<br />
B8<br />
B9<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
6<br />
1
<strong>Force</strong>-Directed<br />
<strong>Force</strong>-Directed<br />
• If everything where scheduled, except<br />
for the target node, we would:<br />
– examine resource usage in all timeslots<br />
allowed by precedence<br />
– place in timeslot which has least increase<br />
maximum resources<br />
• Problem: don’t know resource<br />
utilization during scheduling<br />
• Strategy: estimate resource utilization<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
7<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
<strong>Force</strong>-Directed Estimate<br />
• Assume a node is uniformly distributed<br />
within slack region<br />
– between earliest and latest possible<br />
schedule time<br />
• Use this estimate to identify most used<br />
timeslots<br />
9<br />
2<br />
2<br />
8<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
2 2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2<br />
2 2 2 2<br />
8<br />
8<br />
10<br />
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
11<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
12<br />
2
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2 3/9<br />
8<br />
8<br />
8<br />
8<br />
2 1/9<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
13<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
14<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
<strong>Force</strong>-Directed<br />
• Scheduling a node will shift distribution<br />
– all of scheduled node’s cost goes into one<br />
timeslot<br />
– predecessor/successors may have<br />
freedom limited so shift their contributions<br />
• Want to shift distribution to minimize<br />
maximum resource utilization (estimate)<br />
15<br />
2<br />
2<br />
8<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
2 2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2<br />
2 2 2 2<br />
8<br />
8<br />
Repeat<br />
16<br />
2<br />
2<br />
8<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
2 2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2<br />
2 2 2 2<br />
8<br />
2 1/9<br />
2 3/9<br />
8<br />
Repeat<br />
17<br />
2<br />
2<br />
8<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
2 2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2<br />
2 2 2 2<br />
8<br />
8<br />
18<br />
3
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
3 4/9<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
19<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
20<br />
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
3 2/9<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2 3/9<br />
8<br />
8<br />
8<br />
8<br />
2 1/9<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
21<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
22<br />
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2 3/9<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2 3/9<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
23<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
24<br />
4
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
3<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
25<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
26<br />
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2 13/18<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
27<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
28<br />
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
3 2/9<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
29<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
30<br />
5
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2 13/18<br />
8<br />
8<br />
2 13/18<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
31<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
32<br />
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2 13/18<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
33<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
34<br />
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2 13/18<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
35<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
36<br />
6
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
2 13/18<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
37<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
38<br />
Single Resource Challenge<br />
Single Resource Challenge<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2 2<br />
2<br />
2 2 2 2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
8<br />
Many steps…<br />
8<br />
8<br />
8<br />
8<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
39<br />
8<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
40<br />
<strong>Force</strong>-Directed Algorithm<br />
1. ASAP/ALAP schedule to determine range of<br />
times for each node<br />
2. Compute estimated resource usage<br />
3. Pick most constrained node<br />
(in largest time slot…)<br />
– Evaluate effects of placing in feasible time slots<br />
(compute forces)<br />
– Place in minimum cost slot and update<br />
estimates<br />
– Repeat until done<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
41<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
<strong>Time</strong><br />
• Evaluate force of putting in timeslot<br />
O(NT)<br />
– Potentially perturbing slack on net<br />
prefix/postfix for this node N<br />
– Each node potentially in T slots<br />
• Evaluate all timeslots can put in O(NT 2 )<br />
• N nodes to place<br />
•O(N 2 T 2 )<br />
– Loose bound--don’t get both T slots and N<br />
perturbations<br />
42<br />
7
Two Constraint Challenge<br />
SAT/ILP<br />
(Integer-Linear Programming)<br />
• Processing elements have limited<br />
memory<br />
– Instruction memory (data memory)<br />
• Tasks have different requirements for<br />
compute and instruction memory<br />
– i.e. Run length not correlated to code<br />
length<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
43<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
44<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Task<br />
• Task: schedule tasks onto PEs obeying<br />
both memory and compute capacity<br />
limits<br />
Example and<br />
ILP solution<br />
From<br />
Plishker et al.<br />
NSCD2004<br />
45<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Task<br />
• Task: schedule tasks onto PEs obeying<br />
both memory and compute capacities<br />
• two capacity partitioning problem<br />
– …actually, didn’t say anything about<br />
communication…<br />
• two capacity bin packing problem<br />
• Task: i <br />
46<br />
SAT Packing<br />
•A i,j – task i assigned to resource j<br />
Constraints<br />
• Coverage constraints<br />
• Uniqueness constraints<br />
• Cardinality constraints<br />
– PE compute<br />
– PE memory<br />
Allow Code Sharing<br />
• Two tasks of same type can share code<br />
• Instead of memory capacity<br />
– Vector of memory usage<br />
• Compute PE Imem vector<br />
– As OR of task vectors assigned to it<br />
• Compute mem space as sum of nonzero<br />
vector entries<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
47<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
48<br />
8
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Allow Code Sharing<br />
• Two tasks of same type can share code<br />
• Task has vector of memory uage<br />
– Task i needs set of instructions k: T i,k<br />
• Compute PE Imem vector<br />
– OR (all i): PE.Imem j,k +=A i,j * T i,k<br />
• PE Mem space<br />
– PE.Total_Imem j = Σ(PE.Imem j,k *Instrs(k))<br />
49<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Symmetries<br />
• As with partitioning, many symmetries<br />
• Speedup with symmetry breaking<br />
– Tasks in same class are equivalent<br />
– PEs indistinguishable<br />
– Total ordering on tasks and PEs<br />
– Add constraints to force tasks to be assigned<br />
to PEs by ordering<br />
– Plishker claims “significant runtime speedup”<br />
– Using GALENA [DAC 2003] psuedo-Boolean<br />
SAT solver<br />
50<br />
Plishker Task Example<br />
Results<br />
Greedy (first-fit) binpack<br />
SAT/ILP Solve<br />
Solutions in < 1 second<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
51<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
52<br />
Why can they do this?<br />
Why can they do this?<br />
• Ignore precedence?<br />
• Ignore Interconnect?<br />
• Ignore precedence?<br />
– feed forward, buffered<br />
• Ignore Interconnect?<br />
– Through shared memory, not dominant?<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
53<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
54<br />
9
Interconnect Buffers<br />
Interconnect<br />
Buffer<br />
• Allow “Software Pipelining”<br />
Each data item<br />
Spatial we would pipeline, running all three at once<br />
Think of each schedule instance as one<br />
timestep in spatial pipeline.<br />
A B C<br />
50 100 50<br />
PE0 C A<br />
PE1<br />
B<br />
A B C<br />
A B C<br />
A B C<br />
A B C<br />
B B B B<br />
C A C A C A C A<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
55<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
56<br />
Add Precedence to SAT/ILP?<br />
• Assign start time to each task<br />
• Precedence: constrain start of each<br />
task to be greater than start+run of each<br />
predecessor<br />
• <strong>Time</strong> Exclusivity: constrain nonoverlap<br />
of startstart+run-1 on nodes<br />
on same PE<br />
– Maybe formulate as order on PE<br />
– And make PE order predecessor like a<br />
task predecessor?<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Untested conjecture<br />
57<br />
Memory Schedule Variants<br />
• Persistent: holds memory whole time<br />
– E.g. task state, instructions<br />
• Task temporary: only uses memory<br />
space while task running<br />
• Intra-Task: use memory between point<br />
of production and consumption<br />
– E.g. Def-Use chains<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
58<br />
Memory Schedule Variants<br />
• Persistent:<br />
– Binpacking in memory<br />
• Task temporary:<br />
– Co-schedule memory slot with execution<br />
• Intra-Task:<br />
– Lifetime in memory depends on scheduling<br />
def and last use<br />
– Phase Ordered: Register coloring<br />
Branch-and-Bound<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
59<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
60<br />
10
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Brute-<strong>Force</strong><br />
• Try all schedules<br />
• Branching/Backtracking Search<br />
• Start w/ nothing scheduled (ready<br />
queue)<br />
• At each move (branch) pick:<br />
– available resource time slot<br />
– ready task (predecessors completed)<br />
– schedule task on resource<br />
61<br />
Example<br />
T1<br />
T4<br />
T2<br />
T6<br />
T5<br />
T1→time 1<br />
T3→time 1<br />
T3<br />
T2→time 1<br />
Target: 2 FUs<br />
idle→time 1<br />
idle→time 2 T4→time 2<br />
T3→time2<br />
62<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Branching Search<br />
• Explores entire state space<br />
– finds optimum schedule<br />
• Exponential work<br />
–O (N (resources*time-slots) )<br />
• Many schedules completely<br />
uninteresting<br />
Reducing Work<br />
1. Canonicalize “equivalent” schedule<br />
configurations<br />
2. Identify “dominating” schedule<br />
configurations<br />
3. Prune partial configurations which will<br />
lead to worse (or unacceptable<br />
results)<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
63<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
64<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
“Equivalent” Schedules<br />
• If multiple resources of same type<br />
– assignment of task to particular resource at<br />
a particular timeslot is not distinguishing<br />
T1<br />
T2<br />
T3<br />
Keep track of resource usage by capacity at time-slot.<br />
T2<br />
T1<br />
T3<br />
65<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
“Equivalent” Schedule<br />
Prefixes<br />
T1<br />
T4<br />
T2<br />
T6<br />
T5<br />
T3<br />
T1 T3<br />
T1 T2<br />
T2 T4<br />
T3 T4<br />
66<br />
11
“Non-Equivalent” Schedule<br />
Prefixes<br />
T1<br />
T4<br />
T2<br />
T6<br />
T5<br />
T3<br />
T1<br />
T2<br />
T3<br />
T2<br />
T3<br />
T1<br />
Pruning Prefixes?<br />
• I’m not sure there is an efficient way<br />
(general)?<br />
• Keep track of schedule set<br />
– walk through state-graph of scheduled<br />
prefixes<br />
– unfortunately, set is power-set so 2 N<br />
– …but not all feasible, so shape of graph<br />
may simplify<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
67<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
68<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Dominant Schedules<br />
• A strictly shorter schedule<br />
– scheduling the same or more tasks<br />
– will always be superior to the longer<br />
schedule<br />
T1<br />
T3<br />
T3<br />
T2<br />
T1<br />
T4<br />
T5<br />
T4<br />
T3<br />
T4<br />
T2 T5<br />
T1 T2 T5<br />
69<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Pruning<br />
• If can establish a particular schedule<br />
path will be worse than one we’ve<br />
already seen<br />
– we can discard it w/out further exploration<br />
• In particular:<br />
– LB=current schedule time +<br />
lower_bound_estimate<br />
– if LB greater than existing solution, prune<br />
70<br />
Pruning Techniques<br />
Establish Lower Bound on schedule time<br />
• Critical Path (ASAP schedule)<br />
• Resource Bound<br />
• Critical Chain<br />
“Critical Chain” Lower Bound<br />
• Bottleneck resource present coupled<br />
resource and latency bound<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
71<br />
Single red resource<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
72<br />
12
“Critical Chain” Lower Bound<br />
• Bottleneck resource present coupled<br />
resource and latency bound<br />
Single red resource<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Critical path 5<br />
Resource Bound (1,1) 4<br />
Critical Chain (1,1) 7<br />
73<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Alpha-Beta Search<br />
• Generalization<br />
– keep both upper and lower bound<br />
estimates on partial schedule<br />
• Lower bounds from CP, RB, CC<br />
• Upper bounds with List Scheduling<br />
– expand most promising paths<br />
• (least upper bound, least lower bound)<br />
– prune based on lower bounds exceeding<br />
known upper bound<br />
– (technique typically used in games/Chess)<br />
74<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Alpha-Beta<br />
• Each scheduling decision will tighten<br />
– lower/upper bound estimates<br />
• Can choose to expand<br />
– least current time (breadth first)<br />
– least lower bound remaining (depth first)<br />
– least lower bound estimate<br />
– least upper bound estimate<br />
• Can control greediness<br />
– weighting lower/upper bound<br />
– selecting “most promising”<br />
75<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
Note<br />
• Aggressive pruning and ordering<br />
– can sometimes make polynomial time in<br />
practice<br />
– often cannot prove will be polynomial time<br />
– usually represents problem structure we<br />
still need to understand<br />
76<br />
Multiple Resources<br />
• Works for multiple resource case<br />
• Computing lower-bounds per resource<br />
– resource constrained<br />
• Sometimes deal with resource coupling<br />
– e.g. must have 1 A and 1 B simultaneously<br />
or in fixed time slot relation<br />
• e.g. bus and memory port<br />
Summary<br />
• Resource estimates and Refinement<br />
• SAT/ILP Schedule<br />
• Software Pipelining<br />
• Branch-and-bound search<br />
– “equivalent” states<br />
– dominators<br />
– estimates/pruning<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
77<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
78<br />
13
Admin<br />
Big Ideas:<br />
• Class<br />
– Friday (no holiday)<br />
– Next week:<br />
• Monday, Friday<br />
• No Wed.<br />
• Next week’s reading all online<br />
• Estimate Resource Usage<br />
• Use dominators to reduce work<br />
• Techniques:<br />
– <strong>Force</strong>-Directed<br />
– SAT/ILP<br />
–Coloring<br />
–Search<br />
• Branch-and-Bound<br />
• Alpha-Beta<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
79<br />
CALTECH <strong>CS137</strong> Fall2005 -- DeHon<br />
80<br />
14