Friday, June 24, 2022

MOSEK 10 release approaching

MOSEK version 10 with all its new features has been available as a beta version for a while now. See for the latest details and download and installation instructions.

Huge thanks to all the users who were so kind to test this beta release and share their suggestions, bug reports and comments. We are working on incorporating your input into the final release. Do not hesitate to write to us with further remarks.

MOSEK 10 is planned to become the current stable release latest on August 15th 2022.

In the meantime, we wish all MOSEK users a good summer, enjoyable vacation, and hope to meet you with version 10 after the summer.

The MOSEK team

Wednesday, June 22, 2022

On the performance improvement of the semi-definite optimizer when switching from version 9 to 10

The most reason Mosek version 10.0.16(beta) includes a very significant improvement of the optimizer for semi-definite problems. The improvement is most notable for problems having many matrix variables. In order to illustrate the potential performance gain we use a problem supplied by Mosek user. Some statistics about the problem can be seen in the Mosek log output:

Optimizer  - solved problem         : the primal
Optimizer  - Constraints            : 8808
Optimizer  - Cones                  : 0
Optimizer  - Scalar variables       : 0                 conic                  : 0
Optimizer  - Semi-definite variables: 49                scalarized             : 76493
Factor     - setup time             : 8.26              dense det. time        : 0.00
Factor     - ML order time          : 0.50              GP order time          : 0.06
Factor     - nonzeros before factor : 3.38e+07          after factor           : 3.38e+07
Factor     - dense dim.             : 0                 flops                  : 2.45e+11
Factor     - GP saved nzs           : 4.97e+06          GP saved flops         : 4.60e+10
Hence, the problem has 8808 constraints and 49 matrix variables. In addition it should be mentioned that the contraint matrix is not that sparse.

Below the computational results is shown.

CPU 9.3.20 9.3.20 (MT) 10.0.16 10.0.16 (MT)
Intel Xeon Gold 6126 (12 core) 1165 1171 833 207
AMD EPYC 7402P (24 core) 1189 1049 777 108
The table shows the computational time in wall clock seconds for running version 9.3.20 and 10.0.16 single and multi-threaded respectively. Moreover, the timing result is shown for an Intel and an AMD CPU.

The main conclusions from the table are

  • version 10 is much faster than version 9 and the difference is more notable on the AMD CPU.
  • version 10 offers much better speed-up when using multiple threads. In fact there are virtually no speed-up when using multiple threads in version 9.
It should emphasized that the performance improvement for solving semi-definite problems when switching from version 9 to version 10 is dependent on the structure of the problem. However, as illustrated above a big performance boost can be realized for some problems.

PS. Despite the AMD CPU being the fastest in the table above then this post do not claim AMD CPUs are better than Intel CPUs or the other way around.