Compiling Amber 11 on HECToR phase 3 (XE6)
- Programming Environment
- Unpack the Source
- Set $AMBERHOME
- Apply bugfixes
- Build AmberTools
- Build serial version of Amber
- Build the parallel version of Amber
Programming Environment
Switch to the GNU programming environment:
module swap PrgEnv-cray PrgEnv-gnu
Load the required modules:
module add fftw/2.1.5.2 module add netcdf
Modules loaded for centrally-installed version:
Currently Loaded Modulefiles:
1) modules/3.2.6.6 2) nodestat/2.2-1.0400.29866.4.3.gem 3) sdb/1.0-1.0400.30000.6.18.gem 4) MySQL/5.0.64-1.0000.4667.20.1 5) lustre-cray_gem_s/1.8.4_2.6.32.45_0.3.2_1.0400.6221.1.1-1.0400.30252.1.29 6) udreg/2.3.1-1.0400.3911.5.6.gem 7) ugni/2.3-1.0400.3912.4.29.gem 8) gni-headers/2.1-1.0400.3906.5.1.gem 9) dmapp/3.2.1-1.0400.3965.10.12.gem 10) xpmem/0.1-2.0400.29883.4.6.gem 11) hss-llm/6.0.0 12) Base-opts/1.0.2-1.0400.29823.8.1.gem 13) xtpe-network-gemini 14) PrgEnv-gnu/4.0.30 15) xt-mpich2/5.3.4 16) atp/1.3.0 17) xt-asyncpe/5.03 18) pmi/2.1.4-1.0000.8596.8.9.gem 19) xt-libsci/11.0.03 20) gcc/4.6.1 21) pbs/10.4.0.101257 22) packages-phase2b 23) budgets/1.0 24) xtpe-interlagos 25) hdf5/1.8.6 26) netcdf/4.1.2 27) fftw/2.1.5.2
Unpack the source
Both Amber 11 and AmberTools 1.4 should be unpacked into the same source tree:
tar -xjvf Amber11.tar.bz2 tar -xjvf AmberTools-1.4.tar.bz2
will produce the amber11 folder.
Set $AMBERHOME
cd amber11 export AMBERHOME=`pwd`
Apply bugfixes
Download the latest bugfixes from the ambermd.org website and apply them:
cd $AMBERHOME patch -p0 -N < [bugfix file]
Set Build AmberTools
cd AmberTools/src
Modify the configure script to skip configuration of NetCDF and FFTW:
--snip-- echo echo "Configuring Parallel NetCDF; (may be time-consuming)" echo # cd pnetcdf # netcdfflag="--prefix=$AMBERTOOLSHOME/src/pnetcdf --disable-cxx --disable-fortran" # if [ "$crayxt5" = 'yes' ]; then # pnetcc="cc" # else # pnetcc="mpicc" # fi # case "$compiler" in # pgi*) # env CC="$pnetcc" LDFLAGS="$ldflags" \ # CFLAGS="$cflags" CPPFLAGS="-DNDEBUG -DpgiFortran" ./configure \ # $netcdfflag > ../pnetcdf_config.log 2>&1 # ;; # *) # env CC="$pnetcc" LDFLAGS="$ldflags" \ # CFLAGS="$cflags" CPPFLAGS="-DNDEBUG" ./configure $netcdfflag \ # > ../pnetcdf_config.log 2>&1 # ;; # esac # ncerror=$? # if [ $ncerror -gt 0 ]; then # echo " Error: parallel NetCDF configure returned $ncerror" # echo " Parallel NetCDF configure failed! Check the pnetcdf/config.log file." # echo " Continuing but parallel NetCDF will be skipped." # pnetcdf='no' # pnetcdflib='' # else echo " Parallel NetCDF configure succeeded." pnetcdf='yes' pnetcdflib='../pnetcdf/lib/libpnetcdf.a' # fi cd ../ --snip-- --snip-- echo echo "Configuring NetCDF; (may be time-consuming)" echo # cd netcdf/src # netcdfflag="--prefix=$AMBERTOOLSHOME/src/netcdf --disable-cxx" # case "$compiler" in # pgi*) # env FC="$fc" F90="$fc" FFLAGS="$ldflags $foptflags" \ # FCFLAGS="$ldflags $foptflags" \ # F90FLAGS="$ldflags $foptflags" CC="$cc" LDFLAGS="$ldflags" \ # CFLAGS="$cflags" CXX="$cplusplus" CPPFLAGS="-DNDEBUG -DpgiFortran" \ # ./configure $netcdfflag > ../../netcdf_config.log 2>&1 # ;; # *) # env FC="$fc" F90="$fc" FFLAGS="$ldflags $foptflags" \ # FCFLAGS="$ldflags $foptflags" \ # F90FLAGS="$ldflags $foptflags" CC="$cc" LDFLAGS="$ldflags" \ # CFLAGS="$cflags" CPPFLAGS="-DNDEBUG" ./configure $netcdfflag \ # > ../../netcdf_config.log 2>&1 # ;; # esac # ncerror=$? # if [ $ncerror -gt 0 ]; then # echo " Error: NetCDF configure returned $ncerror" # echo " NetCDF configure failed! Check the netcdf_config.log file." # echo " Continuing but NetCDF will be skipped." # netcdf='' # netcdflib='' # pmemd_netcdflib='' # else echo " NetCDF configure succeeded." --snip-- --snip-- echo echo "Configuring fftw-2.1.5; (may be time-consuming)" echo # cd fftw-2.1.5 # if [ "$mpi" = 'yes' ]; then # ./configure $rismflag --enable-mpi CC="$cc" CFLAGS="$cflags" F77="$fc" FFLAGS="$fflags" \ # FLIBS="$flibs_arch" > ../fftw2_config.log 2>&1 # else # ./configure $rismflag CC="$cc" CFLAGS="$cflags" F77="$fc" FFLAGS="$fflags" \ # FLIBS="$flibs_arch" > ../fftw2_config.log 2>&1 # fi # ncerror=$? # if [ $ncerror -gt 0 ]; then # echo " Error: fftw configure returned $ncerror" # echo " fftw configure failed! Check the fftw2_config.log file." # exit 1 # else echo " fftw-2.1.5 configure succeeded." # fi # cd .. flibs_fftw2="\$(LIBDIR)/libdrfftw.a \$(LIBDIR)/libdfftw.a" --snip--
Configure the build:
./configure -static -noX11 -crayxt5 gnu
Modify the config.h file to use the central NetCDF libraries (change all paths) to, e.g.:
/opt/cray/netcdf/4.1.2/gnu/46/lib
Modify the ptraj/netcdf_ptraj.h and ptraj/netcdf_ptraj.h file to point to the correct NetCDF header file:
# include "/opt/cray/netcdf/4.1.2/gnu/46/include/netcdf.h"
Build the tools
make install
Build serial version of Amber
Change to the simulation packages source directory:
cd $AMBERHOME/src
Link the config.h file created above:
ln -s $AMBERHOME/AmberTools/src/config.h config.h
Modify the sander/Makefile to skip compilation of NetCDF:
netcdf.mod: echo /opt/cray/netcdf/4.1.2/gnu/46/include/*.mod . cp /opt/cray/netcdf/4.1.2/gnu/46/bin/ncdump$(SFX) $(BINDIR)
Modify pmemd/Makefile and pmemd/src/Makefile to skip compilation of NetCDF:
netcdf.mod: echo /opt/cray/netcdf/4.1.2/gnu/46/include/*.mod .
Issue the build command:
make serial
Binaries are in $AMBERHOME/bin
Build the parallel version
cd $AMBERHOME/AmberTools/src
Export the MPI location
export MPI_HOME=$MPICH_DIR
Configure the build
./configure -mpi -static -noX11 -crayxt5 gnu
Modify the config.h file to use the central NetCDF libraries (change all paths) to, e.g.:
/opt/cray/netcdf/4.1.2/gnu/46/lib
Build the parallel version
make clean make parallel