CHARMM

From Tau Wiki
Jump to: navigation, search


Background

Building CHARMM

Instructions for instrumenting CHARMM with TAU:

1. My gfortran compiler had problems with some WRITE commands in source/nbond/enbips.src so I commented out line 3288 and 3301.

2. CHARMM finds MPI via environment variables so:

%> export  MPI_INCLUDE=<mpi include dir>
%> export MPI_LIB=<mpi include dir>

3. I started with source based instrumentation (via PDT), notice the use of a selective instrumentation file to tune instrumentation:

%> export TAU_MAKEFILE=<tau home>/<arch>/lib/Makefile.tau-mpi-pdt
%> export TAU_OPTIONS='-optKeepFiles -optVerbose -optTauSelectFile=<full path to select.tau>'
%> cat select.tau

BEGIN_EXCLUDE_LIST

# omit this routine, TAU has problems this some CONTINUE statements
MASTER.0.TIMRB::TIMRB

# omit these low level routine that contribute to excessive instrumentation
# overhead
ERFCD
EXCH5
GAUSSI
MPI_Irecv()
MPI_Isend()
NINDX
OLDRANDOM
ORDER5
PATOM
PMEUTIL::CFFTB
PMEUTIL::CFFTB1
PMEUTIL::CFFTF
PMEUTIL::CFFTF1
PMEUTIL::FILL_BSPLINE
PMEUTIL::PASSB2
PMEUTIL::PASSB4
PMEUTIL::PASSF2
PMEUTIL::PASSF4
PROCATOMS
RANDOM
ATOMID
CHARMM    => ATOMID
CHARMM    => CMAPSPI
CHARMM    => GENIC::SUB600
CHARMM    => GETRES
CHARMM    => GETSEG
CHARMM    => HYDROG
CHARMM    => INITIA
CHARMM    => LONE
CHARMM    => MATOM
CHARMM    => WRNDIE
CMAPSPI
CNVTUC
EQST
EQSTA
GENIC::SUB600
GETRES
GETSEG
HYDROG
INITIA
LONE
MATOM
TRIME
WRNDIE

# new routines
CHARMM    => EQSTWC
CHARMM    => EQSTWC::SUB10
EQSTWC
EQSTWC::SUB10
MPI_Comm_rank()
MPI_Comm_size()
PMEUTIL::XY_ZX_TR_RCV
PMEUTIL::ZX_TRANS_RECV


END_EXCLUDE_LIST

4. Now I need to override the default mpif90 compiler with TAU's tau_f90.sh wrapper script. The easiest way to do this was with global replace in install.com (you may want to backup this file so you can compile CHARMM without TAU):

%> sed -i 's/mpif90/tau_f90.sh/g' install.com

and compile with the xlarge version with MPI:

%> ./install.com gnu xlarge NOLOG M

Now when you run a simulation you will get TAU profile.* files in your current directory.