diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2013-05-18 00:34:37 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2013-05-18 00:34:37 -0700 |
commit | 66ff650f4865adff5aa41fd6c5675a4fe929b482 (patch) | |
tree | 8528190251f1c1ec67f1f338ac3a4211a248e1a2 /src/sat/bsat/satSolver.c | |
parent | 84b3b9144754b738b163cee4d4c99e7b7206ddd1 (diff) | |
download | abc-66ff650f4865adff5aa41fd6c5675a4fe929b482.tar.gz abc-66ff650f4865adff5aa41fd6c5675a4fe929b482.tar.bz2 abc-66ff650f4865adff5aa41fd6c5675a4fe929b482.zip |
SAT variable profiling.
Diffstat (limited to 'src/sat/bsat/satSolver.c')
-rw-r--r-- | src/sat/bsat/satSolver.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/sat/bsat/satSolver.c b/src/sat/bsat/satSolver.c index 8f3098d8..574bcd74 100644 --- a/src/sat/bsat/satSolver.c +++ b/src/sat/bsat/satSolver.c @@ -466,6 +466,10 @@ static int clause_create_new(sat_solver* s, lit* begin, lit* end, int learnt) static inline int sat_solver_enqueue(sat_solver* s, lit l, int from) { int v = lit_var(l); + + if ( s->pFreqs[v]++ == 0 ) + s->nVarUsed++; + #ifdef VERBOSEDEBUG printf(L_IND"enqueue("L_LIT")\n", L_ind, L_lit(l)); #endif @@ -957,6 +961,8 @@ sat_solver* sat_solver_new(void) s->nLearntRatio = LEARNT_MAX_RATIO_DEFAULT; // ratio of learned clause limit s->nLearntMax = s->nLearntStart; + s->pFreqs = ABC_CALLOC( int, 10000000 ); + // initialize vectors veci_new(&s->order); veci_new(&s->trail_lim); @@ -1077,6 +1083,14 @@ void sat_solver_setnvars(sat_solver* s,int n) void sat_solver_delete(sat_solver* s) { + int i, nVars = 0; + // count non-zero entries + for ( i = 0; i < s->size; i++ ) + nVars += (s->pFreqs[i] > 0); + printf( "Assigned = %d. Total = %d. (%6.2f %%)\n", nVars, s->size, 100.0 * nVars/s->size ); + ABC_FREE( s->pFreqs ); + + // Vec_SetFree_( &s->Mem ); Sat_MemFree_( &s->Mem ); |