Parallel Computing

Objectives

  • 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

Updated: