QSDPNAL version 0.1 — a MATLAB software for convex quadratic semidefinite programming

Xudong Li, Defeng Sun, Kim-Chuan Toh

This software is designed to solve convex quadratic SDP of the form:

\[\min \left\{\frac{1}{2}\langle X, {\cal Q} X \rangle + \langle C, X \rangle
\mid {\cal A}_E X= b_E, \; {\cal A}_I X \le b_I, \; X\in {\cal S}_+^n \cap {\cal K} \right\},
\] where ${\cal Q}:{\cal S}_n\to {\cal S}_n $ is a self-adjoint positive semidefinite linear operator, ${\cal A}_E:{\cal S}_n \rightarrow \mathbb{R}^{m_E}$ and  ${\cal A}_I:{\cal S}_n \rightarrow \mathbb{R}^{m_I}$ are linear maps, $C\in {\cal S}_n$, $b \in \mathbb{R}^{m}$ are given data, ${\cal K}$ is a simple nonempty closed convex polyhedral set in ${\cal S}_n$, such as ${\cal K} =\{X \in{\cal S}_n \mid\, L\leq X\leq U\}$ with $L,U\in {\cal S}_n$        being given matrices.

Important note:

  • The software is still under development. Thus it will invariably be buggy. We would appreciate your feedback and bugs’ report.
  • This is a research software. It is not intended nor designed to be a general purpose software at the moment.


  • Xudong Li, Defeng Sun, and Kim-Chuan Toh, QSDPNAL: A two-phase augmented Lagrangian method for convex quadratic semidefinite programming, Mathematical Programming Computation, 10 (2018), pp. 703–743.

Copyright. This version of QSDPNAL is distributed under the 3-Clause BSD license.
For commercial applications that may be incompatible with this license, please contact the authors to discuss alternatives.


You can download the package here: QSDPNAL.zip [GitHub page]

Installation. The user can simply follow the steps below to install QSDPNAL within Matlab:

  • unzip QSDPNAL.zip;
  • run Matlab in the directory QSDPNAL;
  • After that, to see whether you have installed QSDPNAL correctly, try the following steps:
    >> startup
    >> qsdpdemo
  • The users’ guide is included in the Appendix of our paper.
  • If you have issues with MEX files on macOS (“ “*.mexmaci64” cannot be opened because the developer cannot be verified. macOS cannot verify that this app is free from malware” or “Code signature not valid for use in process using Library Validation: library load disallowed by system policy”), open a Terminal, cd to the QSDPNAL directory and type:
    find . -name "*.mexmaci64" -exec xattr -d com.apple.quarantine {} \;