Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions easybuild/easyblocks/g/gromacs.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,10 +328,11 @@ def configure_step(self):

if get_software_root('imkl'):
# using MKL for FFT, so it will also be used for BLAS/LAPACK
self.cfg.update('configopts', '-DGMX_FFT_LIBRARY=mkl -DMKL_INCLUDE_DIR="$EBROOTMKL/mkl/include" ')
self.cfg.update('configopts', '-DGMX_FFT_LIBRARY=mkl -DMKL_INCLUDE_DIR="%s" ' %
os.path.join(os.getenv('MKLROOT'), 'include'))
libs = os.getenv('LAPACK_STATIC_LIBS').split(',')
mkl_libs = [os.path.join(os.getenv('LAPACK_LIB_DIR'), lib) for lib in libs if lib != 'libgfortran.a']
mkl_libs = ['-Wl,--start-group'] + mkl_libs + ['-Wl,--end-group']
mkl_libs = ['-Wl,--start-group'] + mkl_libs + ['-Wl,--end-group -lpthread -lm -ldl']
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it OK to always include -lpthread -lm -ldl here?

Can you clarify which error this fixes exactly?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When trying to compile GROMACS 2020.4 with the gomkl-2020a (GCC + MKL) toolchain (which we found to produce an mdrun that runs a bit faster than the foss-toolchain), cmake wasn't finding the FFT provided by MKL unless I added the -lpthread -lm -ldl flags:

  Linking with MKL was requested, but was not successful: The include path to
  mkl.h in MKL_INCLUDE_DIR, and the link libraries in
  MKL_LIBRARIES=-Wl,--start-group;/cvmfs/soft.computecanada.ca/easybuild/software/2020/Core/imkl/2020.1.217/mkl/lib/intel64/libmkl_gf_lp64.a;/cvmfs/soft.computecanada.ca/easybuild/software/2020/Core/imkl/2020.1.217/mkl/lib/intel64/libmkl_sequential.a;/cvmfs/soft.computecanada.ca/easybuild/software/2020/Core/imkl/2020.1.217/mkl/lib/intel64/libmkl_core.a;-Wl,--end-group
  need to match what the MKL documentation says you need for your system: Use
  full paths to library files, in the right order, and separated by
  semicolons.
Call Stack (most recent call first):
  CMakeLists.txt:716 (include)

I used the MKL advisor to suggest the linker-flags, which is how I came to try adding -lpthread -lm -ldl, which solved the above error.

self.cfg.update('configopts', '-DMKL_LIBRARIES="%s" ' % ';'.join(mkl_libs))
else:
for libname in ['BLAS', 'LAPACK']:
Expand Down