Heterogeneous High Performance Computing
0
2022-2023
02035039
Computers
Portuguese
English
Face-to-face
6.0
Elective
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)
NoSyllabus
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
Assessment
Frequency: 25.0%
Exam: 25.0%
Laboratory work or Field work: 50.0%
Bibliography
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.