[gmx-developers] Linking error while using external lapack/blas
Mark Abraham
Mark.Abraham at anu.edu.au
Thu Apr 22 16:29:09 CEST 2010
On 22/04/2010 11:13 PM, Béla Voß wrote:
> Hi,
>
> I noticed that running the configure script with the
> --with-external-blas or --with-external-lapack options will lead to a
> linking error during the make procedure because the configure script
> does not check for those libraries and does not add an entry to the LIBS
> variable in the makefiles. This applies both to the 4.0.7 version and to
> master branch.
True. We should have a note in configure --help that tells users they'll
need to provide suitable LIBS entries if they use these options.
> I wanted to ask whether this is the desired behaviour in order to
> enforce the user to choose the right libraries.
> Otherwise i.e. if the configure script should check for all necessary
Unfortunately vendor-supplied math routines are seldom linked with
-lblas and -llapack. Intel's MKL has various possibilities. HP/Compaq
use -lscsl. IBM probably something else. Cray, I dunno.
It would seem possible to treat BLAS and LAPACK with GROMACS in the same
way that FFT libraries are treated, e.g. --with-blas=scsl, but after my
experience today, I'd strongly discourage that.
For using Intel's MKL FFT routines, the normal GROMACS usage is
--with-fft=mkl, which has the effect of appending -lmkl to LIBS. This
conflicted with an attempt I made to enforce non-threaded MKL for FFT,
BLAS and LAPACK, because on my system, -lmkl was actually a kind of
dummy library that caused several other libraries to be linked,
including one for threads. This led to linker problems later, because I
was deliberately not linking all the thread-support libraries! So I had
to hack in a --with-fft=mkl-unthreaded to configure to work around this.
The above approach for FFT works fine in most normal cases, so I
wouldn't suggest changing it. However the kind of one-off problem I
found today for MKL will be a hydra for BLAS and LAPACK!
(Note that GROMACS only uses BLAS and LAPACK in a few places, so the
internal version of these are quite plausible for most workflows.)
> dependencies (what is in my opinion more correct) this could be fixed by
> adding the checks to configure.ac (see attachment)
That would work in some cases, and provoke problems in others. Also note
that http://www.gnu.org/software/hello/manual/autoconf/Libraries.html
prefers the use of AC_SEARCH_LIBS over AC_CHECK_LIB
Mark
More information about the gromacs.org_gmx-developers
mailing list