Parallel Computing
Keywords |
Classification |
Keyword |
OFICIAL |
Computer Science |
Instance: 2020/2021 - 1S
Cycles of Study/Courses
Teaching language
Portuguese and english
Objectives
Introduce the students to advanced concepts on the theory and practice of computational models for parallel and distributed memory architectures. Hands-on experience on programming distributed memory architectures with MPI, and programming shared memory architectures using processes, threads and OpenMP.
Learning outcomes and competences
On completing this course, the students must be able to:
- be aware of the main models, paradigms, environments and tools for parallel programming
- understand and assess the concepts related to the structure, operation and performance of parallel programs
- formulate solutions in the main parallel programming paradigms, namely MPI, Pthreads and OpenMP
Working method
Presencial
Program
Foundations:
Parallel programming, concurrency and parallelism. Flynn taxonomy. Foster's programming methodology. Speedup and efficiency. Amdahl law. Gustafson-Barsis law. Karp-Flatt metrics.
Programming for Distributed Memory Architectures:
MPI specification, explicit message passing, communication protocols, derived types, data packing, collective communications, communicators, topologies.
Programming for Shared Memory Architectures:
Processes, shared memory segments, shared memory through file mapping, spinlocks, semaphores. Multithreading processes with Pthreads, mutexs, conditional variables, keys, implementations of Pthreads. OpenMP specification, compilation directives, work-sharing constructors, basic constructors, synchronisation constructors, basic functions, environment variables, removing data dependencies, performance, combining OpenMP with MPI.
Algorithms:
Parallel algorithms. Scheduling and load balancing strategies.
Mandatory literature
P. Pacheco.; Parallel Programming with MPI, Morgan Kaufmann
Michael J. Quinn; Parallel Programming in C with MPI and OPenMP, McGraw-Hill.
M. Mitchell, J. Oldham and A. Samuel; Advanced Linux Programming, New Riders
B. Nichols, D. Buttlar and J.P. Farrell; Pthreads Programming, O'Reilly
R. Chandra, L. Dagum, D. Kohr, D. Maydan, J. McDonald and R. Menon; Parallel Programming in OpenMP, Morgan Kaufmann
B. Wilkinson, M. Allen.; Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers , Prentice Hall.
Teaching methods and learning activities
Lecture classes to introduce the concepts and practical assignements to motivate students on experiencing parallel programming in more than one paradigm.
Evaluation Type
Distributed evaluation with final exam
Assessment Components
designation |
Weight (%) |
Exame |
70,00 |
Trabalho laboratorial |
30,00 |
Total: |
100,00 |
Amount of time allocated to each course unit
designation |
Time (hours) |
Estudo autónomo |
70,00 |
Frequência das aulas |
42,00 |
Trabalho laboratorial |
50,00 |
Total: |
162,00 |
Eligibility for exams
N/A
Calculation formula of final grade
Students are assessed by their performance in the following components: (a) two practical assignments worth 3 points each out of 20; (b) a written exam in the final of the semester worth 14 points out of 20. The minimum classification in the written exam is 40%.
Classification improvement
Improvement can only be made to the written exam.