mockturtle icon indicating copy to clipboard operation
mockturtle copied to clipboard

Non-deterministic behavior in ESOP computation

Open aletempiac opened this issue 2 years ago • 1 comments

Describe the bug Non-deterministic behavior in ESOP computation in Kitty. Functions esop_from_optimum_pkrm, and esop_from_pprm_slow use an unordered_set data structure to store the cubes. That content is moved to a vector later. Since the order of the cubes in the vector dependents on the compiler, it leads to a non-deterministic behavior.

Environment

  • OS: MacOS, Linux, Windows
  • Compiler: all the tested ones
  • Compilation mode: DEBUG or RELEASE

Check list

  • [x] I have tried to run in DEBUG mode and there was no assertion failure (or the reported bug is an assertion failure).
  • [x] I have made sure that the provided code compiles and the testcase reproduces the error.
  • [x] I have minimized the testcase.

aletempiac avatar Aug 04 '23 17:08 aletempiac

Are the results wrong, or just non-deterministic? In my opinion, producing non-deterministic but correct results is not counted as a "bug", although it is not preferred in an experiment setting. I'm not even sure if non-deterministic is the correct word, if you said the result depends on the compiler. I think non-deterministic means if you run it multiple times on the same machine, the results are different (e.g. when time is used as the random seed, or memory-related bugs depending on the memory address or content being allocated each time). Also, maybe we should put this issue in kitty, not in mockturtle.

lee30sonia avatar Oct 11 '23 05:10 lee30sonia