[Ipopt] large quadratic problem - linear solver performance
Stefan Vigerske
svigerske at gams.com
Mon Jan 17 22:13:41 EST 2022
Hi,
you might have to compare the output of Pardiso from this problem with
the one of similar problems to see what is off (except for time).
Is the number of nonzeros in L+U (353891710) exceptionally large compare
to the one in A (10792217)?
Maybe a different ordering strategy would help (pardiso_order)?
Also try disabling parallelization, just to see whether that had a
negative effect.
Does setting pardiso_msglvl to a larger value give more output?
Stefan
On 1/9/22 20:09, Ivo Stefanov wrote:
> Hello,
> I am not sure if this is the right place to ask this as it seems to be purely related to the linear solver used, but let me give some background of what I am observing. I am trying to solve the following (quadratic) problem:
> Number of nonzeros in equality constraint Jacobian...:
> 8978916 Number of nonzeros in inequality constraint Jacobian.:
>
> 378079 Number of nonzeros in Lagrangian Hessian.............:
>
>
> 9206
> Total number of variables............................:
>
> 378696
>
>
>
>
>
>
>
>
>
>
> variables with only lower bounds:
>
> 338885
>
>
>
>
>
>
>
> variables with lower and upper bounds:
>
> 39177
>
>
>
>
>
>
>
>
>
>
> variables with only upper bounds:
>
>
>
> 0 Total number of equality constraints.................:
>
> 39757 Total number of inequality constraints...............:
>
> 338923
>
>
>
> inequality constraints with only lower bounds:
>
>
>
> 0
>
> inequality constraints with lower and upper bounds:
>
>
>
> 1
>
>
>
> inequality constraints with only upper bounds:
>
> 338922
> It is decently large, but still a simple quadratic problem with linear constraints. I am solving many of those successfully (and fast) with the MKL PARDISO linear solver used, but this is the biggest one so far. I am able to solve this in 2 ways:
> 1. Windows, IpOpt 3.7.0, MUMPS linear solver Number of Iterations....: 82 Total CPU secs in IPOPT (w/o function evaluations)
>
> =
>
> 521.732 Total CPU secs in NLP function evaluations
>
>
>
>
>
> =
>
>
> 20.381
> I am normally not using this because it is a lot (sometimes orders of magnitude) slower than the PARDISO version, but this time I ran it for comparison purposes.
>
> 2. Linux, IpOpt 3.12.12, MKL PARDISO linear solver (same laptop as in the above) The iterations are going the same way as in the previous setup, so I guess it will all be the same in the end .. with the exception that it seems to take forever. I know it is not apples to apples comparison, but so far I have never seen PARDISO being slower than MUMPS, let alone with such margin. I ran with
> pardiso_msglvl and for the first iteration I saw that:
> === PARDISO: solving a symmetric indefinite system === 1-based array indexing is turned ON PARDISO double precision computation is turned ON METIS algorithm at reorder step is turned ON Matching is turned ON
> Parallel Direct Factorization is running on 4 OpenMP
>
>
>
>
>
>
>
> number of equations:
>
>
>
>
>
> 1096299
>
>
>
>
>
>
> number of non-zeros in A:
>
>
> 10792217
>
>
>
>
>
>
> number of non-zeros in A (%): 0.000898
>
>
>
>
>
>
>
> number of right-hand sides:
>
> 1
>
>
>
>
>
>
>
> number of columns for each panel: 112
>
>
>
>
>
>
> number of independent subgraphs:
> 0
>
>
>
>
>
>
> number of supernodes:
>
>
>
>
>
>
>
>
>
> 748178
>
>
>
>
>
>
> size of largest supernode:
>
>
>
>
>
>
>
> 26102
>
>
>
>
>
>
> number of non-zeros in L:
>
>
>
>
>
>
>
> 353891709
>
>
>
>
>
>
> number of non-zeros in U:
>
>
>
>
>
>
>
> 1
>
>
>
>
>
>
> number of non-zeros in L+U:
>
>
>
>
>
>
> 353891710 === PARDISO is running in In-Core mode, because iparam(60)=0 ===
> Times: ====== Time spent in copying matrix to internal data structure (A to LU): 0.000001 s Time spent in factorization step (numfct)
>
>
>
>
>
>
>
>
>
>
>
> : 430.960081 s Time spent in allocation of internal data structures (malloc)
>
> : 0.047239 s Time spent in additional calculations
>
>
>
>
>
>
>
>
>
>
>
>
>
> : 0.000080 s Total time spent
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> : 431.007401 s
> So it spent nearly the same amount of time in the first factorization as the MUMPS setup for the whole problem, which definitely makes no sense.
> Subsequent iterations are faster at about 300 seconds each, which is still very bad.
> I am wondering if I am missing something in the usage of PARDISO in that context, maybe an option that could help or something that seems generally off ? Does anyone have experience with a situation like that ?
> Thank you very much !
> Ivo
>
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> https://list.coin-or.org/mailman/listinfo/ipopt
More information about the Ipopt
mailing list