Advanced Computer Architecture and Parallel System Programming

General

Educational goals

The aim of the course is the presentation and analysis of methods and architectural choices in modern computer design as well as the presentation of the basic principles of parallel processing. The course familiarizes the student with the two most important categories of parallel programming based on shared and on distributed memory. With the successful completion of the course, the student will be able to:

  • Know the basic principles and the probles of modern computer architecture and parallel programming
  • Understand the basic computer architecture choices and discern the basic models of parallel processing
  • Associate the appropriate methods of parallel programming with the corresponding architectural organization
  • Analyze problems that require the use of parallel processing
  • Design and implement appropriate parallel programming solutions for the corresponding problem
  • Compare and evaluate the performance of parallel architectures and algorithms

Course Contents

  • Introduction: advanced architectures and parallel processing, computer system classification (SISD, MISD, SIMD, MIMD), UMA/ NUMA classification, memory models (shared memory, distributed memory, distributed shared memory), message-passing model, multiprocessors, multicomputers
  • Memory technology: hierarchical memory, cache organization, storing and retrieving data from the cache, cache performance, handling multiple caches, the cache coherence problem, the snooping and directory-based protocol
  • Pipelining: Instruction pipeline, instruction execution phases, the DLX language, DLX pipeline, pipeline hazards, floating-point pipeline, normalization, pipeline control.
  • Parallel programming: Amdahl’s law, semaphores, locking, synchronization, deadlocks, and their avoidance
  • Parallelization: dependence graph, nested loops, algorithms mapping, linear mapping methods, scheduling, optimal scheduling for special cases, heuristic scheduling
  • Parallel programming on shared memory, multithreading, POSIX Threads, multi-processing, the OpenMP model
  • Parallel programming on distributed memory, message passing, the MPI model
  • Programming General Purpose Graphical Processing Units (GPU), the CUDA model

Teaching Methods - Evaluation

Teaching Method
  • Face to face lectures
  • Optional parallel programming exercises
Use of ICT means
  • Use of the moodle.teithe.gr e-learning platform
Teaching Organization
Activity Semester workload
Lectures52
Individual study and analysis of literature128
Total 180
Students evaluation

Final written exam with combination of multiple choice questions and development questions
Optional exercises

Recommended Bibliography

Recommended Bibliography through "Eudoxus"
  1. Σ. Παπαδάκης και Κ. Διαμαντάρας, "Προγραμματισμός και Αρχιτεκτονική Συστημάτων Παράλληλης Επεξεργασίας", Εκδόσεις Κλειδάριθμος ΕΠΕ, 2012, ISBN: 978-960-461-446-2, Κωδικός Βιβλίου στον Εύδοξο: 12532275
  2. Hennessy John L., και Patterson David A., "Αρχιτεκτονική Υπολογιστών", Εκδόσεις Α. Τζιόλα και Υιοί Α.Ε., 4η Έκδοση/2011, ISBN: 978-960-418-326-5, Κωδικός Βιβλίου στον Εύδοξο: 18548925
  3. Peter S. Pacheco, "Εισαγωγή στον Παράλληλο Προγραμματισμό", Εκδόσεις Κλειδάριθμος ΕΠΕ, 1η Έκδοση, 2015, ISBN 978-960-461-666-4, Κωδικός Βιβλίου στον Εύδοξο: 50656351
  4. Γραμματή Πάντζιου, Βασίλειος Μάμαλης, Αλέξανδρος Τομαράς, "Εισαγωγή στον Παράλληλο Προγραμματισμό: Πρότυπα, Αλγόριθμοι, Προγραμματισμός", Εκδόσεις Νέων Τεχνολογιών, 1η Έκδοση, 2013, ISBN 978-960-6759-89-5, Κωδικός Βιβλίου στον Εύδοξο: 33134125