<?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=Cing</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=Cing"/>
	<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php/Special:Contributions/Cing"/>
	<updated>2026-07-10T07:47:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.12</generator>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5474</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5474"/>
		<updated>2012-11-20T18:49:33Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (32, 64, 128, etc.). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. The column &amp;quot;cores&amp;quot; in the following results indicates the number of &amp;quot;physical cores&amp;quot; specified by the '''bg_size''' parameter on the submission script.&lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 32 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|32&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|128&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|256&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Efficiency is respect to the 512/ppn1 simulation.&lt;br /&gt;
&lt;br /&gt;
Comparing 32/ppn4 with 64/ppn4 we observed 85% scaling, within acceptable criteria for production runs. 128/ppn4 simulations showed poor scaling so larger systems were not tested.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|ppn 1&lt;br /&gt;
|9.93&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|ppn 2&lt;br /&gt;
|13.86&lt;br /&gt;
|1.26&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|ppn 3&lt;br /&gt;
|14.72&lt;br /&gt;
|1.34&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|ppn 4&lt;br /&gt;
|15.10&lt;br /&gt;
|1.37&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In an attempt to maximize the number of processes per node (64), one may also utilize less ranks-per-node, such as 2,4 or 8, while requesting a larger number of threads. The performance of using 8-ranks per node on 64-physical nodes with ppn 8 is approximately equal to the performance of the 16-ranks-per-node above. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|32&lt;br /&gt;
|ppn 1&lt;br /&gt;
|1.53&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|32&lt;br /&gt;
|ppn 2&lt;br /&gt;
|2.77&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4&lt;br /&gt;
|4.64&lt;br /&gt;
|1.69&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|32&lt;br /&gt;
|ppn 8&lt;br /&gt;
|6.32&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.79&lt;br /&gt;
|0.51&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|ppn 2&lt;br /&gt;
|5.59&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|ppn 4&lt;br /&gt;
|8.25&lt;br /&gt;
|1.50&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|ppn 8&lt;br /&gt;
|10.71&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Simulations of both 2 and 4 ranks-per-node offered comparable simulation efficiencies to the other full 64 process jobs in this section. The combination of 32 ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. A simulations of ppn=64 with 1 rank-per-node was not successful, and the ppn=32 job required the use of PMEPencils.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|32&lt;br /&gt;
|ppn 32&lt;br /&gt;
|6.35&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|32&lt;br /&gt;
|ppn 32 (only with PMEPencils 8)&lt;br /&gt;
|7.80&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|32&lt;br /&gt;
|ppn 16&lt;br /&gt;
|6.30&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|32&lt;br /&gt;
|ppn 16&lt;br /&gt;
|10.73&lt;br /&gt;
|1.42&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|32&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|32&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5473</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5473"/>
		<updated>2012-11-20T18:47:53Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (32, 64, 128, etc.). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 32 physical core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|256&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|32&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|64&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|128&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|256&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|256&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Efficiency is respect to the 512/ppn1 simulation.&lt;br /&gt;
&lt;br /&gt;
Comparing 32/ppn4 with 64/ppn4 we observed 85% scaling, within acceptable criteria for production runs. 128/ppn4 simulations showed poor scaling so larger systems were not tested.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|64&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|ppn 1&lt;br /&gt;
|9.93&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|ppn 2&lt;br /&gt;
|13.86&lt;br /&gt;
|1.26&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|ppn 3&lt;br /&gt;
|14.72&lt;br /&gt;
|1.34&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|128&lt;br /&gt;
|ppn 4&lt;br /&gt;
|15.10&lt;br /&gt;
|1.37&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In an attempt to maximize the number of processes per node (64), one may also utilize less ranks-per-node, such as 2,4 or 8, while requesting a larger number of threads. The performance of using 8-ranks per node on 64-physical nodes with ppn 8 is approximately equal to the performance of the 16-ranks-per-node above. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|32&lt;br /&gt;
|ppn 1&lt;br /&gt;
|1.53&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|32&lt;br /&gt;
|ppn 2&lt;br /&gt;
|2.77&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4&lt;br /&gt;
|4.64&lt;br /&gt;
|1.69&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|32&lt;br /&gt;
|ppn 8&lt;br /&gt;
|6.32&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.79&lt;br /&gt;
|0.51&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|ppn 2&lt;br /&gt;
|5.59&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|ppn 4&lt;br /&gt;
|8.25&lt;br /&gt;
|1.50&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|64&lt;br /&gt;
|ppn 8&lt;br /&gt;
|10.71&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Simulations of both 2 and 4 ranks-per-node offered comparable simulation efficiencies to the other full 64 process jobs in this section. The combination of 32 ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. A simulations of ppn=64 with 1 rank-per-node was not successful, and the ppn=32 job required the use of PMEPencils.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|32&lt;br /&gt;
|ppn 32&lt;br /&gt;
|6.35&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|32&lt;br /&gt;
|ppn 32 (only with PMEPencils 8)&lt;br /&gt;
|7.80&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|32&lt;br /&gt;
|ppn 16&lt;br /&gt;
|6.30&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|32&lt;br /&gt;
|ppn 16&lt;br /&gt;
|10.73&lt;br /&gt;
|1.42&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|32&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|32&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|32&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5472</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5472"/>
		<updated>2012-11-20T04:53:51Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Efficiency is respect to the 512/ppn1 simulation.&lt;br /&gt;
&lt;br /&gt;
Comparing 512/ppn4 with 1024/ppn4 we observed 85% scaling, within acceptable criteria for production runs. 2048/ppn4 simulations showed poor scaling so larger systems were not tested.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 1&lt;br /&gt;
|9.93&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 2&lt;br /&gt;
|13.86&lt;br /&gt;
|1.26&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 3&lt;br /&gt;
|14.72&lt;br /&gt;
|1.34&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 4&lt;br /&gt;
|15.10&lt;br /&gt;
|1.37&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In an attempt to maximize the number of processes per node (64), one may also utilize less ranks-per-node, such as 2,4 or 8, while requesting a larger number of threads. The performance of using 8-ranks per node on 64-physical nodes with ppn 8 is approximately equal to the performance of the 16-ranks-per-node above. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 1&lt;br /&gt;
|1.53&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 2&lt;br /&gt;
|2.77&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 4&lt;br /&gt;
|4.64&lt;br /&gt;
|1.69&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 8&lt;br /&gt;
|6.32&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.79&lt;br /&gt;
|0.51&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|5.59&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|8.25&lt;br /&gt;
|1.50&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 8&lt;br /&gt;
|10.71&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Simulations of both 2 and 4 ranks-per-node offered comparable simulation efficiencies to the other full 64 process jobs in this section. The combination of 32 ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. A simulations of ppn=64 with 1 rank-per-node was not successful, and the ppn=32 job required the use of PMEPencils.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|64&lt;br /&gt;
|ppn 32&lt;br /&gt;
|6.35&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|128&lt;br /&gt;
|ppn 32 (only with PMEPencils 8)&lt;br /&gt;
|7.80&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|128&lt;br /&gt;
|ppn 16&lt;br /&gt;
|6.30&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|256&lt;br /&gt;
|ppn 16&lt;br /&gt;
|10.73&lt;br /&gt;
|1.42&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately. PME Pencilsn&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5471</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5471"/>
		<updated>2012-11-20T04:51:19Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Efficiency is respect to the 512/ppn1 simulation.&lt;br /&gt;
&lt;br /&gt;
Comparing 512/ppn4 with 1024/ppn4 we observed 85% scaling, within acceptable criteria for production runs. 2048/ppn4 simulations showed poor scaling so larger systems were not tested.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 1&lt;br /&gt;
|9.93&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 2&lt;br /&gt;
|13.86&lt;br /&gt;
|1.26&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 3&lt;br /&gt;
|14.72&lt;br /&gt;
|1.34&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 4&lt;br /&gt;
|15.10&lt;br /&gt;
|1.37&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In an attempt to maximize the number of processes per node (64), one may also utilize less ranks-per-node, such as 2,4 or 8, while requesting a larger number of threads. The performance of using 8-ranks per node on 64-physical nodes with ppn 8 is greater than or equal to the performance of the 16-ranks-per-node above. Larger ppn requests may be unstable, and require the use of PMEPencils. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 1&lt;br /&gt;
|1.53&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 2&lt;br /&gt;
|2.77&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 4&lt;br /&gt;
|4.64&lt;br /&gt;
|1.69&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 8&lt;br /&gt;
|6.32&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.79&lt;br /&gt;
|0.51&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|5.59&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|8.25&lt;br /&gt;
|1.50&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 8&lt;br /&gt;
|10.71&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Simulations of both 2 and 4 ranks-per-node offered comparable simulation efficiencies to the other full 64 process jobs in this section. The combination of 32 ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. A simulations of ppn=64 with 1 rank-per-node was not successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|64&lt;br /&gt;
|ppn 32&lt;br /&gt;
|6.35&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|128&lt;br /&gt;
|ppn 32 (only with PMEPencils 8)&lt;br /&gt;
|7.80&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|128&lt;br /&gt;
|ppn 16&lt;br /&gt;
|6.30&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|256&lt;br /&gt;
|ppn 16&lt;br /&gt;
|10.73&lt;br /&gt;
|1.42&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5470</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5470"/>
		<updated>2012-11-20T04:48:03Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Efficiency is respect to the 512/ppn1 simulation.&lt;br /&gt;
&lt;br /&gt;
Comparing 512/ppn4 with 1024/ppn4 we observed 85% scaling, within acceptable criteria for production runs. 2048/ppn4 simulations showed poor scaling so larger systems were not tested.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 1&lt;br /&gt;
|9.93&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 2&lt;br /&gt;
|13.86&lt;br /&gt;
|1.26&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 3&lt;br /&gt;
|14.72&lt;br /&gt;
|1.34&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 4&lt;br /&gt;
|15.10&lt;br /&gt;
|1.37&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In an attempt to maximize the number of processes per node (64), one may also utilize less ranks-per-node, such as 2,4 or 8, while requesting a larger number of threads. The performance of using 8-ranks per node on 64-physical nodes with ppn 8 is greater than or equal to the performance of the 16-ranks-per-node above. Larger ppn requests may be unstable, and require the use of PMEPencils. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 1&lt;br /&gt;
|1.53&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 2&lt;br /&gt;
|2.77&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 4&lt;br /&gt;
|4.64&lt;br /&gt;
|1.69&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 8&lt;br /&gt;
|6.32&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.79&lt;br /&gt;
|0.51&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|5.59&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|8.25&lt;br /&gt;
|1.50&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 8&lt;br /&gt;
|10.71&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. Simulations larger than ppn 2 were not successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|64&lt;br /&gt;
|ppn 32&lt;br /&gt;
|6.35&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|2&lt;br /&gt;
|128&lt;br /&gt;
|ppn 32 (only with PMEPencils 8)&lt;br /&gt;
|7.80&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|128&lt;br /&gt;
|ppn 16&lt;br /&gt;
|6.30&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|256&lt;br /&gt;
|ppn 16&lt;br /&gt;
|10.73&lt;br /&gt;
|1.42&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5469</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5469"/>
		<updated>2012-11-19T22:48:17Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Efficiency is respect to the 512/ppn1 simulation.&lt;br /&gt;
&lt;br /&gt;
Comparing 512/ppn4 with 1024/ppn4 we observed 85% scaling, within acceptable criteria for production runs. 2048/ppn4 simulations showed poor scaling so larger systems were not tested.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 1&lt;br /&gt;
|9.93&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 2&lt;br /&gt;
|13.86&lt;br /&gt;
|1.26&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 3&lt;br /&gt;
|14.72&lt;br /&gt;
|1.34&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 4&lt;br /&gt;
|15.10&lt;br /&gt;
|1.37&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In an attempt to maximize the number of processes per node (64), one may also utilize less ranks-per-node, 8, but specify a larger number of threads. The performance of using 8-ranks per node on 64-physical nodes with ppn 8 is greater than or equal to the performance of the 16-ranks-per-node above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 1&lt;br /&gt;
|1.53&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 2&lt;br /&gt;
|2.77&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 4&lt;br /&gt;
|4.64&lt;br /&gt;
|1.69&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|256&lt;br /&gt;
|ppn 8&lt;br /&gt;
|6.32&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.79&lt;br /&gt;
|0.51&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|5.59&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|8.25&lt;br /&gt;
|1.50&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|ppn 8&lt;br /&gt;
|10.71&lt;br /&gt;
|1.95&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. Simulations larger than ppn 2 were not successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5468</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5468"/>
		<updated>2012-11-19T20:05:51Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Efficiency is respect to the 512/ppn1 simulation.&lt;br /&gt;
&lt;br /&gt;
Comparing 512/ppn4 with 1024/ppn4 we observed 85% scaling, within acceptable criteria for production runs. 2048/ppn4 simulations showed poor scaling so larger systems were not tested.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 1&lt;br /&gt;
|9.93&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 2&lt;br /&gt;
|13.86&lt;br /&gt;
|1.26&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 3&lt;br /&gt;
|14.72&lt;br /&gt;
|1.34&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 4&lt;br /&gt;
|15.10&lt;br /&gt;
|1.37&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. Simulations larger than ppn 2 were not successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5467</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5467"/>
		<updated>2012-11-19T19:37:44Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing (SMP) Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Efficiency is respect to the 512/ppn1 simulation.&lt;br /&gt;
&lt;br /&gt;
Comparing 512/ppn4 with 1024/ppn4 we observed 85% scaling, within acceptable criteria for production runs. 2048/ppn4 simulations showed poor scaling so larger systems were not tested.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 1&lt;br /&gt;
|9.93&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 2&lt;br /&gt;
|13.86&lt;br /&gt;
|1.26&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 3&lt;br /&gt;
|14.72&lt;br /&gt;
|1.34&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 4&lt;br /&gt;
|15.10&lt;br /&gt;
|1.37&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. Simulations larger than ppn 2 were not successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5466</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5466"/>
		<updated>2012-11-19T19:33:40Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Comparing 512/ppn4 with 1024/ppn4 we observed 85% scaling, within acceptable criteria for production runs. Efficiency is respect to the 512/ppn1 simulation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 1&lt;br /&gt;
|9.93&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 2&lt;br /&gt;
|13.86&lt;br /&gt;
|1.26&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 3&lt;br /&gt;
|14.72&lt;br /&gt;
|1.34&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|ppn 4&lt;br /&gt;
|15.10&lt;br /&gt;
|1.37&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. Simulations larger than ppn 2 were not successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5465</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5465"/>
		<updated>2012-11-19T18:40:42Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing (SMP) Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% compared to the non-SMP benchmarks. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases. Comparing 512/ppn4 with 1024/ppn4 we observed 85% scaling, within acceptable criteria for production runs. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. Simulations larger than ppn 2 were not successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5464</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5464"/>
		<updated>2012-11-19T18:37:48Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing (SMP) Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% using 32 physical nodes. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above. Simulations larger than ppn 2 were not successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5463</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5463"/>
		<updated>2012-11-19T17:31:27Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% using 32 physical nodes. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. Similarly, combinations of ranks-per-node variation AND ppn flags were unsuccessful with the exception of one simulation. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5462</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5462"/>
		<updated>2012-11-19T17:30:50Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Performance Tuning Benchmarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All ns/day measurements were obtained from the standard output Benchmarking lines within the first few minutes of simulation and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% using 32 physical nodes. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. Similarly, combinations of ranks-per-node variation AND ppn flags were unsuccessful with the exception of one simulation. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5461</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5461"/>
		<updated>2012-11-19T17:30:15Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing (SMP) Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All ns/day measurements were obtained from the standard output Benchmarking lines within the first few minutes of simulation and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% using 32 physical nodes. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. Similarly, combinations of ranks-per-node variation AND ppn flags were unsuccessful with the exception of one simulation. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node and ppn 4 as above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5460</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5460"/>
		<updated>2012-11-19T17:29:02Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing (SMP) Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All ns/day measurements were obtained from the standard output Benchmarking lines within the first few minutes of simulation and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% using 32 physical nodes. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. Similarly, combinations of ranks-per-node variation AND ppn flags were unsuccessful with the exception of one simulation. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The combination of increased ranks-per-node and mulithreading was not as effective as using the normal 16 ranks-per-node as above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PME pencils offered minimal improvements when selected appropriately.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5459</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5459"/>
		<updated>2012-11-19T17:25:21Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Symmetric multiprocessing (SMP) Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All ns/day measurements were obtained from the standard output Benchmarking lines within the first few minutes of simulation and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% using 32 physical nodes. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. Similarly, combinations of ranks-per-node variation AND ppn flags were unsuccessful with the exception of one simulation. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5458</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5458"/>
		<updated>2012-11-19T17:23:37Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section. All ns/day measurements were obtained from the standard output Benchmarking lines within the first few minutes of simulation and may not represent long-time averages. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following results utilize this feature and offer performance increases of up to 40% using 32 physical nodes. Processors per node (ppn) was varied from 1 (not multithreaded) to 4. Values greater than 4 resulted in a crash. Similarly, combinations of ranks-per-node variation AND ppn flags were unsuccessful with the exception of one simulation. The addition of the Charm++ flag &amp;quot;+CmiNoProcForComThread&amp;quot; to the NAMD binary had negligible improvements in all cases.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.50&lt;br /&gt;
|2.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.31&lt;br /&gt;
|2.30&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.54&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31&lt;br /&gt;
|1.51&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56&lt;br /&gt;
|1.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.60&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.58&lt;br /&gt;
|1.92&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45&lt;br /&gt;
|1.62&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.26&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88&lt;br /&gt;
|1.05&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.34&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35&lt;br /&gt;
|2.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.24&lt;br /&gt;
|2.27&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5457</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5457"/>
		<updated>2012-11-19T17:16:03Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used: nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10. &lt;br /&gt;
&lt;br /&gt;
The following benchmarks were performed with the non-SMP NAMD build with exception to the last section.&lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Symmetric multiprocessing (SMP) Study ==&lt;br /&gt;
All the prior benchmarks were performed with a non-SMP NAMD binary, thus true multithreading was not possible. The following &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1&lt;br /&gt;
|2.75&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2&lt;br /&gt;
|4.60&lt;br /&gt;
|1.67&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3&lt;br /&gt;
|5.59&lt;br /&gt;
|2.03&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4&lt;br /&gt;
|6.31&lt;br /&gt;
|2.29&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|2.74&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|4.62&lt;br /&gt;
|1.68&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 3, +CmiNoProcForComThread&lt;br /&gt;
|5.49885623790252&lt;br /&gt;
|1.99934563610769&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|6.30749014454665&lt;br /&gt;
|2.29335926412615&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 1&lt;br /&gt;
|5.53831498612652&lt;br /&gt;
|1.00684628037535&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 2&lt;br /&gt;
|8.31342729353603&lt;br /&gt;
|1.51135198496932&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 3&lt;br /&gt;
|8.56076430503716&lt;br /&gt;
|1.55631698798069&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4&lt;br /&gt;
|10.5920197604721&lt;br /&gt;
|1.92559212038466&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|ppn 4, +CmiNoProcForComThread&lt;br /&gt;
|10.5836494610629&lt;br /&gt;
|1.92407042924813&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 1, +CmiNoProcForComThread&lt;br /&gt;
|4.45216813167732&lt;br /&gt;
|1.61877716750095&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|ppn 2, +CmiNoProcForComThread&lt;br /&gt;
|6.25934990391898&lt;br /&gt;
|2.27585580961561&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 4&lt;br /&gt;
|2.88341765728082&lt;br /&gt;
|1.04839047626371&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 16&lt;br /&gt;
|6.3429104233047&lt;br /&gt;
|2.30623782954063&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 20&lt;br /&gt;
|6.35005302294274&lt;br /&gt;
|2.30883482877082&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ppn 4, pmePencils 24&lt;br /&gt;
|6.23756385705999&lt;br /&gt;
|2.26793455548001&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5452</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5452"/>
		<updated>2012-11-16T03:20:13Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used (nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10). &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils). These simulations offered the best performance and were used in production simulations. Note that 1024, the first entry in the table, means that 512 physical cores were requested, but due to the double ranks-per-node, a total of 1024 virtual cores were used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5405</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5405"/>
		<updated>2012-11-05T19:57:04Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used (nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10). &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices and no PME Pencils).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5404</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5404"/>
		<updated>2012-11-05T19:56:39Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used (nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10). &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively (for the default twoAway choices).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5403</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5403"/>
		<updated>2012-11-05T19:56:16Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used (nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10). &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5402</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5402"/>
		<updated>2012-11-05T19:55:44Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. The following non-bonded frequency parameters were also used (nonbondedFreq=1, fullElectFrequency=2, stepspercycle=10). &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5401</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5401"/>
		<updated>2012-11-05T19:51:47Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes respectively.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5400</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5400"/>
		<updated>2012-11-05T19:50:22Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.43&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.3&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|1.12&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5399</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5399"/>
		<updated>2012-11-05T19:41:32Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. The following efficiency estimates are measured with respect to the 16 ranks per node results for the same number of nodes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.44&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.23&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|0.89&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5398</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5398"/>
		<updated>2012-11-05T19:38:41Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 due to memory errors, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.44&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.23&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|0.89&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5397</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5397"/>
		<updated>2012-11-05T19:37:54Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64 for all simulations, and also resulted in out of memory errors for 16384 core simulations of 32 ranks per node. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.44&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.23&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|0.89&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5396</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5396"/>
		<updated>2012-11-05T19:29:12Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. In this study, memory requirements were too large to use 64, and resulted in out of memory errors for 16384 core simulations of 32 ranks per node. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|4.46&lt;br /&gt;
|1.6&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|2048&lt;br /&gt;
|&lt;br /&gt;
|8.01&lt;br /&gt;
|1.44&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|&lt;br /&gt;
|13.74&lt;br /&gt;
|1.23&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|&lt;br /&gt;
|19.81&lt;br /&gt;
|0.89&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5378</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5378"/>
		<updated>2012-10-30T04:03:17Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64. Benchmarks to be updated for this section...&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5377</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5377"/>
		<updated>2012-10-30T00:11:36Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Incorrect Particle-Mesh Ewald Grid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero, with no measurable effect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect with none of the grid dimensions are divisible by 5. One can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5376</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5376"/>
		<updated>2012-10-29T23:47:53Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms and the simulation time-step was 2fs. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero, with no measurable effect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect where one can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5375</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5375"/>
		<updated>2012-10-29T22:33:39Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Incorrect Particle-Mesh Ewald Grid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero, with no measurable effect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect where one can draw a comparison to a more correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5374</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5374"/>
		<updated>2012-10-29T22:33:22Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Incorrect Particle-Mesh Ewald Grid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero, with no measurable effect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect where one can draw a comparison to the correct PME choice in the Performance Tuning Benchmarks above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5373</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5373"/>
		<updated>2012-10-29T22:31:23Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero, with no measurable effect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5372</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5372"/>
		<updated>2012-10-29T22:29:38Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc). The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5371</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5371"/>
		<updated>2012-10-29T22:29:17Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster, [[BGQ]], with attention to NAMD performance tuning documentation. Determining optimal parameters for a NAMD simulation on this system is more difficult as there are only certain simulation sizes that have optimal topologies (512, 1024, etc.) The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5370</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5370"/>
		<updated>2012-10-29T22:26:33Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Performance Tuning Benchmarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster with attention to NAMD performance tuning documentation. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three &amp;quot;'''Benchmark time'''&amp;quot; lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5369</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5369"/>
		<updated>2012-10-29T22:26:17Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Incorrect Particle-Mesh Ewald Grid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster with attention to NAMD performance tuning documentation. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three '''Benchmark time''' lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the &amp;quot;'''pmeGridSpacing 1.0'''&amp;quot; setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5368</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5368"/>
		<updated>2012-10-29T22:26:01Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Ranks-Per-Node Study */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster with attention to NAMD performance tuning documentation. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three '''Benchmark time''' lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency. Additionally, one study was conducted with the flag &amp;quot;'''ldbUnloadZero yes'''&amp;quot; which supposedly ensures no work is scheduled for processor zero.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the '''pmeGridSpacing 1.0''' setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5367</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5367"/>
		<updated>2012-10-29T22:24:41Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* PME Pencils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster with attention to NAMD performance tuning documentation. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three '''Benchmark time''' lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the '''pmeGridSpacing 1.0''' setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5366</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5366"/>
		<updated>2012-10-29T22:22:07Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster with attention to NAMD performance tuning documentation. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three '''Benchmark time''' lines at the beginning of the simulation's standard output. In this section, the PME patch grid was manually doubled in either the X, Y, or Z directions. Default PME patch doubling in NAMD 2.9 is generally recommended (twoAway parameters need not be specified in the configuration file). &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PME Pencils ==&lt;br /&gt;
A &amp;quot;pencil-based&amp;quot; PME decomposition may be more efficient than the default &amp;quot;slab-based decomposition&amp;quot;. In this study PME pencil grids are created for both dedicated PME nodes (lblUnload=yes benchmarks) and non-dedicated PME nodes. Fine-tuning of PMEPencils resulted in insignificant performance gains for this study.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ranks-Per-Node Study ==&lt;br /&gt;
The &amp;quot;ranks-per-node&amp;quot; or simply the number of processes per compute node is a Blue Gene/Q runjob command parameter. For some simulations increasing the number of processes beyond the normal 16 may be more effective. In this study, memory requirements were too large to use 64 and decreased performance using 32. Ranks per node of less than 16 were also tested, although this would be less than optimal for cluster efficiency.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the '''pmeGridSpacing 1.0''' setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5365</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5365"/>
		<updated>2012-10-29T22:08:13Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster with attention to NAMD performance tuning documentation. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three '''Benchmark time''' lines at the beginning of the simulation's standard output and any additional configuration options are listed where they are used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the '''pmeGridSpacing 1.0''' setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5364</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5364"/>
		<updated>2012-10-29T22:07:18Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster with attention to NAMD performance tuning documentation. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency is measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started using a restart file from a pre-equilibrated snapshot. Performance in nanoseconds per day is based on the geometric mean of the three '''Benchmark time''' lines at the beginning of the simulation's standard output and any additional configuration options are listed where they are used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the '''pmeGridSpacing 1.0''' setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5363</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5363"/>
		<updated>2012-10-29T22:03:22Z</updated>

		<summary type="html">&lt;p&gt;Cing: /* Incorrect Particle-Mesh Ewald Grid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster with attention to NAMD performance tuning documentation. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency us measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started from a pre-equilibrated snapshots restart file. Performance in nanoseconds per day is based on the geometric mean of the three '''Benchmark time''' lines at the beginning of the simulation's standard output and any additional configuration options are listed where they are used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations above with PME grid spacing set to be generated automatically with the '''pmeGridSpacing 1.0''' setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation due to the matrix size requirements in the FFT algorithm. Below is an example of the type of performance degradation that one may expect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5362</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5362"/>
		<updated>2012-10-29T21:56:34Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A parameter study was undertaken to test simulation performance and efficiency of NAMD on the Blue Gene/Q cluster with attention to NAMD performance tuning documentation. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency us measured with respect to the 16 ranks-per-node 512 core simulation. All simulations are started from a pre-equilibrated snapshots restart file. Performance in nanoseconds per day is based on the geometric mean of the three '''Benchmark time''' lines at the beginning of the simulation's standard output and any additional configuration options are listed where they are used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations with PME grid spacing set to be generated automatically with the '''pmeGridSpacing 1.0''' setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5361</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5361"/>
		<updated>2012-10-29T21:51:49Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Taking into consideration the NAMD performance tuning documentation, a parameter study was undertaken to test simulation performance and efficiency of NAMD on the BG/Q cluster. The system of study is a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase] embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. &lt;br /&gt;
&lt;br /&gt;
== Performance Tuning Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
Efficiency was measured with respect to the 16 ranks-per-node 512 core simulation. All simulations were conducted from a restart trajectory from an equilibrated system.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Incorrect Particle-Mesh Ewald Grid ==&lt;br /&gt;
&lt;br /&gt;
Long-range electrostatics are computed using PME for all simulations with PME grid spacing set to be generated automatically with the '''pmeGridSpacing 1.0''' setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in increasingly large performance degradation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|2.70&lt;br /&gt;
|0.97&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|5.13&lt;br /&gt;
|0.92&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|8.61&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|13.93&lt;br /&gt;
|0.62&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.08&lt;br /&gt;
|0.38&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|Poor PME Multiple (144x144x111)&lt;br /&gt;
|17.64&lt;br /&gt;
|0.20&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5360</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5360"/>
		<updated>2012-10-29T21:38:57Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Taking into consideration the official (test)[NAMD performance tuning recommendations], a parameter study was undertaken to test simulation performance and efficiency on the BG/Q cluster. Efficiency was measured with respect to the 16 ranks-per-node 512 core simulation. All simulations were conducted from a restart trajectory from an equilibrated system.&lt;br /&gt;
&lt;br /&gt;
The following study was undertaken for a 246,000 atom membrane protein simulation ([http://www.rcsb.org/pdb/explore.do?structureId=1m56 Cytochrome c Oxidase]   embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). The unit cell is cubic with box dimensions 144 x 144 x 117 Angstroms. Long-range electrostatics are computed using PME for all simulations with PME grid spacing set to be generated automatically with the '''pmeGridSpacing 1.0''' setting. A poor choice in PME grid spacing (i.e. not a multiple of 2,3, and 5) can result in performance degradation of &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.05&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.62&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.07&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.59&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.32&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.63&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.79&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.52&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|25.00&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.67&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.31&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.98&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.93&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.27&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.02&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.41&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.21&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.92&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.83&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.97&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.24&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.99&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.94&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.86&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.84&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.29&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|ldbUnloadZero=yes&lt;br /&gt;
|2.79&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5359</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5359"/>
		<updated>2012-10-29T21:26:45Z</updated>

		<summary type="html">&lt;p&gt;Cing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Taking into consideration the official (test)[NAMD performance tuning recommendations], a parameter study was undertaken to test simulation performance and efficiency on the BG/Q cluster. &lt;br /&gt;
&lt;br /&gt;
The following study was undertaken for a 246,000 atom membrane protein (Cytochrome c Oxdaise embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). Efficiency was measured with respect to the 16 ranks-per-node 512 core simulation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.7874&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.0483&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.6204&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.0699&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.5875&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.3285&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.6313&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.7962&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.5198&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|24.9981&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.6706&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.3096&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.9791&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=8, lblUnload=yes&lt;br /&gt;
|12.9322&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12, lblUnload=yes&lt;br /&gt;
|17.2722&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16, lblUnload=yes&lt;br /&gt;
|16.0208&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20, lblUnload=yes&lt;br /&gt;
|15.4154&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=12&lt;br /&gt;
|16.2079&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=16&lt;br /&gt;
|17.9231&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.9949&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=24&lt;br /&gt;
|17.8308&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=36&lt;br /&gt;
|16.9666&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|18.2473&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|17.9949&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, PMEPencils=20&lt;br /&gt;
|13.9414&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.8589&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.8367&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.7874&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.2951&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|unloadZero&lt;br /&gt;
|2.7932&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5358</id>
		<title>Namd on BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Namd_on_BGQ&amp;diff=5358"/>
		<updated>2012-10-29T21:25:24Z</updated>

		<summary type="html">&lt;p&gt;Cing: Created page with &amp;quot;Taking into consideration the official (test)[NAMD performance tuning recommendations], a parameter study was undertaken to test simulation performance and efficiency on the B...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Taking into consideration the official (test)[NAMD performance tuning recommendations], a parameter study was undertaken to test simulation performance and efficiency on the BG/Q cluster. &lt;br /&gt;
&lt;br /&gt;
The following study was undertaken for a 246,000 atom membrane protein (Cytochrome c Oxdaise embedded in a TIP3P solvated DPPC bilayer) using the CHARMM36 forcefield (protein and lipids). Efficiency was measured with respect to the 16 ranks-per-node 512 core simulation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Ranks&lt;br /&gt;
|Cores&lt;br /&gt;
|NAMD Config Options&lt;br /&gt;
|ns/day&lt;br /&gt;
|Efficiency&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.7874&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|&lt;br /&gt;
|5.0483&lt;br /&gt;
|0.91&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|1024&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|5.6204&lt;br /&gt;
|1.01&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayX (default)&lt;br /&gt;
|10.0699&lt;br /&gt;
|0.90&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|2048&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|10.5875&lt;br /&gt;
|0.95&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|14.3285&lt;br /&gt;
|0.64&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|17.6313&lt;br /&gt;
|0.79&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXYZ&lt;br /&gt;
|16.7962&lt;br /&gt;
|0.75&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.5198&lt;br /&gt;
|0.53&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|8192&lt;br /&gt;
|twoAwayXY (default)&lt;br /&gt;
|24.9981&lt;br /&gt;
|0.56&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayX&lt;br /&gt;
|23.6706&lt;br /&gt;
|0.27&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXY&lt;br /&gt;
|28.3096&lt;br /&gt;
|0.32&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|16384&lt;br /&gt;
|twoAwayXYZ (default)&lt;br /&gt;
|27.9791&lt;br /&gt;
|0.31&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils8, lblUnload=yes&lt;br /&gt;
|12.9322&lt;br /&gt;
|0.58&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils12, lblUnload=yes&lt;br /&gt;
|17.2722&lt;br /&gt;
|0.77&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils16, lblUnload=yes&lt;br /&gt;
|16.0208&lt;br /&gt;
|0.72&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils20, lblUnload=yes&lt;br /&gt;
|15.4154&lt;br /&gt;
|0.69&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils12&lt;br /&gt;
|16.2079&lt;br /&gt;
|0.73&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils16&lt;br /&gt;
|17.9231&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils20&lt;br /&gt;
|17.9949&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils24&lt;br /&gt;
|17.8308&lt;br /&gt;
|0.80&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils36&lt;br /&gt;
|16.9666&lt;br /&gt;
|0.76&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils20&lt;br /&gt;
|18.2473&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils20&lt;br /&gt;
|17.9949&lt;br /&gt;
|0.81&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|4096&lt;br /&gt;
|twoAwayXY, Pencils20&lt;br /&gt;
|13.9414&lt;br /&gt;
|0.63&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|4&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.8589&lt;br /&gt;
|1.03&lt;br /&gt;
|----&lt;br /&gt;
|8&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.8367&lt;br /&gt;
|1.02&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.7874&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|32&lt;br /&gt;
|512&lt;br /&gt;
|&lt;br /&gt;
|2.2951&lt;br /&gt;
|0.82&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|----&lt;br /&gt;
|16&lt;br /&gt;
|512&lt;br /&gt;
|unloadZero&lt;br /&gt;
|2.7932&lt;br /&gt;
|1.00&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/2.9/ug/node39.html NAMD 2.9 User Guide]&lt;br /&gt;
# [http://www.ks.uiuc.edu/Research/namd/wiki/?NamdPerformanceTuning NAMD Performance Tuning Wiki]&lt;/div&gt;</summary>
		<author><name>Cing</name></author>
	</entry>
</feed>