I am working with Pardiso in C++ on sparse symmetric positive definite matrices. Unexpectedly slow performance led me to do the following experiment:
I define a matrix and run phase 11 (symbolic factorization) once.
Then I repeatedly run phase 22 followed by phase 33, using default iparm parameters, let's say 1000 times, on the exact same matrix.
For most iterations the speed is as expected, but for a (usually small) number of iterations, phase 22 takes much longer to complete. For example, on a run of 1000 iterations, the minimum duration for phase 22 might be 0.002 seconds while the longest might be 10.5 seconds.
In my experience, the more iterations are performed, the larger the speed discrepancies get - for 10000 iterations, the longest phase 22 took almost 30 seconds. It doesn't seem to be a memory leak, and it doesn't follow an obvious pattern - the iterations don't get slower and slower. The slow iterations are spread out seemingly randomly amongst the fast ones.
By default I perform my computations using OpenMP with 4 threads, but I have tried to disable multithreading without achieving any better results. Since I work on a type of problem where I need to solve large numbers of subsequent problems with identical sparsity structure but changed numerical values, this problem is currently preventing me from working efficiently.
Please let me know if I can provide additional data or if there's anything you'd like me to try to track down the problem.