26-30 July 2018
Barcelona BSC Campus Nord
CET timezone

The registration to this course is now open. Please, bring your own laptop. All the PATC courses at BSC are free of charge.

Course Convener: Xavier Martorell

Objectives: The objectives of this course are to understand the fundamental concepts supporting message-passing and shared memory programming models. The course covers the two widely used programming models: MPI for the distributed-memory environments, and OpenMP for the shared-memory architectures. It also presents the main tools developed at BSC to get information and analyze the execution of parallel applications, Paraver and Extrae. Moreover it sets the basic foundations related with task decomposition and parallelization inhibitors, using a tool to analyze potential parallelism and dependences, Tareador.

Additionally, it presents the Parallware compiler, which is able to automatically parallelize a large number of program structures, and provide hints to the programmer with respect to how to change the code to improve parallelization. It deals with debugging alternatives, including the use of GDB and Totalview. The use of OpenMP in conjunction with MPI to better exploit the shared-memory capabilities of current compute nodes in clustered architectures is also considered. Paraver will be used along the course as the tool to understand the behavior and performance of parallelized codes.

The course is taught using formal lectures and practical/programming sessions to reinforce the key concepts and set up the compilation/execution environment.

Attendants can bring their own applications and work with them during the course for parallelization and analysis.

Learning Outcomes: On completion of this course students should be able to:

  • Develop benchmarks and applications with the MPI, OpenMP/OmpSs and mixed MPI/OpenMP/OmpSs programming models. 
  • Analyze the execition of MPI/OpenMP/OmpSs applications, tune their behaviour, and debug them in parallel architectures.
  • Gain experience with the Tareador and Parallware tools, to obtain hints for a better parallelization of applications.

Level: For trainees with some theoretical and practical knowledge, some programming experience.
Prerequisites: Fortran, C or C++ programming. All examples in the course will be done in C.


Day 1
Session 1 / 10:00 am – 1:00 pm (2h lectures, 1h practical)
1. Introduction to parallel architectures, algorithms design and performance parameters
2. Introduction to the MPI programming model
3. Practical: How to compile and run MPI applications

Session 2 / 2:00pm – 5:00 pm  (1h30' lectures, 1h30' practical)
1. Introduction to Paraver: tool to analyze and understand performance
2. Practical: Trace generation and trace analysis
Day 2
Session 1 / 10:00 am - 1:00 pm (2h lectures, 1h practical)
1. MPI: Point-to-point communication, collective communication
2. Practical: Simple matrix computations
3. MPI: Blocking and non-blocking communications

Session 2 / 2:00 pm - 5:00 pm (1h30' lectures, 1h30' practical)
1. MPI: Collectives, Communicators, Topologies
2. Practical: Heat equation example
Day 3
Session 1 / 10:00 am - 1:00 pm (1h lecture, 2h practical)
1. Parallel debugging in MareNostrumIII, options from print to Totalview
2. Practical: GDB and IDB
3. Practical: Totalview
4. Practical: Valgrind for memory leaks

Session 2 / 2:00 pm - 5:00 pm (2h lectures, 1h practical)
1. Shared-memory programming models, OpenMP fundamentals
2. Parallel regions and work sharing constructs
3. Synchronization mechanisms in OpenMP
4. Practical: heat diffusion in OpenMP
Day 4
Session 1 / 10:00am – 1:00 pm (2h practical, 1h lectures)
1. Tasking in OpenMP 3.0/4.0
2. Programming using a hybrid MPI/OpenMP approach
3. Practical: multisort in OpenMP and hybrid MPI/OpenMP

Session 2 / 2:00pm – 5:00 pm (1h30' lectures, 1h30' practical)
1. Tareador: understanding and predicting the potential of task decomposition strategies
2. Parallware: guided parallelization
Day 5
Session 1 / 10:00 am – 1:00 pm (2h lectures, 1h practical)
1. Introduction to the OmpSs programming model
2. Practical: heat equation example and divide-and-conquer

Session 2 / 2:00pm – 5:00 pm (1h lectures, 2h practical)
1. Programming using a hybrid MPI/OmpSs approach
2. Practical: heat equation example and divide-and-conquer


Starts 26 Jul 2018 10:00
Ends 30 Jul 2018 17:00
Barcelona BSC Campus Nord
Room VS208, Vertex Building

For further details and practical info such as local transport and venue please visit the local course pages for PATC@BSC: http://www.bsc.es/patc