parafrost

A Parallel SAT Solver with GPU Accelerated Inprocessing

https://github.com/muhos/parafrost

Science Score: 41.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: springer.com
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.8%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

A Parallel SAT Solver with GPU Accelerated Inprocessing

Basic Info
  • Host: GitHub
  • Owner: muhos
  • License: gpl-3.0
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 2.22 MB
Statistics
  • Stars: 125
  • Watchers: 4
  • Forks: 11
  • Open Issues: 3
  • Releases: 23
Created over 6 years ago · Last pushed 12 months ago
Metadata Files
Readme License Citation

README.md

License: GPL v3 Build Status

ParaFROST

ParaFROST stands for Parallel Formal Reasoning about SaTisfiability. It is a parallel SAT solver with GPU-accelerated inprocessing capable of harnessing NVIDIA CUDA-enabled GPUs in applying modern inprocessing tecnhiques in parallel. The CDCL search is built from scratch with various optimisations based on CaDiCaL heuristics (see our paper in FMSD'23). The inprocessing engine extends our previous work in SIGmA simplifier with new data structures, parallel garbage collection and more.

Install

To install either the CPU or the GPU solvers, use the install.sh script which has the following usage:

  usage: install.sh [ <option> ... ]
  where <option> is one of the following

   -h or --help          print this usage summary
   -n or --less          print less verbose messages
   -q or --quiet         be quiet (make steps still be saved in the log)
   -c or --cpu           install CPU solver
   -g or --gpu           install GPU solver (if CUDA exists)
   -w or --wall          compile with '-Wall' flag
   -d or --debug         compile with debugging information
   -t or --assert        enable only code assertions
   -p or --pedantic      compile with '-pedantic' flag
   -l or --logging       enable logging (needed for verbosity level > 2)
   -s or --statistics    enable costly statistics (may impact runtime)
   -a or --all           enable all above flags except 'assert'
   --ncolors             disable colors in all solver outputs
   --clean=<target>      remove old installation of <cpu | gpu | all> solvers
   --standard=<n>        compile with <11 | 14 | 17> c++ standard
   --gextra="flags"      pass extra "flags" to the GPU compiler (nvcc)
   --cextra="flags"      pass extra "flags" to the CPU compiler (g++)

GPU solver

To build the GPU solver, make sure you have a CUDA-capable GPU with pre-installed NVIDIA driver and CUDA toolkit.

For installing CUDA v12.8, run the following commands on a Ubuntu 24.04:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-8

The source code is also platform-compatible with Windows and WSL2. To install CUDA on those platforms, follow the installation guide in https://docs.nvidia.com/cuda/.

Now the GPU solver is ready to install by running the install script via the command ./install.sh -g. The parafrost binary, the library libparafrost.a, and the main include file solver.hpp will be created by default in the build directory.

CPU solver

To build a CPU-only version of the solver, run ./install.sh -c.

Debug and Testing

Add -t argument with the install command to enable assertions or -d to collect debugging information for both the CPU and GPU solvers.

Usage

The solver can be used via the command parafrost [<option> ...][<infile>.<cnf>][<option> ...].
For more options, type parafrost -h or parafrost --helpmore.

Incremental Solving

ParaFROST supports incremental solving to add/remove variables or clauses incrementally while solving with assumptions if needed. A fully configurable interface to integrate ParaFROST with CBMC model checker is created here (https://github.com/muhos/gpu4bmc). A similar interface can be created to work with ParaFROST in any SAT-based bounded model checker.

Citation

Please cite our latest paper FMSD'23 when using ParaFROST.

Owner

  • Name: Muhammad Osama
  • Login: muhos
  • Kind: user

Citation (CITATIONS.bib)

@article{Parafrost-OsamaWB-FMSD23,
  author       = {Muhammad Osama and
                  Anton Wijs and
                  Armin Biere},
  title        = {Certified {SAT} solving with {GPU} accelerated inprocessing},
  journal      = {Formal Methods Syst. Des.},
  volume       = {62},
  number       = {1},
  pages        = {79--118},
  year         = {2024},
  doi          = {10.1007/S10703-023-00432-Z},
}

@inproceedings{Parafrost-OsamaWB-tacas21,
  author    = {Muhammad Osama and
               Anton Wijs and
               Armin Biere},
  editor    = {Jan Friso Groote and
               Kim Guldstrand Larsen},
  title     = {{SAT} Solving with {GPU} Accelerated Inprocessing},
  booktitle = {Tools and Algorithms for the Construction and Analysis of Systems
               - 27th International Conference, {TACAS} 2021, Held as Part of the
               European Joint Conferences on Theory and Practice of Software, {ETAPS}
               2021, Luxembourg City, Luxembourg, March 27 - April 1, 2021, Proceedings,
               Part {I}},
  series    = {Lecture Notes in Computer Science},
  volume    = {12651},
  pages     = {133--151},
  publisher = {Springer},
  year      = {2021},
  url       = {https://doi.org/10.1007/978-3-030-72016-2\_8},
  doi       = {10.1007/978-3-030-72016-2\_8}
}

@inproceedings{ParalelSimp-OsamaW-tacas19,
  author    = {Muhammad Osama and
               Anton Wijs},
  editor    = {Tom{\'{a}}s Vojnar and
               Lijun Zhang},
  title     = {Parallel {SAT} Simplification on {GPU} Architectures},
  booktitle = {Tools and Algorithms for the Construction and Analysis of Systems
               - 25th International Conference, {TACAS} 2019, Held as Part of the
               European Joint Conferences on Theory and Practice of Software, {ETAPS}
               2019, Prague, Czech Republic, April 6-11, 2019, Proceedings, Part
               {I}},
  series    = {Lecture Notes in Computer Science},
  volume    = {11427},
  pages     = {21--40},
  publisher = {Springer},
  year      = {2019},
  url       = {https://doi.org/10.1007/978-3-030-17462-0\_2},
  doi       = {10.1007/978-3-030-17462-0\_2}
}

GitHub Events

Total
  • Create event: 3
  • Release event: 3
  • Issues event: 5
  • Watch event: 36
  • Issue comment event: 17
  • Push event: 9
  • Fork event: 6
Last Year
  • Create event: 3
  • Release event: 3
  • Issues event: 5
  • Watch event: 36
  • Issue comment event: 17
  • Push event: 9
  • Fork event: 6

Dependencies

.github/workflows/test-build.yml actions
  • actions/checkout v3 composite