characterization and quantitative/qualitative evaluation of computing systems and its components, with emphasis on shared memory parallel systems and the support for vector processing
identification and characterization of main parallel computing paradigms, namely shared memory-base programming - utilization of profiling/tracing tool to identify the main limitations of parallel applications
development, improvement and critical assessments of the efficiency of parallel applications
Program
Analysis of generic processor architectures: instruction level parallelism and other types of parallelism (SIMD, vector) and memory hierarchy.
Performance evaluation of shared memory parallel systems.
Programming models for parallel computing based on shared memory.
Measuring and optimizing the performance of applications on shared memory, impact of the parallelism granularity and load distribution strategies.
Design of parallel application and critical assessment of the performance of parallel applications with typical parallel algorithms
Bibliography
Computer Architecture: A Quantitative ApproachComputer Organization and Design: The Hardware/Software Interface, David Patterson and John Hennessy, 65th Ed., Morgan Kaufmann, 2017- Computer Organization and Design: The Hardware/Software Interface, David Patterson and John Hennessy, 5th Ed., Morgan Kaufmann, 2013
Structured Parallel Programming Patterns for Efficient Computation, Michael McCool, Arch D. Robison and James Reinders, Morgan Kaufmann, 2012
Programming Massively Parallel Processors: A Hands-on Approach, David Kirk and Wen-mei Hwu, 4th Ed., Morgan Kaufmann, 2022
Parallel Programming in C with MPI and OpenMP, Michael J. Quinn, McGraw-Hill Education, 2003
Designing and Programming Parallel Programs: Concepts and Tools for Parallel Software Engineering, Ian Foster, Addison-Wesley, 1995