Difference between revisions of "CHARMM"
(→Building CHARMM) |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[Category:Applications]] | [[Category:Applications]] | ||
+ | |||
+ | ==Background== | ||
==Building CHARMM== | ==Building CHARMM== | ||
Line 10: | Line 12: | ||
2. CHARMM finds MPI via environment variables so: | 2. CHARMM finds MPI via environment variables so: | ||
− | %> export MPI_INCLUDE=<mpi include dir> | + | %> export MPI_INCLUDE=<mpi include dir> |
− | %> export MPI_LIB=<mpi include dir> | + | %> export MPI_LIB=<mpi include dir> |
3. I started with source based instrumentation (via PDT), notice the use of a | 3. I started with source based instrumentation (via PDT), notice the use of a | ||
selective instrumentation file to tune instrumentation: | selective instrumentation file to tune instrumentation: | ||
− | %> export TAU_MAKEFILE=<tau home>/<arch>/lib/Makefile.tau-mpi-pdt | + | %> export TAU_MAKEFILE=<tau home>/<arch>/lib/Makefile.tau-mpi-pdt |
− | %> export TAU_OPTIONS='-optKeepFiles -optVerbose -optTauSelectFile=<full path to select.tau>' | + | %> export TAU_OPTIONS='-optKeepFiles -optVerbose -optTauSelectFile=<full path to select.tau>' |
+ | <pre> | ||
%> cat select.tau | %> cat select.tau | ||
+ | |||
BEGIN_EXCLUDE_LIST | BEGIN_EXCLUDE_LIST | ||
Line 47: | Line 51: | ||
PROCATOMS | PROCATOMS | ||
RANDOM | 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 | END_EXCLUDE_LIST | ||
− | + | </pre> | |
4. Now I need to override the default mpif90 compiler with TAU's tau_f90.sh | 4. Now I need to override the default mpif90 compiler with TAU's tau_f90.sh | ||
Line 56: | Line 95: | ||
TAU): | TAU): | ||
− | %> sed -i 's/mpif90/tau_f90.sh/g' install.com | + | %> sed -i 's/mpif90/tau_f90.sh/g' install.com |
and compile with the xlarge version with MPI: | and compile with the xlarge version with MPI: | ||
− | %> ./install.com gnu xlarge NOLOG M | + | %> ./install.com gnu xlarge NOLOG M |
Now when you run a simulation you will get TAU profile.* files in your current directory. | 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.