- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In our application we are using the Pardiso solver inside of a nonlinear solver that uses a Newton solver. The primary computation involves repeated factorizations of the Jacobian matrix and repeated solves using the factored matrix. Additionally, the application solves a series of these problems, each one independent of the other. The dimensions of these Jacobians are modest well under 100k but the benefit of the Pardiso speedup is substantial and increase as the problem size increases.
However, we have observed some failures in the solution process that are random in nature. Occasionally the errors do not occur at all. The result of the failure is that the Newton solver halts with failure messages that point to the factorization. A clue to the problem is to note that whenever these failure occur there is a spike in the memory use reported in the iparms array. Three numbers are reported, iparms[15], 16 and 17. It is the last number that spikes. For example, from a recent run that failed..
Pardiso Factor Jacobian: icalls=329157 n= 1372 LUnz= 33900 Mflops= 1 memused = 682 237 381
Pardiso fbsolve BDS Jacobian: icalls=570727 n= 1372 RHS memuse= 682 237 381
Pardiso fbsolve BDS Jacobian: icalls=570728 n= 1372 RHS memuse= 682 237 381
Pardiso Factor Jacobian: icalls=329159 Circalls=1170 n= 1372 LUnz= 33900 Mflops= 1 memused = 682 237 645
Pardiso fbsolve BDS Jacobian: icalls=570730 n= 1372 RHS memuse= 682 237 645
Pardiso fbsolve BDS Jacobian: icalls=570731 n= 1372 RHS memuse= 682 237 645
Pardiso Factor Jacobian: icalls=329163 n= 1372 LUnz= 33900 Mflops= 1 memused = 682 237 15926505
Pardiso Factor Jacobian: icalls=329164 n= 1372 LUnz= 33900 Mflops= 1 memused = 682 237 15926505
Pardiso Factor Jacobian: icalls=329165 n= 1372 LUnz= 33900 Mflops= 1 memused = 682 237 15926505
Pardiso Factor Jacobian: icalls=329166 n= 1372 LUnz= 33900 Mflops= 1 memused = 682 237 15926505
Pardiso Factor Jacobian: icalls=329167 n= 1372 LUnz= 33900 Mflops= 1 memused = 682 237 15926505
In this case the run almost finished, typically the error occurs much sooner. Icalls is the number of times the factor or solve routine has been called, yes that is 329,167 calls and 570,731 solves..
The memuse numbers are Kbytes and this problem has only 1372 equations and 33,900 nonzeros in the factor. The input matrices are good and the structure is always the same. So the question is, why does the memory use spike to 15926505?
This exact problem can be solver repetitively with a dense solver with no errors leading us to suspect that there is some issue inside Pardiso..
In this application the Pardiso solver starts over many times. That is, the Jacobian structure is always the same but independent problems are solved at several hundred time steps.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Could you provide us with iparm() array (both before and after reordering step) and output statistic (msglvl=1) after reordering, factorization and solving steps? It would be useful to reproduce your problem.
And what version of MKL do you use?
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page