Difference between revisions of "NAMD"

From Tau Wiki
Jump to: navigation, search
(Background)
 
(29 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Guide to building and running NAMD 2.6 with TAU =
+
[[Category:Applications]]
Current this guide is for build NAMD and charm++ from source on x86 64-bit architecture. One would follow similar step on other machines but we have experienced additional difficulties.  
+
[[Category:Showcase]]
 +
 
 +
= Background =
 +
 
 +
{|
 +
!Link
 +
!Code
 +
!Version
 +
!Machine
 +
!Date
 +
|-
 +
|[http://www.ks.uiuc.edu/Research/namd/ NAMD homepage]
 +
|[http://www.ks.uiuc.edu/Development/Download/download.cgi?PackageName=NAMD Download Page]
 +
|2.6
 +
|Linux x86_64
 +
|February 2009
 +
|}
 +
 
 +
== Background ==
 +
 
 +
Currently this guide is for building NAMD and charm++ from source on x86 64-bit architecture. One would follow similar step on other machines but some of the file names would be changed.
  
 
==Building Charm++==
 
==Building Charm++==
 +
Automatic instrumentation of charm applications using TAU is available in the unreleased version of Charm++ which you can download here: http://charm.cs.uiuc.edu/download/ (click on the nightly CVS source archive). To compile Charm++:
 +
<pre>
 +
%> cd charm
 +
%> ./build charm++ mpi-linux-x86_64 mpicxx ifort -O3
 +
...
 +
%> ./build Tau mpi-linux-x86_64 mpicxx ifort --tau-makefile=<tau_dir>/x86_64/lib/Makefile.tau-icpc-mpi --no-build-shared -O3
 +
</pre>
 +
As always the TAU Makefile you specify determines what profiling/tracing options are set. Wait for charm to finish building then test the configuration by:
 +
<pre>
 +
%> cd mpi-linux-x86_64-ifort-mpicx/tests/charm++/simplearrayhello
 +
%> make OPTS='-tracemode Tau -no-trace-mpi'
 +
%> ./charmrun ./hello +p4
 +
</pre>
 +
Verify that this program runs without any errors and that you get a profile file for each processor.
  
After downloading '''NAMD_2.6_Source.tar.gz''' do the following:
+
==Building NAMD==
 +
 
 +
Begin in NAMD's home directory:
 
<pre>
 
<pre>
%> tar xzf NAMD_2.6_Source.tar.gz
 
 
%> cd NAMD_2.6_Source
 
%> cd NAMD_2.6_Source
%> tar xf charm-5.9.tar
+
%> ./config Linux-x86_64-icc --charm-base $CHARMROOT --with-cuda --cuda-prefix $CUDAROOT --with-fftw --with-fftw3 --fftw-prefix $FFTW
%> cd charm-5.9
 
%> ./build charm++ net-linux-amd64
 
 
</pre>
 
</pre>
Wait for charm to finish building then test the configuration by:
+
 
 +
Now set NAMD to use TAU, edit '''arch/Linux-x86_64-icc.arch''' adding this line:
 
<pre>
 
<pre>
%> cd net-linux-amd64/tests/charm++/simplearrayhello
+
CHARMOPTS = -tracemode Tau
%> make
 
%> ./hello
 
%> ./charmrun ++local ./hello
 
 
</pre>
 
</pre>
Verify that this program running with any error before continuing.
 
  
==Building TAU==
+
Then build NAMD
Make sure to have the latest version of TAU installed on your system. To configure TAU to work with charm++ do the following:
 
 
<pre>
 
<pre>
%> cd tau2
+
%> cd Linux-x86_64-icc
%> ./configure -pdt=<path to pdt> -charm=<path to the NAMD_2.6_Source/charm-5.9>
+
%> make
...
 
%> make clean install
 
 
</pre>
 
</pre>
To confirm TAU is working properly with charm++ try running this example program:
+
 
 +
== NAMD with CUDA ==
 +
 
 +
To profile NAMD's CUDA kernel I few modifications need to be made to the build steps:
 +
 
 +
in charm, do:
 +
 
 +
%> ./build Tau mpi-linux-x86_64 mpicxx ifort --tau-makefile=<tau_dir>/x86_64/lib/Makefile.tau-icpc-mpi-cupti --no-build-shared -O3
 +
(change TAU makefile)
 +
 
 +
rebuild NAMD.
 +
 
 +
and run NAMD by doing:
 +
 
 +
mpirun -np 3 tau_exec -T icpc,mpi,cupti -cupti ./namd2 src/apoa1/apoa1.namd
 +
 
 +
(have the '-T' options match the TAU makefile)
 +
 
 +
== Running NAMD ==
 +
 
 +
If everything works properly you should now have a '''namd2''' executable. Test by running:
 
<pre>
 
<pre>
%> cd examples/charm
+
%> ./charmrun ./namd2 +p4 src/alanin
%> export PATH=<path to NAMD/charm-5.9/bin>
 
%> make
 
%> ./charmrun ++local ./pgm
 
 
</pre>
 
</pre>
Verify that profile files have been generated in this directory.
 
  
==Building NAMD 2.6==
+
== Performance Data ==
There are several patches that need to be applied before can run NAMD with TAU instrumentation but we will put those aside for now to concentrate on building NAMD with TAU auto-instrumentation.
 
  
1. First edit Make.charm in NAMD's home so that CHARMBASE is set to the directory where charm-5.9 resides.
+
Mean profile of a run with the performance benchmark ALANIN:
2. Next create a selective instrumentation file with these commands:
+
 
<pre>
+
[[Image:NAMD-mean-profile.png|750px]]
BEGIN_EXCLUDE_LIST
 
void Sequencer::thread#
 
void Controller::thread#
 
int NAMD_read_int#
 
void PDBDATA::scan#
 
Real PDBAtom::zcoor#
 
Real PDBAtom::ycoor#
 
Real PDBAtom::xcoor#
 
Bool Molocule::is_hydrogen#
 
END_EXCLUDE_LIST
 
  
BEGIN_FILE_EXCLUDE_LIST
+
Histogram of the enqueueWorkA routine across 32 processors:
*mainfunc.C
 
*memusage.C
 
*BackEnd.C
 
END_FILE_EXCLUDE_LIST
 
</pre>
 
And save this file in the NAMD home directory.
 
  
3. Finally edit arch/Linux-amd64-g++.arch so that it resembles:
+
[[Image:NAMD-work-profile.png|750px]]
<pre>
 
include /share/home/00968/tg802155/tau2/include/Makefile
 
NAMD_ARCH = Linux-amd64
 
CHARMARCH = net-linux-amd64
 
  
TAU_SELECT_FILE=/share/home/00968/tg802155/NAMD_2.6_Source/select.tau
+
A comparison of Timestep per second between two different MPI implementations on Ranger:
  
CXX = $(TAU_COMPILER) -optTauSelectFile=$(TAU_SELECT_FILE) g++
+
[[Image:NAMD-mpi-comparison.png|750px]]
CXXOPTS = -O3 -m64 -fexpensive-optimizations -ffast-math
 
CC = $(TAU_COMPILER) -optTauSelectFile=$(TAU_SELECT_FILE) gcc
 
COPTS = -O3 -m64 -fexpensive-optimizations -ffast-math
 
</pre>
 
  
Begin in NAMD's home directory:
+
[[Image:namd-apoa1.ppk]]
<pre>
 
%> cd NAMD_2.6_Source
 
%> ./config Linux-amd64-g++
 
%> vi Make.charm
 

Latest revision as of 19:20, 10 May 2012


Background

Link Code Version Machine Date
NAMD homepage Download Page 2.6 Linux x86_64 February 2009

Background

Currently this guide is for building NAMD and charm++ from source on x86 64-bit architecture. One would follow similar step on other machines but some of the file names would be changed.

Building Charm++

Automatic instrumentation of charm applications using TAU is available in the unreleased version of Charm++ which you can download here: http://charm.cs.uiuc.edu/download/ (click on the nightly CVS source archive). To compile Charm++:

%> cd charm
%> ./build charm++ mpi-linux-x86_64 mpicxx ifort -O3
...
%> ./build Tau mpi-linux-x86_64 mpicxx ifort --tau-makefile=<tau_dir>/x86_64/lib/Makefile.tau-icpc-mpi --no-build-shared -O3 

As always the TAU Makefile you specify determines what profiling/tracing options are set. Wait for charm to finish building then test the configuration by:

%> cd mpi-linux-x86_64-ifort-mpicx/tests/charm++/simplearrayhello
%> make OPTS='-tracemode Tau -no-trace-mpi'
%> ./charmrun ./hello +p4

Verify that this program runs without any errors and that you get a profile file for each processor.

Building NAMD

Begin in NAMD's home directory:

%> cd NAMD_2.6_Source
%> ./config Linux-x86_64-icc --charm-base $CHARMROOT --with-cuda --cuda-prefix $CUDAROOT --with-fftw --with-fftw3 --fftw-prefix $FFTW

Now set NAMD to use TAU, edit arch/Linux-x86_64-icc.arch adding this line:

CHARMOPTS = -tracemode Tau

Then build NAMD

%> cd Linux-x86_64-icc
%> make

NAMD with CUDA

To profile NAMD's CUDA kernel I few modifications need to be made to the build steps:

in charm, do:

%> ./build Tau mpi-linux-x86_64 mpicxx ifort --tau-makefile=<tau_dir>/x86_64/lib/Makefile.tau-icpc-mpi-cupti --no-build-shared -O3

(change TAU makefile)

rebuild NAMD.

and run NAMD by doing:

mpirun -np 3 tau_exec -T icpc,mpi,cupti -cupti ./namd2 src/apoa1/apoa1.namd

(have the '-T' options match the TAU makefile)

Running NAMD

If everything works properly you should now have a namd2 executable. Test by running:

%> ./charmrun ./namd2 +p4 src/alanin

Performance Data

Mean profile of a run with the performance benchmark ALANIN:

NAMD-mean-profile.png

Histogram of the enqueueWorkA routine across 32 processors:

NAMD-work-profile.png

A comparison of Timestep per second between two different MPI implementations on Ranger:

NAMD-mpi-comparison.png

File:Namd-apoa1.ppk