Undergraduate Elective 1068
Από Περιγράμματα - Τμήμα Μαθηματικών
								
Γενικά
| Σχολή | Σχολή Θετικών Επιστημών | 
|---|---|
| Τμήμα | Τμήμα Μαθηματικών | 
| Επίπεδο Σπουδών | Προπτυχιακό | 
| Κωδικός Μαθήματος | MAE840 | 
| Εξάμηνο | 8 | 
| Τίτλος Μαθήματος | Κατανεμημένα και παράλληλα συστήματα | 
| Αυτοτελείς Διδακτικές Δραστηριότητες | Διαλέξεις και Εργαστηριακές Ασκήσεις (Εβδομαδιαίες Ώρες Διδασκαλίας: 3, Πιστωτικές Μονάδες: 6) | 
| Τύπος Μαθήματος | Ειδίκευσης | 
| Προαπαιτούμενα Μαθήματα | |
| Γλώσσα Διδασκαλίας και Εξετάσεων | Ελληνική | 
| Το Μάθημα Προσφέρεται σε Φοιτητές Erasmus | |
| Ηλεκτρονική Σελίδα Μαθήματος (URL) | Δείτε το eCourse, την Πλατφόρμα Ασύγχρονης Εκπαίδευσης του Πανεπιστημίου Ιωαννίνων. | 
Μαθησιακά Αποτελέσματα
| Μαθησιακά Αποτελέσματα | Με την επιτυχή ολοκλήρωση του μαθήματος, ο φοιτητής:
  | 
|---|---|
| Γενικές Ικανότητες | 
  | 
Περιεχόμενο Μαθήματος
ΘΕΩΡΙΑ:
- Εισαγωγικά στοιχεία. Ιστορική ανασκόπηση της παράλληλης και κατανεμημένης επεξεργασίας.
 - Πρότυπο von Neumann. Κατηγοριοποίηση κατά Flynn. Διασωλήνωση. Πολύ-επεξεργαστές, Πολύ-υπολογιστές.
 - Συστήματα κατανεμημένης και κοινόχρηστης μνήμης.
 - Αρχιτεκτονικές μνήμης ενιαίου και μη-ενιαίου χρόνου πρόσβασης.
 - Υπολογισμός απόδοσης. Κλιμάκωση. Δίκτυα διασύνδεσης παράλληλων υπολογιστών.
 - Νόμος του Grosch, του Amdahl, των Gustafson Barsis. Σχεδιασμός παράλληλων εφαρμογών.
 - Παραλληλοποίηση προγραμμάτων - MPI. Συγχρονισμός. Γράφοι εξάρτησης.
 - Χρονοδρομολόγηση. Συνάφεια διαμοιραζόμενης μνήμη. MESI. Παράλληλη Επεξεργασία σε GPU.
 - Μοντέλα και μηχανισμοί επικοινωνίας διεργασιών.
 - Διανυσματική Επεξεργασία. Συστοιχίες και υπολογιστική πλέγματος. Παραδείγματα παραλληλοποίησης εφαρμογών. Θέματα συγχρονισμού.
 
ΕΡΓΑΣΤΗΡΙΟ:
- Εισαγωγικές έννοιες προγραμματισμού με το gcc. Δείκτες, κλάσεις, δυναμικές δομές. Δημιουργία διεργασιών σε Linux, διαχωρισμός των εννοιών user-space και kernel-space, γονικές διεργασίες και σχέσεις γονέα-παιδιού, Διαχείριση διεργασιών.
 - Containers, Templates, STL (c++ standard templates library).
 - Εισαγωγή στο Boost και σε προχωρημένα θέματα της C++.
 - Εισαγωγή στο C++ Armadilo
 - Ενδοεπικοινωνία διεργασιών. Στατικές περιοχές μνήμης, σωληνώσεις, περιοχές κοινής μνήμης, σηματοδοσία διεργασιών.
 - Δημιουργία νημάτων και διαχείριση νημάτων. Χρήση κοινών περιοχών μνήμης νημάτων, κρίσιμες περιοχές, μοντέλο παραγωγού καταναλωτή, σηματοδοσία νημάτων.
 - Διαχείριση και συγχρονισμός νημάτων, προστασία κρίσιμης περιοχής με χρήση mutex locks και semaphores. Παρουσίαση νημάτων εκτέλεσης υπό συνθήκη και φράγματα συγχρονισμού.
 - Εισαγωγή στο MPI, ρυθμίσεις του MPI, παρουσίαση βασικών συναρτήσεων του MPI, τα πρώτα προγράμματα σε MPI.
 - Παρουσίαση βασικών σύγχρονων μεθόδων αποστολής-λήψης μηνυμάτων σε MPI.
 - Παρουσίαση ασύγχρονων μεθόδων αποστολής λήψης. Παραδείγματα.
 - Χρήση συλλογικών μεθόδων του MPI (Gather-Scatter-Reduce-Broadcast) και παραδείγματα.
 - Βασικές δομές οργάνωσης κατανεμημένων προγραμμάτων. Παραδείγματα κατανεμημένων υπολογισμών. Σύνθετοι τύποι δεδομένων με χρήση του MPI.
 - Δημιουργία σύνθετων δομών δεδομένων με το MPI και αποστολή μηνυμάτων δομών δεδομένων.
 - Παράλληλος προγραμματισμός OpenMP και Epiphany-SDK, BSP.
 
Διδακτικές και Μαθησιακές Μέθοδοι - Αξιολόγηση
| Τρόπος Παράδοσης | Στην τάξη | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Χρήση Τεχνολογιών Πληροφορίας και Επικοινωνιών | Χρήση Εργαστηρίου Μικροϋπολογιστών | ||||||||||
| Οργάνωση Διδασκαλίας | 
  | ||||||||||
| Αξιολόγηση Φοιτητών | 
  | 
Συνιστώμενη Βιβλιογραφία
Δείτε την υπηρεσία Εύδοξος. Συγγράμματα και άλλες πηγές εκτός της υπηρεσίας Εύδοξος:
General
| School | School of Science | 
|---|---|
| Academic Unit | Department of Mathematics | 
| Level of Studies | Undergraduate | 
| Course Code | MAE840 | 
| Semester | 8 | 
| Course Title | Distributed and Parallel Systems | 
| Independent Teaching Activities | Lectures-Laboratory (Weekly Teaching Hours: 3, Credits: 6) | 
| Course Type | Special Background | 
| Prerequisite Courses | - | 
| Language of Instruction and Examinations | Greek | 
| Is the Course Offered to Erasmus Students | Yes(in English) | 
| Course Website (URL) | See eCourse, the Learning Management System maintained by the University of Ioannina. | 
Learning Outcomes
| Learning outcomes | 
 Students knowledge acquisition of: 
  | 
|---|---|
| General Competences | 
  | 
Syllabus
- Historical review of parallel and distributed processing.
 - Von Neumann model. Flynn categorization. Tubing. Multiprocessors, Multi-computers.
 - Distributed and Shared Memory Systems. Memory architectures for single and non-unified access time.
 - Performance calculations and metrics. System scalability, partitioning and optimization. Parallel computer interface networks.
 - Law of Grosch, of Amdahl, of Gustafson Barsis. Design of parallel applications.
 - Program parallelization - MPI. Synchronization. Dependency charts, shared resources and racing conditions. Scheduling. Shared Memory Affinity. MESI. Parallel Processing using parallella FPGA cores.
 - Models and process communication mechanisms. Vector Processing. Arrays and computational grid. Examples of application parallelization. Synchronization issues
 
Course laboratory part
- Introductory programming concepts using gcc. Pointers, classes, dynamic structures. Creating processes in Linux, separating user-space and kernel-space concepts, parenting processes and parent-child relationships, Process Management.
 - Containers, Templates, STL (C++ standard templates library).
 - Introduction to Boost and advanced C ++ aspects.
 - Introduction to C ++ Armadilo
 - Process intercommunication. Static memory areas, pipelines, shared memory areas, process signalling.
 - Threads creation and thread management. shared thread memory areas, critical areas, producer-consumer model, threads signalling.
 - Thread Management and Synchronization, critical areas protection using mutex locks and semaphores. Presentation of conditional execution threads and sync barriers.
 - Introduction to MPI, MPI settings, MPI key features presentation, preliminary MPI programs.
 - Presentation of basic modern methods of sending and receiving messages in MPI. Presentation of asynchronous upload methods. Examples.
 - Using Gather-Scatter-Reduce-Broadcast Collective Methods and Examples.
 - Basic structures for organizing distributed programs. Examples of distributed calculations. Advanced data types using MPI. Creating # Complex Data Structures with MPI And Sending Data Structure Messages.
 - Parallel programming OpenMP and Epiphany-SDK, BSP.
 
Teaching and Learning Methods - Evaluation
| Delivery | Classroom | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Use of Information and Communications Technology | Use of Micro-computers Laboratory | ||||||||||
| Teaching Methods | 
  | ||||||||||
| Student Performance Evaluation | 
  | 
Attached Bibliography
See the official Eudoxus site. Books and other resources, not provided by Eudoxus:
- Parallel Scientific Computing in C++ and MPI: A Seamless Approach to Parallel Algorithms and their Implementation, G.M. Karniadakis and R.M. Kirby, 2003, Cambridge University press, ISBN: 0-521-81754-4
 - Using OpenMP, Portable Shared Memory Parallel Programming., B. Chapman, G. Jost and R. Pas, 2008, MIT press, ISBN: 9780262533027
 - Learning Boost C++ libraries, A. Mukherjee, 2015, PACKT, ISBN:978-1-78355-121-7
 - Boost C++ Application Development Cookbook - Second Edition: Recipes to simplify your application development, 2 Edition, A. Polukhin, 2017, PACKT, ISBN:978-1-78728-224-7
 - C++17 STL Cookbook, J. Galowicz, PACKT,978-1-78712-049-5, 2017