<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">Your task in the current exercise
figuring out to optimally use the OpenMP system in EACH of those
running processes. Remember -- all you have to get done for this
exercise is to demonstrate that your MPI code can be sped up by
using it in combination with OpenMP.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">You will need to compile using mpicc,
but because I built MPI off of the newest GCC compiler, now you
can also turn on the OpenMP stuff...</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">mpicc -fopenmp mmm_mpi.c -o mmm_mpi
-lm -lgomp -lopenblas<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">You can then specify the number of
threads per system via a command line argument OR via the
OMP_NUM_THREADS environment variables.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">My recommendations... <br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<blockquote>
<div class="moz-cite-prefix">As you saw from my graph last week,
you should be able to see speedups on less than 10 systems using
MPI alone. There is no need at this point to try and allocate
all of the nodes of the cluster (that comes in the next
assignment). There is also no need, at this point, to try and
run scripts that exhaustively run all possible combinations of
nodes and processes per node. A handful of well thought out
PBS/Torque jobs should be sufficient -- but you need to run
enough to prove your claim graphically.<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">There are LOTS of flags that you can
play with both for MPI and OpenMP. Keep is simple and follow my
examples. However, one that you will most likely have to use is
the one we saw when we tried to schedule more threads than cores
-- the "oversubscribe" flag on the mpirun command line. MPI may
need this to allow more than one OpenMP process to run
concurrently. <br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">As you have already seen - contention
for the nodes could get to be interesting as we move toward the
final project. Don't put this off.<br>
</div>
</blockquote>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<p></p>
<div class="moz-signature">-- <br>
<b><i>Andrew J. Pounds, Ph.D.</i></b><br>
<i>Professor of Chemistry and Computer Science</i><br>
<i>Director of the Computational Science Program</i><br>
<i>Mercer University, Macon, GA 31207 (478) 301-5627</i></div>
</body>
</html>