PMEMD 26 (update 2)
Webpage
Version
PMEMD 26 (update 2)
Build Environment
- GCC 13.3.1 (gcc-toolset-13)
- CUDA 12.9 update 1 (12.9.1)
- OpenMPI 4.1.8 (CUDA-aware)
- PLUMED 2.10.0
Files Required
- pmemd26.tar.bz2
Build Procedure
#!/bin/sh
VERSION=26
INSTALL_DIR=/apl/pmemd/26u2
BASEDIR=/home/users/${USER}/Software/pmemd/26
TARBALL=${BASEDIR}/pmemd${VERSION}.tar.bz2
WORKDIR=/gwork/users/${USER}/pmemd26PLUMED_ROOT=/apl/plumed/2.10.0/gcc13/ompi
PARALLEL=16
#-----------------------------------------------------------------------
export LANG=C
export LC_ALL=C
ulimit -s unlimitedmodule -s purge
module -s load gcc-toolset/13
module -s load cuda/12.9u1
module -s load openmpi/4.1.8/gcc13-cuda12.9u1
module -s load plumed/2.10.0-gcc13-ompi418
# install directory must be empty
if [ "$(ls -A $INSTALL_DIR)" ]; then
echo "Target directory $INSTALL_DIR not empty"
exit 1
fimkdir -p ${WORKDIR}
cd ${WORKDIR}
if [ -d pmemd${VERSION}_src ]; then
mv -f pmemd${VERSION}_src pmemd_erase
rm -rf pmemd_erase &
fitar xf ${TARBALL}
cd pmemd${VERSION}_srcsed -i -e "1s/env python/env python3/" update_pmemd
./update_pmemd --update
# force allow cuda 12.9.1 (12.9u1)
sed -i -e "s/VERSION_LESS 12.9/VERSION_LESS 13.0/" cmake/CudaConfig.cmake# ad hoc fix for symbolic links (amber.conda & amber.python) (by Gemini)
sed -i -e '/installtime_create_symlink(${PYTHON_EXECUTABLE}/,/endif()/ {
/installtime_create_symlink(${PYTHON_EXECUTABLE}/ {
i\
install(CODE "execute_process(COMMAND \\\${CMAKE_COMMAND} -E create_symlink \\"${PYTHON_EXECUTABLE}\\" \\"\\\$ENV{DESTDIR}\\\${CMAKE_INSTALL_PREFIX}/${BINDIR}/amber.python\\")" COMPONENT Python)\nif(EXISTS "${CONDA}")\ninstall(CODE "execute_process(COMMAND \\\${CMAKE_COMMAND} -E create_symlink \\"${CONDA}\\" \\"\\\$ENV{DESTDIR}\\\${CMAKE_INSTALL_PREFIX}/${BINDIR}/amber.conda\\")" COMPONENT Python)\nendif()
}
d
}' cmake/PythonInterpreterConfig.cmake
# CPU serial
echo "[CPU serial version]"
mkdir build_cpu_serial && cd build_cpu_serial
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=FALSE \
-DCUDA=FALSE \
-DOPENMP=FALSE \
-DINSTALL_TESTS=TRUE \
-DDOWNLOAD_MINICONDA=TRUE \
-DPMEMD_ONLY=TRUE \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL} install
cd ../ && rm -rf build_cpu_serial# ad hoc fix
sed -i -e "s|${WORKDIR}/pmemd${VERSION}_src/build_cpu_serial/CMakeFiles/miniconda/install/bin/python|${INSTALL_DIR}/miniconda/bin/python|" ${INSTALL_DIR}/bin/pdb2pqr
eval "$(${INSTALL_DIR}/miniconda/bin/conda shell.bash hook)"# CUDA serial
echo "[CUDA serial version]"
mkdir build_cuda_serial && cd build_cuda_serial
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=FALSE \
-DCUDA=TRUE \
-DOPENMP=FALSE \
-DINSTALL_TESTS=FALSE \
-DDOWNLOAD_MINICONDA=FALSE \
-DCUDA_TOOLKIT_ROOT_DIR=${CUDA_HOME} \
-DUSE_CONDA_LIBS=TRUE \
-DYTHON_EXECUTABLE=${INSTALL_DIR}/miniconda/bin/python \
-DPMEMD_ONLY=TRUE \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL} install
cd ../ && rm -rf build_cuda_serial
# CUDA MPI
echo "[CUDA MPI version]"
mkdir build_cuda_mpi && cd build_cuda_mpi
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=TRUE \
-DCUDA=TRUE \
-DOPENMP=FALSE \
-DINSTALL_TESTS=FALSE \
-DDOWNLOAD_MINICONDA=FALSE \
-DCUDA_TOOLKIT_ROOT_DIR=${CUDA_HOME} \
-DPLUMED_ROOT=${PLUMED_ROOT} \
-DUSE_CONDA_LIBS=TRUE \
-DYTHON_EXECUTABLE=${INSTALL_DIR}/miniconda/bin/python \
-DPMEMD_ONLY=TRUE \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL} install
cd ../ && rm -rf build_cuda_mpi
# CPU MPI
echo "[CPU MPI version]"
mkdir build_cpu_mpi && cd build_cpu_mpi
cmake .. -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCOMPILER=GNU \
-DMPI=TRUE \
-DCUDA=FALSE \
-DOPENMP=FALSE \
-DINSTALL_TESTS=FALSE \
-DDOWNLOAD_MINICONDA=FALSE \
-DPLUMED_ROOT=${PLUMED_ROOT} \
-DUSE_CONDA_LIBS=TRUE \
-DYTHON_EXECUTABLE=${INSTALL_DIR}/miniconda/bin/python \
-DPMEMD_ONLY=TRUE \
-DCHECK_UPDATES=FALSE
make -j${PARALLEL} install
cd ../ && rm -rf build_cpu_mpi
# ad hoc fix for python interpreter path
# FixCondaShebang does not work for some files on RCCS system...
# (not due to symbolic links)
ORIGPATH=${WORKDIR}/pmemd${VERSION}_src/build_cpu_serial/CMakeFiles/miniconda/install
ORIGPATH2=/lustre${ORIGPATH}
NEWPATH=${INSTALL_DIR}/miniconda
cd ${INSTALL_DIR}
for f in bin/* miniconda/bin/*; do
grep -I gwork $f
if [ $? == 0 ]; then
sed -i -e "s|${ORIGPATH2}|${NEWPATH}|g" \
-e "s|${ORIGPATH}|${NEWPATH}|g" $f
fi
done
# append env variables setting
cd ${INSTALL_DIR}
cat <<EOF >> amber.sh# rccs setting
CUDA_AMBER=/apl/cuda/12.9u1
export PATH=\$CUDA_AMBER/bin:\$PATH
export LD_LIBRARY_PATH=\$CUDA_AMBER/lib64:\$LD_LIBRARY_PATHOMPI_AMBER=/apl/openmpi/4.1.8/gcc13-cuda12.9u1
export PATH=\$OMPI_AMBER/bin:\$PATH
export LD_LIBRARY_PATH=\$OMPI_AMBER/lib:\$LD_LIBRARY_PATH
export OMPI_MCA_btl=^openibexport LD_LIBRARY_PATH=/apl/oneapi/mkl/2026.0/lib:\$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/apl/oneapi/compiler-rt/2026.0.0/lib:\$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/apl/pbs/23.06.06/lib:\$LD_LIBRARY_PATH
EOF
cat <<EOF >> amber.csh# rccs setting
set CUDA_AMBER=/apl/cuda/12.9u1
setenv PATH "\$CUDA_AMBER/bin:\$PATH"
setenv LD_LIBRARY_PATH "\$CUDA_AMBER/lib64:\$LD_LIBRARY_PATH"set OMPI_AMBER=/apl/openmpi/4.1.8/gcc13-cuda12.9u1
setenv PATH "\$OMPI_AMBER/bin:\$PATH"
setenv LD_LIBRARY_PATH "\$OMPI_AMBER/lib:\$LD_LIBRARY_PATH"
setenv OMPI_MCA_btl ^openibsetenv LD_LIBRARY_PATH "/apl/oneapi/mkl/2026.0/lib:\$LD_LIBRARY_PATH"
setenv LD_LIBRARY_PATH "/apl/oneapi/compiler-rt/2026.0.0/lib:\$LD_LIBRARY_PATH"
setenv LD_LIBRARY_PATH "/apl/pbs/23.06.06/lib:\$LD_LIBRARY_PATH"
EOF
# run tests
cd ${INSTALL_DIR}
. ${INSTALL_DIR}/amber.sh
# now, $PMEMDHOME should be $INSTALL_DIR# parallel tests first
export DO_PARALLEL="mpirun -np 2"make test.parallel && make clean.test
export DO_PARALLEL="mpirun -np 4"
cd test; make test.parallel.4procs; make clean; cd ../
export DO_PARALLEL="mpirun -np 8"
cd test; make test.parallel.8procs; make clean; cd ../
export DO_PARALLEL="mpirun -np 16"
cd test; make test.parallel.16procs; make clean; cd ../
unset DO_PARALLEL
# serial tests
make test.serial && make clean.test
Tests (GPU)
#!/bin/sh
VERSION=26
INSTALL_DIR=/apl/pmemd/26u2
BASEDIR=/home/users/${USER}/Software/pmemd/26
TARBALL=${BASEDIR}/pmemd${VERSION}.tar.bz2
WORKDIR=/gwork/users/${USER}/pmemd26PLUMED_ROOT=/apl/plumed/2.10.0/gcc13/ompi
PARALLEL=16
#-----------------------------------------------------------------------
export LANG=C
export LC_ALL=C
ulimit -s unlimitedmodule -s purge
module -s load gcc-toolset/13
module -s load cuda/12.9u1
module -s load openmpi/4.1.8/gcc13-cuda12.9u1
module -s load plumed/2.10.0-gcc13-ompi418
# run tests
cd ${INSTALL_DIR}
. ${INSTALL_DIR}/amber.sh
# now, $PMEMDHOME should be $INSTALL_DIR# gpu tests
export DO_PARALLEL="mpirun -np 2"
make test.cuda.parallel; make clean.test # DPFP
cd test; make test.cuda.parallel.SPFP; make clean; cd ../unset DO_PARALLEL
make test.cuda.serial; make clean.test # DPFP
cd test; make test.cuda.serial.SPFP; make clean; cd ../
Test Result
Log files can be found in /apl/pmemd/26u2/logs.
Following tests result in error or possible failure.
- /test/cuda/rxsgld/trpcage (parallel test) => error
- Error in group input::atommask.f::pop_evalstack
- test/cuda/gti/reservoirs/atom_mapping rem.log => possible FAILURE
- Probably due to a change in output format (reference from AMBER 24)
- test/cuda/gb_ala3 irest1_ntt2_igb1_ntc2.out => possible FAILURE
- Data after the first vrand step (step=5) is different. (reference from AMBER 14)
- test/cuda/4096wat mdout.vrand => possible FAILURE
- same issue as above (reference from AMBER 16)
- test/cuda/4096wat_oct test/cuda/4096wat_oct => possible FAILURE
- same issue as above (reference from AMBER 16)
- test/cuda/RAMD mdout.ramd => possible FAILURE
- Probably due to a change in RAMD output format. (reference from AMBER 20)
Notes
- The same configuration as AmberTools26 is employed.
- Although ambertools and pmemd may be able to coexist, they are built as separate packages.
- (Jun 30, 2026) installed as pmemd 26u2.
- (Jun 30, 2026) Since the symbolic link "miniconda/_conda" in the installation directory was a broken link, it was manually replaced with a symbolic link to "micromamba" in the same directory.