High Performance Computing
Cod: 22125
Department: DCET
Scientific area: Computer Engineering
Total working hours: 156
Total contact time: 30

High performance computing is the use of a parallel computer in order to reduce the time needed to solve a single instance of a computational problem. This type of computing is currently strongly supported by the existence of a standard library called MPI (Message Passing Interface) for parallel programming by exchanging messages, and by the ease with which it is possible to aggregate low cost personal computers / workstations in order to obtain parallel computing platforms, commonly called “clusters”. This type of platform has been adopted by companies as the first choice for their high computational needs. In this curricular unit it is intended that students learn to analyze and decompose a problem into executable components in parallel and that they implement the respective parallel program using the standard library for exchanging MPI messages.

High Performance Computing
Parallel Programming

It is expected that the student when completing this course unit will be able to:
1. Recognize the role and importance of high performance computing in the broader context of building information and communication systems;
2. Identify the main high performance computing techniques, methodologies and tools;
3. Apply high performance computing techniques to implement computational solutions to solve problems of medium to high complexity.

1. Motivation and history;
2. Parallel architectures;
3. Design of parallel algorithms;
4. Message exchange programming;
5. The MPI library;
6. Performance analysis;
7. Applications.

Michael J. Quinn, Parallel Programming in C with MPI and OpenMP, McGraw-Hill Higher Education, ISBN-13: 978-0071232654.
Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta, Introduction to Parallel Computing, 2nd edition, Pearson - Addison Wesley, ISBN-13: 978-0201648652.


Evaluation is made on individual basis and it involves the coexistence of two modes: continuous assessment (60%) and final evaluation (40%). Further information is detailed in the Learning Agreement of the course unit.

The students are supposed to be proficient in Portuguese language and also in English language at reading level.  Knowledge of  the C programming language is assumed.