2010年12月3日 星期五

ASAP ALAP scheduling @perl

利用 ASAP, ALAP 做 scheduling 找出每個 Vertex 的 tolerance range. 我們就可以利用這樣的 info 來減少 peak power 的產生. 範例如下圖所示 constrain 1. 在不影響每個 Vertex 的先後順序下, 用 ASAP 算出 begin 值. 用 ALAP 算出 end 值. 2. 當 begin==end 時,為 critical path, 表示這個 vertex 不能被移動, begin!=end 表示為 vertex 可以移動的位置. example : vertex 1 : begin time 2 end time 4 vertex 2 : begin time 3 end time 3 vertex 3 : begin time 2 end time 4 由此可知, vertex 2 的位置為固定值, 只能靠移動 Vertex1, Vertex3 來減少 peak power. worst case best case ps: 這可以用 short path algorithm 來算出最小值 example : power_vertex1(x) 2<=x<=4; power_vertex2(y) 3<=y<=3; power_vertex3(z) 2<=z<=4; find min( power_vertex1(x) + power_vertex2(y) + power_vertex3(z) )
   my $tt = CDFG->new();
   
   $tt->set_time_weighted_vertex('#::1',0);
   ...
   $tt->set_time_weighted_edge('<::0','#::1',1);
   ...

   # initial set
   $tt->run_time_weighted_ini();

   # ASAP flow
   $tt->run_time_weighted_test();
   $tt->run_time_weighted_ASAP();
   $tt->rst_time_weighted_ASAP();
   # dump or not
   $tt->dump_ASAP_graphviz_file('ASAP.dot');

   # ALAP flow
   $tt->run_time_weighted_test();
   $tt->run_time_weighted_max_path();
   $tt->run_time_weighted_ALAP();
   $tt->rst_time_weighted_ALAP();
   # dump or not
   $tt->dump_ALAP_grpahviz_file('ALAP.dot');

   # report
my $rpt = $tt->run_report();
   print Dumper($rpt);


project: https://github.com/funningboy/SOC_c_model/blob/master/ASALAP/main.pl

沒有留言:

張貼留言