(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.