Skip to content

SCS 3.3.2 MATLAB interface

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Nov 13:42
f6e309c

MATLAB interface and rebuilt toolbox for SCS 3.3.2. The scs submodule is pinned to core commit f0036c3aea2b8e3d371f3c5e2ea23a1639ee8354. The MATLAB interface is unchanged; this release brings the 3.3.2 solver to MATLAB.

Installation and compatibility

Download SCS.mltbx below and open it in MATLAB. Platforms and baselines are as in 3.3.1: Windows x86-64, Linux x86-64, Intel Mac and Apple Silicon Mac binaries; MATLAB R2022b, or R2023b for native Apple Silicon; Linux glibc 2.31 or newer. The packaged binaries are serial.

After installing, run scs_version in MATLAB and check that it reports 3.3.2. Reinitialize any solver workspaces rather than carrying live workspace handles across a toolbox/MEX upgrade.

Solver changes

The core release notes describe the solver changes. The ones that reach the toolbox:

  • Scale updates (cvxgrp/scs#508, cvxgrp/scs#510). Feasibility problems with c = 0 and no P no longer stall with the scale at its floor. Solves that update the scale can take a different number of iterations than with 3.3.1, and the path depends on the ratio of eps_abs to eps_rel.
  • Power cone (cvxgrp/scs#493). The projection is now scale-invariant; 3.3.1 could return solved with the slack outside the cone when the iterates were tiny.
  • Spectral cones (cvxgrp/scs#442). The toolbox is built with spectral cones. adaptive_diag_scale now applies to problems that use them, and log-determinant warm starts are reset when the scale changes.
  • LAPACK failures (cvxgrp/scs#442, cvxgrp/scs#506). An eigendecomposition that LAPACK does not complete now stops the solve with a failure instead of continuing with a partly projected block.

The core added no setting and changed no default, so the settings accepted by scs and scs_init are those of 3.3.1.

Two core changes apply only to source builds:

  • The parallel PSD projection is a core build option (USE_PARALLEL_PSD) that make_scs.m does not set, so an OpenMP build still projects PSD blocks one after another.
  • The optional cuDSS backend now factorizes without pivoting, matching or iterative refinement (cvxgrp/scs#525). See the core notes for the tradeoff.

Release validation

CI caches MATLAB and retries a failed checkout or MATLAB setup once (#51); compilation, ABI checks and tests fail as before. One test changed: test_mixed_cones_cross_validate now compares the MATLAB LDL and QDLDL backends at eps 1e-6 instead of 1e-9, because the opt-in QDLDL solve of its problem did not reach 1e-9 on Linux and Windows with the 3.3.2 core (#52). The build matrix, the installed-toolbox tests on all four platforms and the tag workflow are otherwise as in 3.3.1.

Full MATLAB changelog