| Day | 
Topic | 
Duration | 
| Monday | 
Morning | 
  | 
|   | 
Introduction. Computer architectures and programming paradigms. Message passing. Simple MPI | 
9:00-12:00 | 
|   | 
Afternoon | 
  | 
|   | 
Simple MPI (cont) | 
13:00-14:00 | 
|   | 
Computer lab: Execute ready examples and write your own simple MPI programs | 
14:00-16:00 | 
| Tuesday | 
Morning | 
  | 
|   | 
Communications in MPI. Point-to-point and collective communications. Data distribution. MPI functions. Parallel debugging tools | 
9:00-12:00 | 
|   | 
Afternoon | 
  | 
|   | 
Computer lab: Execute ready examples and write simple MPI programs which illustrate the different types of communications in MPI and possible difficulties. Deadlocks | 
13:00-15:00 | 
|   | 
Load balancing issues, (re)design of algorithms, examples. Trying the TotalView parallel debugger | 
15:00-17:00 | 
| Wednesday | 
Morning | 
  | 
|   | 
Advanced MPI. User-defined data types, datatype constructors. MPI functions. Programming with MPI. Linear algebra problems, operations with vectors and matrices. Data distribution continued - dense and sparse matrices | 
9:00-12:00 | 
|   | 
Afternoon | 
  | 
|   | 
Computer lab: Testing with some Linear Algebra operations such as matrix-vector and matrix-matrix multiplications, matrix transpose, iterative solution methods, domain decomposition | 
13:00-17:00 | 
| Thursday | 
Morning | 
  | 
|   | 
Advanced MPI. Communicators, virtual topologies. Parallel LU. Parallel sort algorithms | 
9:00-12:00 | 
|   | 
Afternoon | 
  | 
|   | 
Presentation of the assignments. | 
13:00-14:00 | 
|   | 
Computer lab. | 
14:00-16:00 | 
| Friday | 
Morning | 
  | 
|   | 
Predicting and measuring parallel performance, scalability issues. Some MPI-2 features. MPI vs or together with OpenMP? Combining MPI and OpenMP. Summary and tendencies. | 
9:00-12:00 | 
|   | 
Afternoon | 
  | 
|   | 
Computer lab: Exercises and preparation for the project work | 
13:00-16:00 |