
Parallelization of SAT Algorithms on GPUs [pdf] - setra
http://algos.inesc-id.pt/~pff/projects/parsat/publications/Costa-TR2013Feb.pdf
======
mate_soos
This approach is unworkable, it has been demonstrated many times. I have not
only been developing a SAT solver for >7 years (with >9000 commits) but also
have participated in the SAT competition in all these years. I used to get a
proposal like this a lot (thankfully, they dried up). None of them made it
work. I used to work on programming GPGPUs in a professional setting, (rainbow
table generators&lookup systems), so I'm not unfamiliar with their advantages
and restrictions.

This approach is unworkable because: * propagation needs modification of the
watchlist (or it needs to have all literals of all clauses attached, which is
incredibly slow and also unworkable) * propagation is actually only about
50-60% of what a solver is doing: conflict resolution, clause database
management and inprocessing takes a lot of time * propagation is hard to
parallelize as you need to update a global data structure of propagated
literals and then act on that * etc

This proposal will not work (and I sure it did not, if it was ever tried) and
I don't understand how it got this high at ycombinator. If you want to look at
good SAT solvers, look at lingeling, COPMinisat, MiniSat, or CryptoMiniSat.
You may learn a lot from them. Easy starting is MiniSat. Good luck :)

~~~
mafribe

       If you want to look at good SAT 
       solvers, look ... CryptoMiniSat.
    

Any personal relationship with CryptoMiniSat? ;)

~~~
mate_soos
Considering that CryptoMiniSat got 3rd place (after 1st and 2nd both being
lingeling) in Parallel SAT solving the last competition, I think it was fair
to include it. Sure, it's mine, but I also put it at the end :) Other solvers
that are good to look at: glucose and riss. Note that a lot of solvers are
variations of MiniSat. riss, ligeling, PrecoSat and CryptoMiniSat are the only
ones that substantially differ from MiniSat.

~~~
dlo
Thanks for the recommendations. I _love_ SAT solvers and have been looking for
a way to get into them.

------
mafribe
There is quite a bit of work on parallelising SAT solving, as it's one of the
most important algorithmic problems, both in theory and in practise, but (as
far as I'm aware) the top sequential algorithms still beat parallel solvers.
The most successful approach at this point seems to be Cube-and-Conquer [1],
but I don't think this is considered a good approach in itself. There is a
huge amount of scope for new ideas. I doubt that anything naive will work, as
SAT solving is a rather competitive research field.

The annual SAT competition
[http://www.satcompetition.org](http://www.satcompetition.org) has a track for
parallel solving.

See [2, 3, 4] for an overview of the field.

[1] M. J. H. Heule, O. Kullmann, S. Wieringa, A. Biere, Cube and Conquer:
Guiding CDCL SAT Solvers by Lookaheads.

[2] S. Hölldobler, N. Manthey, V. H. Nguyen, J. Stecklina, P. Steinke, A Short
Overview on Modern Parallel SAT-Solvers.

[3] S. Wieringa, K. Heljanko, Asynchronous Multi-Core Incremental SAT Solving.

[4] Y. Hamadi, C. M. Wintersteiger, Seven Challenges in Parallel SAT Solving.

~~~
p1esk
_the top sequential algorithms still beat parallel solvers_

Wow, that's interesting! Are there any other examples where a sequential
algorithm beats a parallel one?

~~~
tlb
It is an open question whether there exist algorithms that cannot be
parallelized. Some that are most likely to be inherently sequential are listed
here:
[https://en.wikipedia.org/wiki/P-complete#P-complete_problems](https://en.wikipedia.org/wiki/P-complete#P-complete_problems)

------
pron
SAT solvers and neural networks are probably the most curious software
technologies around. Both attempt to solve NP-complete problems (learning and
SAT). Both are still largely based on 1960s algorithms (backpropagation for
NNs and DPLL for SAT) made surprisingly useful in practice by advances in
hardware and heuristics accumulated over the years. Both are mysterious from a
theoretical point of view, with little progress in our theoretical
understanding of why they work well in practice and how we can come up with
better algorithms.

This article by Moshe Vardi[1] and this one by Dick Lipton[2] are a nice
introduction to the mystery of SAT solvers.

[1]: [http://cacm.acm.org/magazines/2014/3/172516-boolean-
satisfia...](http://cacm.acm.org/magazines/2014/3/172516-boolean-
satisfiability/fulltext)

[2]: [https://rjlipton.wordpress.com/2009/07/13/sat-solvers-is-
sat...](https://rjlipton.wordpress.com/2009/07/13/sat-solvers-is-sat-hard-or-
easy/)

------
petters
This is a proposed work for a Master's thesis. It seems to be from 2013, so I
wonder whether it was successful?

If I had to guess, I would think implementing a SAT solver on a GPU is quite
hard. Many branches etc.

~~~
wmu
Look at [http://algos.inesc-
id.pt/~pff/projects/parsat/?Publications](http://algos.inesc-
id.pt/~pff/projects/parsat/?Publications)

It seems Mr Costa has graduated, but the link to his thesis points to an empty
pdf.

~~~
deepnet
[https://fenix.tecnico.ulisboa.pt/downloadFile/395146463244/r...](https://fenix.tecnico.ulisboa.pt/downloadFile/395146463244/resumo.pdf)

from May 2014 [pdf]

------
godmodus
Publish or perish leaves very little room for sanity checks once your window
of graduation starts to close.

