From f015e3e4cc13f77cce3cd626b756abdd6f014236 Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Tue, 31 Jan 2017 17:17:58 -0800 Subject: [PATCH] fix bug in propagation of parameters to combined solvers Signed-off-by: Nikolaj Bjorner --- src/sat/sat_config.cpp | 1 + src/sat/sat_solver.cpp | 5 +++-- src/solver/solver.h | 2 +- src/solver/solver2tactic.cpp | 1 + src/solver/tactic2solver.cpp | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/sat/sat_config.cpp b/src/sat/sat_config.cpp index ccf538dfe..9206ea8bc 100644 --- a/src/sat/sat_config.cpp +++ b/src/sat/sat_config.cpp @@ -35,6 +35,7 @@ namespace sat { m_glue("glue"), m_glue_psm("glue_psm"), m_psm_glue("psm_glue") { + m_num_parallel = 1; updt_params(p); } diff --git a/src/sat/sat_solver.cpp b/src/sat/sat_solver.cpp index acfd79b90..fff9ee6e4 100644 --- a/src/sat/sat_solver.cpp +++ b/src/sat/sat_solver.cpp @@ -804,7 +804,7 @@ namespace sat { sat::par par; symbol saved_phase = m_params.get_sym("phase", symbol("caching")); for (int i = 0; i < num_extra_solvers; ++i) { - m_params.set_uint("random_seed", i + m_config.m_random_seed); + m_params.set_uint("random_seed", m_rand()); if (i == 1 + num_threads/2) { m_params.set_sym("phase", symbol("random")); } @@ -813,13 +813,13 @@ namespace sat { solvers[i]->set_par(&par); scoped_rlimit.push_child(&solvers[i]->rlimit()); } + set_par(&par); m_params.set_sym("phase", saved_phase); int finished_id = -1; std::string ex_msg; par_exception_kind ex_kind; unsigned error_code = 0; lbool result = l_undef; - flet _overwrite_thread_number(m_config.m_num_parallel, 1); #pragma omp parallel for for (int i = 0; i < num_threads; ++i) { try { @@ -867,6 +867,7 @@ namespace sat { } } } + set_par(0); if (finished_id != -1 && finished_id < num_extra_solvers) { m_stats = solvers[finished_id]->m_stats; } diff --git a/src/solver/solver.h b/src/solver/solver.h index d5d9ccfd5..6b9d38f29 100644 --- a/src/solver/solver.h +++ b/src/solver/solver.h @@ -54,7 +54,7 @@ public: /** \brief Update the solver internal settings. */ - virtual void updt_params(params_ref const & p) {} + virtual void updt_params(params_ref const & p) { } /** \brief Store in \c r a description of the configuration diff --git a/src/solver/solver2tactic.cpp b/src/solver/solver2tactic.cpp index 21ecdec32..1a02c97e6 100644 --- a/src/solver/solver2tactic.cpp +++ b/src/solver/solver2tactic.cpp @@ -93,6 +93,7 @@ public: {} virtual void updt_params(params_ref const & p) { + m_params.append(p); m_solver->updt_params(p); } diff --git a/src/solver/tactic2solver.cpp b/src/solver/tactic2solver.cpp index 34d2edd3c..150b19395 100644 --- a/src/solver/tactic2solver.cpp +++ b/src/solver/tactic2solver.cpp @@ -96,7 +96,7 @@ tactic2solver::~tactic2solver() { } void tactic2solver::updt_params(params_ref const & p) { - m_params = p; + m_params.append(p); } void tactic2solver::collect_param_descrs(param_descrs & r) {