
High Perfomance Computing
Code
11165
Academic unit
Faculdade de Ciências e Tecnologia
Department
Departamento de Informática
Credits
6.0
Teacher in charge
Maria Cecília Farias Lorga Gomes, Pedro Abílio Duarte de Medeiros
Weekly hours
4
Total hours
56
Teaching language
Português
Objectives
Knowledge and understanding goals
- Multiprocessor architectures
- Techniques for problem decomposition
- Languages, libraries and tools needed for all the development cycle of a parallel program
Know-how goals
- Performance optimization of a sequential program
- Ability to use tools for measuring the performance of symmetric multiprocessors and clusters
- Multiprocessor programming using C/C++ OpenMP, MPI and OpenCL
Soft-Skills:
- Critical reasoning and evaluation on alternative solutions and approaches for problem solving.
Prerequisites
Students should have knowledge about computer architecture, computer networks and operating systems.
Subject matter
- Parallel computing: hardware, software, applications and performance theory.
- Programming shared-memory multiprocessors. OpenMP. Application examples.
- GPU computing. OpenCL/CUDA.
- Programming distributed-memory multiprocessors. MPI. Application examples.
- Structured Parallel Programming -- structured models and abstractions for parallel programming and existing languages, libraries, and frameworks supporting them.
Bibliography
Main:
- B. Wilkinson, M. Allen, “Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers (2nd Edition)”, Prentice-Hall 2004
Other books:
- P. Pacheco, " An Introduction to Parallel Programming", Morgan Kauffman, 2011
- G. Hager, G. Wellein, “Introduction to High Performance Computing for Engineers and Scientists”, CRC Press, 2011
- B. Gaster, L. Howes, D. Kaeli and P. Mistry, "Heterogeneous Computing with OpenCL", Morgan Kauffman, 2011
Teaching method
Lectures are intended to support the instructor’s presentation of fundamental issues.
Laboratory sessions take place in a general-purpose laboratory with PC-based multi-core nodes for shared memory and distributed-memory programming. A dedicated cluster is also available where cluster management and monitoring tools are installed.