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 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.
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.