-
Description:
The theoretical part aims at presenting and analyzing methods and architectures in modern computer design as well as introducing the basic principles of parallel processing and the mapping of algorithms to parallel systems. The practical exercises familiarize the student with parallel programming based on the message passing model using the MPI platform.
Content:
• Introduction: computer architecture classification: SISD, MISD, SIMD, MIMD, UMA, NUMA, memory models, multi-processros, multi-computers, message passing model
• Memory technology: memory hierarchy, cache, cache design, cache optimization, managing multiple caches, the cache coherence problem, snooping and directory-based protocols
• Pipelining: Instruction pipeline, design example via the DLX processor, pipeline hazards, pipeline control.
• Parallel Programming: Amdahl’s law, shared memory protection, semaphores, locking, synchronization, deadlocks and deadlock avoidance
• Code parallelization: dependence graph, nested loops, algorithm mapping, linear mapping methods, scheduling, optimal scheduling for special cases, heuristic scheduling methods
• Clusters και Grids: design options
• Introduction to GPU/CUDA, ΜapReduce and Spark technologies
Structure:
The module duration is 13 weeks during the fall semester. It contains a theoretical part (3hours per week)
and a practical exercise part (2 hours per week). There is no laboratory course associated with this module.
Evaluation:
Optional intermediate written exam (50% of the grade) and mandatory final written exam (50% of the grade). If the student does not choose to take the intermediate exam the final exam counts for 100% of the final grade.
Project
After the successful completion of the module the student :
• Will have advanced knowledge regarding modern computer architecture
• Will have advanced knowledge regarding parallel computer architecture and design
• Will have basic knowledge of parallel programming
• Will have skills for the development of parallel applications on suitable distributed memory platforms (such as clusters)
• Will have the ability to analyze problems and applications that require the use of parallel processing methods
• Will have the ability to apply suitable parallel processing methods depending on the problem he/she is working on.
1. Σ. Παπαδάκης και Κ. Διαμαντάρας, «Προγραμματισμός και Αρχιτεκτονική Συστημάτων Παράλληλης Επεξεργασίας», εκδόσεις Κλειδάριθμος, 2011
2. John L. Hennessy and David A. Patterson, ‘Αρχιτεκτονική Υπολογιστών’, 3η έκδοση, Εκδόσεις Τζιόλα 2006
3. Jean-Loup Baer, ‘Microprocessor Architecture: From simple pipelines to chip multiprocessors’, Cambridge University Press, 2010
4. John L. Hennessy and David A. Patterson, ‘Computer Architecture: A Quantitative Approach’, 4th Edition, Morgan Kaufman, 2006
5. David A. Patterson and John L. Hennessy, ‘Computer Organization and Design: The Hardware/Software Interface’, 4th edition, Morgan Kaufmann, 2008
6. William Stallings, ‘Οργάνωση και αρχιτεκτονική υπολογιστών’, Εκδόσεις Τζιόλα 2003