Opened 7 years ago

Last modified 7 years ago

#4470 new defect

Bad performance of tearing for large scale models

Reported by: Patrick Täuber Owned by: Patrick Täuber
Priority: high Milestone: Future
Component: Backend Version:
Keywords: Cc: Francesco Casella, Henning Kiel

Description

The execution time for the postOptModule tearingSystem is quite bad for large scale models, e.g. from ScalableTestsuite.

The situation has been improved a lot by removing the loop check from differentiation.

The current times for tearing for the BreakerNetwork_N_XX models can be seen here:
#3816

The performance should be improved further. I will soon add some more times to compare.

Change History (4)

comment:1 by Patrick Täuber, 7 years ago

Current times of the entire tearing procedure (initDAE + simDAE) for the BreakerNetwork_N_XX models with the different heuristics (default: MC3):

N MC1 MC2 MC11 MC21 MC12 MC22 MC13 MC23 MC231 MC3 MC4 omcTearing
320 3.864 2.067 3.733 1.9799 3.998 2.0087 3.859 2.0835 1.3303 1.8714 78.88 0.9606
640 27.04 13.378 29.14 12.523 28.43 12.745 29.1 13.685 7.279 10.524 671.9 6.017
1280 231.76 100.517 230.07 91.171 238.9 96.266 227.28 102.66 49.64 74.65 ? 39.16

comment:2 by Patrick Täuber, 7 years ago

Number of tearing variables altogether:

N MC1 MC2 MC11 MC21 MC12 MC22 MC13 MC23 MC231 MC3 MC4 omcTearing
320 960 960 960 960 960 960 960 960 641 640 960 641
640 1920 1920 1920 1920 1920 1920 1920 1920 1281 1280 1920 1281
1280 3840 3840 3840 3840 3840 3840 3840 3840 2561 2560 ? 2561

comment:3 by Patrick Täuber, 7 years ago

By Speed up tearing matching a bit, Allow dividing by all globalKnownVars in initDAE and Speed up tearing the computation time of tearingSystem could be reduced.

The new times for BreakerNetwork_N_XX are the following:

N MC1 MC2 MC11 MC21 MC12 MC22 MC13 MC23 MC231 MC3 MC4 omcTearing
320 0.5563 0.4898 0.5699 0.5022 0.5598 0.6282 0.5713 0.522 0.6635 0.6442 1.9331 0.8897
640 2.234 1.9099 2.347 2.019 2.347 2.047 2.384 2.111 2.724 2.612 7.632 5.897
1280 8.662 7.252 9.045 7.789 9.744 8.157 9.162 8.36 11.54 10.278 32.69 38.74

So this model now scales with O(n2).

comment:4 by Patrick Täuber, 7 years ago

Here are some more times for a distribution model (DistributionSystemLinear_N_XX_M_XX):

Before:

MC1 MC2 MC11 MC21 MC12 MC22 MC13 MC23 MC231 MC3 MC4 omcTearing
N_14_M_14 3.943 0.957 3.979 0.8367 4.084 0.9617 3.997 1.1681 1.7441 1.5703 2.2
N_20_M_20 29.84 5.793 28.88 4.247 29.02 4.969 29 6.216 9.914 8.989 15.553
N_28_M_28 195.77 37.4 199.51 23.54 200.92 24.8 194.64 39.39 67.4 55.91 113.01

After:

MC1 MC2 MC11 MC21 MC12 MC22 MC13 MC23 MC231 MC3 MC4 omcTearing
N_14_M_14 0.671 0.5259 0.676 0.5373 0.74 0.6321 0.7345 0.7025 0.7934 0.612 2.318 2.099
N_20_M_20 2.092 1.9841 2.122 1.97 2.359 2.206 2.866 2.314 2.934 2.345 9.44 15.241
N_28_M_28 7.261 6.662 7.555 6.728 9.004 8.425 9.213 8.319 10.931 8.695 36.24 111.11
Note: See TracTickets for help on using tickets.