<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://oldwiki.scinet.utoronto.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cmadill</id>
	<title>oldwiki.scinet.utoronto.ca - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://oldwiki.scinet.utoronto.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cmadill"/>
	<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php/Special:Contributions/Cmadill"/>
	<updated>2026-06-18T03:25:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.12</generator>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Compiling_Gromacs&amp;diff=684</id>
		<title>Compiling Gromacs</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Compiling_Gromacs&amp;diff=684"/>
		<updated>2009-09-26T20:34:10Z</updated>

		<summary type="html">&lt;p&gt;Cmadill: /* Using Intel Math Kernel Library for FFT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Available Compilations==&lt;br /&gt;
&lt;br /&gt;
Chris Neale has compiled gromacs on GPC, with assistance from Scott Northrup, and&lt;br /&gt;
on the power6 cluster with assistance from Ching-Hsing Yu. Users are welcome to utilize&lt;br /&gt;
these binary executables, but only at their own peril since compiling and testing your own&lt;br /&gt;
executable is safer and more stable.&lt;br /&gt;
&lt;br /&gt;
''Gromacs executables:''&lt;br /&gt;
&lt;br /&gt;
'''GPC:''' /scratch/cneale/exe/intel/gromacs-4.0.5/exec/bin&lt;br /&gt;
&lt;br /&gt;
'''TCS:''' /scratch/cneale/exe/gromacs-4.0.4_aix/exec/bin&lt;br /&gt;
&lt;br /&gt;
==Compiling your own GROMACS executables==&lt;br /&gt;
&lt;br /&gt;
Below you will find scripts for the different compilations that you can follow to make your own binaries.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' ''the steps are not listed in order! You must compile fftw before compiling gromacs, and if you are going to use mvapich2-1.4rc1 then you must compile it also before compiling parallel gromacs.''&lt;br /&gt;
&lt;br /&gt;
# Compiling serial single precision gromacs on GPC&lt;br /&gt;
# Compiling openmpi parallel gromacs on GPC&lt;br /&gt;
# Compiling serial gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# Compiling parallel gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# fftw single precision compilation&lt;br /&gt;
# Change to get mvapich2-1.4rc1 to compile gromacs&lt;br /&gt;
# Compiling mvapich2-1.4rc1&lt;br /&gt;
# Compiling gromacs on GPC using mvapich2-1.4rc1&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
&lt;br /&gt;
=====Compiling serial single precision gromacs on GPC=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling openmpi parallel gromacs on GPC:=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib/openmpi&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&amp;quot;&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_openmpi&amp;quot; &amp;gt;output.configure.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling serial gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
Note that the -O5 flag for the power6 compilation makes it take about&lt;br /&gt;
20 hours to compile. You can drop that if you want, but it does give&lt;br /&gt;
you a few more percent performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#======================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
# @ job_type = serial&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
## # @ node = 1&lt;br /&gt;
## # @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
export&lt;br /&gt;
PATH=/usr/lpp/ppe.hpct/bin:/usr/vacpp/bin:.:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin:/usr/lpp/LoadL/full/bin:/usr/local/bin&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
mkdir exec&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling parallel gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#===============================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
##### @ job_type = serial&lt;br /&gt;
# @ job_type = parallel&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
# @ node = 1&lt;br /&gt;
# @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
echo &amp;quot;cn-r0-10&amp;quot; &amp;gt; ~/.rhosts&lt;br /&gt;
echo localhost &amp;gt; ~/host.list&lt;br /&gt;
for((i=2;i&amp;lt;=16;i++)); do&lt;br /&gt;
  echo localhost &amp;gt;&amp;gt; ~/host.list&lt;br /&gt;
done&lt;br /&gt;
export MP_HOSTFILE=~/host.list&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--disable-nice --program-suffix=&amp;quot;_mpi&amp;quot; CC=mpcc_r F77=mpxlf_r &amp;gt;&lt;br /&gt;
output.configure_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make mdrun &amp;gt; output.make_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun &amp;gt; output.make_install_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====fftw single precision compilation=====&lt;br /&gt;
&lt;br /&gt;
FFTW is required by GROMACS. This compilation must be completed before compiling GROMACS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
mkdir exec&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
./configure --enable-float --enable-threads --prefix=${FFTW_LOCATION}&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Change to get mvapich2-1.4rc1 to compile gromacs=====&lt;br /&gt;
&lt;br /&gt;
This change is required to the mvapich2-1.4rc1 source code in order to compile GROMACS with it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
src/mpid/ch3/channels/mrail/src/gen2/ibv_channel_manager.c&lt;br /&gt;
line 503&lt;br /&gt;
unsigned long debug = 0;&lt;br /&gt;
to&lt;br /&gt;
static unsigned long debug = 0;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/mvapich2-1.4rc1&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
./configure --prefix=/scratch/cneale/exe/mvapich2-1.4rc1/exec CC=icc&lt;br /&gt;
CXX=icpc F90=ifort F77=ifort &amp;gt;output.configure 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling gromacs on GPC using mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/xcat/bin:/opt/xcat/sbin:/root/bin:/opt/torque/bin:/opt/xcat/bin:/opt/xcat/sbin:/usr/lpp/mmfs/bin:/scratch/cneale/exe/mvapich2-1.4rc1/exec/bin/:/scinet/gpc/x1/intel/Compiler/11.0/081/bin/intel64&lt;br /&gt;
LD_LIBRARY_PATH=/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib/:/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64:/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_mvapich2&amp;quot; &amp;gt;output.configure.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
&lt;br /&gt;
=====Using Intel Math Kernel Library for FFT=====&lt;br /&gt;
Gromacs provides the option to use the Intel Math Kernel Library (MKL) for the fast Fourier implementation. To use the MKL, make the following changes to your chosen compilation method:&lt;br /&gt;
&lt;br /&gt;
* Do not specify the FFTW_LOCATION environment variable, and remove references to it from CPPFLAGS and LDFLAGS.&lt;br /&gt;
* Add -I/opt/intel/Compiler/11.0/081/mkl/include/fftw/ to the CPPFLAGS environment variable.&lt;br /&gt;
* Add &amp;quot;-L/opt/intel/Compiler/11.0/081/lib/intel64/ -L/opt/intel/Compiler/11.0/081/mkl/lib/em64t/ -lguide -lpthread -lfftw3xc_intel&amp;quot; to the LDFLAGS environment variable.&lt;br /&gt;
* Add --with-fft=mkl to your ./configure commandline.&lt;br /&gt;
* Continue your build as usual.&lt;br /&gt;
&lt;br /&gt;
--[[User:Cmadill|Cmadill]] 20:33, 26 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==TODO list==&lt;/div&gt;</summary>
		<author><name>Cmadill</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Compiling_Gromacs&amp;diff=683</id>
		<title>Compiling Gromacs</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Compiling_Gromacs&amp;diff=683"/>
		<updated>2009-09-26T20:33:56Z</updated>

		<summary type="html">&lt;p&gt;Cmadill: /* Compiling gromacs on GPC using mvapich2-1.4rc1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Available Compilations==&lt;br /&gt;
&lt;br /&gt;
Chris Neale has compiled gromacs on GPC, with assistance from Scott Northrup, and&lt;br /&gt;
on the power6 cluster with assistance from Ching-Hsing Yu. Users are welcome to utilize&lt;br /&gt;
these binary executables, but only at their own peril since compiling and testing your own&lt;br /&gt;
executable is safer and more stable.&lt;br /&gt;
&lt;br /&gt;
''Gromacs executables:''&lt;br /&gt;
&lt;br /&gt;
'''GPC:''' /scratch/cneale/exe/intel/gromacs-4.0.5/exec/bin&lt;br /&gt;
&lt;br /&gt;
'''TCS:''' /scratch/cneale/exe/gromacs-4.0.4_aix/exec/bin&lt;br /&gt;
&lt;br /&gt;
==Compiling your own GROMACS executables==&lt;br /&gt;
&lt;br /&gt;
Below you will find scripts for the different compilations that you can follow to make your own binaries.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' ''the steps are not listed in order! You must compile fftw before compiling gromacs, and if you are going to use mvapich2-1.4rc1 then you must compile it also before compiling parallel gromacs.''&lt;br /&gt;
&lt;br /&gt;
# Compiling serial single precision gromacs on GPC&lt;br /&gt;
# Compiling openmpi parallel gromacs on GPC&lt;br /&gt;
# Compiling serial gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# Compiling parallel gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# fftw single precision compilation&lt;br /&gt;
# Change to get mvapich2-1.4rc1 to compile gromacs&lt;br /&gt;
# Compiling mvapich2-1.4rc1&lt;br /&gt;
# Compiling gromacs on GPC using mvapich2-1.4rc1&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
&lt;br /&gt;
=====Compiling serial single precision gromacs on GPC=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling openmpi parallel gromacs on GPC:=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib/openmpi&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&amp;quot;&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_openmpi&amp;quot; &amp;gt;output.configure.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling serial gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
Note that the -O5 flag for the power6 compilation makes it take about&lt;br /&gt;
20 hours to compile. You can drop that if you want, but it does give&lt;br /&gt;
you a few more percent performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#======================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
# @ job_type = serial&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
## # @ node = 1&lt;br /&gt;
## # @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
export&lt;br /&gt;
PATH=/usr/lpp/ppe.hpct/bin:/usr/vacpp/bin:.:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin:/usr/lpp/LoadL/full/bin:/usr/local/bin&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
mkdir exec&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling parallel gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#===============================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
##### @ job_type = serial&lt;br /&gt;
# @ job_type = parallel&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
# @ node = 1&lt;br /&gt;
# @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
echo &amp;quot;cn-r0-10&amp;quot; &amp;gt; ~/.rhosts&lt;br /&gt;
echo localhost &amp;gt; ~/host.list&lt;br /&gt;
for((i=2;i&amp;lt;=16;i++)); do&lt;br /&gt;
  echo localhost &amp;gt;&amp;gt; ~/host.list&lt;br /&gt;
done&lt;br /&gt;
export MP_HOSTFILE=~/host.list&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--disable-nice --program-suffix=&amp;quot;_mpi&amp;quot; CC=mpcc_r F77=mpxlf_r &amp;gt;&lt;br /&gt;
output.configure_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make mdrun &amp;gt; output.make_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun &amp;gt; output.make_install_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====fftw single precision compilation=====&lt;br /&gt;
&lt;br /&gt;
FFTW is required by GROMACS. This compilation must be completed before compiling GROMACS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
mkdir exec&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
./configure --enable-float --enable-threads --prefix=${FFTW_LOCATION}&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Change to get mvapich2-1.4rc1 to compile gromacs=====&lt;br /&gt;
&lt;br /&gt;
This change is required to the mvapich2-1.4rc1 source code in order to compile GROMACS with it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
src/mpid/ch3/channels/mrail/src/gen2/ibv_channel_manager.c&lt;br /&gt;
line 503&lt;br /&gt;
unsigned long debug = 0;&lt;br /&gt;
to&lt;br /&gt;
static unsigned long debug = 0;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/mvapich2-1.4rc1&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
./configure --prefix=/scratch/cneale/exe/mvapich2-1.4rc1/exec CC=icc&lt;br /&gt;
CXX=icpc F90=ifort F77=ifort &amp;gt;output.configure 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling gromacs on GPC using mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/xcat/bin:/opt/xcat/sbin:/root/bin:/opt/torque/bin:/opt/xcat/bin:/opt/xcat/sbin:/usr/lpp/mmfs/bin:/scratch/cneale/exe/mvapich2-1.4rc1/exec/bin/:/scinet/gpc/x1/intel/Compiler/11.0/081/bin/intel64&lt;br /&gt;
LD_LIBRARY_PATH=/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib/:/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64:/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_mvapich2&amp;quot; &amp;gt;output.configure.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
&lt;br /&gt;
=====Using Intel Math Kernel Library for FFT=====&lt;br /&gt;
Gromacs provides the option to use the Intel Math Kernel Library (MKL) for the fast Fourier implementation. To use the MKL, make the following changes to your chosen compilation method:&lt;br /&gt;
&lt;br /&gt;
* Do not specify the FFTW_LOCATION environment variable, and remove references to it from CPPFLAGS and LDFLAGS.&lt;br /&gt;
* Add -I/opt/intel/Compiler/11.0/081/mkl/include/fftw/ to the CPPFLAGS environment variable.&lt;br /&gt;
* Add &amp;quot;-L/opt/intel/Compiler/11.0/081/lib/intel64/ -L/opt/intel/Compiler/11.0/081/mkl/lib/em64t/ -lguide -lpthread -lfftw3xc_intel&amp;quot; to the LDFLAGS environment variable.&lt;br /&gt;
* Add --with-fft=mkl to your ./configure commandline.&lt;br /&gt;
* Continue your build as usual.&lt;br /&gt;
&lt;br /&gt;
--[[User:Cmadill|Cmadill]] 20:33, 26 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==TODO list==&lt;/div&gt;</summary>
		<author><name>Cmadill</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Compiling_Gromacs&amp;diff=682</id>
		<title>Compiling Gromacs</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Compiling_Gromacs&amp;diff=682"/>
		<updated>2009-09-26T20:18:32Z</updated>

		<summary type="html">&lt;p&gt;Cmadill: /* TODO list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Available Compilations==&lt;br /&gt;
&lt;br /&gt;
Chris Neale has compiled gromacs on GPC, with assistance from Scott Northrup, and&lt;br /&gt;
on the power6 cluster with assistance from Ching-Hsing Yu. Users are welcome to utilize&lt;br /&gt;
these binary executables, but only at their own peril since compiling and testing your own&lt;br /&gt;
executable is safer and more stable.&lt;br /&gt;
&lt;br /&gt;
''Gromacs executables:''&lt;br /&gt;
&lt;br /&gt;
'''GPC:''' /scratch/cneale/exe/intel/gromacs-4.0.5/exec/bin&lt;br /&gt;
&lt;br /&gt;
'''TCS:''' /scratch/cneale/exe/gromacs-4.0.4_aix/exec/bin&lt;br /&gt;
&lt;br /&gt;
==Compiling your own GROMACS executables==&lt;br /&gt;
&lt;br /&gt;
Below you will find scripts for the different compilations that you can follow to make your own binaries.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' ''the steps are not listed in order! You must compile fftw before compiling gromacs, and if you are going to use mvapich2-1.4rc1 then you must compile it also before compiling parallel gromacs.''&lt;br /&gt;
&lt;br /&gt;
# Compiling serial single precision gromacs on GPC&lt;br /&gt;
# Compiling openmpi parallel gromacs on GPC&lt;br /&gt;
# Compiling serial gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# Compiling parallel gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# fftw single precision compilation&lt;br /&gt;
# Change to get mvapich2-1.4rc1 to compile gromacs&lt;br /&gt;
# Compiling mvapich2-1.4rc1&lt;br /&gt;
# Compiling gromacs on GPC using mvapich2-1.4rc1&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
&lt;br /&gt;
=====Compiling serial single precision gromacs on GPC=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling openmpi parallel gromacs on GPC:=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib/openmpi&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&amp;quot;&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_openmpi&amp;quot; &amp;gt;output.configure.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling serial gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
Note that the -O5 flag for the power6 compilation makes it take about&lt;br /&gt;
20 hours to compile. You can drop that if you want, but it does give&lt;br /&gt;
you a few more percent performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#======================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
# @ job_type = serial&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
## # @ node = 1&lt;br /&gt;
## # @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
export&lt;br /&gt;
PATH=/usr/lpp/ppe.hpct/bin:/usr/vacpp/bin:.:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin:/usr/lpp/LoadL/full/bin:/usr/local/bin&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
mkdir exec&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling parallel gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#===============================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
##### @ job_type = serial&lt;br /&gt;
# @ job_type = parallel&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
# @ node = 1&lt;br /&gt;
# @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
echo &amp;quot;cn-r0-10&amp;quot; &amp;gt; ~/.rhosts&lt;br /&gt;
echo localhost &amp;gt; ~/host.list&lt;br /&gt;
for((i=2;i&amp;lt;=16;i++)); do&lt;br /&gt;
  echo localhost &amp;gt;&amp;gt; ~/host.list&lt;br /&gt;
done&lt;br /&gt;
export MP_HOSTFILE=~/host.list&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--disable-nice --program-suffix=&amp;quot;_mpi&amp;quot; CC=mpcc_r F77=mpxlf_r &amp;gt;&lt;br /&gt;
output.configure_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make mdrun &amp;gt; output.make_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun &amp;gt; output.make_install_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====fftw single precision compilation=====&lt;br /&gt;
&lt;br /&gt;
FFTW is required by GROMACS. This compilation must be completed before compiling GROMACS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
mkdir exec&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
./configure --enable-float --enable-threads --prefix=${FFTW_LOCATION}&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Change to get mvapich2-1.4rc1 to compile gromacs=====&lt;br /&gt;
&lt;br /&gt;
This change is required to the mvapich2-1.4rc1 source code in order to compile GROMACS with it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
src/mpid/ch3/channels/mrail/src/gen2/ibv_channel_manager.c&lt;br /&gt;
line 503&lt;br /&gt;
unsigned long debug = 0;&lt;br /&gt;
to&lt;br /&gt;
static unsigned long debug = 0;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/mvapich2-1.4rc1&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
./configure --prefix=/scratch/cneale/exe/mvapich2-1.4rc1/exec CC=icc&lt;br /&gt;
CXX=icpc F90=ifort F77=ifort &amp;gt;output.configure 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling gromacs on GPC using mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/xcat/bin:/opt/xcat/sbin:/root/bin:/opt/torque/bin:/opt/xcat/bin:/opt/xcat/sbin:/usr/lpp/mmfs/bin:/scratch/cneale/exe/mvapich2-1.4rc1/exec/bin/:/scinet/gpc/x1/intel/Compiler/11.0/081/bin/intel64&lt;br /&gt;
LD_LIBRARY_PATH=/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib/:/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64:/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_mvapich2&amp;quot; &amp;gt;output.configure.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
&lt;br /&gt;
==TODO list==&lt;/div&gt;</summary>
		<author><name>Cmadill</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=User_Codes&amp;diff=549</id>
		<title>User Codes</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=User_Codes&amp;diff=549"/>
		<updated>2009-08-27T16:29:07Z</updated>

		<summary type="html">&lt;p&gt;Cmadill: /* NAMD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
==Astrophysics==&lt;br /&gt;
&lt;br /&gt;
===Athena (explicit, uniform grid MHD code)===&lt;br /&gt;
&lt;br /&gt;
[[Image:StrongScalingAthenaGPC.png|thumb|right|320px|Athena scaling on GPC with OpenMPI and MVAPICH2 on GigE, and OpenMPI on InfiniBand]]&lt;br /&gt;
&lt;br /&gt;
[http://www.astro.princeton.edu/~jstone/athena.html Athena] is a straightforward C code which doesn't use a lot of libraries so it is pretty straightforward to build and compile on new machines.   &lt;br /&gt;
&lt;br /&gt;
It encapsulates its compiler flags, etc in an &amp;lt;tt&amp;gt;Makeoptions.in&amp;lt;/tt&amp;gt; file which is then processed by &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt;.   I've used the following additions to &amp;lt;tt&amp;gt;Makeoptions.in&amp;lt;/tt&amp;gt; on TCS and GPC:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
ifeq ($(MACHINE),scinettcs)&lt;br /&gt;
  CC = mpcc_r&lt;br /&gt;
  LDR = mpcc_r&lt;br /&gt;
  OPT = -O5 -q64 -qarch=pwr6 -qtune=pwr6 -qcache=auto -qlargepage -qstrict&lt;br /&gt;
  MPIINC =&lt;br /&gt;
  MPILIB =&lt;br /&gt;
  CFLAGS = $(OPT)&lt;br /&gt;
  LIB = -ldl -lm&lt;br /&gt;
else&lt;br /&gt;
ifeq ($(MACHINE),scinetgpc)&lt;br /&gt;
  CC = mpicc&lt;br /&gt;
  LDR = mpicc&lt;br /&gt;
  OPT = -O3&lt;br /&gt;
  MPIINC =&lt;br /&gt;
  MPILIB =&lt;br /&gt;
  CFLAGS = $(OPT)&lt;br /&gt;
  LIB = -lm&lt;br /&gt;
else&lt;br /&gt;
...&lt;br /&gt;
endif&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
It performs quite well on the GPC, scaling extremely well even on a strong scaling test out to about 256 cores (32 nodes) on Gigabit ethernet, and performing beautifully on InfiniBand out to 512 cores (64 nodes). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Ljdursi|ljdursi]]  19:20, 13 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===FLASH3 (Adaptive Mesh reactive hydrodynamics; explict hydro/MHD)===&lt;br /&gt;
&lt;br /&gt;
[[Image:weak-scaling-example.png|thumb|right|320px|Weak scaling test of the 2d sod problem on both the GPC and TCS.  The results are actually somewhat faster on the GPC; in both cases (weak) scaling is very good out at least to 256 cores]]&lt;br /&gt;
&lt;br /&gt;
[http://flash.uchicago.edu FLASH] encapsulates its machine-dependant information in the &amp;lt;tt&amp;gt;FLASH3/sites&amp;lt;/tt&amp;gt; directory.  For the GPC, you'll have to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load intel&lt;br /&gt;
module load openmpi&lt;br /&gt;
module load hdf5/183-v16-openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and with that, the following file (&amp;lt;tt&amp;gt;sites/scinetgpc/Makefile.h&amp;lt;/tt&amp;gt;) works for me:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
## Must do module load hdf5/183-v16-openmpi&lt;br /&gt;
HDF5_PATH = ${SCINET_HDF5_BASE}&lt;br /&gt;
ZLIB_PATH = /usr/local&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Compiler and linker commands&lt;br /&gt;
#&lt;br /&gt;
#  We use the f90 compiler as the linker, so some C libraries may explicitly&lt;br /&gt;
#  need to be added into the link line.&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
## modules will put the right mpi in our path&lt;br /&gt;
FCOMP   = mpif77&lt;br /&gt;
CCOMP   = mpicc&lt;br /&gt;
CPPCOMP = mpiCC&lt;br /&gt;
LINK    = mpif77&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Compilation flags&lt;br /&gt;
#&lt;br /&gt;
#  Three sets of compilation/linking flags are defined: one for optimized&lt;br /&gt;
#  code, one for testing, and one for debugging.  The default is to use the &lt;br /&gt;
#  _OPT version.  Specifying -debug to setup will pick the _DEBUG version,&lt;br /&gt;
#  these should enable bounds checking.  Specifying -test is used for &lt;br /&gt;
#  flash_test, and is set for quick code generation, and (sometimes) &lt;br /&gt;
#  profiling.  The Makefile generated by setup will assign the generic token &lt;br /&gt;
#  (ex. FFLAGS) to the proper set of flags (ex. FFLAGS_OPT).&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
FFLAGS_OPT   =  -c -r8 -i4 -O3 -xSSE4.2&lt;br /&gt;
FFLAGS_DEBUG =  -c -g -r8 -i4 -O0&lt;br /&gt;
FFLAGS_TEST  =  -c -r8 -i4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# if we are using HDF5, we need to specify the path to the include files&lt;br /&gt;
CFLAGS_HDF5  = -I${HDF5_PATH}/include&lt;br /&gt;
&lt;br /&gt;
CFLAGS_OPT   = -c -O3 -xSSE4.2&lt;br /&gt;
CFLAGS_TEST  = -c -O2 &lt;br /&gt;
CFLAGS_DEBUG = -c -g  &lt;br /&gt;
&lt;br /&gt;
MDEFS = &lt;br /&gt;
&lt;br /&gt;
.SUFFIXES: .o .c .f .F .h .fh .F90 .f90&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Linker flags&lt;br /&gt;
#&lt;br /&gt;
#  There is a seperate version of the linker flags for each of the _OPT, &lt;br /&gt;
#  _DEBUG, and _TEST cases.&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
LFLAGS_OPT   = -o&lt;br /&gt;
LFLAGS_TEST  = -o&lt;br /&gt;
LFLAGS_DEBUG = -g -o&lt;br /&gt;
&lt;br /&gt;
MACHOBJ = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MV = mv -f&lt;br /&gt;
AR = ar -r&lt;br /&gt;
RM = rm -f&lt;br /&gt;
CD = cd&lt;br /&gt;
RL = ranlib&lt;br /&gt;
ECHO = echo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Ljdursi|ljdursi]] 22:11, 13 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Aeronautics==&lt;br /&gt;
&lt;br /&gt;
==Chemistry==&lt;br /&gt;
&lt;br /&gt;
==Climate Modelling==&lt;br /&gt;
&lt;br /&gt;
==Medicine/Bio==&lt;br /&gt;
&lt;br /&gt;
==High Energy Physics==&lt;br /&gt;
&lt;br /&gt;
==Structural Biology==&lt;br /&gt;
Molecular simulation of proteins, lipids, carbohydrates, and other biologically relevant molecules.&lt;br /&gt;
===Molecular Dynamics (MD) simulation===&lt;br /&gt;
====DESMOND====&lt;br /&gt;
====GROMACS====&lt;br /&gt;
Download and general information: http://www.gromacs.org&lt;br /&gt;
&lt;br /&gt;
Search the mailing list archives: http://oldwww.gromacs.org/swish-e/search/search2.php&lt;br /&gt;
&lt;br /&gt;
=====Compiling and Running GROMACS on Scinet (general information)=====&lt;br /&gt;
Chris Neale has compiled gromacs on GPC, with assistance from Scott Northrup, and&lt;br /&gt;
on the power6 cluster with assistance from Ching-Hsing Yu. Users are welcome to utilize&lt;br /&gt;
these binary executables, but only at their own peril since compiling and testing your own&lt;br /&gt;
executable is safer and more stable.&lt;br /&gt;
&lt;br /&gt;
''Gromacs executables:''&lt;br /&gt;
&lt;br /&gt;
'''GPC:''' /scratch/cneale/exe/intel/gromacs-4.0.5/exec/bin&lt;br /&gt;
&lt;br /&gt;
'''TCS:''' /scratch/cneale/exe/gromacs-4.0.4_aix/exec/bin&lt;br /&gt;
&lt;br /&gt;
Below you will find, in order, scripts for the different compilations that you can follow&lt;br /&gt;
to make your own binaries.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' ''the steps are not listed in order! You must compile fftw before compiling gromacs, and if you are going to use mvapich2-1.4rc1 then you must compile it also before compiling parallel gromacs.''&lt;br /&gt;
&lt;br /&gt;
# Compiling serial single precision gromacs on GPC&lt;br /&gt;
# Compiling openmpi parallel gromacs on GPC&lt;br /&gt;
# Compiling serial gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# Compiling parallel gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# fftw single precision compilation&lt;br /&gt;
# Change to get mvapich2-1.4rc1 to compile gromacs&lt;br /&gt;
# Compiling mvapich2-1.4rc1&lt;br /&gt;
# Compiling gromacs on GPC using mvapich2-1.4rc1&lt;br /&gt;
# Submitting an IB GPC job using openmpi&lt;br /&gt;
# Submitting an IB GPC job using mvapich2-1.4rc1&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling serial single precision gromacs on GPC=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling openmpi parallel gromacs on GPC:=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib/openmpi&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&amp;quot;&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_openmpi&amp;quot; &amp;gt;output.configure.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling serial gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
Note that the -O5 flag for the power6 compilation makes it take about&lt;br /&gt;
20 hours to compile. You can drop that if you want, but it does give&lt;br /&gt;
you a few more percent performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#======================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
# @ job_type = serial&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
## # @ node = 1&lt;br /&gt;
## # @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
export&lt;br /&gt;
PATH=/usr/lpp/ppe.hpct/bin:/usr/vacpp/bin:.:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin:/usr/lpp/LoadL/full/bin:/usr/local/bin&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
mkdir exec&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling parallel gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#===============================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
##### @ job_type = serial&lt;br /&gt;
# @ job_type = parallel&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
# @ node = 1&lt;br /&gt;
# @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
echo &amp;quot;cn-r0-10&amp;quot; &amp;gt; ~/.rhosts&lt;br /&gt;
echo localhost &amp;gt; ~/host.list&lt;br /&gt;
for((i=2;i&amp;lt;=16;i++)); do&lt;br /&gt;
  echo localhost &amp;gt;&amp;gt; ~/host.list&lt;br /&gt;
done&lt;br /&gt;
export MP_HOSTFILE=~/host.list&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--disable-nice --program-suffix=&amp;quot;_mpi&amp;quot; CC=mpcc_r F77=mpxlf_r &amp;gt;&lt;br /&gt;
output.configure_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make mdrun &amp;gt; output.make_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun &amp;gt; output.make_install_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====fftw single precision compilation=====&lt;br /&gt;
&lt;br /&gt;
FFTW is required by GROMACS. This compilation must be completed before compiling GROMACS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
mkdir exec&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
./configure --enable-float --enable-threads --prefix=${FFTW_LOCATION}&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Change to get mvapich2-1.4rc1 to compile gromacs=====&lt;br /&gt;
&lt;br /&gt;
This change is required to the mvapich2-1.4rc1 source code in order to compile GROMACS with it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
src/mpid/ch3/channels/mrail/src/gen2/ibv_channel_manager.c&lt;br /&gt;
line 503&lt;br /&gt;
unsigned long debug = 0;&lt;br /&gt;
to&lt;br /&gt;
static unsigned long debug = 0;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/mvapich2-1.4rc1&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
./configure --prefix=/scratch/cneale/exe/mvapich2-1.4rc1/exec CC=icc&lt;br /&gt;
CXX=icpc F90=ifort F77=ifort &amp;gt;output.configure 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling gromacs on GPC using mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/xcat/bin:/opt/xcat/sbin:/root/bin:/opt/torque/bin:/opt/xcat/bin:/opt/xcat/sbin:/usr/lpp/mmfs/bin:/scratch/cneale/exe/mvapich2-1.4rc1/exec/bin/:/scinet/gpc/x1/intel/Compiler/11.0/081/bin/intel64&lt;br /&gt;
LD_LIBRARY_PATH=/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib/:/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64:/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_mvapich2&amp;quot; &amp;gt;output.configure.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Submitting an IB GPC job using openmpi=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=10:ib:ppn=8,walltime=40:00:00,os=centos53computeA&lt;br /&gt;
#PBS -N 1&lt;br /&gt;
if [ &amp;quot;$PBS_ENVIRONMENT&amp;quot; != &amp;quot;PBS_INTERACTIVE&amp;quot; ]; then&lt;br /&gt;
  if [ -n &amp;quot;$PBS_O_WORKDIR&amp;quot; ]; then&lt;br /&gt;
    cd $PBS_O_WORKDIR&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/bin/mpirun -np $(wc -l&lt;br /&gt;
$PBS_NODEFILE | gawk '{print $1}') -machinefile $PBS_NODEFILE&lt;br /&gt;
/scratch/cneale/exe/intel/gromacs-4.0.5/exec/bin/mdrun_openmpi -deffnm&lt;br /&gt;
pagp -nosum -dlb yes -npme 24 -cpt 120&lt;br /&gt;
## To submit type: qsub this.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Submitting an IB GPC job using mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
Note that mvapich2-1.4rc1 is not configured to fall back to ethernet&lt;br /&gt;
so this will not work on the non-IB nodes, even for 8 cores.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=4:ib:ppn=8,walltime=30:00:00,os=centos53computeA&lt;br /&gt;
#PBS -N 1&lt;br /&gt;
if [ &amp;quot;$PBS_ENVIRONMENT&amp;quot; != &amp;quot;PBS_INTERACTIVE&amp;quot; ]; then&lt;br /&gt;
  if [ -n &amp;quot;$PBS_O_WORKDIR&amp;quot; ]; then&lt;br /&gt;
    cd $PBS_O_WORKDIR&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
module purge&lt;br /&gt;
module load mvapich2 intel&lt;br /&gt;
/scratch/cneale/exe/mvapich2-1.4rc1/bin/mpirun_rsh -np $(wc -l&lt;br /&gt;
$PBS_NODEFILE | gawk '{print $1}') -hostfile $PBS_NODEFILE&lt;br /&gt;
/scratch/cneale/exe/intel/gromacs-4.0.5/exec/bin/mdrun_mvapich2&lt;br /&gt;
-deffnm pagp -nosum -dlb yes -npme 12 -cpt 120&lt;br /&gt;
## To submit type: qsub this.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Things still left to do for GROMACS=====&lt;br /&gt;
&lt;br /&gt;
Intel has it's own fast fourier transform library, which we expect to yield improved performance over fftw.&lt;br /&gt;
We have not yet attempted such a compilation.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====GROMACS benchmarks on Scinet=====&lt;br /&gt;
&lt;br /&gt;
This is a rudimentary list of scaling information.&lt;br /&gt;
 &lt;br /&gt;
I have a 50K atom system running performance on GPC right now. On 56&lt;br /&gt;
cores connected with IB I am getting 55 ns/day. I set up 50 such&lt;br /&gt;
simulations, each with 2 proteins in a bilayer and I'm getting a total&lt;br /&gt;
of 5.5 us per day. I am using gromacs 4.0.5 and a 5&lt;br /&gt;
fs timestep by fixing the bond lengths and all angles involving&lt;br /&gt;
hydrogen.&lt;br /&gt;
&lt;br /&gt;
I can get about 12 ns/day on 8 cores of the non-IB part of GPC -- also&lt;br /&gt;
excellent.&lt;br /&gt;
&lt;br /&gt;
As for larger systems, My speedup over saw.sharcnet.ca for a 1e6 atom&lt;br /&gt;
system is only 1.2x running on 128 cores in single precision. Although saw.sharcnet.ca &lt;br /&gt;
is composed of xeons, they are running at 2.83 GHz (https://www.sharcnet.ca/my/systems/show/41), which is a&lt;br /&gt;
faster clock speed than the Scinet 2.5 GHz for Intel's next-generation X86-CPU architecture.&lt;br /&gt;
While GROMACS is generally not excellent for scaling up to or beyond 128 cores (even for large systems), &lt;br /&gt;
our benchmarking of this system on saw.sharcnet.ca indicated that it was running at about 65% efficiency.&lt;br /&gt;
Benchmarking was also done on Scinet for this system, but was not recorded as we were mostly tinkering with the&lt;br /&gt;
-npme option to mdrun in an attempt to optimize it. My recollection, though, is that the scaling was similar on scinet.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 19 August 2009&lt;br /&gt;
=====Strong scaling for GROMACS on GPC=====&lt;br /&gt;
&lt;br /&gt;
Requested, and on our list to complete, but not yet available in a complete chart form.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 19 August 2009&lt;br /&gt;
=====Scientific studies being carried out using GROMACS on GPC=====&lt;br /&gt;
&lt;br /&gt;
Requested, but not yet available&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 19 August 2009&lt;br /&gt;
====LAMMPS====&lt;br /&gt;
====NAMD====&lt;br /&gt;
NAMD is one of the better scaling MD packages out there. With sufficiently large systems, it is able to scale to hundreds or thousands of cores on Scinet. Below are details for compiling and running NAMD on Scinet.&lt;br /&gt;
&lt;br /&gt;
More information regarding performance and different compile options coming soon...&lt;br /&gt;
&lt;br /&gt;
=====Compiling NAMD for GPC=====&lt;br /&gt;
Ensure the proper compiler/mpi modules are loaded.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
module load intel&lt;br /&gt;
module load openmpi/1.3.3-intel-v11.0-ofed&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Compile Charm++ and NAMD'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#Unpack source files and get required support libraries&lt;br /&gt;
tar -xzf NAMD_2.7b1_Source.tar.gz&lt;br /&gt;
cd NAMD_2.7b1_Source&lt;br /&gt;
tar -xf charm-6.1.tar&lt;br /&gt;
wget http://www.ks.uiuc.edu/Research/namd/libraries/fftw-linux-x86_64.tar.gz&lt;br /&gt;
wget http://www.ks.uiuc.edu/Research/namd/libraries/tcl-linux-x86_64.tar.gz&lt;br /&gt;
tar -xzf fftw-linux-x86_64.tar.gz; mv linux-x86_64 fftw&lt;br /&gt;
tar -xzf tcl-linux-x86_64.tar.gz; mv linux-x86_64 tcl&lt;br /&gt;
#Compile Charm++&lt;br /&gt;
cd charm-6.1&lt;br /&gt;
./build charm++ mpi-linux-x86_64 icc --basedir /scinet/gpc/mpi/openmpi/1.3.3-intel-v11.0-ofed/ --no-shared -O -DCMK_OPTIMIZE=1&lt;br /&gt;
cd ..&lt;br /&gt;
#Compile NAMD. &lt;br /&gt;
#Edit arch/Linux-x86_64-icc.arch and add &amp;quot;-lmpi&amp;quot; to the end of the CXXOPTS and COPTS line.&lt;br /&gt;
#Make a builds directory if you want different versions of NAMD compiled at the same time.&lt;br /&gt;
mkdir builds&lt;br /&gt;
./config builds/Linux-x86_64-icc --charm-arch mpi-linux-x86_64-icc&lt;br /&gt;
cd builds/Linux-x86_64-icc/&lt;br /&gt;
make -j4 namd2 # Adjust value of j as desired to specify number of simultaneous make targets. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[User:Cmadill|Cmadill]] 16:18, 27 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Monte Carlo (MC) simulation===&lt;/div&gt;</summary>
		<author><name>Cmadill</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=User_Codes&amp;diff=548</id>
		<title>User Codes</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=User_Codes&amp;diff=548"/>
		<updated>2009-08-27T16:18:17Z</updated>

		<summary type="html">&lt;p&gt;Cmadill: /* NAMD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
==Astrophysics==&lt;br /&gt;
&lt;br /&gt;
===Athena (explicit, uniform grid MHD code)===&lt;br /&gt;
&lt;br /&gt;
[[Image:StrongScalingAthenaGPC.png|thumb|right|320px|Athena scaling on GPC with OpenMPI and MVAPICH2 on GigE, and OpenMPI on InfiniBand]]&lt;br /&gt;
&lt;br /&gt;
[http://www.astro.princeton.edu/~jstone/athena.html Athena] is a straightforward C code which doesn't use a lot of libraries so it is pretty straightforward to build and compile on new machines.   &lt;br /&gt;
&lt;br /&gt;
It encapsulates its compiler flags, etc in an &amp;lt;tt&amp;gt;Makeoptions.in&amp;lt;/tt&amp;gt; file which is then processed by &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt;.   I've used the following additions to &amp;lt;tt&amp;gt;Makeoptions.in&amp;lt;/tt&amp;gt; on TCS and GPC:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
ifeq ($(MACHINE),scinettcs)&lt;br /&gt;
  CC = mpcc_r&lt;br /&gt;
  LDR = mpcc_r&lt;br /&gt;
  OPT = -O5 -q64 -qarch=pwr6 -qtune=pwr6 -qcache=auto -qlargepage -qstrict&lt;br /&gt;
  MPIINC =&lt;br /&gt;
  MPILIB =&lt;br /&gt;
  CFLAGS = $(OPT)&lt;br /&gt;
  LIB = -ldl -lm&lt;br /&gt;
else&lt;br /&gt;
ifeq ($(MACHINE),scinetgpc)&lt;br /&gt;
  CC = mpicc&lt;br /&gt;
  LDR = mpicc&lt;br /&gt;
  OPT = -O3&lt;br /&gt;
  MPIINC =&lt;br /&gt;
  MPILIB =&lt;br /&gt;
  CFLAGS = $(OPT)&lt;br /&gt;
  LIB = -lm&lt;br /&gt;
else&lt;br /&gt;
...&lt;br /&gt;
endif&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
It performs quite well on the GPC, scaling extremely well even on a strong scaling test out to about 256 cores (32 nodes) on Gigabit ethernet, and performing beautifully on InfiniBand out to 512 cores (64 nodes). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Ljdursi|ljdursi]]  19:20, 13 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===FLASH3 (Adaptive Mesh reactive hydrodynamics; explict hydro/MHD)===&lt;br /&gt;
&lt;br /&gt;
[[Image:weak-scaling-example.png|thumb|right|320px|Weak scaling test of the 2d sod problem on both the GPC and TCS.  The results are actually somewhat faster on the GPC; in both cases (weak) scaling is very good out at least to 256 cores]]&lt;br /&gt;
&lt;br /&gt;
[http://flash.uchicago.edu FLASH] encapsulates its machine-dependant information in the &amp;lt;tt&amp;gt;FLASH3/sites&amp;lt;/tt&amp;gt; directory.  For the GPC, you'll have to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load intel&lt;br /&gt;
module load openmpi&lt;br /&gt;
module load hdf5/183-v16-openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and with that, the following file (&amp;lt;tt&amp;gt;sites/scinetgpc/Makefile.h&amp;lt;/tt&amp;gt;) works for me:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
## Must do module load hdf5/183-v16-openmpi&lt;br /&gt;
HDF5_PATH = ${SCINET_HDF5_BASE}&lt;br /&gt;
ZLIB_PATH = /usr/local&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Compiler and linker commands&lt;br /&gt;
#&lt;br /&gt;
#  We use the f90 compiler as the linker, so some C libraries may explicitly&lt;br /&gt;
#  need to be added into the link line.&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
## modules will put the right mpi in our path&lt;br /&gt;
FCOMP   = mpif77&lt;br /&gt;
CCOMP   = mpicc&lt;br /&gt;
CPPCOMP = mpiCC&lt;br /&gt;
LINK    = mpif77&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Compilation flags&lt;br /&gt;
#&lt;br /&gt;
#  Three sets of compilation/linking flags are defined: one for optimized&lt;br /&gt;
#  code, one for testing, and one for debugging.  The default is to use the &lt;br /&gt;
#  _OPT version.  Specifying -debug to setup will pick the _DEBUG version,&lt;br /&gt;
#  these should enable bounds checking.  Specifying -test is used for &lt;br /&gt;
#  flash_test, and is set for quick code generation, and (sometimes) &lt;br /&gt;
#  profiling.  The Makefile generated by setup will assign the generic token &lt;br /&gt;
#  (ex. FFLAGS) to the proper set of flags (ex. FFLAGS_OPT).&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
FFLAGS_OPT   =  -c -r8 -i4 -O3 -xSSE4.2&lt;br /&gt;
FFLAGS_DEBUG =  -c -g -r8 -i4 -O0&lt;br /&gt;
FFLAGS_TEST  =  -c -r8 -i4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# if we are using HDF5, we need to specify the path to the include files&lt;br /&gt;
CFLAGS_HDF5  = -I${HDF5_PATH}/include&lt;br /&gt;
&lt;br /&gt;
CFLAGS_OPT   = -c -O3 -xSSE4.2&lt;br /&gt;
CFLAGS_TEST  = -c -O2 &lt;br /&gt;
CFLAGS_DEBUG = -c -g  &lt;br /&gt;
&lt;br /&gt;
MDEFS = &lt;br /&gt;
&lt;br /&gt;
.SUFFIXES: .o .c .f .F .h .fh .F90 .f90&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Linker flags&lt;br /&gt;
#&lt;br /&gt;
#  There is a seperate version of the linker flags for each of the _OPT, &lt;br /&gt;
#  _DEBUG, and _TEST cases.&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
LFLAGS_OPT   = -o&lt;br /&gt;
LFLAGS_TEST  = -o&lt;br /&gt;
LFLAGS_DEBUG = -g -o&lt;br /&gt;
&lt;br /&gt;
MACHOBJ = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MV = mv -f&lt;br /&gt;
AR = ar -r&lt;br /&gt;
RM = rm -f&lt;br /&gt;
CD = cd&lt;br /&gt;
RL = ranlib&lt;br /&gt;
ECHO = echo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Ljdursi|ljdursi]] 22:11, 13 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Aeronautics==&lt;br /&gt;
&lt;br /&gt;
==Chemistry==&lt;br /&gt;
&lt;br /&gt;
==Climate Modelling==&lt;br /&gt;
&lt;br /&gt;
==Medicine/Bio==&lt;br /&gt;
&lt;br /&gt;
==High Energy Physics==&lt;br /&gt;
&lt;br /&gt;
==Structural Biology==&lt;br /&gt;
Molecular simulation of proteins, lipids, carbohydrates, and other biologically relevant molecules.&lt;br /&gt;
===Molecular Dynamics (MD) simulation===&lt;br /&gt;
====DESMOND====&lt;br /&gt;
====GROMACS====&lt;br /&gt;
Download and general information: http://www.gromacs.org&lt;br /&gt;
&lt;br /&gt;
Search the mailing list archives: http://oldwww.gromacs.org/swish-e/search/search2.php&lt;br /&gt;
&lt;br /&gt;
=====Compiling and Running GROMACS on Scinet (general information)=====&lt;br /&gt;
Chris Neale has compiled gromacs on GPC, with assistance from Scott Northrup, and&lt;br /&gt;
on the power6 cluster with assistance from Ching-Hsing Yu. Users are welcome to utilize&lt;br /&gt;
these binary executables, but only at their own peril since compiling and testing your own&lt;br /&gt;
executable is safer and more stable.&lt;br /&gt;
&lt;br /&gt;
''Gromacs executables:''&lt;br /&gt;
&lt;br /&gt;
'''GPC:''' /scratch/cneale/exe/intel/gromacs-4.0.5/exec/bin&lt;br /&gt;
&lt;br /&gt;
'''TCS:''' /scratch/cneale/exe/gromacs-4.0.4_aix/exec/bin&lt;br /&gt;
&lt;br /&gt;
Below you will find, in order, scripts for the different compilations that you can follow&lt;br /&gt;
to make your own binaries.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' ''the steps are not listed in order! You must compile fftw before compiling gromacs, and if you are going to use mvapich2-1.4rc1 then you must compile it also before compiling parallel gromacs.''&lt;br /&gt;
&lt;br /&gt;
# Compiling serial single precision gromacs on GPC&lt;br /&gt;
# Compiling openmpi parallel gromacs on GPC&lt;br /&gt;
# Compiling serial gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# Compiling parallel gromacs on the power6 (submitted to the queue):&lt;br /&gt;
# fftw single precision compilation&lt;br /&gt;
# Change to get mvapich2-1.4rc1 to compile gromacs&lt;br /&gt;
# Compiling mvapich2-1.4rc1&lt;br /&gt;
# Compiling gromacs on GPC using mvapich2-1.4rc1&lt;br /&gt;
# Submitting an IB GPC job using openmpi&lt;br /&gt;
# Submitting an IB GPC job using mvapich2-1.4rc1&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling serial single precision gromacs on GPC=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling openmpi parallel gromacs on GPC:=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/include&lt;br /&gt;
-I/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/lib/openmpi&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64&lt;br /&gt;
-I/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&amp;quot;&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_openmpi&amp;quot; &amp;gt;output.configure.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling serial gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
Note that the -O5 flag for the power6 compilation makes it take about&lt;br /&gt;
20 hours to compile. You can drop that if you want, but it does give&lt;br /&gt;
you a few more percent performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#======================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
# @ job_type = serial&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
## # @ node = 1&lt;br /&gt;
## # @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
export&lt;br /&gt;
PATH=/usr/lpp/ppe.hpct/bin:/usr/vacpp/bin:.:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin:/usr/lpp/LoadL/full/bin:/usr/local/bin&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
mkdir exec&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml &amp;gt;output.configure&lt;br /&gt;
2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling parallel gromacs on the power6 (submitted to the queue)=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#===============================================================================&lt;br /&gt;
# Specifies the name of the shell to use for the job&lt;br /&gt;
# @ shell = /usr/bin/ksh&lt;br /&gt;
##### @ job_type = serial&lt;br /&gt;
# @ job_type = parallel&lt;br /&gt;
# @ class = verylong&lt;br /&gt;
# @ node = 1&lt;br /&gt;
# @ tasks_per_node = 1&lt;br /&gt;
# @ output = $(jobid).out&lt;br /&gt;
# @ error = $(jobid).err&lt;br /&gt;
# @ wall_clock_limit = 40:00:00&lt;br /&gt;
#=====================================&lt;br /&gt;
## this is necessary in order to avoid core dumps for batch files&lt;br /&gt;
## which can cause the system to be overloaded&lt;br /&gt;
# ulimits&lt;br /&gt;
# @ core_limit = 0&lt;br /&gt;
#=====================================&lt;br /&gt;
## necessary to force use of infiniband network for MPI traffic&lt;br /&gt;
### TURN IT OFF # @ network.MPI = csss,not_shared,US,HIGH&lt;br /&gt;
#=====================================&lt;br /&gt;
# @ environment=COPY_ALL&lt;br /&gt;
# @ queue&lt;br /&gt;
&lt;br /&gt;
export F77=xlf_r&lt;br /&gt;
export CC=xlc_r&lt;br /&gt;
export CXX=xlc++_r&lt;br /&gt;
export FFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O5 -qarch=pwr6 -qtune=pwr6&amp;quot;&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/fftw-3.1.2_aix/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/gromacs-4.0.4_aix/exec&lt;br /&gt;
export CPPFLAGS=-I$FFTW_LOCATION/include&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
cd /scratch/cneale/exe/gromacs-4.0.4_aix&lt;br /&gt;
echo &amp;quot;cn-r0-10&amp;quot; &amp;gt; ~/.rhosts&lt;br /&gt;
echo localhost &amp;gt; ~/host.list&lt;br /&gt;
for((i=2;i&amp;lt;=16;i++)); do&lt;br /&gt;
  echo localhost &amp;gt;&amp;gt; ~/host.list&lt;br /&gt;
done&lt;br /&gt;
export MP_HOSTFILE=~/host.list&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--disable-nice --program-suffix=&amp;quot;_mpi&amp;quot; CC=mpcc_r F77=mpxlf_r &amp;gt;&lt;br /&gt;
output.configure_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make mdrun &amp;gt; output.make_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun &amp;gt; output.make_install_mpi 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====fftw single precision compilation=====&lt;br /&gt;
&lt;br /&gt;
FFTW is required by GROMACS. This compilation must be completed before compiling GROMACS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
mkdir exec&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
module purge&lt;br /&gt;
module load openmpi intel&lt;br /&gt;
./configure --enable-float --enable-threads --prefix=${FFTW_LOCATION}&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Change to get mvapich2-1.4rc1 to compile gromacs=====&lt;br /&gt;
&lt;br /&gt;
This change is required to the mvapich2-1.4rc1 source code in order to compile GROMACS with it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
src/mpid/ch3/channels/mrail/src/gen2/ibv_channel_manager.c&lt;br /&gt;
line 503&lt;br /&gt;
unsigned long debug = 0;&lt;br /&gt;
to&lt;br /&gt;
static unsigned long debug = 0;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
cd /scratch/cneale/exe/mvapich2-1.4rc1&lt;br /&gt;
mkdir exec&lt;br /&gt;
module purge&lt;br /&gt;
module load intel&lt;br /&gt;
./configure --prefix=/scratch/cneale/exe/mvapich2-1.4rc1/exec CC=icc&lt;br /&gt;
CXX=icpc F90=ifort F77=ifort &amp;gt;output.configure 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install  &amp;gt;output.make_install 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Compiling gromacs on GPC using mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
cd /scratch/cneale/exe/intel/gromacs-4.0.5&lt;br /&gt;
mkdir exec&lt;br /&gt;
PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/xcat/bin:/opt/xcat/sbin:/root/bin:/opt/torque/bin:/opt/xcat/bin:/opt/xcat/sbin:/usr/lpp/mmfs/bin:/scratch/cneale/exe/mvapich2-1.4rc1/exec/bin/:/scinet/gpc/x1/intel/Compiler/11.0/081/bin/intel64&lt;br /&gt;
LD_LIBRARY_PATH=/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib/:/scinet/gpc/x1/intel/Compiler/11.0/081/lib/intel64:/scinet/gpc/x1/intel/Compiler/11.0/081/mkl/lib/em64t/&lt;br /&gt;
export FFTW_LOCATION=/scratch/cneale/exe/intel/fftw-3.1.2/exec&lt;br /&gt;
export GROMACS_LOCATION=/scratch/cneale/exe/intel/gromacs-4.0.5/exec&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I$FFTW_LOCATION/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/include&lt;br /&gt;
-I/scratch/cneale/exe/mvapich2-1.4rc1/exec/lib&amp;quot;&lt;br /&gt;
export LDFLAGS=-L$FFTW_LOCATION/lib&lt;br /&gt;
./configure --prefix=$GROMACS_LOCATION --without-motif-includes&lt;br /&gt;
--without-motif-libraries --without-x --without-xml --enable-mpi&lt;br /&gt;
--program-suffix=&amp;quot;_mvapich2&amp;quot; &amp;gt;output.configure.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make  &amp;gt;output.make.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make install-mdrun  &amp;gt;output.make_install.mpi.mvapich2 2&amp;gt;&amp;amp;1&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Submitting an IB GPC job using openmpi=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=10:ib:ppn=8,walltime=40:00:00,os=centos53computeA&lt;br /&gt;
#PBS -N 1&lt;br /&gt;
if [ &amp;quot;$PBS_ENVIRONMENT&amp;quot; != &amp;quot;PBS_INTERACTIVE&amp;quot; ]; then&lt;br /&gt;
  if [ -n &amp;quot;$PBS_O_WORKDIR&amp;quot; ]; then&lt;br /&gt;
    cd $PBS_O_WORKDIR&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
/scinet/gpc/mpi/openmpi/1.3.2-intel-v11.0-ofed/bin/mpirun -np $(wc -l&lt;br /&gt;
$PBS_NODEFILE | gawk '{print $1}') -machinefile $PBS_NODEFILE&lt;br /&gt;
/scratch/cneale/exe/intel/gromacs-4.0.5/exec/bin/mdrun_openmpi -deffnm&lt;br /&gt;
pagp -nosum -dlb yes -npme 24 -cpt 120&lt;br /&gt;
## To submit type: qsub this.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Submitting an IB GPC job using mvapich2-1.4rc1=====&lt;br /&gt;
&lt;br /&gt;
Note that mvapich2-1.4rc1 is not configured to fall back to ethernet&lt;br /&gt;
so this will not work on the non-IB nodes, even for 8 cores.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=4:ib:ppn=8,walltime=30:00:00,os=centos53computeA&lt;br /&gt;
#PBS -N 1&lt;br /&gt;
if [ &amp;quot;$PBS_ENVIRONMENT&amp;quot; != &amp;quot;PBS_INTERACTIVE&amp;quot; ]; then&lt;br /&gt;
  if [ -n &amp;quot;$PBS_O_WORKDIR&amp;quot; ]; then&lt;br /&gt;
    cd $PBS_O_WORKDIR&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
module purge&lt;br /&gt;
module load mvapich2 intel&lt;br /&gt;
/scratch/cneale/exe/mvapich2-1.4rc1/bin/mpirun_rsh -np $(wc -l&lt;br /&gt;
$PBS_NODEFILE | gawk '{print $1}') -hostfile $PBS_NODEFILE&lt;br /&gt;
/scratch/cneale/exe/intel/gromacs-4.0.5/exec/bin/mdrun_mvapich2&lt;br /&gt;
-deffnm pagp -nosum -dlb yes -npme 12 -cpt 120&lt;br /&gt;
## To submit type: qsub this.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====Things still left to do for GROMACS=====&lt;br /&gt;
&lt;br /&gt;
Intel has it's own fast fourier transform library, which we expect to yield improved performance over fftw.&lt;br /&gt;
We have not yet attempted such a compilation.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 18 August 2009&lt;br /&gt;
=====GROMACS benchmarks on Scinet=====&lt;br /&gt;
&lt;br /&gt;
This is a rudimentary list of scaling information.&lt;br /&gt;
 &lt;br /&gt;
I have a 50K atom system running performance on GPC right now. On 56&lt;br /&gt;
cores connected with IB I am getting 55 ns/day. I set up 50 such&lt;br /&gt;
simulations, each with 2 proteins in a bilayer and I'm getting a total&lt;br /&gt;
of 5.5 us per day. I am using gromacs 4.0.5 and a 5&lt;br /&gt;
fs timestep by fixing the bond lengths and all angles involving&lt;br /&gt;
hydrogen.&lt;br /&gt;
&lt;br /&gt;
I can get about 12 ns/day on 8 cores of the non-IB part of GPC -- also&lt;br /&gt;
excellent.&lt;br /&gt;
&lt;br /&gt;
As for larger systems, My speedup over saw.sharcnet.ca for a 1e6 atom&lt;br /&gt;
system is only 1.2x running on 128 cores in single precision. Although saw.sharcnet.ca &lt;br /&gt;
is composed of xeons, they are running at 2.83 GHz (https://www.sharcnet.ca/my/systems/show/41), which is a&lt;br /&gt;
faster clock speed than the Scinet 2.5 GHz for Intel's next-generation X86-CPU architecture.&lt;br /&gt;
While GROMACS is generally not excellent for scaling up to or beyond 128 cores (even for large systems), &lt;br /&gt;
our benchmarking of this system on saw.sharcnet.ca indicated that it was running at about 65% efficiency.&lt;br /&gt;
Benchmarking was also done on Scinet for this system, but was not recorded as we were mostly tinkering with the&lt;br /&gt;
-npme option to mdrun in an attempt to optimize it. My recollection, though, is that the scaling was similar on scinet.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 19 August 2009&lt;br /&gt;
=====Strong scaling for GROMACS on GPC=====&lt;br /&gt;
&lt;br /&gt;
Requested, and on our list to complete, but not yet available in a complete chart form.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 19 August 2009&lt;br /&gt;
=====Scientific studies being carried out using GROMACS on GPC=====&lt;br /&gt;
&lt;br /&gt;
Requested, but not yet available&lt;br /&gt;
&lt;br /&gt;
-- [[User:Cneale|cneale]] 19 August 2009&lt;br /&gt;
====LAMMPS====&lt;br /&gt;
====NAMD====&lt;br /&gt;
NAMD is one of the better scaling MD packages out there. With sufficiently large systems, it is able to scale to hundreds or thousands of cores on Scinet. Below are details for compiling and running NAMD on Scinet.&lt;br /&gt;
&lt;br /&gt;
=====Compiling NAMD for GPC=====&lt;br /&gt;
Ensure the proper compiler/mpi modules are loaded.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
module load intel&lt;br /&gt;
module load openmpi/1.3.3-intel-v11.0-ofed&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Compile Charm++ and NAMD'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
#Unpack source files and get required support libraries&lt;br /&gt;
tar -xzf NAMD_2.7b1_Source.tar.gz&lt;br /&gt;
cd NAMD_2.7b1_Source&lt;br /&gt;
tar -xf charm-6.1.tar&lt;br /&gt;
wget http://www.ks.uiuc.edu/Research/namd/libraries/fftw-linux-x86_64.tar.gz&lt;br /&gt;
wget http://www.ks.uiuc.edu/Research/namd/libraries/tcl-linux-x86_64.tar.gz&lt;br /&gt;
tar -xzf fftw-linux-x86_64.tar.gz; mv linux-x86_64 fftw&lt;br /&gt;
tar -xzf tcl-linux-x86_64.tar.gz; mv linux-x86_64 tcl&lt;br /&gt;
#Compile Charm++&lt;br /&gt;
cd charm-6.1&lt;br /&gt;
./build charm++ mpi-linux-x86_64 icc --basedir /scinet/gpc/mpi/openmpi/1.3.3-intel-v11.0-ofed/ --no-shared -O -DCMK_OPTIMIZE=1&lt;br /&gt;
cd ..&lt;br /&gt;
#Compile NAMD. &lt;br /&gt;
#Make a builds directory if you want different versions of NAMD compiled at the same time.&lt;br /&gt;
mkdir builds&lt;br /&gt;
./config builds/Linux-x86_64-icc --charm-arch mpi-linux-x86_64-icc&lt;br /&gt;
cd builds/Linux-x86_64-icc/&lt;br /&gt;
make -j4 namd2 # Adjust value of j as desired to specify number of simultaneous make targets. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[User:Cmadill|Cmadill]] 16:18, 27 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Monte Carlo (MC) simulation===&lt;/div&gt;</summary>
		<author><name>Cmadill</name></author>
	</entry>
</feed>