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.

  • $\begingroup$ I would go as far as to say that MOSEK is the only "serious" modern SDP solver. DSDP by comparison is old, slow, and not well-maintained. You can get a free academic license for MOSEK. $\endgroup$ Apr 12, 2018 at 20:47
  • 1
    $\begingroup$ There are several reasonably robust open source primal-dual SDP solvers (SeDuMi (MATLAB) SDPT3 (MATLAB), SDPA (C++), and my code, CSDP (C)) Hans Mittelman's benchmark report is a useful way to compare them. SCS is an open source solver that uses a first order method that can solve some very large scale problems. $\endgroup$ Apr 13, 2018 at 0:49
  • $\begingroup$ @RichardZhang: according to the MOSEK webpage, "We provide faculty, students or staff at degree-granting academic institutions a free license". Unfortunately I do not fall into these categories :-( $\endgroup$ Apr 13, 2018 at 11:00
  • $\begingroup$ @BrianBorchers: Thank you for the SCS suggestion. I tried it out, works nicely. $\endgroup$ Jun 18, 2018 at 7:57


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.