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:
- FloPoCo? - a generator of arithmetic cores: http://flopoco.gforge.inria.fr
- Origami HLS - the art of (circuit) folding: http://www.uni-kassel.de/go/origami
- PAGSuite- Optimization Suite for Constant Multiplication Problems: http://www.uni-kassel.de/go/pagsuite
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.