Code: | CC4014 | Acronym: | CC4014 | Level: | 400 |
Keywords | |
---|---|
Classification | Keyword |
OFICIAL | Computer Science |
Active? | Yes |
Responsible unit: | Department of Computer Science |
Course/CS Responsible: | Master in Computer Science |
Acronym | No. of Students | Study Plan | Curricular Years | Credits UCN | Credits ECTS | Contact hours | Total Time |
---|---|---|---|---|---|---|---|
E:BBC | 0 | PE_Bioinformatics and Computational Biology | 1 | - | 6 | 42 | 162 |
M:A_ASTR | 0 | Plano de Estudos oficial desde_2013/14 | 1 | - | 6 | 42 | 162 |
2 | |||||||
M:BBC | 0 | The study plan since 2018 | 2 | - | 6 | 42 | 162 |
M:CC | 10 | Study plan since 2014/2015 | 1 | - | 6 | 42 | 162 |
M:DS | 4 | Official Study Plan since 2018_M:DS | 1 | - | 6 | 42 | 162 |
MI:ERS | 2 | Plano Oficial desde ano letivo 2014 | 4 | - | 6 | 42 | 162 |
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.
On completing this course, the students must be able to:
Introduction and foundations:
Parallel programming, concurrency and parallelism, Flynn taxonomy. Foster's programming methodology. major parallel programming models and paradigms.
Programming for distributed memory architectures using MPI:
MPI specification, explicit message passing, communication protocols, Derived types and data packing, collective communication, communicators, topologies.
Programming for shared memory architectures with processes:
Processes, shared memory segments, shared memory through file mapping, spinlocks, semaphores.
Programming for shared memory architectures with threads:
Multithreading processes with Pthreads, mutexs, conditional variables, keys, implementation of Pthreads.
Programming for shared memory architectures with OpenMP:
OpenMP specification, compilation directives, work-sharing constructors, basic constructors, synchronisation constructors, basic functions, locking functions, environment variables, removing data dependencies, performance, combining OpenMP with MPI.
Performance metrics:
Speedup measures, efficiency, redundancy, usability and quality of a parallel application. Amdahl law. Gustafson-Barsis law. Karp-Flatt metrics.
Parallel algorithms:
Scheduling and load balancing strategies. Parallel algorithms for sorting, search, monte-carlo simulation, matrix and multiplication.
Lecture classes to introduce the concepts and practical assignements to motivate students on experiencing parallel programming in more than one paradigm.
designation | Weight (%) |
---|---|
Exame | 70,00 |
Trabalho laboratorial | 30,00 |
Total: | 100,00 |
designation | Time (hours) |
---|---|
Estudo autónomo | 70,00 |
Frequência das aulas | 39,00 |
Trabalho laboratorial | 49,00 |
Total: | 158,00 |
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%.
Improvement can only be made to the written exam.