<HTML>
<CENTER><A HREF = "Section_example.html">Previous Section</A> - <A HREF = "https://sparta.github.io">SPARTA WWW Site</A> - <A HREF = "Manual.html">SPARTA Documentation</A> - <A HREF = "Section_commands.html#comm">SPARTA Commands</A> - <A HREF = "Section_tools.html">Next Section</A> 
</CENTER>






<HR>

<H3>8. Performance & scalability 
</H3>
<P>The SPARTA distribution includes a bench sub-directory with several
sample problems.  The Benchmarks page of the <A HREF = "https://sparta.github.io">SPARTA WWW Site</A>
gives timing data for these problems run on different machines,
for both strong and weak scaling scenarioes:
</P>
<UL><LI>free = free molecular flow in a box
<LI>collide = collisional molecular flow in a box
<LI>sphere = flow around a sphere 
</UL>
<P>For each problem there is an input script and sample log file outputs
on different machines and different numbers of processors.  E.g. a log
file like log.free.foo.1M.P means the the free molecular problem with
1 million grid cells ran on P processors of machine "foo".
</P>
<P>Each can be run as a serial benchmark (on one processor) or in
parallel.  In parallel, all the benchmarks can be run as a fixed-size
problem, meaning the same problem is run on various numbers of
processors (strong scaling).  They can also be run as scaled-size
problem, if the problem size is increased with the number of
processors (weak scaling).
</P>
<P>Here is an example of how to run the benchmark problems.  See the
bench/README file for more details.  
</P>
<P>1-processor runs:
</P>
<PRE>spa_g++ -v x 100 -v y 100 -v z 100 < in.free
spa_g++ -v x 100 -v y 100 -v z 100 < in.collide
spa_g++ -v x 50 -v y 50 -v z 50 < in.sphere 
</PRE>
<P>32-processor runs:
</P>
<PRE>mpirun -np 32 spa_g++ -v x 100 -v y 100 -v z 100 < in.free
mpirun -np 32 spa_g++ -v x 100 -v y 100 -v z 100 < in.collide
mpirun -np 32 spa_g++ -v x 50 -v y 50 -v z 50 < in.sphere 
</PRE>
<P>Note that the benchmark scripts define variables that can be set from
the command line that determine the size of problem that is run.
Specifically, the x,y,z variables specify the grid size
(e.g. 100x100x100) that is used, and variable n specifies the number
of particles (10 per grid cell in this case).
</P>
</HTML>
