Installation error with Plumed (v2.9) Gromacs (23.2) install

GROMACS version: 23.2
GROMACS modification: Yes

Dear Gromacs team,

I wanted to request to help with the following installation error:

 /gromacs-2023.2/src/gromacs/mdrun/md.cpp: In member function 'void gmx::LegacySimulator::do_md()':
 /gromacs-2023.2/src/gromacs/mdrun/md.cpp:1143:69: error: invalid conversion from 'int' to 'const gmx::EnumerationArray<FreeEnergyPerturbationCouplingType, std::vector<double> >*' [-fpermissive]
  1143 |           gmx_enerdata_t hrex_enerd(enerd->grpp.nener, nlambda == 0 ? 0 : nlambda - 1);
       |                                                        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
       |                                                                     |
       |                                                                     int
 In file included from /gromacs-2023.2/src/gromacs/mdlib/energyoutput.h:53,
                  from /gromacs-2023.2/src/gromacs/mdrun/md.cpp:85:
 /gromacs-2023.2/src/gromacs/mdtypes/enerdata.h:221:106: note:   initializing argument 2 of 'gmx_enerdata_t::gmx_enerdata_t(int, const gmx::EnumerationArray<FreeEnergyPerturbationCouplingType, std::vector<double> >*)'
221 |                    const gmx::EnumerationArray<FreeEnergyPerturbationCouplingType, std::vector<double>>* allLambdas);
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
At global scope:
cc1plus: note: unrecognized command-line option '-Wno-cast-function-type-strict' may have been intended to silence earlier diagnostics

I am trying to build a docker container to run Plumed Gromacs with GPU support. The recipe is as follows:

FROM nvidia/cuda:12.2.0-devel-ubuntu22.04
RUN apt-get update \
    && DEBIAN_FRONTEND=noninteractive \
       apt-get install -y --no-install-recommends \
            ca-certificates \
            wget \
            cmake \
            gawk  \
            libmatheval-dev \
            gnuplot \
            automake \
            autoconf \    
            libtool \
            strace \
            python3 \
            python3-numpy \
            python3-scipy \
            zlib1g-dev \
            libblas-dev \
            liblapack-dev \
            git             \   
    && rm -rf /var/lib/apt/lists/*


# Install MPICH
ARG mpich=4.0.3
ARG mpich_prefix=mpich-$mpich

RUN \
    wget https://www.mpich.org/static/downloads/$mpich/$mpich_prefix.tar.gz && \
    tar xvzf $mpich_prefix.tar.gz                                           && \
    cd $mpich_prefix                                                        && \
    ./configure --prefix=/usr --disable-fortran --enable-fast=all,03        && \
    make -j 16                                                              && \
    make install                                                            && \
    make clean                                                              && \
    cd ..                                                                   && \
    rm -rf $mpich_prefix
RUN /sbin/ldconfig

# Install PLUMED
RUN git clone -b v2.9 https://github.com/plumed/plumed2.git                 && \
    cd plumed2                                                              && \
    ./configure CC=mpicc CXX=mpicxx --prefix=/opt/plumed/install            && \
    make -j 4                                                               && \
    make install

ENV PATH=/opt/plumed/install/bin:$PATH
ENV LD_LIBRARY_PATH=/opt/plumed/install/lib:$LD_LIBRARY_PATH

# Install GROMACS
ARG gromacs=2023.2
ARG gmx_prefix=gromacs-$gromacs
RUN wget -q http://ftp.gromacs.org/pub/gromacs/$gmx_prefix.tar.gz           && \
    tar xf $gmx_prefix.tar.gz                                               && \
    cd $gmx_prefix                                                          && \
    plumed patch -p --runtime -e $gmx_prefix                                && \
    mkdir build && cd build                                                 && \
    cmake -DCMAKE_BUILD_TYPE=Release  \
          -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON \
          -DGMX_MPI=on -DGMX_SIMD=AVX2_256 -DGMX_GPU=CUDA                \   
          -DGMX_CUDA_TARGET_COMPUTE=80 ..                                   && \    
    make -j 1                                                               && \
    make install                                                            && \
    cd ../..                                                                && \
    rm -r $gmx_prefix $gmx_prefix.tar.gz

ENV PATH=/usr/local/gromacs/bin:$PATH
ENV LD_LIBRARY_PATH=/usr/local/gromacs/lib:$LD_LIBRARY_PATH
ENV PKG_CONFIG_PATH=/usr/local/gromacs/lib/pkgconfig:$PKG_CONFIG_PATH
ENV MANPATH=/usr/local/gromacs/share/man/:$MANPATH

May I please request your help with this issue?

Thank you!
Neil Mehta

I had the same issue on one workstation while it worked on another. On closer look the specific commits that were checked out in the plumed source were different. The working commit for me was fff0fa526. The commit which did not work was 76121b6c1 (I got this commit when I typed git checkout v2.9).

# go into cloned plumed source
cd plumed2
git checkout fff0fa526

Then build and install plumed as usual. The patching procedure should now work. Hope this also works for you.

Hi Rgx,

Thanks for the suggestion. I will try it and let you know how it goes.

Thank you!

I tested the fix! It compiled.
Thank you again for your help!