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.