Opened 9 years ago
Last modified 9 years ago
#3668 assigned defect
Memory allocation of the back-end and code generation grows quadratically with the system size — at Version 2
Reported by: | Francesco Casella | Owned by: | Lennart Ochel |
---|---|---|---|
Priority: | high | Milestone: | Future |
Component: | Backend | Version: | v1.9.4-dev-nightly |
Keywords: | Cc: | andrea.bartolini@… |
Description (last modified by )
Consider the attached test package: it has one large algebraic system of equations driven by a scalar differential equation.
I have used these settings, which include some that are essential for the efficient handling of the large algebraic system:
setCommandLineOptions("--preOptModules-=clockPartitioning --postOptModules-=detectJacobianSparsePattern --postOptModules+=wrapFunctionCalls --disableLinearTearing --removeSimpleEquations=new --indexReductionMethod=uode --tearingMethod=omcTearing -d=dumpSimCode,gcProfiling,execstat,nogen,initialization,backenddaeinfo,discreteinfo,stateselection"); simulate(LargeAlgebraic.M_2000, method = "rungekutta", stopTime = 1, numberOfIntervals = 10, simflags = "-lv LOG_STATS,LOG_LS -ls=klu");
Under Windows, the size of memory allocated by the back-end and code generation phases grows approximately as O(N2), N being the size of the algebraic system:
N | Memory (MB) |
2000 | 260 |
4000 | 1000 |
6000 | 2000 |
Note that the number of non-zero elements in the incidence matrix of the system grows as O(N), as there are 3 non-zero elements in each row.
This is not sustainable for systems that have more than a few thousands unknowns.
Change History (4)
by , 9 years ago
Attachment: | LargeAlgebraic.mo added |
---|
comment:1 by , 9 years ago
Cc: | added |
---|
comment:2 by , 9 years ago
Description: | modified (diff) |
---|---|
Summary: | Memory allocation of the back-end grows quadratically with the system size → Memory allocation of the back-end and code generation grows quadratically with the system size |
by , 9 years ago
Attachment: | LargeAlgebraic_MemoryUsage.pdf added |
---|
A first analysis of the backend memory usage for model LargeAlgebraic.