Difference between revisions of "CHARMM"

From Tau Wiki
Jump to: navigation, search
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
[[Category:Applications]]
 
[[Category:Applications]]
 +
 +
==Background==
  
 
==Building CHARMM==
 
==Building CHARMM==
CHARMM uses the install.com script to configure compilation. By setting some environment variables you can control its behavior. For example to build with TAU on Ranger, first load the intel compilers:
 
  
  module rm mvapich
+
Instructions for instrumenting CHARMM with TAU:
  module load intel
+
 
  module load mvapich
+
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>'
 +
 
 +
<pre>
 +
%> 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
 +
</pre>
 +
 
 +
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:
  
Then run the install.com script with the tau_f90.sh as the compiler:
+
%> ./install.com gnu xlarge NOLOG M
  
MPI_F90=ifort MPI_INCLUDE=/opt/apps/intel10_1/mvapich/1.0.1/include MPI_LIB=/opt/apps/intel10_1/mvapich/1.0.1/lib ./install.com em64t xlarge NOLOG M
+
Now when you run a simulation you will get TAU profile.* files in your current directory.

Latest revision as of 21:55, 27 February 2012


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.