Skip to content

Commit

Permalink
Fixing missed cases in mig_resub (lsils#415)
Browse files Browse the repository at this point in the history
* is_dead check is not needed

* happy new year!

* performance bug in exhaustive resub

* fix 2-resub

* clean up

* use enumerative resub (the old one) by default

* update experimental results
  • Loading branch information
lee30sonia authored Jan 5, 2021
1 parent bf154eb commit 1c408b6
Show file tree
Hide file tree
Showing 6 changed files with 207 additions and 364 deletions.
2 changes: 1 addition & 1 deletion experiments/mig_resubstitution.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* mockturtle: C++ logic network library
* Copyright (C) 2018-2019 EPFL
* Copyright (C) 2018-2021 EPFL
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
Expand Down
219 changes: 37 additions & 182 deletions experiments/mig_resubstitution.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,289 +4,144 @@
{
"benchmark": "adder",
"equivalent": true,
"runtime": 0.01759999990463257,
"runtime": 0.010364412330091,
"size_after": 893,
"size_before": 1020
},
{
"benchmark": "bar",
"equivalent": true,
"runtime": 0.03628699854016304,
"size_after": 3072,
"runtime": 0.030435612425208092,
"size_after": 2944,
"size_before": 3336
},
{
"benchmark": "div",
"equivalent": true,
"runtime": 0.9812279939651489,
"size_after": 56651,
"runtime": 1.4462156295776367,
"size_after": 51914,
"size_before": 57247
},
{
"benchmark": "hyp",
"equivalent": true,
"runtime": 6.720967769622803,
"size_after": 206473,
"runtime": 9.733596801757813,
"size_after": 198816,
"size_before": 214335
},
{
"benchmark": "log2",
"equivalent": true,
"runtime": 0.42284300923347473,
"size_after": 32008,
"runtime": 0.5198823809623718,
"size_after": 31998,
"size_before": 32060
},
{
"benchmark": "max",
"equivalent": true,
"runtime": 0.023905999958515167,
"runtime": 0.023132337257266045,
"size_after": 2840,
"size_before": 2865
},
{
"benchmark": "multiplier",
"equivalent": true,
"runtime": 0.3989030122756958,
"size_after": 26819,
"runtime": 0.44245970249176025,
"size_after": 26796,
"size_before": 27062
},
{
"benchmark": "sin",
"equivalent": true,
"runtime": 0.0933689996600151,
"size_after": 5339,
"runtime": 0.10537709295749664,
"size_after": 5317,
"size_before": 5416
},
{
"benchmark": "sqrt",
"equivalent": true,
"runtime": 0.5849940180778503,
"size_after": 21902,
"runtime": 0.5356785655021667,
"size_after": 20410,
"size_before": 24618
},
{
"benchmark": "square",
"equivalent": true,
"runtime": 0.3226509988307953,
"size_after": 18276,
"runtime": 0.3154604136943817,
"size_after": 18060,
"size_before": 18484
},
{
"benchmark": "arbiter",
"equivalent": true,
"runtime": 0.10873500257730484,
"size_after": 11839,
"runtime": 0.12454893440008163,
"size_after": 11711,
"size_before": 11839
},
{
"benchmark": "cavlc",
"equivalent": true,
"runtime": 0.07001599669456482,
"size_after": 636,
"runtime": 0.07970646768808365,
"size_after": 615,
"size_before": 693
},
{
"benchmark": "ctrl",
"equivalent": true,
"runtime": 0.04500100016593933,
"size_after": 100,
"runtime": 0.034438855946063995,
"size_after": 86,
"size_before": 174
},
{
"benchmark": "dec",
"equivalent": true,
"runtime": 0.01410400029271841,
"runtime": 0.01321916002780199,
"size_after": 304,
"size_before": 304
},
{
"benchmark": "i2c",
"equivalent": true,
"runtime": 0.01971299946308136,
"size_after": 1280,
"runtime": 0.019494887441396713,
"size_after": 1245,
"size_before": 1342
},
{
"benchmark": "int2float",
"equivalent": true,
"runtime": 0.006262000184506178,
"size_after": 237,
"runtime": 0.006591695826500654,
"size_after": 222,
"size_before": 260
},
{
"benchmark": "mem_ctrl",
"equivalent": true,
"runtime": 0.7440239787101746,
"size_after": 44612,
"runtime": 0.9023139476776123,
"size_after": 43447,
"size_before": 46836
},
{
"benchmark": "priority",
"equivalent": true,
"runtime": 0.01584099978208542,
"size_after": 776,
"runtime": 0.010226909071207047,
"size_after": 668,
"size_before": 978
},
{
"benchmark": "router",
"equivalent": true,
"runtime": 0.002862999914214015,
"runtime": 0.0028271928895264864,
"size_after": 257,
"size_before": 257
},
{
"benchmark": "voter",
"equivalent": true,
"runtime": 0.23970000445842743,
"size_after": 11870,
"runtime": 0.30536797642707825,
"size_after": 10462,
"size_before": 13758
}
],
"version": "bbd1506"
},
{
"entries": [
{
"benchmark": "adder",
"equivalent": true,
"runtime": 0.010076023638248444,
"size_after": 893,
"size_before": 1020
},
{
"benchmark": "bar",
"equivalent": true,
"runtime": 0.03214477375149727,
"size_after": 3072,
"size_before": 3336
},
{
"benchmark": "div",
"equivalent": true,
"runtime": 0.67690509557724,
"size_after": 56714,
"size_before": 57247
},
{
"benchmark": "hyp",
"equivalent": true,
"runtime": 5.334950923919678,
"size_after": 206473,
"size_before": 214335
},
{
"benchmark": "log2",
"equivalent": true,
"runtime": 0.4067056477069855,
"size_after": 32008,
"size_before": 32060
},
{
"benchmark": "max",
"equivalent": true,
"runtime": 0.021115295588970184,
"size_after": 2840,
"size_before": 2865
},
{
"benchmark": "multiplier",
"equivalent": true,
"runtime": 0.4099847078323364,
"size_after": 26819,
"size_before": 27062
},
{
"benchmark": "sin",
"equivalent": true,
"runtime": 0.09224862605333328,
"size_after": 5339,
"size_before": 5416
},
{
"benchmark": "sqrt",
"equivalent": true,
"runtime": 0.45702600479125977,
"size_after": 21902,
"size_before": 24618
},
{
"benchmark": "square",
"equivalent": true,
"runtime": 0.27489277720451355,
"size_after": 18276,
"size_before": 18484
},
{
"benchmark": "arbiter",
"equivalent": true,
"runtime": 0.10679267346858978,
"size_after": 11839,
"size_before": 11839
},
{
"benchmark": "cavlc",
"equivalent": true,
"runtime": 0.06770826876163483,
"size_after": 636,
"size_before": 693
},
{
"benchmark": "ctrl",
"equivalent": true,
"runtime": 0.025390056893229485,
"size_after": 103,
"size_before": 174
},
{
"benchmark": "dec",
"equivalent": true,
"runtime": 0.01241659838706255,
"size_after": 304,
"size_before": 304
},
{
"benchmark": "i2c",
"equivalent": true,
"runtime": 0.01579423062503338,
"size_after": 1280,
"size_before": 1342
},
{
"benchmark": "int2float",
"equivalent": true,
"runtime": 0.005563724786043167,
"size_after": 237,
"size_before": 260
},
{
"benchmark": "mem_ctrl",
"equivalent": true,
"runtime": 0.7887808084487915,
"size_after": 44613,
"size_before": 46836
},
{
"benchmark": "priority",
"equivalent": true,
"runtime": 0.014381092973053455,
"size_after": 781,
"size_before": 978
},
{
"benchmark": "router",
"equivalent": true,
"runtime": 0.0028713271021842957,
"size_after": 257,
"size_before": 257
},
{
"benchmark": "voter",
"equivalent": true,
"runtime": 0.23080433905124664,
"size_after": 11874,
"size_before": 13758
}
],
"version": "88afeb8"
"version": "17b339b"
}
]
12 changes: 1 addition & 11 deletions include/mockturtle/algorithms/functional_reduction.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* mockturtle: C++ logic network library
* Copyright (C) 2018-2020 EPFL
* Copyright (C) 2018-2021 EPFL
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
Expand Down Expand Up @@ -180,11 +180,6 @@ class functional_reduction_impl
ntk.foreach_gate( [&]( auto const& n, auto i ) {
pbar( i, i, candidates );

if ( ntk.is_dead( n ) )
{
return true; /* next */
}

check_tts( n );
bool const_value;
if ( tts[n] == zero )
Expand Down Expand Up @@ -234,11 +229,6 @@ class functional_reduction_impl
ntk.foreach_gate( [&]( auto const& root, auto i ) {
pbar( i, i, candidates );

if ( ntk.is_dead( root ) )
{
return true; /* next */
}

check_tts( root );
auto tt = tts[root];
auto ntt = ~tts[root];
Expand Down
Loading

0 comments on commit 1c408b6

Please sign in to comment.