Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
7 Views

Nondeterminism in Pardiso

Hi,
We use the Intel MKL Pardiso solver to solve a small (couple hundred row) sparse (4%) system. Running our test case two consecutive times using the Pardiso solver produces very different results. In fact, there seems to be inherent non-determinism in the Pardiso solver.
Now for the standard caveats, our code is memory clean, both purify and valgrind are content. Replacing Pardiso with a standard biconjugate gradient solver and running the same test case on the same hardware produces identically repeatable results. We see this hysteresis on Windows, Mac and Linux in both debug and -O2. The code is serial, we don't enable OpenMP nor do we use the parallel Pardiso solver.
Has anyone else noticed this behavior or is this a known potential problem, any ideas? We haven't yet tried to produce a small test case demonstrating this problem, thought we'd ask first.
-- Noel Belcourt
S896822:~ kbelco$ icpc -V
Intel C++ Intel 64 Compiler Professional for applications running on Intel 64, Version 11.1 Build 20100806 Package ID: m_cproc_p_11.1.089
0 Kudos
5 Replies
Highlighted
Moderator
7 Views

Might beyour matrices areill-conditioned or close to them. Did you estimate the conditin numbers of your input matrixes?
--Gennay
0 Kudos
Highlighted
Valued Contributor I
7 Views

Please look at similar thread
0 Kudos
Highlighted
Beginner
7 Views

Hi Noel,

An answer to your question might be that even in case of iparam(2)=1 (#cores) you must use single threaded BLAS.

As an alternative you could also use the new version PARDISO 4.0.0 (www.pardiso-project.org). This version will always compute a bit-by-bit identical solution even on multicores e.g. using eight cores for the parallel factorization and the parallel solution.

Regards,
Olaf Schenk
0 Kudos
Highlighted
Beginner
7 Views

I love answering my own question.
Our matrix is not ill-conditioned. We did find the source of the non-determinism. We were passing a phase=0 in our last call to pardiso to release internal memory. Phase=0 releases memory for L and U. Passing phase=-1 fixed our problem. Phase=-1 releases all internal memory for all matrices. Changing phase from zero to negative one eliminated the nondeterminism in the solver.
I'd like to request that the developers look at this issue as we nearly gave up on Pardiso entirely due to the inability to reproduce the exact same answer given the exact same inputs. Perhaps some additional (re) initialization can be added with phase=0 to ensure both phases (0 and -1) produce the exact same answer.
Thanks for your responses.
-- Noel Belcourt
0 Kudos
Highlighted
Beginner
7 Views

As an alternative you could also use the new version PARDISO 4.0.0 (www.pardiso-project.org). This version will always compute a bit-by-bit identical solution even on multicores e.g. using eight cores for the parallel factorization and the parallel solution.

In fact, we will try this out as eliminating sources of non-determinism in parallel are extremely important to us, e.g. MPI and OpenMP reductions in rank order and so forth.
Look forward to trying your solver.
-- Noel Belcourt
0 Kudos