mirror of
https://github.com/Z3Prover/z3
synced 2025-08-02 01:13:18 +00:00
45 lines
933 B
C++
45 lines
933 B
C++
/*++
|
|
Copyright (c) 2017 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
sat_par.cpp
|
|
|
|
Abstract:
|
|
|
|
Utilities for parallel SAT solving.
|
|
|
|
Author:
|
|
|
|
Nikolaj Bjorner (nbjorner) 2017-1-29.
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
#include "sat/sat_par.h"
|
|
|
|
|
|
namespace sat {
|
|
|
|
par::par() {}
|
|
|
|
void par::exchange(literal_vector const& in, unsigned& limit, literal_vector& out) {
|
|
#pragma omp critical (par_solver)
|
|
{
|
|
if (limit < m_units.size()) {
|
|
// this might repeat some literals.
|
|
out.append(m_units.size() - limit, m_units.c_ptr() + limit);
|
|
}
|
|
for (unsigned i = 0; i < in.size(); ++i) {
|
|
literal lit = in[i];
|
|
if (!m_unit_set.contains(lit.index())) {
|
|
m_unit_set.insert(lit.index());
|
|
m_units.push_back(lit);
|
|
}
|
|
}
|
|
limit = m_units.size();
|
|
}
|
|
}
|
|
|
|
};
|
|
|