
High Perfomance Computing
Code
11165
Academic unit
Faculdade de Ciências e Tecnologia
Department
Departamento de Informática
Credits
6.0
Teacher in charge
Hervé Miguel Cordeiro Paulino, Pedro Abílio Duarte de Medeiros
Weekly hours
4
Total hours
56
Teaching language
Português
Objectives
Knowledge and understanding goals
- Multiprocessor and heterogeneous architectures (CPUs and GPUs)
- 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 CUDA from Nvidia and Apache Spark.
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, and good programming skills.
Subject matter
- Parallel computing: hardware, software, applications and performance theory.
- Prallel algorithms and their GPU computing.
- Programming distributed-memory multiprocessors.
Bibliography
Main:
- P. Pacheco, " An Introduction to Parallel Programming", Morgan Kauffman, 2011
- CUDA C Programming Guide, NVIDIA corporation
Complementary:
- Norm Matloff, "Programming on Parallel Machines: GPU, Multicore, Clusters and More", University of California, Davis,
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. Access to machines with heterogeneous architectures (CPus and GPUs Nvidia) for shared memory programming.
Evaluation method
Evaluation elements
Two intermediate tests or final exam (60% of the final grade).
Two programming assignments (40% of the final grade).
Frequency
Average of the grades of the programming assignments >= 8.
Final grade
NT = average of the grade of the tests or grade of the final exam
NP = average of the grades of the programming assignments
if NT < 8 then final grade = NT
else final grade = NT*0.6 + NP*0.4