I am working on a problem that involves semidefinite programming (constrained optimization of fairly large positive definite matrices). The software is written in C++ and calls DSDP 5.8 to solve the SDP problem. It works as advertised on small/medium test problems (up to 200 x 200 matrices, ~$10^5$ constraints), but dies due to indexing errors on larger tasks. The reason is, of course, that the authors of DSDP
used int
variables for indices (and int[]
-s for indexing arrays) instead of e.g. size_t
or long
and with the larger problems the 4 byte int
-s eventually overflow.
Before I start modifying a C source that has not been updated since 2006, I thought I might ask the community here: does anyone have, by any chance, a modified version of DSDP
that uses size_t
or long
for indices (and size_t[]
for the index arrays)? These types are usually 8 bytes long on modern 64-bit platforms.
My other option would be to swap out DSDP
and use another SDP solver instead. Please understand that I am reluctant to do this because I would have to adapt my software to a new API. Having said that, feel free to recommend open-source SDP solvers for first-order cone programming that can deal with large problems. I am aware of CVXOPT but that is written in Python; and MOSEK is not FOSS as far as I can tell.