Non-deterministic behavior in ESOP computation
Opened this issue · 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
- I have tried to run in DEBUG mode and there was no assertion failure (or the reported bug is an assertion failure).
- I have made sure that the provided code compiles and the testcase reproduces the error.
- I have minimized the testcase.
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.