wiki:WikiStart

Welcome to the ScaLP project

About ScaLP - Scalable Linear Programming

ScaLP is an open source C++ library that acts as a wrapper for different ILP-solvers and provides a nice interface to the developer which is common for all solvers. Currently the following ILP Solvers are supported: Gurobi, CPLEX, SCIP and LPSOLVE.

To support a natural user interface, it heavily uses the concept of /operator overloading/, i.e., a constraint like x+y<=31 is exactly written as it is "x+y<=31". The following example code shows a first impression of ScaLP's main developer interface. It solves the MILP problem of maximizing x+y where x is integer and y is real, subject to the constraints x+y<=31 and 5<=x<=30.

    ScaLP::Solver s = ScaLP::Solver(ScaLP::Solver({"Gurobi","CPLEX","SCIP","LPSolve"}));

    // declare the Variables
    ScaLP::Variable x = ScaLP::newIntegerVariable("x"); // x is free
    ScaLP::Variable y = ScaLP::newRealVariable("y",12.5,26);

    // Set the Objective
    s.setObjective(ScaLP::maximize(x+y));

    // add the Constraints
    s << (x+y<=31) << (5<=x<=30);
    
    // Try to solve
    ScaLP::status stat = s.solve();

    // print results
    std::cout << "The result is " << stat << std::endl;
    std::cout << s.getResult() << std::endl;

In the example above the dynamic solver interface is used, which provides a "wish list" of available solvers (which are determined at runtime using dynamically linked libraries). Hence, the first of the solvers in the list which is available is taken to solve the problem. This also allows different licence models for the software that uses ScaLP (which is itself LGPLv3) from LGPL (LPSOLVE), ZIB (SCIP) to commercial.

About

The Project was initiated by the digitech group of the University of Kassel (Martin Kumm, Konrad Möller and Patrick Sittel) and was mainly developed by Thomas Schönwälder. It is currently maintained by Martin Kumm.

ScaLP has been presented at the 21th MBMV, Tübingen, March 2018. ScaLP Paper

If you have any concerns, feel free to contact us:

  • Martin Kumm <martin.kumm@…>
  • Patrick Sittel <sittel@…>

Licence

ScaLP is published under the GNU Lesser General Public License GNU LGPLv3.

Build ScLP

ScaLP uses cmake, so the common

  cmake .
  make
  make install

will do. However, to get the backend ILP solvers running, you might need to provide the paths. At least Gurobi and CPLEX do not install their libraries and header files in the common system paths. Hence, you might want to provide one of the following paths, using _DSOLVER_DIR (replacing SOLVER by GUROBI, CPLEX, SCIP or LPSOLVE):

cmake . -DGUROBI_DIR=.. -DCPLEX_DIR=... -DSCIP_DIR=... -DLPSOLVE_DIR=...

Alternatively, you can specify the path for the libraries and header files separately by using SOLVER_LIBRARIES and SOLVER_INCLUDE_DIRS.

Documentation

To get an overview about the ideas realized in ScaLP, have a look into the ScaLP Paper.

Coding examples can be found in scalp/trunk/examples
An overview of the current features and which of them are supported in which backend can be found in Features

Repositories

https://digidev.digi.e-technik.uni-kassel.de/home/git/scalp.git

Authenticate with your Digi account credentials in order to access the HatScheT Git repository like

git clone https://digidev.digi.e-technik.uni-kassel.de/git/scalp.git

Projects using ScaLP

ScaLP has been successfully used in several project so far:

In case you use ScaLP in your project, please let us know!

Publications using ScaLP

  • P. Sittel, M. Kumm, J. Oppermann, K. Möller, P. Zipf and A. Koch: ILP-based Modulo Scheduling and Binding for Register Minimization, In: 28th International Conference on Field Programmable Logic and Application (FPL), Dublin August 2018.
  • P. Sittel, J. Oppermann, M. Kumm, A. Koch and P. Zipf: HatScheT: A Contribution to Agile HLS, In: FPGAs for Software Programmers (FSP), Dublin August 2018.
  • K. Möller, M. Kumm, M. Garrido and P. Zipf, Optimal Shift Reassignment in Reconfigurable Constant Multiplication Circuits, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, accepted for publication (22.06.2017), DOI
  • M. Kumm and J. Kappauf, Advanced Compressor Tree Synthesis for FPGAs, IEEE Transactions on Computers, 2018, DOI, preprint (copyright IEEE)
  • M. Kumm, Optimal Constant Multiplication using Integer Linear Programming, IEEE International Symposium on Circuits and Systems (ISCAS), 2018

Citing ScaLP

If you found ScaLP useful for your work, consider citing us:

@inproceedings{sskz18,
author = {Sittel, Patrick and Sch{\"o}nw{\"a}lder, Thomas and Kumm, Martin and Zipf, Peter},
title = {{ScaLP: A Light-Weighted (MI)LP Library}},
booktitle = {Methoden und Beschreibungssprachen zur Modellierung und Verifikation von Schaltungen und Systemen (MBMV)},
year = {2018},
pages = {1--10}
}

Acceptable Use and Privacy Policy

Please be aware of the Acceptable Use and Privacy Policy of this system.

Last modified 2 years ago Last modified on 03/15/22 15:35:01