13

I am trying to solve a 25k clauses 5k variables SAT problem. As it has been running for an hour (precosat) and I'd like to solve bigger ones afterwards, I'm looking for a multi-core SAT-Solver.

As there seem to be many SAT-Solvers, I'm quite lost.

Could anyone point me out the best one for my case?

I'd also be happy if someone could give me the approximate time (if possible).

multsatsolv
  • 131
  • 4

3 Answers3

8

Have a look at the results from this years SAT 2013 competition. Based on these results, definitely give Lingeling a try. Plingeling is the parallel variant of it.

If you don't need to prove unsatisfiability (perhaps you know the instance is satisfiable, and you just need to know an assignment making it SAT), you could try local search methods, too.

Juho
  • 22,905
  • 7
  • 63
  • 117
4

I'm not sure about the existence of practical multicore sat-solvers, but there are a few projects and papers:

I also found this interesting point: you can run a regular sat-solver multiple times with different seeds on the same problem in parallel, to get a multi-core effect.

Edit: Incorporating my comments on vzn's idea here:

A similar alternate method is to simply choose a single variable, set its value to true, send that to one solver instance. Set its value to false, and send that to another solver instance. You can do this for $k$ variables, and run $2^k$ processes simultaniously. Choosing the variables to set could be a little tricky, ie. if they are directly dependent on each-other, then it is pointless to choose one and then another. A simplification step might be necessary to do successive/recursive choices.


(I'd also be happy if someone could give me the approximate time (if possible) to solve an X clauses Y variables SAT problem.)

No one can give you an approximate time based on $m$ variables, $n$ clauses, because some SAT problems are extremely difficult (read: not gonna happen) to solve, even with a relatively small $m,n$; while other huge instances can be solved relatively quickly (and it is for these instances that sat solvers are useful).

Realz Slaw
  • 6,251
  • 33
  • 71
4

There is actually a very simple way to turn any SAT solver into a parallel version because SAT is embarrassingly parallel in the following sense.

Choose some power of two to partition it by, $2^n$. Then choose $n$ variables and assign all possible boolean values. There will be $2^n$ resulting SAT formulas after the assignments. Solve each one separately (in parallel). There is an overall solution iff one of the separate solutions exists and the full solution is exactly the union of all the separate solutions.

Juho
  • 22,905
  • 7
  • 63
  • 117
vzn
  • 11,162
  • 1
  • 28
  • 52