In many applications of semidefinite programming, problem specification (that is, specifying the constraints of a problem) is a time-consuming and computationally-heavy step. SDPSL (Semidefinite Programming Specification Library) is a C++11 library that provides a high-level syntax for problem specification. Since it is a C++ library, it can be used for large-scale problems when efficiency is important. SDPSL generates input for SDP solvers (for instance in sparse SDPA format) and can also be used to analyze the output provided by the solver.
There is also a Sage interface for the library, that makes it possible to use SDPSL as a Sage module.
SDPSL grew out of my experience with two projects in which large-scale SDPs involving sums-of-squares had to be generated and analyzed. These applications are detailed in two of my publications:
arXiv:1308.4893 with F. Vallentin, Computing upper bounds for the packing density of congruent copies of a convex body I, arXiv:1308.4893, 2013, 28pp.
arXiv:1206.2608 with D. de Laat and F. Vallentin, Upper bounds for packings of spheres of several radii, to appear in Forum of Mathematics, Sigma, arXiv:1206.2608, 2012, 31pp.
SDPSL is free software and is distributed under the GNU General Public License version 3 or (at your choice) any later version.
Downloading and installing
You can download the latest version of SDPSL here:
SDPSL 0.85, released 2014-04-08, tar.gz (258KB).
To install SDPSL you will need:
The SCons software construction tool;
GMP with its C++ extension;
LAPACK and BLAS;
The MPFR library, if you want to use the Sage interface.
After downloading the file, expand it by typing (on Unix systems):
$ tar -xzvf sdpsl-0.85.tar.gz
A directory named
sdpsl-0.85 will be created.
Before building the library, you might want to change your compiler
path and flags and also the installation prefix. You can do this by
editing the file
custom.py in directory
To build the library, type:
$ cd sdpsl-0.85 $ scons
To install the Sage module you do not need to install the library itself in the system directories; you can type immediately after the library is built:
$ PATH-TO-SAGE/sage setup.py install
Notice that you need permission to access the directory where SAGE is installed, so you might need to run the command above as root.
To install the library in the system directories, type:
$ scons install
You also need permission to access the destination directory; you might need to run the above command as root.
Documentation is available both for the C++ library and for the Sage module:
You can find examples of programs using SDPSL in the sub-directories
of SDPSL' distribution.
Bugs and comments
I will be happy to hear about your experience with SDPSL; just send me an email.