As promised, here comes the summary of what I learned:
The Pardiso library (like all shared libraries) remembers which glibc
version was used when it was compiled. Occasionally glibc
may be older on your system than what Pardiso expects, leading to the link errors described by OP. You can check the version of your glibc
by running ldd --version
.
I applied for a free time-limited academic license, that gave me a personal download link. As @Flusslauf pointed out, one has the choice of 2 versions for the Linux 64-bit platform. As of today (2021-03-03) the two versions available to me were: libpardiso600-GNU720-X86-64.so
(note: GNU720
and not GNU729
, but that's a minor difference) and libpardiso600-GNU800-X86-64.so
. The latter didn't work for me for the reasons explained above. So I compiled one of the little example programs from the Pardiso website in the directory containing the former Pardiso library as follows:
cd /path/to/pardiso
gcc pardiso_sym.c -L/usr/lib64 -L. -lpardiso600-GNU720-X86-64 \
-llapack -lblas -fopenmp -lpthread -lm -ldl -o psym
export LD_LIBRARY_PATH=/path/to/pardiso:${LD_LIBRARY_PATH}
export OMP_NUM_THREADS=2
export PARDISOLICMESSAGE=1
./psym
The -L/usr/lib64
was necessary to find LAPACK and BLAS on the machine I used. The -L.
tells GCC to look for the Pardiso library in the current directory (/path/to/pardiso
where I compiled the test program). After compilation, add to LD_LIBRARY_PATH
the Pardiso library location, ask for 2 OpenMP threads and silence the Pardiso license message.
Oh, one last thing: don't forget to copy your license file to your home directory! :-)