SAT is one of the most widely studied problems in computer science: given a boolean formula, is there an assignment of values to the variables that satisfies the formula (i.e. makes it true)? While the problem itself is NP-complete, over the years, many SAT-solvers have been written, using different heuristics to attempt to converge on a solution.
Broadly speaking, the SAT problem itself can be parallelized in two ways. The first is by parallelizing the BCP process. During BCP, unsatisfied clauses are investigated to check for instances in which which only one literal remains undetermined. In those cases, the assignment to the variable referenced in the final literal is forced.
The second broad technique is parallelizing the search. Here, each thread is fully responsible for some part of the global search space. While conceptually this is straightforward, in practice it is complicated by the extreme irregularity and unpredictability of the lifetime of each search thread.
Two papers describing current techniques and data structures in SAT solving are GRASP and Chaff.
The Galois system is a programming model and run-time system for parallelizing data-parallel irregular applications. Worklist algorithms can be easily expressed using sequential semantics, and parallelized by the run-time system. Sequential semantics are preserved in the parallel execution by monitoring the state of shared objects and ensuring that no concurrent accesses to the shared objects violate sequential semantics. For full details of the Galois system, see here. The current Galois system is implemented in Java and can parallelize Java applications.
A parallelized implementation of a SAT solver using techniques outlined in the given papers and parallelized using the Galois programming model. A paper describing the algorithms, your implementation, and results.