====== Amber MD ======
From Ambermd.org:
> Amber is a suite of biomolecular simulation programs. It began in the late 1970's, and is maintained by an active development community; see our history page and our contributors page for more information.
>
> The term "Amber" refers to two things. First, it is a set of molecular mechanical force fields for the simulation of biomolecules; these force fields are in the public domain, and are used in a variety of simulation programs. Second, it is a package of molecular simulation programs which includes source code and demos.
>
> Amber is distributed in two parts: //AmberTools// and //Amber//.
* For more information: https://ambermd.org/index.php
* A local copy of the Amber24 reference manual is available here: {{:advanced:software:amber24.pdf|}}
----
===== Running Amber MD on Comet =====
As Amber (and Ambertools) are so large and with so many essential and optional dependencies they have been installed on Comet as a //container image//.
The Amber container is stored in the ''/nobackup/shared/containers'' directory and is accessible to __all__ users of Comet. You do //not// need to take a copy of the container file; it should be left in its original location.
You can find the container files here:
* ''/nobackup/shared/containers/ambermd.24.25.sif''
We //normally// recommend using the latest version of the container, in the case of Amber, the version numbers represent the version of Amber (24) and Ambertools (25) installed inside.
**Container Image Versions**
We //may// reference a specific container file, such as **ambermd.24.25.sif**, but you should always check whether this is the most recent version of the container available. Simply ''ls'' the ''/nobackup/shared/containers'' directory and you will be able to see if there are any newer versions listed.
We have provided a convenience script that will automate **all** of steps needed to run applications inside the container, pass through any assigned Nvidia GPU, as well as access your ''$HOME'', ''/scratch'' and ''/nobackup'' directories to just two simple commands.
* ''/nobackup/shared/containers/ambermd.24.25.sh''
There is a corresponding ''.sh'' script for //each version// of the container image we make available.
Just ''source'' this file and it will take care of loading ''apptainer'', setting up your ''bind'' directories and calling the ''exec'' command for you - and give you a single command called ''container.run'' (instead of the really long //apptainer exec// command) to then //run// anything you want inside the container, for example - to run the ''sander'' tool from Ambertools:
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run sander
usage: sander [-O|A] -i mdin -o mdout -p prmtop -c inpcrd -r restrt
[-ref refc -x mdcrd -v mdvel -e mden -frc mdfrc -idip inpdip -rdip rstdip -mdip mddip
-inf mdinfo -radii radii -y inptraj -amd amd.log -scaledMD scaledMD.log] -cph-data -ce-data -host ipi_hostname -port ipi_port
Consult the manual for additional options.
$
----
==== Amber - Serial ====
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run pmemd
----
==== Amber - Parallel / MPI ====
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run pmemd.MPI
----
==== Amber - CUDA ====
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run pmemd.cuda
Remember to [[started:resource_overview|allocate an Nvidia GPU card]] in your Slurm arguments if you want to make use of CUDA acceleration.
----
==== Amber - Interactive Desktop GUI ====
----
==== Ambertools ====
Ambertools is installed to ''/opt/ambertools25'' and includes almost all of the optional utilities possible.
Contents of ''/opt/ambertools25/bin'':
AddToBox cpptraj.cuda match nfe-umbrella-slice rism1d simplepbsa.MPI
ChBox draw_membrane2 match_atomname nmode rism3d.snglpnt sqm
FEW.pl edgembar mdgx packmol rism3d.snglpnt.MPI sqm.MPI
PropPDB edgembar.OMP mdgx.MPI paramfit rism3d.snglpnt.cuda sviol
UnitCell elsize mdgx.OMP paramfit.OMP rism3d.snglpnt.cuda.double sviol2
XrayPrep espgen mdgx.cuda parmcal sander teLeap
add_pdb gbnsr6 mdout2pymbar.pl parmchk2 sander.LES test-api
add_xray gem.pmemd memembed pbsa sander.LES.MPI test-api.MPI
addles gem.pmemd.MPI metatwist pbsa.cuda sander.MPI test-api.cuda
am1bcc gwh mm_pbsa.pl prepgen sander.OMP test-api.cuda.MPI
ambmask hcp_getpdb mm_pbsa_nabnmode process_mdout.perl sander.quick.cuda tinker_to_amber
ambpdb immers mm_pbsa_statistics.pl process_minout.perl sander.quick.cuda.MPI tleap
antechamber makeANG_RST mmpbsa_py_energy quick saxs_md ucpp
atomtype makeCHIR_RST mmpbsa_py_nabnmode quick.MPI saxs_md.OMP wrapped_progs
bondtype makeCSA_RST.na modxna.sh quick.cuda saxs_rism xaLeap
cestats makeDIP_RST.dna ndfes quick.cuda.MPI saxs_rism.OMP xleap
cphstats makeDIP_RST.protein ndfes-path reduce senergy
cpptraj makeDIST_RST ndfes-path.OMP residuegen sgldinfo.sh
cpptraj.MPI makeRIGID_RST ndfes.OMP resp sgldwt.sh
cpptraj.OMP make_crd_hg nef_to_RST respgen simplepbsa
As an example, to run the ''AddToBox'' tool:
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run AddToBox
AddToBox >> A program for adding solvent molecules to a crystal cell.
Options:
-c : the molecule cell (PDB format)
-a : the molecule to add
-na : the number of copies to add
-P : the upper limit of protein atoms
-o : output file (PDB format)
-RW : Clipping radius for solvent atoms
-RP : Clipping radius for protein atoms
-IG : Random number seed
-NO : flag for no PDB output (stops after determining the protein fraction of the box)
-G : Grid spacing for search (default 0.2)
-V : Recursively call AddToBox until all residues have been added. (Default 0 ; any other setting activates recursion)
-path : Path for AddToBox program on subsequent calls (default ${AMBERHOME}/bin/AddToBox)
$
----
==== Amber & Ambertools Configuration ====
If you require configuration details, **Amber** was built with the following options:
-- **************************************************************************
-- Build Report
--
-- 3rd Party Libraries
-- ---building bundled: -----------------------------------------------------
-- kmmd - Machine-learning molecular dynamics
-- ---using installed: ------------------------------------------------------
-- blas - for fundamental linear algebra calculations
-- lapack - for fundamental linear algebra calculations
-- netcdf - for creating trajectory data files
-- netcdf-fortran - for creating trajectory data files from Fortran
-- zlib - for various compression and decompression tasks
-- libbz2 - for various compression and decompression tasks
-- libm - for fundamental math routines if they are not contained in the C library
-- ---disabled: ------------------------------------------------
-- libtorch - for fundamental math routines if they are not contained in the C library
-- Features:
-- MPI: ON
-- MVAPICH2-GDR for GPU-GPU comm.: OFF
-- OpenMP: ON
-- CUDA: ON
-- NCCL: OFF
-- Build Shared Libraries: ON
-- Build GUI Interfaces: ON
-- Build Python Programs: ON
-- -Python Interpreter: /usr/bin/python3 (version 3.12)
-- Build Perl Programs: ON
-- Build configuration: Release
-- Target Processor: x86_64
-- Build Documentation: ON
-- Sander Variants: normal LES API LES-API MPI LES-MPI QUICK-MPI QUICK-CUDA
-- Install location: /opt/pmemd24/
-- Installation of Tests: ON
-- Compilers:
-- C: GNU 14.2.0 (/usr/bin/gcc)
-- CXX: GNU 14.2.0 (/usr/bin/g++)
-- Fortran: GNU 14.2.0 (/usr/bin/gfortran)
-- Building Tools:
-- emil etc gpu_utils kmmd lib pmemd
-- NOT Building Tools:
-- **************************************************************************
While **Ambertools** was built with the following:
**************************************************************************
-- Build Report
--
-- 3rd Party Libraries
-- ---building bundled: -----------------------------------------------------
-- ucpp - used as a preprocessor for the NAB compiler
-- boost - C++ support library
-- kmmd - Machine-learning molecular dynamics
-- ---using installed: ------------------------------------------------------
-- blas - for fundamental linear algebra calculations
-- lapack - for fundamental linear algebra calculations
-- arpack - for fundamental linear algebra calculations
-- netcdf - for creating trajectory data files
-- netcdf-fortran - for creating trajectory data files from Fortran
-- fftw - used to do Fourier transforms very quickly
-- readline - enables an interactive terminal in cpptraj
-- xblas - used for high-precision linear algebra calculations
-- zlib - for various compression and decompression tasks
-- libbz2 - for bzip2 compression in cpptraj
-- plumed - used as an alternate MD backend for Sander
-- libm - for fundamental math routines if they are not contained in the C library
-- tng_io - enables GROMACS tng trajectory input in cpptraj
-- nlopt - used to perform nonlinear optimizations
-- mpi4py - MPI support library for MMPBSA.py
-- pnetcdf - used by cpptraj for parallel trajectory output
-- perlmol - chemistry library used by FEW
-- ---disabled: ------------------------------------------------
-- c9x-complex - used as a support library on systems that do not have C99 complex.h support
-- protobuf - protocol buffers library, used for communication with external software in QM/MM
-- lio - used by Sander to run certain QM routines on the GPU
-- apbs - used by Sander as an alternate Poisson-Boltzmann equation solver
-- pupil - used by Sander as an alternate user interface
-- mkl - alternate implementation of lapack and blas that is tuned for speed
-- mbx - computes energies and forces for pmemd with the MB-pol model
-- torchani - enables computation of energies and forces with Torchani
-- libtorch - enables libtorch C++ library for tensor computation and dynamic neural networks
-- Features:
-- MPI: ON
-- MVAPICH2-GDR for GPU-GPU comm.: OFF
-- OpenMP: ON
-- CUDA: ON
-- NCCL: OFF
-- Build Shared Libraries: ON
-- Build GUI Interfaces: ON
-- Build Python Programs: ON
-- -Python Interpreter: /usr/bin/python3 (version 3.12)
-- Build Perl Programs: ON
-- Build configuration: RELEASE
-- Target Processor: x86_64
-- Build Documentation: ON
-- Sander Variants: normal LES API LES-API MPI LES-MPI QUICK-MPI QUICK-CUDA
-- Install location: /opt/ambertools25/
-- Installation of Tests: ON
-- Compilers:
-- C: GNU 14.2.0 (/usr/bin/gcc)
-- CXX: GNU 14.2.0 (/usr/bin/g++)
-- Fortran: GNU 14.2.0 (/usr/bin/gfortran)
-- Building Tools:
-- addles ambpdb antechamber cew cifparse cphstats cpptraj emil etc fe-toolkit few gbnsr6 gem.pmemd kmmd leap lib libdlfind mdgx mm_pbsa
mmpbsa_py modxna moft nabc ndiff-2.00 nfe-umbrella-slice nmode nmr_aux packmol_memgen paramfit parmed pbsa pdb4amber pymsmt
pype_resp pysander pytraj quick reaxff_puremd reduce rism sander saxs sebomd sff sqm xray xtalutil
-- NOT Building Tools:
-- tcpb-cpp - BUILD_TCPB is not enabled
-- tcpb-cpp/pytcpb - BUILD_TCPB is not enabled
-- gpu_utils - Not included in AmberTools
-- pmemd - Not included in AmberTools
-- **************************************************************************
In addition, all ''CFLAGS'' variables are set per the ''amber.def'' container definition, below. These are, per our standards for images which have GCC 14 included: ''CFLAGS=-O3 -march=znver5 -pipe''.
----
===== Accessing Data =====
As long as you use the ''container.run'' method to launch the applications, you will automatically be able to read and write to files in your ''$HOME'', ''/scratch'' and ''/nobackup'' directories.
If you run any of the applications inside the container manually, without using the ''container.run'' helper you will need to use the ''--bind'' argument to ''apptainer'' to ensure that all relevant directories are exposed within the container.
Do remember that the container filesystem itself cannot be changed - so you won't be able to write or update to ''/usr/local'', ''/opt'', ''/etc'' or any other internal folders - keep output directories restricted to the three areas listed above.
----
===== Additional Tools =====
Several further tools / scripts / utilities are installed alongside Amber & Ambertools. The main additions to the container environment are listed below.
===== APBS =====
APBS has been installed to ''/opt'' within the container, and can be run as follows:
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run apbs -h
----------------------------------------------------------------------
APBS -- Adaptive Poisson-Boltzmann Solver
Version APBS 3.4.1
Nathan A. Baker (nathan.baker@pnnl.gov)
Pacific Northwest National Laboratory
Additional contributing authors listed in the code documentation.
Copyright (c) 2010-2020 Battelle Memorial Institute. Developed at the Pacific
Northwest National Laboratory, operated by Battelle Memorial Institute, Pacific
Northwest Division for the U.S. Department of Energy.
...
...
$
* For more information: https://apbs.readthedocs.io/en/latest/
===== MBX =====
MBX has been installed to ''/opt'' inside the container and can be run with:
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run single_point
$ container.run optimize
$ container.run mb_decomp
$ container.run order_frames
$ container.run normal_modes
* For more information: https://github.com/paesanilab/MBX
===== PLUMED =====
PLUMED2 has been installed to ''/opt'' inside the container and can be run with:
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run plumed help
Usage: plumed [options] [command] [command options]
plumed [command] -h|--help: to print help for a specific command
Options:
[help|-h|--help] : to print this help
[--is-installed] : fails if plumed is not installed
[--has-mpi] : fails if plumed is running without MPI
[--has-dlopen] : fails if plumed is compiled without dlopen
[--load LIB] : loads a shared object (typically a plugin library)
[--standalone-executable] : tells plumed not to look for commands implemented as scripts
Commands:
plumed benchmark : run a calculation with a fixed trajectory to find bottlenecks in PLUMED
plumed completion : dump a function usable for programmable completion
...
$
* For more information: https://github.com/plumed/plumed2
===== Suitesparse =====
Suitesparse has been installed to ''/usr/local'' inside the container (specifically ''/usr/local/bin'', ''/usr/local/lib'' and ''/usr/local/include/suitesparse''). Please consult the Suitesparse documentation for further information.
* For more information: https://github.com/DrTimothyAldenDavis/SuiteSparse
===== Torchani =====
Torchani has been installed to ''/usr/local'' inside the container. To run ''ani'':
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run ani
To use the Torchani Python libraries from your own scripts (i.e. ''import torchani'') you must use the version of **Python 3** installed inside the container to run them:
$ source /nobackup/shared/containers/ambermd.24.25.sh
$ container.run python3
* For more information: https://aiqm.github.io/torchani/
----
===== Building Amber MD on Comet =====
**Important!**
This section is intended for RSE HPC staff, or users who are interested in how the software is configured. If you //only// need to //use// the software, stop reading here.
Amber appears to have few dependencies at first, but as you configure the source it looks for a __lot__ of additional libraries. At least the following build tools are required:
* GCC
* Nvidia CUDA SDK
* flex
* bison
* m4
* python3
* build-essential
* autoconf
* cmake
* git
It, or its dependencies, then also need these further system libraries and tools, which makes it quite a complex install:
* bc, libopenmpi-dev, python3, flex, bison, m4, jq, liblapack-dev, libblas-dev, libarpack2-dev, libucpp-dev, libnlopt-dev, libz-dev, libbz2-dev, libfftw3-mpi-dev, libfftw3-dev, libprotobuf-dev, xorg-dev, libxext-dev, libxt-dev, libx11-dev, libice-dev, libsm-dev, libgomp1, libgmp10-dev, libgsl-dev, libboost-dev, libboost-iostreams-dev, libboost-regex-dev, libboost-timer-dev, libboost-chrono-dev, libboost-filesystem-dev, libboost-graph-dev, libboost-program-options-dev, libpnetcdf-dev, libnetcdf-dev, libnetcdff-dev, libreadline-dev, libchemistry-mol-perl, bash-completion, libmpfr-dev, libeigen3-dev, swig, libumfpack6
It also then uses these third party packages which are //not// available as part of any OS install, and so must be downloaded, built or installed through more manual means (untar, configure, make, make install):
^ Package ^ Link ^ Wanted By ^ Type ^ Status ^ Notes ^
| MBX | https://github.com/paesanilab/MBX | Ambertools | Optional | Installed | Whilst this builds correctly, Amber/Ambertools will __not__ link against it - it is therefore available as a standalone tool __only__. We warn //against// parallel builds (i.e. ''make -j2'' or higher) as each build task can grow to 20GBytes in size and quickly lead to out-of-memory errors on your build/compile host. Binaries are under ''/opt/bin'', with libraries at ''/opt/lib''. |
| PLUMED | https://github.com/plumed/plumed2 | Ambertools | Optional | Installed | Binaries installed to ''/opt/bin'', libraries installed to ''/opt/lib''. |
| XBLAS | http://www.netlib.org/xblas | Ambertools | Optional | Installed | Library copied to ''/opt/lib''. |
| Torchani | https://github.com/aiqm/torchani | Ambertools | Optional | Installed | Installed under ''$PYTHONPATH''. Extensions for CUDA have been compiled with ''TORCH_CUDA_ARCH_LIST=8.9 ani build-extensions''. |
| tng_io | https://gitlab.com/gromacs/tng/ | Ambertools | Optional | Installed | Binaries installed to ''/usr/local/bin'', libraries installed to ''/usr/local/lib''. |
| apbs | https://github.com/Electrostatics/apbs | Ambertools | Optional | Installed | Binaries installed to ''/opt/bin'', libraries installed to ''/opt/lib''. |
| umfpack | https://github.com/DrTimothyAldenDavis/SuiteSparse | Ambertools | Optional | Installed | Binaries installed to ''/usr/local/bin'', libraries installed to ''/usr/local/lib''. |
| LIO | https://github.com/MALBECC/lio | Ambertools | Optional | - | LIO will not compile against CUDA SDK 12 and was //not// included in the build of Amber |
| Intel MKL | | Ambertools | Optional | - | Not used on Comet due to AMD Epyc CPU architecture. |
| PUPIL | https://pupil.sourceforge.net/ | Ambertools | Optional | - | Not installed - an //optional// user interface for Ambertools. |
| libtorch | https://docs.pytorch.org/cppdocs/installing.html | Ambertools | Optional | - | Ambertools will not link correctly against the binary install of libtorch - throwing an error part way through the compile of Ambertools source. It has therefore been disabled. |
| MVAPICH2-GDR | | Amber, Ambertools | Optional | - | Used for GPU-GPU communication. Not installed on Comet. |
| NCCL | https://github.com/NVIDIA/nccl | Amber, Ambertools | Optional | - | Used for efficient GPU communications such as in IB connected multiple GPU cards and/or NVLink. Not installed on Comet or L40S cards. |
**Build script:**
Note that you must download the files ''ambertools25.tar.bz2'' and ''pmemd24.tar.bz2'' from https://ambermd.org/GetAmber.php - these are behind a download form - and they should be placed in the same directory as the build script.
#!/bin/bash
echo "Loading modules..."
module load apptainer
echo ""
echo "Building container..."
export APPTAINER_TMPDIR=/scratch
# You must supply a copy of AMBERMD tar files
# in this SOURCE_DIR
SOURCE_DIR=`pwd`
AM24="pmemd24.tar.bz2"
AM25="ambertools25.tar.bz2"
echo ""
echo "Checking source files..."
if [ -s "$SOURCE_DIR/$AM24" ]
then
echo "- Found - $SOURCE_DIR/$AM24"
else
echo "- WARNING - $SOURCE_DIR/$AM24 is MISSING"
echo ""
echo "Press return to continue or Control+C to exit and fix"
read
fi
if [ -s "$SOURCE_DIR/$AM25" ]
then
echo "- Found - $SOURCE_DIR/$AM25"
else
echo "- WARNING - $SOURCE_DIR/$AM25 is MISSING"
echo ""
echo "Press return to continue or Control+C to exit and fix"
read
fi
apptainer build --bind $SOURCE_DIR:/mnt ambermd.24.25.sif ambermd.def 2>&1 | tee ambermd.log
**Container Definition:**
Bootstrap: docker
From: nvidia/cuda:12.8.1-cudnn-devel-ubuntu24.04
####################################################################
#
# Amber MD container
# ===================
# This is a runtime environment for the Amber MD tools.
# Please see:
# https://hpc.researchcomputing.ncl.ac.uk/dokuwiki/dokuwiki/doku.php?id=advanced:software:ambermd
#
# Local file Requirements
# ========================
# You MUST have the ambertools25.tar.bz2 and pmemd24.tar.bz2 tarballs
# in the same directory as running the build script.
#
# Non-Ubuntu Requirements
# ========================
# MBX https://github.com/paesanilab/MBX - Not working
# PLUMED https://github.com/plumed/plumed2
# LIO https://github.com/MALBECC/lio - Not working
# XBLAS http://www.netlib.org/xblas
# Torchani https://github.com/aiqm/torchani
# tng_io https://gitlab.com/gromacs/tng/
# apbs https://github.com/Electrostatics/apbs
# umfpack https://github.com/DrTimothyAldenDavis/SuiteSparse
# libtorch https://pytorch.org/get-started/locally/ - Not working
#
####################################################################
%post
# Prevent interactive prompts
export DEBIAN_FRONTEND=noninteractive
####################################################################
#
# Basic system packages
#
####################################################################
# Update & install only necessary packages
apt-get update
# Base stuff everything will need
apt-get install -y \
apt-utils \
aptitude \
autoconf \
automake \
build-essential \
cmake \
gcc-14 \
g++-14 \
gfortran-14 \
git \
less \
unzip \
vim \
wget
# These are specifically needed by Amber MD, or its dependencies
apt-get install -y \
bc \
libopenmpi-dev \
python3 \
flex \
bison \
m4 \
jq \
liblapack-dev \
libblas-dev \
libarpack2-dev \
libucpp-dev \
libnlopt-dev \
libnlopt-cxx-dev \
libz-dev \
libbz2-dev \
libfftw3-mpi-dev \
libfftw3-dev \
libprotobuf-dev \
xorg-dev \
libxext-dev \
libxt-dev \
libx11-dev \
libice-dev \
libsm-dev \
libgomp1 \
libgmp10-dev \
libgsl-dev \
libboost-dev \
libboost-iostreams-dev \
libboost-regex-dev \
libboost-timer-dev \
libboost-chrono-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-program-options-dev \
libboost-thread-dev \
libpnetcdf-dev \
libnetcdf-dev \
libnetcdff-dev \
libreadline-dev \
libchemistry-mol-perl \
bash-completion \
libmpfr-dev \
libeigen3-dev \
swig \
libumfpack6
# Python 3 modules needed by Amber MD
apt-get install -y \
python3-pip \
python3-numpy \
python3-tk \
python3-scipy \
python3-matplotlib \
python3-mpi4py
# Clean up APT cache to save space
apt-get clean
# Clean out Python pip cache
pip3 cache purge
#################################################################################
#
# This is all the custom stuff needed to build the various bioinformatics tools
#
#################################################################################
# This flag needs to be set to indicate which CPU architecture we
# are optimising for.
AMD_ARCH=1
if [ "$AMD_ARCH" = "1" ]
then
# Compiling on AMD Epyc
export BASE_CFLAGS="-O3 -march=znver5 -pipe"
export BASE_CFLAGS_ALT="-O3 -march=znver5 -pipe"
export MAKE_JOBS=1
else
# Compiling on generic system
export BASE_CFLAGS=""
export BASE_CFLAGS_ALT=""
export MAKE_JOBS=1
fi
# WARNING!
# ========
# Do not try to increase the parallel make jobs above 1 or 2
# We have observed that the memory used by each gcc/make process
# that is launched during the compile of Amber 24 can be up to 20GB in
# resident, in-memory size according to 'top'. Unlike most C/C++ builds
# the use of parallel make can easily lead to out-of-memory conditions.
# Ensure we are compiling with GCC 14
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 20
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 20
update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-14 20
export CC=gcc-14
export CXX=g++-14
export FC=gfortran-14
export CFLAGS="$BASE_CFLAGS -I/usr/local/include -I/opt/include"
export CPPFLAGS=""
export CXXFLAGS="$CFLAGS"
export PATH=/usr/local/bin:/opt/bin:$PATH
#export MBX_DIR=/opt
export LD_LIBRARY_PATH=/opt/lib:/usr/local/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/opt/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PLUMED_KERNEL=/opt/lib/libplumedKernel.so
echo ""
echo "Post-OS-install setup for Amber MD container"
echo "============================================"
# A download place for external libraries
mkdir -p /src/zipped
# Where installations go
mkdir -p /opt/bin
mkdir -p /opt/lib
mkdir -p /opt/include
mkdir -p /opt/share
# libtorch
echo ""
echo "1. Install libtorch"
echo "====================="
echo "SKIPPED"
#cd /src
#wget https://download.pytorch.org/libtorch/cu128/libtorch-shared-with-deps-2.10.0%2Bcu128.zip -O zipped/libtorch-shared-with-deps-2.10.0-cu128.zip
#cd /src
#unzip zipped/libtorch-shared-with-deps-2.10.0-cu128.zip
#mv libtorch/include/* /opt/include/
#mv libtorch/lib/* /opt/lib/
#mv libtorch/share/* /opt/share/
# MBX is an optional library that Ambertools uses
# WARNING - This is a very long, slow compile.
echo ""
echo "2a. Install MBX"
echo "==============="
echo "SKIPPED"
#cd /src
#git clone https://github.com/paesanilab/MBX.git
#cd MBX/
#autoreconf -fi
#./configure --enable-shared --prefix=/opt
#make
#make install
# PLUMED is an optional library
echo ""
echo "2b. Install PLUMED"
echo "=================="
cd /src
wget https://github.com/plumed/plumed2/releases/download/v2.10.0/plumed-src-2.10.0.tgz -O zipped/plumed-src-2.10.0.tgz
tar -zxf zipped/plumed-src-2.10.0.tgz
cd plumed-2.10.0
./configure --prefix=/opt
make
make install
echo '_plumed() { eval "$(plumed --no-mpi completion 2>/dev/null)";}' >> /etc/bash.bashrc
echo 'complete -F _plumed -o default plumed' >> /etc/bash.bashrc
# LIO is an optional library
# ERROR - Does not compile on CUDA 12+
echo ""
echo "2c. Install LIO"
echo "==============="
echo "SKIPPED - FAULTY ON CUDA 12.8"
#cd /src
#git clone https://github.com/MALBECC/lio.git
#cd lio
#CXXFLAGS="$CFLAGS -I/usr/local/cuda-12.8/targets/x86_64-linux/include" make cuda=1 cpu=1
# XBLAS is an optional library
echo ""
echo "2d. Install XBLAS"
echo "=================="
cd /src
wget http://www.netlib.org/xblas/xblas.tar.gz -O zipped/xblas.tar.gz
cd /src
tar -zxf zipped/xblas.tar.gz
cd xblas-1.0.248
./configure --prefix=/opt
make -j2
cp libxblas.a /opt/lib
# Torchani is an optional library
echo ""
echo "2e. Install Torchani"
echo "===================="
pip install torch==2.8 --index-url https://download.pytorch.org/whl/cu128 --break-system-packages
pip install torchani --break-system-packages
# L40S cards are "compute capability" 8.9 - see:
# https://en.wikipedia.org/wiki/CUDA#GPUs_supported
TORCH_CUDA_ARCH_LIST=8.9 ani build-extensions
# tng_io is an optional library
echo ""
echo "2f. Install tng_io"
echo "=================="
cd /src
git clone https://gitlab.com/gromacs/tng.git
cd tng
mkdir build
cd build
cmake ..
make -j2
make install
# umfpack (inside suiteparse) is an optional library
echo ""
echo "2g. Install suiteparse/umfpack"
echo "=============================="
cd /src
wget https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/refs/tags/v7.12.2.tar.gz -O zipped/suiteparse-v7.12.2.tar.gz
cd /src
tar -zxf zipped/suiteparse-v7.12.2.tar.gz
cd SuiteSparse-7.12.2
cd build
cmake ..
make -j2
make install
# apbs is an optional library
echo ""
echo "2h. Install apbs"
echo "=================="
cd /src
# These are precompiled binaries - apbs is a pain to build from source
wget https://github.com/Electrostatics/apbs/releases/download/v3.4.1/APBS-3.4.1.Linux.zip -O zipped/APBS-3.4.1.Linux.zip
cd /src
unzip zipped/APBS-3.4.1.Linux.zip
cd APBS-3.4.1.Linux
cp -a -v bin/* /opt/bin/
cp -a -v lib/* /opt/lib/
cp -a include/* /opt/include/
cp -a share/* /opt/share/
# Installer Amber 24
echo ""
echo "Amber (A). Install Amber 24"
echo "==========================="
cd /src
if [ -s /mnt/pmemd24.tar.bz2 ]
then
tar -jxf /mnt/pmemd24.tar.bz2
cd /src/pmemd24_src/build
CC=gcc-14 FC=gfortran-14 CXX=g++14 cmake .. \
-DCMAKE_INSTALL_PREFIX=/opt/pmemd24 \
-DCMAKE_BUILD_TYPE=Release \
-DCOMPILER=GNU \
-DMPI=TRUE \
-DCUDA=TRUE \
-DCUDNN=TRUE \
-DOPENMP=TRUE \
-DINSTALL_TESTS=TRUE \
-DDOWNLOAD_MINICONDA=FALSE \
-DBUILD_PYTHON=TRUE \
-DBUILD_PERL=TRUE \
-DBUILD_GUI=TRUE \
-DPMEMD_ONLY=TRUE \
-DCHECK_UPDATES=FALSE
make
make install
echo 'source /opt/pmemd24/amber.sh' >> /etc/bash.bashrc
else
echo "Amber MD 24 source file not found"
exit 1
fi
# Install Ambertools 25
echo ""
echo "Amber (B). Install Ambertools 25"
echo "================================"
cd /src
if [ -s /mnt/ambertools25.tar.bz2 ]
then
tar -jxf /mnt/ambertools25.tar.bz2
cd /src/ambertools25_src/build
AMBER_PREFIX=/src/ambertools25_src MBX_DIR=/opt CC=gcc-14 FC=gfortran-14 CXX=g++14 cmake .. \
-DCMAKE_INSTALL_PREFIX=/opt/ambertools25 \
-DCOMPILER=GNU \
-DMPI=TRUE \
-DCUDA=TRUE \
-DCUDNN=TRUE \
-DCUDNN_INCLUDE_PATH=/usr/local/lib/python3.12/dist-packages/nvidia/cudnn/include \
-DCUDNN_LIBRARY_PATH=/usr/local/lib/python3.12/dist-packages/nvidia/cudnn/lib \
-DOPENMP=TRUE \
-DINSTALL_TESTS=TRUE \
-DDOWNLOAD_MINICONDA=FALSE \
-DBUILD_PYTHON=TRUE \
-DBUILD_PERL=TRUE \
-DCHECK_UPDATES=FALSE \
-DLIBTORCH=OFF \
-DTORCH_HOME=/opt \
-DLIBTORCH_INCLUDE_DIRS=/opt/include \
-DLIBTORCH_LIBRARIES=/opt/lib \
-DXBLAS_LIBRARY=/opt/lib/libxblas.a \
-DMBX_DIR=/opt \
-DPLUMED_ROOT=/opt \
-DCMAKE_PREFIX_PATH=/opt \
-DBUILD_TCPB=FALSE \
-DBUILD_REAXFF_PUREMD=TRUE
make
make install
echo 'source /opt/ambertools25/amber.sh' >> /etc/bash.bashrc
else
echo "Amber MD 25 source file not found"
exit 1
fi
# Remove all src packages
echo ""
echo "Cleaning up downloaded src tree"
echo "=================================="
cd
rm -f /src/zipped/*
rm -rf /src
pip3 cache purge
echo ""
echo "All done"
%environment
# Ambertools
export AMBERHOME=/opt/ambertools25
export PERL5LIB="$AMBERHOME/lib/perl:$PERL5LIB"
export PYTHONPATH="$AMBERHOME/local/lib/python3.12/dist-packages:$PYTHONPATH"
export LD_LIBRARY_PATH="$AMBERHOME/lib:$LD_LIBRARY_PATH"
export QUICK_BASIS="$AMBERHOME/AmberTools/src/quick/basis"
export PATH="$AMBERHOME/bin:$PATH"
# Amber
export PMEMDHOME=/opt/pmemd24
export PATH="$PMEMDHOME/bin:$PATH"
# General environment variables for everything else
export LD_LIBRARY_PATH=/opt/lib:/usr/local/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/bin:/opt/bin:$PATH
export CC=gcc-14
export CXX=g++-14
export FC=gfortran-14
export CFLAGS="-O"
export CXXFLAGS="$CFLAGS"
export MANPATH=/opt/man
export PLUMED_VIMPATH=/opt/lib/plumed/vim
export PKG_CONFIG_PATH=/opt/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PLUMED_KERNEL=/opt/lib/libplumedKernel.so
%runscript
**Run Script:**
#!/bin/bash
module load apptainer
IMAGE_NAME=/nobackup/shared/containers/ambermd.24.25.sif
container.run() {
# Run a command inside the container...
# automatically bind the /scratch and /nobackup dirs
# pass through any additional parameters given on the command line
apptainer exec --nv --bind /scratch:/scratch --bind /nobackup:/nobackup ${IMAGE_NAME} $@
}
----
[[:advanced:software|Back to Software]]