In an iterative algorithm I'm reusing the factorization of a symmetric indefinite matrix to solve for different right-hand sides. The back-substitution is performed in a loop with a single right-hand side being sent to pardiso at each time.
I'm using paridiso_64 and mkl 11.1u2.
I'm using vtune to perform a concurrency analysis of the application. The execution of the pardiso factorization step seems to be running efficiently in parallel, so I think I've linked the right mkl libraries. However the back substiution is not parallel. It seems pardiso spawns three openmp workers in my case, and only one is active for the back substitution stages.
I searched the forum and found a thread with a similar question, but I did not find an answer there. However it was mentioned that the back substitution is serial in certain situations.
My iparm is non-default as follows:
iparm = 1; //use non-default values
iparm = 3; //parallel metis nested disection
iparm = 0; //matrix checks
iparm = 2;
iparm = 8;
iparm = 1; //scaling
iparm = 1; //enable matching
iparm = 1; //pivoting
(Otherwise 0. Note the 0 indexing.)
Your version of MKL is quite old, could you check you testcase on new version of MKL. During last years performance and scaling of MKL Pardiso solving step have significantly improved