A distributed SAT solver written in Go. (c) 2012, Gatlin Johnson rokenrol@gmail.com
- What is Saturn?
Saturn is a distributed SAT solver based on MiniSat. Its aims are to be
- distributed
- scalable
- fault tolerant
- How does it work?
A single Saturn instance is aware of other instances on the same network using multicast. Configuration is automatic. It listens on the network for problems in the DIMACS format.
Then, the problem is split up by making intelligent guess assignments for certain literals; each of these is sent to an arbitrary instance to be worked on independently. In this way, if there are N nodes then a problem can, in principle, be split into N sub problems and searched in parallel.
- What are the advantages of Saturn over other solvers?
Saturn is based on MiniSAT, though I hope to add more solving backends in the future to take a portfolio approach. Saturn's aim is to make it painless to create large clusters and split up the search space of larger problems.
- How do I build it?
- Make sure Go 1 is installed.
cd
to where this repository is checked out.export GOPATH=$PWD/
go install saturn
Saturn will be installed and built in the bin/
directory. You can also go install test
to install the test program.
- Progress?
- 22 April 2012: Saturn now has an output format and returns that
- 21 April 2012: Networked SAT oracle! (view history)
- 15 April 2012: Bindings are created; not sure they're optimal.
- 12 April 2012: This readme was created.