  In this paper, we present a majorized semismooth Newton-CG augmented
Lagrangian method, called SDPNAL$+$, for semidefinite programming (SDP) with
partial or full nonnegative constraints on the matrix variable. SDPNAL$+$ is a
much enhanced version of SDPNAL introduced by Zhao, Sun and Toh [SIAM Journal
on Optimization, 20 (2010), pp.~1737--1765] for solving generic SDPs. SDPNAL
works very efficiently for nondegenerate SDPs but may encounter numerical
difficulty for degenerate ones. Here we tackle this numerical difficulty by
employing a majorized semismooth Newton-CG augmented Lagrangian method coupled
with a convergent 3-block alternating direction method of multipliers
introduced recently by Sun, Toh and Yang [arXiv preprint arXiv:1404.5378,
(2014)]. Numerical results for various large scale SDPs with or without
nonnegative constraints show that the proposed method is not only fast but also
robust in obtaining accurate solutions. It outperforms, by a significant
margin, two other competitive publicly available first order methods based
codes: (1) an alternating direction method of multipliers based solver called
SDPAD by Wen, Goldfarb and Yin [Mathematical Programming Computation, 2 (2010),
pp.~203--230] and (2) a two-easy-block-decomposition hybrid proximal
extragradient method called 2EBD-HPE by Monteiro, Ortiz and Svaiter
[Mathematical Programming Computation, (2013), pp.~1--48]. In contrast to these
two codes, we are able to solve all the 95 difficult SDP problems arising from
the relaxations of quadratic assignment problems tested in SDPNAL to an
accuracy of $10^{-6}$ efficiently, while SDPAD and 2EBD-HPE successfully solve
30 and 16 problems, respectively.
