Prerequisites: basic programming skills in Fortran and/or C.

Tentative lecture plan:

  1. hardware fundamentals (multicore processors; memory hierarchy: caches, shared and distributed memory),
  2. what can be parallelized – blocking and similar techniques,
  3. programming on shared memory (POSIX threads and OpenMP),
  4. programming on graphics processors (CUDA and OpenCL),
  5. programming on shared memory (MPI),
  6. algorithms and software for parallel matrix-multiply,
  7. parallel linear system solvers,
  8. parallel eigenproblem and SVD computation.