Homework
(Homework for previous course offering)
Find OpenMP, MPI, Pthreads references, learn on your own how to write a "hello
world, I'm task #x" program. Find local installations/tools supporting these
three parallel programming methods.
Look at Perfect benchmarks. /home/alps/a/eigenman/bench/perf/orig contains the
original, sequential Perfect
Benchmarks. /home/alps/a/eigenman/bench/perf/csrd/fx80 contains the parallel
codes, written in the "Cedar Fortran" parallel fortran dialect. Look
specifically at the code MDG (subdirectory LW/). Look at loop 1000 in
subroution interf. Compare with lecture slides 38-40. Also, look at code ARC2D
(subdirectory SR/) and compare with lecture slides 41-47).
Look at the SPEC CPU2000 benchmark suite
(/home/yara/babak1/SYSTEM/arch/tools/spec2000)
and compare to SPEC OMPM2001
(/home/alps/a/eigenman/bench/OMPM2001)
The SPEC OMP codes are hand-parallelized versions of the SPEC CPU2000 codes.
Identify the parallelizing transformations. Can you find out which of these
transformations make the biggest performance difference?
Implement the PI program serial, in OpenMP, MPI, and Pthreads. Measure the
speedup curve on as large a parallel machine that you can
find. For the MPI implementation, choose a distributed memory
machine. Also, run the MPI program on a number of
workstations. In all cases, run the program in both single
user mode (when no one else is using the machine) and in
multi-user mode. Compare the speedups and the reproducibility
of the performance results. Do these experiments in both C
and Fortran.