Skip to content

Instantly share code, notes, and snippets.

@jandom
Last active November 4, 2020 18:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jandom/4bd1610e1892c61fccb0 to your computer and use it in GitHub Desktop.
Save jandom/4bd1610e1892c61fccb0 to your computer and use it in GitHub Desktop.
Compilation instructions for gromacs 4.6.7 with plumed2 2.1-hrex (branch by Bussi) with intel-compilers, intel-mpi and intel-mkl
How to compile these two little monsters
#!/usr/bin/env bash
module purge
module add intel-compilers/2015 intel-mkl/2015 mvapich2/2.0.1__intel-2015
compilervars.sh intel64
PREFIX=/opt/plumed/2.1-hrex
make clean
# ideally you only need to do
./configure --prefix=$PREFIX
# in practice, what you find...
./configure --enable-mpi CXX=mpicxx --prefix=$PREFIX
sed -i s#'DYNAMIC_LIBS=-lstdc++'#'DYNAMIC_LIBS=-lstdc++ -mkl'# Makefile.conf
make -j8
make install
# verify the compilation
$ ldd `which plumed`
linux-vdso.so.1 => (0x00007fff895ff000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000381dc00000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003a1c400000)
libmkl_intel_lp64.so => /system/software/linux-x86_64/compilers/intel/intelPS-2016/mkl/lib/intel64/libmkl_intel_lp64.so (0x00007f0655909000)
libmkl_intel_thread.so => /system/software/linux-x86_64/compilers/intel/intelPS-2016/mkl/lib/intel64/libmkl_intel_thread.so (0x00007f06545b1000)
libmkl_core.so => /system/software/linux-x86_64/compilers/intel/intelPS-2016/mkl/lib/intel64/libmkl_core.so (0x00007f0652ccc000)
libiomp5.so => /system/software/linux-x86_64/compilers/intel/intelPS-2015/lib/intel64/libiomp5.so (0x00007f0652990000)
libz.so.1 => /lib64/libz.so.1 (0x000000381f000000)
libmpicxx.so.12 => /system/software/linux-x86_64/compilers/intel/intelPS-2016/impi/5.1.1.109/lib64/libmpicxx.so.12 (0x00007f065276f000)
libmpifort.so.12 => /system/software/linux-x86_64/compilers/intel/intelPS-2016/impi/5.1.1.109/lib64/libmpifort.so.12 (0x00007f06523de000)
libmpi.so.12 => /system/software/linux-x86_64/compilers/intel/intelPS-2016/impi/5.1.1.109/lib64/libmpi.so.12 (0x00007f0651c25000)
librt.so.1 => /lib64/librt.so.1 (0x000000381e800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000381e400000)
libm.so.6 => /lib64/libm.so.6 (0x000000381ec00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003a1c000000)
libc.so.6 => /lib64/libc.so.6 (0x000000381e000000)
/lib64/ld-linux-x86-64.so.2 (0x000000381d800000)
#!/usr/bin/env bash
module purge
module add intel-compilers/2015 intel-mkl/2015 mvapich2/2.0.1__intel-2015
compilervars.sh intel64
wget ftp://ftp.gromacs.org/pub/gromacs/gromacs-4.6.7.tar.gz
tar xf gromacs-4.6.7.tar.gz ; cd gromacs-4.6.7
mkdir build ; cd build
PREFIX=/opt/gromacs
cmake .. \
-DGMX_USE_RDTSCP=OFF \ # better timing
-DGMX_FFT_LIBRARY=mkl \ # only with intel compilers, not with GCC, will give you BLAS/LAPACK/FFTW
-DGMX_MPI=ON \ # mpi-gromacs to run on multiple nodes
-DGMX_BUILD_MDRUN_ONLY=ON \ # it will only compile 'mdrun', much faster compilation
-DGMX_DEFAULT_SUFFIX=OFF \ # matter of style
-DCMAKE_INSTALL_PREFIX=$PREFIX \ # where to install
-DGMX_GPU=OFF \ # no need for a GPU in my scenario
-DGMX_SIMD=AVX_256 # important: will depend on the architecture of your cluster nodes
# optional
-DMKL_INCLUDE_DIR=${MKLROOT}/include \
-DMKL_LIBRARIES="${MKLROOT}/lib/intel64/libmkl_intel_lp64.so; ${MKLROOT}/lib/intel64/libmkl_sequential.so; ${MKLROOT}/lib/intel64/libmkl_core.so" \
# optional, important: will depend on the architecture of your cluster nodes
-DGMX_SIMD=AVX2_256 \
-DCMAKE_C_FLAGS="-O3 -xCORE-AVX2 -ip" \
-DCMAKE_CXX_FLAGS="-O3 -xCORE-AVX2 -ip" \
make -j16
cd ..
plumed patch -p << EOF
3
EOF
cd build
make -j16
make install
# verify the compilation
source /opt/gromacs/bin/GMXRC.bash
ldd `which mdrun `
linux-vdso.so.1 => (0x00007ffff97ff000)
libmkl_intel_lp64.so => /system/software/linux-x86_64/compilers/intel/intelPS-2016/mkl/lib/intel64/libmkl_intel_lp64.so (0x00007fc2bb948000)
libmkl_intel_thread.so => /system/software/linux-x86_64/compilers/intel/intelPS-2016/mkl/lib/intel64/libmkl_intel_thread.so (0x00007fc2ba5f1000)
libmkl_core.so => /system/software/linux-x86_64/compilers/intel/intelPS-2016/mkl/lib/intel64/libmkl_core.so (0x00007fc2b8d0c000)
libiomp5.so => /system/software/linux-x86_64/compilers/intel/intelPS-2015/lib/intel64/libiomp5.so (0x00007fc2b89cf000)
libgmxpreprocess.so.8 => /home/sbcb-membr/jdomanski/privateopt/gromacs-4.6.7_plumed2.1-hrex-wenwei-icc/bin/../lib/libgmxpreprocess.so.8 (0x00007fc2b86fe000)
libmd.so.8 => /home/sbcb-membr/jdomanski/privateopt/gromacs-4.6.7_plumed2.1-hrex-wenwei-icc/bin/../lib/libmd.so.8 (0x00007fc2b81c5000)
libgmx.so.8 => /home/sbcb-membr/jdomanski/privateopt/gromacs-4.6.7_plumed2.1-hrex-wenwei-icc/bin/../lib/libgmx.so.8 (0x00007fc2b7ac0000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000381dc00000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003a1c400000)
libz.so.1 => /lib64/libz.so.1 (0x000000381f000000)
libmpifort.so.12 => /system/software/linux-x86_64/compilers/intel/intelPS-2016/impi/5.1.1.109/intel64/lib/libmpifort.so.12 (0x00007fc2b7717000)
libmpi.so.12 => /system/software/linux-x86_64/compilers/intel/intelPS-2016/impi/5.1.1.109/intel64/lib/libmpi.so.12 (0x00007fc2b6f5f000)
librt.so.1 => /lib64/librt.so.1 (0x000000381e800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000381e400000)
libm.so.6 => /lib64/libm.so.6 (0x000000381ec00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003a1c000000)
libc.so.6 => /lib64/libc.so.6 (0x000000381e000000)
/lib64/ld-linux-x86-64.so.2 (0x000000381d800000)
libmkl_sequential.so => /system/software/linux-x86_64/compilers/intel/intelPS-2016/mkl/lib/intel64/libmkl_sequential.so (0x00007fc2b66b5000)
libimf.so => /system/software/linux-x86_64/compilers/intel/intelPS-2015/lib/intel64/libimf.so (0x00007fc2b61fa000)
libsvml.so => /system/software/linux-x86_64/compilers/intel/intelPS-2015/lib/intel64/libsvml.so (0x00007fc2b5327000)
libirng.so => /system/software/linux-x86_64/compilers/intel/intelPS-2015/lib/intel64/libirng.so (0x00007fc2b511f000)
libintlc.so.5 => /system/software/linux-x86_64/compilers/intel/intelPS-2015/lib/intel64/libintlc.so.5 (0x00007fc2b4ec4000)
@samcom12
Copy link

samcom12 commented Nov 3, 2020

Thank you so much for such nice instructions.

@jandom
Copy link
Author

jandom commented Nov 4, 2020

@samcom12 happy to help – so many years after it was published!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment