Mallob

Mallob: Scalable SAT Solving On Demand With Decentralized Job Scheduling - Published in JOSS (2022)

https://github.com/domschrei/mallob

Science Score: 95.0%

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

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 10 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: arxiv.org, joss.theoj.org, zenodo.org
  • Committers with academic emails
    1 of 10 committers (10.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 6 months ago · JSON representation

Repository

Malleable Load Balancer. Massively Parallel Logic Backend. Award-winning SAT solving for the cloud.

Basic Info
  • Host: GitHub
  • Owner: domschrei
  • License: other
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 37.1 MB
Statistics
  • Stars: 70
  • Watchers: 6
  • Forks: 19
  • Open Issues: 6
  • Releases: 3
Created over 6 years ago · Last pushed 6 months ago
Metadata Files
Readme License

README.md

KIT - SAtRes group Helmholtz RSD - /software/mallob Zenodo JOSS Max. tested scale - 6400 cores License - MIT or LGPL

Mallob

Mallob (Malleable Load Balancer, or Massively Parallel Logic Backend) is a distributed platform for automated reasoning in modern large-scale HPC and cloud environments. Mallob primarily solves instances of propositional satisfiability (SAT) – an essential building block at the core of Symbolic AI. Mallob's flexible and decentralized approach to job scheduling allows to concurrently process many tasks of varying priority by different users. As such, Mallob can be used to scale up academic or industrial workflows tied to automated reasoning.

Mallob and its tightly integrated distributed general-purpose SAT solving engine, MallobSat, received a large amount of attention, including five gold medals in the International SAT Competition's Cloud Track in a row, high-profile scientific awards, and a highlight on Amazon Science. Mallob is the first distributed system that supports incremental SAT solving, i.e., interactive solving procedures over evolving formulas, and is also the first system transferring proof technology to parallel and distributed SAT solving in a scalable manner.

Setup

Mallob uses MPI (Message Passing Interface) and is built using CMake.

For a default quick-start build, execute scripts/setup/build.sh (and/or modify it as needed).

Find detailed instructions at docs/setup.md.

Docker

We also provide a setup based on Docker containerization. Please consult the (for now separate) documentation in the docker/ directory.

Bash Autocompletion

To enable bash auto-completion by pressing TAB, execute source scripts/run/autocomplete.sh from Mallob's base directory. You should now be able to autocomplete program options by pressing TAB once or twice from this directory.

Usage

Quick Start:

Run build/mallob --help for an overview of all Mallob options. E.g., to run MallobSat with a single (MPI) process with twelve Kissat threads, execute build/mallob -mono=path/to/problem.cnf -t=12 -satsolver=k. Make sure to execute Mallob from it's home directory, otherwise some relative paths might not work per default.

For trouble-shooting, see also FAQ:Execution.

For multi-process and distributed execution, prepend the command by mpirun or mpiexec followed by appropriate MPI options. E.g., using Open MPI, the following command runs Mallob as a service (taking JSON job submissions on demand at .api/jobs.0/) with a total of eight processes à four threads.

bash RDMAV_FORK_SAFE=1; mpirun -np 8 --bind-to core --map-by ppr:1:node:pe=4 build/mallob -t=4

Find detailed instructions at docs/execute.md.

Development and Debugging

Find detailed instructions at docs/develop.md.

Licensing

First of all, please let us know if you make use of Mallob! We like to hear about it and depend on it for continued support and further development.

Mallob and its source code can be used, changed and redistributed under the terms of the MIT License or the Lesser General Public License (LGPLv3). One exception is the Glucose interface which is excluded from compilation by default (see below).

The used versions of Lingeling, YalSAT, CaDiCaL, and Kissat are MIT-licensed, as is HordeSat (the massively parallel solver system our SAT engine was based on) and other statically linked libraries (RustSAT, Bitwuzla, and MaxPRE).

The Glucose interface of Mallob (only included when explicitly compiled with -DMALLOB_USE_GLUCOSE=1) is subject to the non-free license of (parallel-ready) Glucose. Notably, its usage in competitive events is restricted.

Within our codebase we make thankful use of the following liberally licensed projects:

Bibliography

If you make use of Mallob in an academic / scientific setting or in a competitive event, please cite the most relevant among the following publications (all Open Access).

Focus on SAT Solving (JAIR'24)

bibtex @article{schreiber2024mallobsat, title={{MallobSat}: Scalable {SAT} Solving by Clause Sharing}, author={Schreiber, Dominik and Sanders, Peter}, journal={Journal of Artificial Intelligence Research (JAIR)}, year={2024}, volume={80}, pages={1437--1495}, doi={10.1613/jair.1.15827}, }

Focus on job scheduling (Euro-Par'22)

bibtex @inproceedings{sanders2022decentralized, title={Decentralized Online Scheduling of Malleable {NP}-hard Jobs}, author={Sanders, Peter and Schreiber, Dominik}, booktitle={International European Conference on Parallel and Distributed Computing}, pages={119--135}, year={2022}, organization={Springer}, doi={10.1007/978-3-031-12597-3_8} }

Monolithic proofs of unsatisfiability (JAR'25)

bibtex @article{michaelson2025producing, author={Michaelson, Dawn and Schreiber, Dominik and Heule, Marijn J. H. and Kiesl-Reiter, Benjamin and Whalen, Michael W.}, title={Producing Proofs of Unsatisfiability with Distributed Clause-Sharing {SAT} Solvers}, journal={Journal of Automated Reasoning (JAR)}, year={2025}, organization={Springer}, volume={69}, doi={10.1007/s10817-025-09725-w}, }

Real-time proof checking (SAT'24)

bibtex @inproceedings{schreiber2024trusted, title={Trusted Scalable {SAT} Solving with on-the-fly {LRAT} Checking}, author={Schreiber, Dominik}, booktitle={Theory and Applications of Satisfiability Testing (SAT)}, year={2024}, pages={25:1--25:19}, organization={Schloss Dagstuhl -- Leibniz-Zentrum für Informatik}, doi={10.4230/LIPIcs.SAT.2024.25}, }

MaxSAT Solving (SoCS'25)

bibtex @inproceedings{schreiber2025from, author={Schreiber, Dominik and Jabs, Christoph and Berg, Jeremias}, title={From Scalable {SAT} to {MaxSAT}: Massively parallel Solution Improving Search}, booktitle={Symposium on Combinatorial Search (SoCS)}, year={2025}, doi={10.1609/socs.v18i1.35984}, volume={18}, number={1}, pages={127--135}, }

Most recent SAT Competition solver description (TR)

bibtex @inproceedings{schreiber2024mallob, title={{MallobSat} and {MallobSat-ImpCheck} in the {SAT} Competition 2024}, author={Schreiber, Dominik}, booktitle={SAT Competition 2024: Solver, Benchmark and Proof Checker Descriptions}, year={2024}, pages={21--22}, url={http://hdl.handle.net/10138/584822}, }

Distributed Incremental SAT Solving (TR)

bibtex @misc{schreiber2025distributed, title={Distributed Incremental {SAT} Solving with {Mallob}: Report and Case Study with Hierarchical Planning}, author={Dominik Schreiber}, year={2025}, eprint={2505.18836}, archivePrefix={arXiv}, primaryClass={cs.DC}, url={https://arxiv.org/abs/2505.18836}, }

Further references

Owner

  • Name: Dominik Schreiber
  • Login: domschrei
  • Kind: user
  • Location: Karlsruhe, Germany
  • Company: Karlsruhe Institute of Technology

Computer scientist at KIT (Karlsruhe), interested in SAT, Automated Planning and Linux stuff. Hobby musician and sporadic course instructor.

JOSS Publication

Mallob: Scalable SAT Solving On Demand With Decentralized Job Scheduling
Published
August 09, 2022
Volume 7, Issue 76, Page 4591
Authors
Peter Sanders ORCID
Karlsruhe Institute of Technology, Germany
Dominik Schreiber ORCID
Karlsruhe Institute of Technology, Germany
Editor
Daniel S. Katz ORCID
Tags
C++ online job scheduling malleability load balancing propositional satisfiability SAT solving parallel processing HPC

GitHub Events

Total
  • Create event: 11
  • Release event: 1
  • Issues event: 2
  • Watch event: 14
  • Issue comment event: 10
  • Push event: 235
  • Pull request event: 2
  • Fork event: 3
Last Year
  • Create event: 11
  • Release event: 1
  • Issues event: 2
  • Watch event: 14
  • Issue comment event: 10
  • Push event: 235
  • Pull request event: 2
  • Fork event: 3

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 2,582
  • Total Committers: 10
  • Avg Commits per committer: 258.2
  • Development Distribution Score (DDS): 0.034
Past Year
  • Commits: 352
  • Committers: 2
  • Avg Commits per committer: 176.0
  • Development Distribution Score (DDS): 0.142
Top Committers
Name Email Commits
Dominik Schreiber m****l@d****e 2,493
nrilu 1****u 50
~ d****n@g****m 13
Maximilian Schick m****k@g****m 11
Mike Whalen m****w@a****m 9
fj0219@kit.edu f****9@f****n 2
MichaelDoerr 5****r 1
Alex Ozdemir a****r@h****u 1
fj0219@kit.edu f****9@f****n 1
fj0219@kit.edu f****9@f****n 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 13
  • Total pull requests: 9
  • Average time to close issues: 16 days
  • Average time to close pull requests: 23 days
  • Total issue authors: 9
  • Total pull request authors: 5
  • Average comments per issue: 2.77
  • Average comments per pull request: 0.67
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 5 months
  • Issue authors: 2
  • Pull request authors: 1
  • Average comments per issue: 4.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • marino-mrc (2)
  • bratelefant (2)
  • na3na3na (2)
  • John-HW-Cao (2)
  • olegzaikin (1)
  • faultlin3 (1)
  • jwaldmann (1)
  • kenniskoldewyn (1)
  • NeuralDistinguisher (1)
Pull Request Authors
  • MichaelDoerr (3)
  • domschrei (3)
  • schick (2)
  • alex-ozdemir (1)
  • danielskatz (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

Dockerfile docker
  • ubuntu 20.04 build