Heterogeneous High Performance Computing

Academic year
Subject Area
Language of Instruction
Other Languages of Instruction
Mode of Delivery
ECTS Credits
2nd Cycle Studies - Mestrado

Recommended Prerequisites

Computer Programming, Microprocessors Systems, Data Structures and Algorithms, Computer Architectures (knowledge of programming languages, C/C ++, computer architectures

Teaching Methods

This discipline has 4 hours of weekly contact:

- Lectures, supported by slides and the study of book chapters;

- Laboratory classes, conducting work with increasing degree of difficulty, clarifying questions and evaluating assignments.

Learning Outcomes

The course's main objective is the acquisition of basic knowledge regarding the operation of a high performance heterogeneous computing system from the programmer and computer system designer’s perspective.


The student must be able to efficiently program modern systems with multiple and heterogeneous processors, partitioning computation, mastering the most appropriate programming languages, and also exploiting the flexibility of reconfigurable devices for the development of customizable heterogeneous systems. Thus, he/she should be able to better explore the evolution of computer systems that tend to become more heterogeneous and support distinct performance requirements.


In the end, the student should be capable of designing the most suitable heterogeneous system, and fast and efficient algorithm that will achieve the maximum processing time requirements specified by the application

Work Placement(s)



M1: Introduction to parallel processing architectures of multi-core type / multi-processor

-Organization and operation of multi-processor architectures of the CPU and GPU type

-Analysis of parallel algorithms: decomposition techniques and synchronization

-Programming multicore processors

-Efficient use of the memory hierarchy

-OpenACC libraries and directives: heterogeneous computing portable between CPU and GPU


M2: Programming multicore GPUs

-CUDA and OpenCL languages

-Performance optimization techniques: organization of data structures, synchronization, divergence, coalescence, load balancing and scaling

-Performance Analysis


M3: Frameworks and high-level programming tools for generating heterogeneous hardware

-Reconfigurable FPGA-based architectures for multi-processor systems

-High-level synthesis: OpenCL as hardware-generating tool

-High performance heterogeneous reconfigurable Computing

Head Lecturer(s)

Gabriel Falcão Paiva Fernandes

Assessment Methods

Frequency: 25.0%
Exam: 25.0%
Laboratory work or Field work: 50.0%


1. Slides das aulas

2. URL: http://www.openacc.org/, NVIDIA, 2016.

3. David B. Kirk, Wen-mei W. Hwu. “Programming Massively Parallel Processors: A Hands-on Approach (Applications of GPU Computing Series)”, 1st Edition, ISBN-13: 978-0123814722, Morgan Kaufmann, February 2010.

4. David R. Kaeli, Perhaad Mistry, Dana Schaa and Dong Ping Zhang. “Heterogeneous Computing with OpenCL 2.0”, 3rd Edition, Morgan Kaufmann, ISBN: 9780128014141, May 2015.