VT FDI Summer Track V
Parallel Programming
From 08 June to 10 June 2008, I will be an instructor for a 3 day
workshop on parallel computing sponsored by the
Faculty Development Initiative.
The class will be held in Room 3060, Torgersen Hall, Virgina Tech.
Here is the tentative schedule
for the workshop.
Official Description from FDI Website:
Track V - Parallel Programming (Summer Only)
This summer-only track is designed to assist faculty in understanding how to develop
parallel computing applications for use on large scale resources like Virginia Tech's
supercomputing assets: System X, Inferno, Dante, etc. Parallel programming concepts
will be central to this discussion, and participants should have an applications
development background. Participants will learn the basics of the Message Passing
Interface (MPI) for distributed memory systems as well as code optimization for
Symmetric Multiprocessing (SMP) shared memory systems. Emphasis will be placed on
numerical research applications in the computational science and engineering
disciplines, but other disciplines are always welcome. Academic support staff and
graduate teaching assistants may participate with faculty as a 2-person project team.
Lecture Notes:
OpenMP information:
MPI information:
Exercises:
There will be three hands-on sessions during the workshop.
Here are links to the suggested exercises for these sessions:
Exercise Session #1 - Timing and Performance. Run the "hello"
example first, so you are comfortable with how to compile and run programs.
-
heat,
a program to solve the time dependent heat equation.
-
hello,
says "Hello, world!" and that's all!
-
linpack_bench, the Linpack benchmark;
-
mxm,
a matrix-matrix multiplication program;
-
mxv, a matrix-vector multiplication program;
-
prime,
sum the prime numbers from 2 to N.
-
sat,
satisfiability search for all assignments to a set of variables that
make a formula true.
Exercise Session #2 - OpenMP. In most cases, you will be asked
to add OpenMP directives to the program, and demonstrate a speedup.
Run the "hello2" example first, which should be easy to set up and run.
-
grid2,
a grid quadrature program for multidimensional integrals.
-
hello2,
says "Hello!" from each OpenMP thread and that's all!
-
mc2,
a Monte Carlo quadrature program for multidimensional integrals.
-
mxm2,
a matrix-matrix multiplication program;
-
mxv2
a matrix-vector multiplication program.
-
power2
a power method program for eigenvalues.
-
prime2,
sum the prime numbers from 2 to N. This exercise suggests 5 steps toward
converting the sequential program to an OpenMP program.
-
sat2,
redo the satisfiability exercise, letting each processor check a part of
the set of inputs.
Exercise Session #3 - MPI. In most cases, you will be asked
to modify the given sequential program so that it runs in parallel under MPI.
Set up the "hello3" example first and make sure it works.
-
heat3,
a program to solve the time dependent heat equation. A pair of MPI_Send
and MPI_Recv statements are given, but another pair is missing and you
must insert them.
-
hello3,
says "Hello!" from each MPI process and that's all!
-
mc3,
a Monte Carlo quadrature program for multidimensional integrals.
Each process will be generating random numbers. Can you make sure
each process generates a different set of random numbers?
-
prime3,
sum the prime numbers from 2 to N. If you get that done, can you
also "rebalance" the work so that the processes finish at about the same time?
-
sat3,
redo the satisfiability exercise, letting each processor check a part of
the set of inputs.
-
sort3,
an exercise that can be simple or challenging, done on paper or by program.
You can go up one level to
the main web page.
Last revised on 09 June 2008.