论文标题

Papilo:一个平行的保存库,用于整数和线性编程,并提供多重编程支持

PaPILO: A Parallel Presolving Library for Integer and Linear Programming with Multiprecision Support

论文作者

Gleixner, Ambros, Gottwald, Leona, Hoen, Alexander

论文摘要

就计算性能和数值鲁棒性而言,保护已成为现代MIP求解器的重要组成部分。在本文中,我们提出了Papilo,这是一个新的C ++标题库,为文献中提供了大量的MIP和LP问题的保护程序。当前缺乏(a)(b)利用并行硬件的(c)支持多重复算术的(b)求解的实现(a)求解器独立的实现,帕皮洛的创建是出于目前缺乏(a)独立的实现的动机。传统上,保护旨在快速。只要有必要,通常通过严格的工作限制就可以实现其低计算开销。 Papilo的并行化框架旨在在更积极地执行或应用于大规模问题时减少计算开销。为了排除平行预设减少之间的冲突,Papilo使用基于交易的设计。这有助于避免多个问题副本的记忆密集型分配,又可以避免前杂种之间的特殊同步。此外,使用英特尔的TBB库有助于Papilo在昂贵的保留例程中有效利用递归并行性,例如探测,主导的列或约束稀疏。我们提供了帕皮洛(Papilo)的功能和对重要设计选择的见解的概述。

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.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源