3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-19 10:52:02 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-02-27 23:19:58 -08:00
parent c205b59a21
commit 31c68b6e23
6 changed files with 170 additions and 97 deletions

View file

@ -106,6 +106,7 @@ namespace sat {
for (unsigned i = 0; i < num_extra_solvers; ++i) {
m_limits.push_back(reslimit());
}
for (unsigned i = 0; i < num_extra_solvers; ++i) {
s.m_params.set_uint("random_seed", s.m_rand());
if (i == 1 + num_threads/2) {
@ -204,5 +205,59 @@ namespace sat {
return (c.size() <= 40 && c.glue() <= 8) || c.glue() <= 2;
}
void parallel::set_phase(solver& s) {
#pragma omp critical (par_solver)
{
m_phase.reserve(s.num_vars(), 0);
for (unsigned i = 0; i < s.num_vars(); ++i) {
if (s.value(i) != l_undef) {
m_phase[i] += (s.value(i) == l_true) ? 1 : -1;
continue;
}
switch (s.m_phase[i]) {
case POS_PHASE:
m_phase[i]++;
break;
case NEG_PHASE:
m_phase[i]--;
break;
default:
break;
}
}
}
}
void parallel::get_phase(solver& s) {
#pragma omp critical (par_solver)
{
m_phase.reserve(s.num_vars(), 0);
for (unsigned i = 0; i < s.num_vars(); ++i) {
if (m_phase[i] < 0) {
s.m_phase[i] = NEG_PHASE;
}
else if (m_phase[i] > 0) {
s.m_phase[i] = POS_PHASE;
}
}
}
}
void parallel::get_phase(local_search& s) {
#pragma omp critical (par_solver)
{
m_phase.reserve(s.num_vars(), 0);
for (unsigned i = 0; i < s.num_vars(); ++i) {
if (m_phase[i] < 0) {
s.set_phase(i, false);
}
else if (m_phase[i] > 0) {
s.set_phase(i, true);
}
}
}
}
};