0

I am using Cudd_PrintInfo to solve the performance problem with CUDD.

After printing out the statistics, I found out that the hits are very low. I tried with and without garbage collection but it remains the same. Also, the collisions are high.
How can I fix these problems?
(Should I actually separate these two question...?)

With Garbage Collection:

**** CUDD non-modifiable parameters ****  
Memory in use: 1117983368  
Peak number of nodes: 30278794
Peak number of live nodes: 27705054  
Number of BDD variables: 8
Number of ZDD variables: 0
Number of cache entries: 2097152  
Number of cache look-ups: 37770177  
Number of cache hits: 10531  
Number of cache insertions: 37759646  
Number of cache collisions: 18808878  
Number of cache deletions: 17622843  
Cache used slots = 100.00% (expected 100.00%)  
Soft limit for cache size: 2796202  
Number of buckets in unique table: 9863168  
Used buckets in unique table: 94.60% (expected 94.14%)  
Number of BDD and ADD nodes: 29397682  
Number of ZDD nodes: 0  
Number of dead BDD and ADD nodes: 1692657  
Number of dead ZDD nodes: 0  
Total number of nodes allocated: 65693890  
Total number of nodes reclaimed: 721788  
Garbage collections so far: 22  
Time for garbage collection: 34.47 sec  
Reorderings so far: 0  
Time for reordering: 0.00 sec  

Without Garbage Collection:

**** CUDD non-modifiable parameters ****  
Memory in use: 2221756712  
Peak number of nodes: 62209140  
Peak number of live nodes: 27705053  
Number of BDD variables: 8  
Number of ZDD variables: 0  
Number of cache entries: 2097152  
Number of cache look-ups: 37770101  
Number of cache hits: 10491  
Number of cache insertions: 37759610  
Number of cache collisions: 34762582  
Number of cache deletions: 899876  
Cache used slots = 100.00% (expected 100.00%)
Soft limit for cache size: 2796202  
Number of buckets in unique table: 19988480  
Used buckets in unique table: 95.07% (expected 94.71%)  
Number of BDD and ADD nodes: 62208880  
Number of ZDD nodes: 0  
Number of dead BDD and ADD nodes: 34503856  
Number of dead ZDD nodes: 0  
Total number of nodes allocated: 65691613  
Total number of nodes reclaimed: 724064  
Garbage collections so far: 1  
Time for garbage collection: 0.42 sec  
Reorderings so far: 0  
Time for reordering: 0.00 sec  
Alfabravo
  • 7,493
  • 6
  • 46
  • 82
  • 1. The fact that you have so many live nodes while only having 8 BDD variables suggests that you may not deallocate BDD nodes as soon as you do not use them any more *or* that you have a very uncommon application. 2. You should not need to influence cache hits / cache misses unless you write your own CUDD function. Also, with only 8 variables, cache misses should not be such a big deal. – DCTLib Sep 14 '18 at 12:35
  • Also note that if you really only need 8 variables in your application, then you can represent any Boolean function using a 256-bit number, which is most likely more efficient than using CUDD. – DCTLib Sep 14 '18 at 12:37
  • Thanks very much for the comment. Actually I am doing ADD computations. And actually with ADD representations, the performance is worse than the normal version. So I was thinking whether I made some mistakes. I used Cudd_debug to check the correctness of reference and dereference method and it works fine... I think too many values are generated during the computation. – Xing Ying Chen Sep 14 '18 at 23:17

0 Answers0