We have developed the open source package SDPA and its variants SDPA-M, SDPA-C, SDPARA, and SDPARA-C to solve semidefinite programs efficiently and effectively. Each package has its own features and advantages. You can choose an appropriate software package among the family depending on the structure and size of your SDP problem and the available computing environment. All packages share a common input data format called the (sparse) SDPA format, which is a description of the following standard form primal-dual pair of SDPs.
Standard Form of the Semidefinite Program
The SDPA (SemiDefinite Programming Algorithm) is a software package for solving SDPs. It is based on the Mehrotra-type predictor-corrector infeasible primal-dual interior-point method. The SDPA handles the standard form SDP and its dual problem stated above. It is implemented in C++ language and utilizes the BLAS (or GotoBLAS, Intel MKL, ATLAS) and LAPACK libraries for matrix computations. The SDPA incorporates dynamic memory allocation and deallocation. Therefore, the maximum size of the SDP problem which can be solved depends on the size of the computer's memory where the SDPA is installed. The SDPA has the following additional features:
The SDPA-M provides a MATLAB interface for the SDPA. It shares all the features with the SDPA except that no callable library is provided. The SDPA-M can be combined with your programs in a MATLAB environment. The SDPA-M has the following additional features:
The SDPA-C (SemiDefinite Programming Algorithm with the positive definite matrix
Completion) is a C++ software package which
solves SDP problems very efficiently (in computational time
and memory) if the data matrices of the SDP
are large-scale and sparse.
For instance, number of variables m < 2,000, matrix sizes
n < 20,000, and 5% of nonzero density.
More specifically, the
SDPA-C is more efficient when there is
a sparse structure in the aggregated sparsity
pattern over data matrices.
Using the positive definite matrix completion, the SDPA-C
stores only the sparse matrices and performs matrix computations
which take advantages of the sparse structure.
Besides the ATLAS (or BLAS) and LAPACK libraries for matrix
computations,
it utilizes the
METIS and SPOOLES libraries for finding a proper sparse
structure of the aggregated sparsity pattern.
First, please try on Online solver.
[download from here]
The SDPARA (SemiDefinite Programming Algorithm PARAllel version)
is a parallel version of the SDPA
written in C++ language.
The SDPARA works as a stand-alone
software package and solves SDPs in parallel with the help of the MPI
(Message Passing Interface) and ScaLAPACK (Scalable LAPACK).
However, its functions are not available as a callable library.
To install and use the package, we assume that you are familiar with
the latest version of the SDPA and the MPICH.
First, please try on Online solver.
[download from here]
The SDPARA-C is a parallel version of the SDPA-C and a variant of
SDPARA which incorporates
the positive definite matrix completion technique. As the SDPA-C,
the following packages need to be installed a priori:
ATLAS (or BLAS), ScaLAPACK, METIS, SPOOLES, and MPICH.
First, please try on Online solver.
[download from here]
The SDPA-GMP is an SDP solver based on the SDPA, which is intended to obtain highly accurate solutions
by utilizing arbitrary precision arithmetic in the GNU Multiple Precision Arithmetic Library (GMP).
The current version of the SDPA-GMP shares the same features with the SDPA
except for user settable accuracy usually for extraordinary accurate calculations.
Expect for newly added one parameters ``precision'', user experience is the same as the SDPA.
Note that the SDPA-GMP is typically several ten or hundred times slower than the SDPA.
[download from here]
The SDPA-P provides a Python interface for the SDPA. It shares all the features with the SDPA except that no callable library is provided. In addition, SDPA-P support