Gromacs installation patched with plumed

GROMACS version:2020.2
GROMACS modification: Yes (plumed)

Dear all,

I’m trying to install GROMACS 2020.2 patched by plumed, to run targeted MD with MPI.
These commands were executed successfully;

tar zxvf gromacs-2020.2.tar.gz
cd gromacs-2020.2
plumed patch -p (and I selected 4)


mkdir build
cd build

After that I tried this command;

…/…/cmake/cmake-3.9.6-Linux-x86_64/bin/cmake … -DCMAKE_C_COMPILER=/misc/home/ikuma/openmpi-4.0.5/bin/mpicc -DCMAKE_CXX_COMPILER=/misc/home/ikuma/openmpi-4.0.5/bin/mpicxx -DGMX_MPI=on -DCMAKE_INSTALL_PREFIX=/misc/home/ikuma/gromacs-2020.2/ -DGMX_FFT_LIBRARY=fftw3 -DFFTWF_LIBRARIES=/misc/home/ikuma/fftw-3.3.8/lib/libfftw3f_mpi.so -DFFTWF_INCLUDE_DIR=/misc/home/ikuma/fftw-3.3.8/include/

And got an error message;

Could not find fftw3f library named libfftw3f, please specify its location in CMAKE_PREFIX_PATH or FFTWF_LIBRARY by hand (e.g. -DFFTWF_LIBRARY=’/path/to/libfftw3f.so’)
CMake Error at cmake/gmxManageFFTLibraries.cmake:92 (MESSAGE):
Cannot find FFTW 3 (with correct precision - libfftw3f for mixed-precision
GROMACS or libfftw3 for double-precision GROMACS). Either choose the right
precision, choose another FFT(W) library (-DGMX_FFT_LIBRARY), enable the
advanced option to let GROMACS build FFTW 3 for you
(-DGMX_BUILD_OWN_FFTW=ON), or use the really slow GROMACS built-in fftpack
library (-DGMX_FFT_LIBRARY=fftpack).
Call Stack (most recent call first):
CMakeLists.txt:715 (include)

– Configuring incomplete, errors occurred!
See also “/misc/home/ikuma/gromacs-2020.2/build/CMakeFiles/CMakeOutput.log”.
See also “/misc/home/ikuma/gromacs-2020.2/build/CMakeFiles/CMakeError.log”.

Following the error message , I tried;

…/…/cmake/cmake-3.9.6-Linux-x86_64/bin/cmake … -DCMAKE_C_COMPILER=/misc/home/ikuma/openmpi-4.0.5/bin/mpicc -DCMAKE_CXX_COMPILER=/misc/home/ikuma/openmpi-4.0.5/bin/mpicxx -DGMX_MPI=on -DCMAKE_INSTALL_PREFIX=/misc/home/ikuma/gromacs-2020.2/ -DGMX_FFT_LIBRARY=fftw3 -DFFTWF_LIBRARIY=/misc/home/ikuma/fftw-3
.3.8/lib/libfftw3f_mpi.so -DFFTWF_INCLUDE_DIR=/misc/home/ikuma/fftw-3.3.8/include/

where the sentence -DGMX_FFT_LIBRARIES was changed to -DGMX_FFT_LIBRARY.

And I got;

CMake Error at cmake/FindFFTW.cmake:105 (message):
Could not find fftwf_plan_many_[r2c|c2r] in
/usr/local/fftw/3.3.8/lib/libfftw3f_mpi.so, take a look at the error
message in /misc/home/ikuma/gromacs-2020.2/build/CMakeFiles/CMakeError.log
to find out what went wrong. If you are using a static lib (.a) make sure
you have specified all dependencies of fftw3f in FFTWF_LIBRARY by hand
(e.g. -DFFTWF_LIBRARY=’/path/to/libfftw3f.so;/path/to/libm.so’) !
Call Stack (most recent call first):
cmake/gmxManageFFTLibraries.cmake:89 (find_package)
CMakeLists.txt:715 (include)

But the directory “/usr/local/” needs root , which I don’t have.

what I’d like to know is ;

・how to solve this problem (meaning how to configure GROMACS2020-2 with libfftw3f_mpi.so), if it is possible, without root

or
・any other method to install GROMACS with PLUMED+MPI

Could someone help me?

Thank you,
kimu handexyin

BS"D

You still seem to have a typo in your path specification:
DFFTWF_LIBRARIY
instead of
DFFTWF_LIBRARY

Harry

There is no need to compile FFTW with threading or MPI support, but it does no harm.

Dear all,
Thank you for your advises. I tried the following command;

…/…/cmake/cmake-3.9.6-Linux-x86_64/bin/cmake … -DCMAKE_C_COMPILER=/misc/home/ikuma/openmpi-4.0.5/bin/mpicc -DCMAKE_CXX_COMPILER=/misc/home/ikuma/openmpi-4.0.5/bin/mpicxx -DGMX_MPI=on -DCMAKE_INSTALL_PREFIX=/misc/home/ikuma/gromacs-2020.2/ -DGMX_BUILD_OWN_FFTW=ON

-DGMX_BUILD_FFTW_OWN is added according to your advise that fftw compiling does not affect on threading/MPI support.

Configuration and command “make” were done successfully, and then I tried “make check” , and got some messages like this;

NOTE: The number of threads is not equal to the number of (logical) cores
and the -pin option is set to auto: will not pin threads to cores.
This can lead to significant performance degradation.
Consider using -pin on (and -pinoffset in case you run multiple jobs).
starting mdrun ‘spc-and-methanol’
2 steps, 0.0 ps.
Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 298 K
Calculated rlist for 1x1 atom pair-list as 1.025 nm, buffer size 0.025 nm
Set rlist, assuming 4x4 atom pair-list, to 1.022 nm, buffer size 0.022 nm
Note that mdrun will redetermine rlist based on the actual pair-list setup
This run will generate roughly 0 Mb of data

Writing final coordinates.

           Core t (s)   Wall t (s)        (%)
   Time:        0.159        0.080      199.9
             (ns/day)    (hour/ns)

Performance: 3.260 7.362
[ OK ] MdrunCanWrite/NptTrajectories.WithDifferentPcoupl/2 (84 ms)
[----------] 3 tests from MdrunCanWrite/NptTrajectories (252 ms total)

[----------] Global test environment tear-down
[==========] 84 tests from 21 test cases ran. (18489 ms total)
[ PASSED ] 83 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] MdrunTest.WritesHelp

1 FAILED TEST
YOU HAVE 12 DISABLED TESTS

and like this separated form the above;

98% tests passed, 1 tests failed out of 52

Label Time Summary:
GTest = 131.87 sec (52 tests)
IntegrationTest = 45.68 sec (9 tests)
MpiTest = 85.27 sec (8 tests)
SlowTest = 70.40 sec (2 tests)
UnitTest = 15.79 sec (41 tests)

Total Test time (real) = 131.94 sec

The following tests FAILED:
43 - MdrunTests (Failed)
Errors while running CTest
make[3]: *** [CMakeFiles/run-ctest-nophys] Error 8
make[2]: *** [CMakeFiles/run-ctest-nophys.dir/all] Error 2
make[1]: *** [CMakeFiles/check.dir/rule] Error 2
make: *** [check] Error 2

do you think I can continue the installation? Or, should I fix something?
If you know how to solve it or encounter this type of error before, please advise me.

Best Regards,
kimu

This test fails, because PLUMED adds the new command line option -plumed to gmx mdrun but doesn’t update the expected output for the test (which is basically running gmx mdrun -h) nor is the plumed patch disabling the test.

I think this is rather an issue to be brought up with the PLUMED developers, however I would also really appreciate some guidance from the GROMACS team on how to (easily) disable/skip/ignore specific tests that I have determined to be non-critical.