Introduction to Parallel Programming

Date: Fri, May 6 - Fri, May 20 2016

Hour: 15:00

Speakers: Albert Farres, BSC - Barcelona Supercomputing Center

Dates: 16-20 May 2016 (5 sessions)
Time: 15:00 - 17:00 (a total of 10 hours)

The aim of this course is to provide only a very quick overview of the extensive and broad topic of Parallel Computing. As such, it covers just the very basics of parallel computing, and is intended for someone who is just becoming acquainted with the subject and who is planning to expand his knowledge in this field. It is not intended to cover Parallel Programming in depth, as this would require significantly more time. The course begins with a discussion on parallel computing, what it is and how it is used, followed by a discussion on concepts and terminology associated with parallel computing. The topics of parallel memory architectures and programming models (MPI and OpenMP) are then explored. Finally, newer and upcoming parallel computing architectures (GPUs and Intel Xeon Phi) and its associated programming models are mentioned. All concepts and technologies explored are put into practice in a series of hands on sessions.

Session 1: Introduction
- HPC hierarchy
- History of HPC
- Why is it necessary?
- From grids to cores
- Parallelism paradigms
Session 2: MPI
- Point-to-point communication, collective communication
- Blocking and non-blocking communication
- Communicators, topologies
- Derived data types
- Tips & Tricks
Session 3: OpenMP
- Parallel and work-sharing constructs
- Synchronizations mechanisms
- Tasking constructs
- Hybrid programs with MPI/OpenMP
- Tips & Tricks
Session 4: Newer and upcoming technologies
- Architectures: GPUs, MICs, FPGAs
- Programming models: MPI-2, OpenCL, OpenAcc, DSLs
Session 5: Hands-on

- Lawrence Livermore National Laboratory MPI and OpenMP tutorials
- OpenMP 4.0 complete specifications
- MPI 1.3 complete reference
- Kernighan, B. W. & Ritchie, D. M. (ed.) The C Programming Language. Prentice Hall Professional Technical Reference, 1988
- Cormen, T. H.; Leiserson, C. E.; Rivest, R. L. & Stein, C. Introduction to Algorithms, Third Edition. The MIT Press, 2009
- Rauber, T. & Rünger, G. Parallel Programming - for Multicore and Cluster Systems. Springer, 2010

*Registration is free, but inscription is required before 11th May: So as to inscribe send an e-mail to Student grants are available. Please, let us know if you need support for travel and accommodation expenses.




Confirmed speakers:

Albert Farres, BSC - Barcelona Supercomputing Center