7 ms·
"Is progress in SAT solving the sole result of hardware advancement? Time Leap Challenge compared 20-year-old SAT solvers on new computer hardware and modern SA
by degoodm 3y ago
"Is progress in SAT solving the sole result of hardware advancement? Time Leap Challenge compared 20-year-old SAT solvers on new computer hardware and modern SAT solvers on 20-year-old computer hardware. Although hardware improvements make old solvers faster, algorithmic progress dominates and drives today's SAT solving."*
Pretty cool given computing progress over the last 20 years:
1. CPUs sped up 40-60x
2. GPU FLOPS/$ increased ~10,000x
Sources:
1. https://www.cpubenchmark.net/year-on-year.html
2. https://en.wikipedia.org/wiki/FLOPS#Hardware_costs
*Quote shortened for brevity
- sanxiyn 3y agoYou may want to read "A Time Leap Challenge for SAT Solving". It's just a really fun paper: https://arxiv.org/abs/2008.02215 https://arxiv.org/abs/2008.02215
- bmc7505 3y agoAnd yet, despite tremendous progress accelerating continuous optimization workloads, there are still no competitive GPU-based SAT solvers. I wonder why?
- GregarianChild 3y agoBecause all known SAT algorithms rely heavily on data-dependent branching based on non-local data. That makes the existing algorithms slow on GPUs. An algorithmic breakthrough is needed to change this.
- sanxiyn 3y agoIt's not just GPU. There are not even good multicore SAT solvers. State of the art SAT algorithms are serial and they don't parallelize.
- js8 3y agoYou could reduce to 2XSAT and presolve the linear portion. That would paralelize. I think people are not doing it because they are not aware of the reduction.
- adrianN 3y agoYou'd think that the handful of people who devote a significant fraction of their time to writing SAT solver would be aware of such simple tricks and there might be other reasons why your idea isn't being applied.
- js8 3y agoI would think so too, but I couldn't find this particular trick anywhere. Anyway, I believe it's similar to LP - we still use simplex method in practice, despite the fact that LP has a polynomial algorithm. What likely happens in SAT is even though there actually is (as I believe) a nice polynomial algorithm on the order of O(n^4) or so (which involves repeated solving of linear systems), the CDCL still wins in practical problems simply because in most cases, the upfront cost of solving the equations is higher than trying to find a first solution. However, not all hope is lost. You could actually presolve a more general problem, and then just rely on propagation to deal with a more specific instance. For instance, for integer factorization, you could presolve a general system for integers of certain bit size, and then if you wanted to factorize a specific integer, you would just plugin constants into the presolved instance. That would eliminate most of the upfront cost and bring it on par with CDCL. Unfortunately, DIMACS is not all that good format to represent SAT, because it is not composable like this - it doesn't allow for representation of presolved instances. But composability might be a win for a different types of algorithms, which do presolving.
- adrianN 3y agoIf you know a O(n^4) algorithm for SAT, I'm sure a couple of people would be interested in your paper.
- js8 3y agoI don't really know the exact algorithm yet, but I have a strong feeling it is possible based on what I see. There are like 3 major steps in the strategy, first one is 2XSAT reduction, second is a proof of refutation completeness (in particular, a form of deduction theorem) of a certain logic that models 2XSAT class, and the last one is polynomial-sized representation of all true statements in that logic (which uses n sets of linear equations, and from that follows the complexity of O(n^4)). The 2XSAT reduction is 100% correct (I have been using it to solve small integer factoring problems), the deduction theorem proof still has a small flaw which I think is fixable, and the third part is an ongoing research which is trucking along. I will get there eventually, but if more people would be looking at this approach, then we (humanity) could arrive there faster, that's all.
- bmc7505 3y agoI was thinking there might be some theoretical barrier to parallelization, e.g., maybe naturally-arising SAT instances have poor empirical scaling constants [1], so sequential solvers with good branch heuristics are pretty close to optimal. There are some portfolio solvers (e.g., [2]) that have shown modest, but not dramatic speedups. Or maybe we just haven't tried hard enough. [1]: https://en.wikipedia.org/wiki/NC_(complexity) https://en.wikipedia.org/wiki/NC_(complexity) [2]: https://baldur.iti.kit.edu/hordesat/files/horde.pdf https://baldur.iti.kit.edu/hordesat/files/horde.pdf
- thesz 3y agoManySAT: http://www.cril.univ-artois.fr/~jabbour/manysat.htm http://www.cril.univ-artois.fr/~jabbour/manysat.htm It shares short conflict clauses between parallel solvers and achieves superlinear speedup in some cases, e.g., 4 parallel solvers solve faster than one forth of the single solver soolution time. Short conflict clauses are rare so there is little communication between solvers required. CryptoMiniSAT: https://github.com/msoos/cryptominisat https://github.com/msoos/cryptominisat Author's goal to have solver that is good in computing range from single CPU up to cluster. Judging from CryptoMiniSAT successes, he has mostly reached the goal.
- porcoda 3y agoSuper short answer: SAT doesn’t exhibit the nice properties other optimization problems often have where you can tell when you’re near a correct answer. So it doesn’t resemble most continuous optimization problems. Regarding parallelism, there has been research into parallel SAT, but it’s hard in part due to the problem of sharing information between threads/tasks in conflict clause learning algorithms. I don’t remember specific papers but a quick search on google scholar or looking at past SAT competitions would turn up material if you’re interested in the topic.
- bmc7505 3y ago> SAT doesn’t exhibit the nice properties other optimization problems often have where you can tell when you’re near a correct answer. You mean like a metric? Not all SAT instances have a natural metric, maybe a large fraction could be relaxed to MAXSAT, but it seems parallel solvers are not very popular in that setting either, i.e., there is no parallel track and parallel solvers are disqualified [1] from participating. I'm not sure I follow how metrics are related to parallelism though. A naive strategy would be to try every assignment in parallel on 2^n processors. There are plenty of better strategies for search space splitting [2] and stochastic local search [3] algorithms that seem amenable to parallelization. [1]: https://maxsat-evaluations.github.io/2023/rules.html https://maxsat-evaluations.github.io/2023/rules.html [2]: http://sat.inesc-id.pt/~ruben/papers/martins-ictai10-talk.pdf http://sat.inesc-id.pt/~ruben/papers/martins-ictai10-talk.pd... [3]: https://link.springer.com/article/10.1023/A:1006350622830 https://link.springer.com/article/10.1023/A:1006350622830
- calf 3y agon is like a million variables so you would need 2^n gazillion cores. I'm no expert but my thesis advisor is cited in the OP article, so I'm just guessing but it's an interesting question. It's not for the lack of trying in the part of SAT researchers; after the hardware advances with SAT solvers implementation in the early 2000s, they would've looked at parallelism and concurrency as well. But with continuous optimization (like with training machine learning), there's gradient descent which tells you where to guess next. But with Boolean logic there's nothing like that, the needle is either in the next bale of hay, or it isn't.
- cwzwarich 3y agoUnit propagation (a major component of CDCL-based SAT solvers) is P-complete, and thus has no effective parallel algorithm.
- bmc7505 3y agoInteresting. Do you have a link where I can read more about that? How does this relate to k-SAT or CNF complexity, isn't UP is complete w.r.t. these problems?
- zero_k 3y agoThere is a solver that can make effective use of GPUs (shameless self-promotion): https://github.com/nicolasprevot/GpuShareSat https://github.com/nicolasprevot/GpuShareSat It is a VERY fun work. Code entirely written by Nicolas Prevot, a magician of CUDA. Paper link here: https://comp.nus.edu.sg/~meel/Papers/sat21-psm.pdf https://comp.nus.edu.sg/~meel/Papers/sat21-psm.pdf
- bmc7505 3y agoOh you're one of the GPUShareSat guys, I forgot about that one. Would you say the main obstacle to scaling to a million processors is the synchronization overhead or are there certain instances from the SATComp benchmark that exhibited poor scaling with increased parallelism? Do you think sharing is essential or do you have any ideas how to improve communication-free strategies, i.e., parallelism without clause sharing using divide-and-conquer or randomized search? Six years ago, your co-author Mate wrote a very pessimistic remark on GPU-based SAT solvers here [1], I'm curious whether he still believes this or if his option was changed during the course of the project and what changed his mind? Thanks! [1]: https://news.ycombinator.com/item?id=13667565 https://news.ycombinator.com/item?id=13667565
- zero_k 3y agoHahha, I am Mate :) I still think that GPGPU can't help in the core of the algorithm. However, I was pleasantly surprised with Nicolas' work. He is a proper magician, and he had a great idea and made it work. Notice that he didn't make the GPU do propagation/conflict generation. Instead, he used it to better distribute clauses between the threads that do all of that. In a way, he improved clause cleaning. When I saw his work, I was very-very happy. I still hold that GPGPUs can't do CDCL. However, they may be helpful in some of its sub-parts, or may be able to run another algorithm for solving SAT that we haven't invented yet. Just my 2 cents, Mate
- thesz 3y agoGPU's are not friends with pointer chasing, which is the basis of contemporary CDCL solvers, because internal lazily-updateable structures are multi-linked lists. They are not friends with bottlenecks like clause queues used in contemporary stochastic SAT solvers. They can be good at something like survey and/or belief propagation [1]. [1] https://simons.berkeley.edu/talks/belief-survey-propagation https://simons.berkeley.edu/talks/belief-survey-propagation The problem is that survey/belief propagatin is effective in the area of random CNF problems and it is not a complete solution technique. It may compute a solution but it cannot provide you with the evidence that there is no soolution.
- bmc7505 3y agoMy hunch is that CDCL is probably the wrong approach to take for parallelization due to synchronization issues. You want an algorithm that is communication-free or makes belief propagation wall-clock competitive for large set of instances. It should be possible to modify BP to be asymptotically complete by using a special-purpose PRNG that ensures samples are drawn uniformly without replacement from the search space, but I'm not sure how to make it more sample-efficient.
- xavxav 3y agoA fun exercise is to write a series of sat solvers: brute force, DPLL and CDCL you really get an immediate feel for the strength of the algorithms and none of these implementations need to go much beyond 50-100 lines in a modern language. You can then of course spend months tuning and optimizing the hell out of your code to squeeze a further 10x performance. If you're really crazy like Sarek, you can also formally verify these implementations: https://sarsko.github.io/_pages/SarekSkot%C3%A5m_thesis.pdf https://sarsko.github.io/_pages/SarekSkot%C3%A5m_thesis.pdf
- philzook 3y agoExcellent link. I would love to see a CDCL implementation in a 100 (understandable) lines. From what I see in the repo, creusat is probably more like 1000?
- xavxav 3y agoIndeed, but CreuSAT is actually a high-performance implementation (ie: worst of the best), I should probably just write up a Rust gist of CDCL.
- GregarianChild 3y agoI found the description of CDCL as an abstract rewrite system illuminating. It's much shorter than an implementation. See e.g. [1]. There is/was a more readable version online, but I can't find it now. [1] https://easychair.org/publications/open/b7Cr https://easychair.org/publications/open/b7Cr
- aaw 3y agoThis one's 250 understandable lines: https://github.com/marijnheule/microsat https://github.com/marijnheule/microsat. You could probably get it to below 200 lines if you removed the restart logic and learned clause compaction, but it's actually a surprisingly competitive solver as is.
- ykonstant 3y agoWhat a lovely and well-written thesis; I am reading it with great interest.
- geysersam 3y agoParallelizing SAT solvers seems like a strikingly important avenue for future research.
- hgsgm 3y agoSimilar to faster-than-light travel.
- geysersam 3y agoReally? Does parallel algorithms for SAT contradict any known laws of physics?
- fooker 3y agoIt contradicts mathematics. :) Unit propagation is P complete.
- dgacmu 3y agoThat's not really a proof that we can't get a nice thing, though. SAT is NP-complete, but here we are talking about it. There may be ways to use parallelism at a higher level. And even if there isn't an alternative to unit propagation, a purely constant factor speedup with parallel processors isn't out of bounds and would still be fantastic.
- fooker 3y ago>a purely constant factor speedup with parallel processors isn't out of bounds and would still be fantastic. The state of the art with this is about 2x the speedup with an unbounded number of threads. That's not bad, but is not very useful because in most use cases of SAT you have multiple distinct problems solvable in parallel anyway.
- bmc7505 3y agoIsn’t UP complete with respect to CNF satisfiability though? How does P completeness relate to parallelizability of SAT?