-
Quang tru HUYNH authoredQuang tru HUYNH authored
Dockerfile 2.93 KiB
FROM registry-gitlab.pasteur.fr/tru/docker-debian12-openmpi-cuda-12.8.1:latest
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN <<EOF bash
set -ex
lscpu > /lscpu.native.txt
V=2024.5
CMAKE=cmake
## GROMACS
cd /opt
wget -q -O - https://ftp.gromacs.org/gromacs/gromacs-\${V}.tar.gz | tar xzvf -
cd gromacs-2024.5
mkdir build
cd build
# native host optimisation:
export CUDACXX=/usr/local/cuda-12.8/bin/nvcc
cmake ../ -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.8 -DGMX_GPU=CUDA \
-DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-2024.5-openmpi-cuda12.8-native \
-DGMX_OPENMP=ON -DGMX_MPI=ON -DGMX_THREAD_MPI=OFF \
-DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_C_COMPILER=mpicc -DGMX_BUILD_OWN_FFTW=ON
make -j24 CXXFLAGS="-O3"
make install
D=/usr/local/gromacs/\${V}-openmpi-cuda-12.8.0_570.86.10
_build_serial() {
if [ \$# -eq 1 ]; then
OPT=$1
else
exit 1
fi
mkdir serial-single-precision-\${OPT} || :
(cd serial-single-precision-\${OPT} && \
dpkg -l > dpkg-l
printenv > printenv
\${CMAKE} .. \
-DGMX_BUILD_OWN_FFTW=ON \
-DREGRESSIONTEST_DOWNLOAD=ON \
-DGMX_SIMD=\${OPT} \
-DCMAKE_INSTALL_PREFIX=\${D}/serial/single-precision-\${OPT}
nice make -j 16
make check || :
make install
) 2>&1 | tee -a serial-single-precision-\${OPT}.`date '+%Y-%m-%d_%H%M'`
}
_build_mdrun() {
if [ \$# -eq 1 ]; then
OPT=\$1
else
exit 1
fi
mkdir mdrun-only-single-precision-openmpi-cuda-12.8.0_570.86.10-\${OPT} || :
(cd mdrun-only-single-precision-openmpi-cuda-12.8.0_570.86.10-\${OPT} && \
export CUDACXX=/usr/local/cuda-12.8/bin/nvcc
dpkg -l > dpkg-l
printenv > printenv
\${CMAKE} .. \
-DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_C_COMPILER=mpicc \
-DGMX_OPENMP=ON -DGMX_MPI=ON -DGMX_THREAD_MPI=OFF \
-DBUILD_SHARED_LIBS=ON \
-DGMX_BUILD_OWN_FFTW=ON \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.8 \
-DGMX_BUILD_MDRUN_ONLY=ON \
-DGMX_GPU=CUDA \
-DGMX_SIMD=\${OPT} \
-DCMAKE_INSTALL_PREFIX=\${D}/mdrun-only/single-precision-openmpi-cuda-12.8.0_570.86.10-\${OPT}
nice make -j 16 && \
make install
) 2>&1 | tee -a single-precision-openmpi-cuda-12.8.0_570.86.10-\${OPT}.`date '+%Y-%m-%d_%H%M'`
}
_default_build() {
for i in SSE4.1 AVX_256 AVX2_256 AVX_512
do
_build_serial \$i
_build_mdrun \$i
done
}
cd /opt/gromacs-2024.5/
_default_build
cd / && rm -rf /opt/gromacs-2024.5/
apt-get autoremove
apt-get autoclean
apt-get clean
# %runscript
# #!/bin/bash
# V=2024.5
# _usage() {
# echo first argument must be one of
# echo native
# echo or
# (cd /usr/local/gromacs/\${V}-openmpi-cuda-12.8.0_570.86.10/ && /bin/ls -1d */*)
# exit 1
# }
# if [ \$# -ge 1 ]; then
# if [ "\$1" = "native" ]; then
# . /usr/local/gromacs-2024.5-openmpi-cuda12.8-native/bin/GMXRC.bash
# else
# if [ ! -d /usr/local/gromacs/\${V}-openmpi-cuda-12.8.0_570.86.10/\$1 ] ; then
# _usage
# fi
# ls -l /usr/local/gromacs/\${V}-openmpi-cuda-12.8.0_570.86.10/\$1/bin/GMXRC.bash
# . /usr/local/gromacs/\${V}-openmpi-cuda-12.8.0_570.86.10/\$1/bin/GMXRC.bash
# fi
# shift
# eval "\$@"
# fi
EOF