  Presolving has become an essential component of modern MIP solvers both in
terms of computational performance and numerical robustness. In this paper, we
present PaPILO, a new C++ header-only library that provides a large set of
presolving routines for MIP and LP problems from the literature. The creation
of PaPILO was motivated by the current lack of (a) solver-independent
implementations that (b) exploit parallel hardware, and (c) support
multiprecision arithmetic. Traditionally, presolving is designed to be fast.
Whenever necessary, its low computational overhead is usually achieved by
strict working limits. PaPILO's parallelization framework aims at reducing the
computational overhead also when presolving is executed more aggressively or is
applied to large-scale problems. To rule out conflicts between parallel
presolve reductions, PaPILO uses a transaction-based design. This helps to
avoid both the memory-intensive allocation of multiple copies of the problem
and special synchronization between presolvers. Additionally, the use of
Intel's TBB library aids PaPILO to efficiently exploit recursive parallelism
within expensive presolving routines such as probing, dominated columns, or
constraint sparsification. We provide an overview of PaPILO's capabilities and
insights into important design choices.

Optimization and Control