Coder Social home page Coder Social logo

maximaximal / paracooba Goto Github PK

View Code? Open in Web Editor NEW
16.0 3.0 3.0 38.08 MB

Distributed and ressource elastic cube-and-conquer SAT & QBF solver

Home Page: http://fmv.jku.at/dcnc/

License: Other

CMake 14.86% C++ 75.70% Shell 2.22% Dockerfile 0.06% Gnuplot 0.27% C 6.41% Perl 0.48%
sat distributed-computing network cubes tcp udp qbf

paracooba's Introduction

Paracooba

This is a modular tool for distributed parallel SAT & QBF solving. It automatically manages the solving process of formulas with provided cubes over a network of compute nodes. It also has an integrated cubing algorithm. Cubes can be provided to this tool in "iCNF" format (normal DIMACS with appended cubes of the form a 1 2 3 0). These cubes can for example be generated by March.

Usage [SAT]

The two usage scenarios are described below. Additional command line arguments are provided, use --help for more information. Some options do not have any effects yet, as they are reworked. The binaries parac and paracs are functionally identical, but paracs is statically linked to all modules, while parac loads modules at runtime. If you have issues with finding the required modules, use paracs.

The announcement interval controls the frequency of IPv4 UDP broadcasts into the local subnet to find other instances of the default communicator module. Alternatively, other remotes can be specified directly.

When supplying additional options to the solver module to the master node, it automatically syncs the provided options to all other connected nodes. When solving formulas without predefined cubes, the --resplit option is very useful, as it automatically aborts CaDiCaL when solving takes too long and applies a lookahead solver to generate a new cube.

One example how to start a new master node is shown below.

parac <file.[i]cnf> [--cadical-cubes] [--resplit]

Usage [QBF]

Additionally to the SAT solving module, a QBF solver is also integrated in the form of the module cpp_qbf_prefixexpander. It parses a QBF formula and gives QBF solvers cubes based on the prefix.

The default invocation uses the QBF solver DepQBF as backend and works as follows (using the static version without dynamic module loading):

paraqs <file.qdimacs> [--use-depqbf]

Networking

Master-Node ("solve this formula for me")

parac <file.[i]cnf> [--udp-announcement-interval 1000]

Daemon-Node ("provide compute node for other masters in the network")

parac [--known-remote hostname]

External Dependencies

This tool requires the following external dependencies. Please ensure that their development headers are installed in order to be able to compile the software.

  • Boost Headers
  • Boost Log
  • Boost Program Options

Minimum tested boost version: 1.65.1

All other dependencies are included in this source-tree (and submodules) and do not have to be handled specifically. Distrac can also be excluded from the build, either by simply not cloning the submodule or by setting -DENABLE_DISTRAC=OFF to CMake.

Building

# Clone the repository
git clone https://github.com/maximaximal/Paracooba.git
git submodule update --init --recursive

# Build directory
mkdir build
cd build

# Building
cmake ..
make -j

paracooba's People

Contributors

m-fleury avatar maximaximal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

paracooba's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.