Γενικά
| Σχολή
|
Σχολή Θετικών Επιστημών
|
| Τμήμα
|
Τμήμα Μαθηματικών
|
| Επίπεδο Σπουδών
|
Προπτυχιακό
|
| Κωδικός Μαθήματος
|
MAE840
|
| Εξάμηνο
|
8
|
| Τίτλος Μαθήματος
|
Κατανεμημένα και Παράλληλα Συστήματα
|
| Αυτοτελείς Διδακτικές Δραστηριότητες
|
Διαλέξεις και Εργαστηριακές Ασκήσεις (Εβδομαδιαίες Ώρες Διδασκαλίας: 3, Πιστωτικές Μονάδες: 6)
|
| Τύπος Μαθήματος
|
Ειδίκευσης
|
| Προαπαιτούμενα Μαθήματα
|
|
| Γλώσσα Διδασκαλίας και Εξετάσεων
|
Ελληνική
|
| Το Μάθημα Προσφέρεται σε Φοιτητές Erasmus
|
|
| Ηλεκτρονική Σελίδα Μαθήματος (URL)
|
Δείτε το eCourse, την Πλατφόρμα Ασύγχρονης Εκπαίδευσης του Πανεπιστημίου Ιωαννίνων.
|
Μαθησιακά Αποτελέσματα
| Μαθησιακά Αποτελέσματα
|
Με την επιτυχή ολοκλήρωση του μαθήματος, ο φοιτητής:
- Θα μπορεί να κατανοήσει μεθόδους παράλληλης αλγοριθμοποίησης.
- Θα μπορεί να περιγράψει τις βασικές λειτουργίες ενός παράλληλου και ενός κατανεμημένου συστήματος.
- Θα έχει κατανοήσει τις βασικές έννοιες και τεχνικές/μηχανισμούς προγραμματισμού, επικοινωνίας και θέματα διαφάνειας που χρησιμοποιούνται τόσο στα σύγχρονα παράλληλα όσο και στα κατανεμημένα συστήματα.
- Θα είναι σε θέση να χρησιμοποιήσει και να προγραμματίσει συνήθεις παράλληλες βιβλιοθήκες προγραμματισμού όπως η OpenMP και κατανεμημένα εργαλεία διαχείρισης και προγραμματισμού όπως το MPI.
- Θα γνωρίζει τις τεχνικές κατανομής πόρων, δεδομένων και εργασιών σε πολυπύρηνα υπολογιστικά συστήματα κοινού διαύλου ή συνεργαζόμενα μέσω δικτύου και τους αναγκαίους μηχανισμούς συγχρονισμού και ελέγχου της επικοινωνίας.
- Θα διαθέτει κατάλληλη θεωρητική και πρακτική γνώση έτσι ώστε να μπορεί να ανταποκριθεί στις απαιτήσεις των σύγχρονων τάσεων σχεδιασμού, ανάπτυξης και υποστήριξης παράλληλων και κατανεμημένων αλγορίθμων και εφαρμογών.
|
| Γενικές Ικανότητες
|
- Αναζήτηση, ανάλυση και σύνθεση δεδομένων με χρήση τεχνολογιών πληροφορικής
- Λήψη αποφάσεων
- Προγραμματιστικός σχεδιασμός και υλοποίηση - Εμπέδωση
- Αυτόνομη Εργασία
|
Περιεχόμενο Μαθήματος
|
ΘΕΩΡΙΑ:
- Εισαγωγικά στοιχεία. Ιστορική ανασκόπηση της παράλληλης και κατανεμημένης επεξεργασίας.
- Πρότυπο 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.
|
Διδακτικές και Μαθησιακές Μέθοδοι - Αξιολόγηση
| Τρόπος Παράδοσης
|
Στην τάξη
|
| Χρήση Τεχνολογιών Πληροφορίας και Επικοινωνιών
|
Χρήση Εργαστηρίου Μικροϋπολογιστών
|
| Οργάνωση Διδασκαλίας
|
| Δραστηριότητα
|
Φόρτος Εργασίας Εξαμήνου
|
| Διαλέξεις (13Χ3)
|
39
|
| Αυτοτελής Μελέτη
|
78
|
| Επίλυση Ασκήσεων - εργασίες
|
33
|
| Σύνολο Μαθήματος
|
150
|
|
| Αξιολόγηση Φοιτητών
|
- Με χρήση νέων ΤΠΕ και μετρικών χρήσης της πλατφόρμας ασύγχρονης τηλεκπαίδευσης (30%)
- Εξέταση εργαστηριακών ασκήσεων (20%)
- Γραπτή εξέταση (50%)
|
Συνιστώμενη Βιβλιογραφία
Δείτε την υπηρεσία Εύδοξος. Συγγράμματα και άλλες πηγές εκτός της υπηρεσίας Εύδοξος:
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:
- Parallel algorithmic methods, multitasking programming, thread programming, resources contention/congestion and contention/congestion avoidance mechanisms
- Understanding of the basic functional parts of a parallel and a distributed system.
- Understanding of the basic concepts and techniques / programming, communication, and transparency techniques used in both parallel and distributed systems.
- Programming parallel tasks using parallel programming libraries such as OpenMP and distributed programming tools such as MPI.
- Parallel algorithms, Parallel architectures, Parallel algorithm development, Parallel Selection, Parallel Merge, Parallel Classification, Parallel Search, Parallel Algorithms of Computational Geometry. Parallel iterative methods for solving Linear problems.
- Parallel and Distributed Systems and Architectures. Performance of Parallel and Distributed Systems and Applications.
- Threading / multitasking and programming of parallel and distributed algorithms using OpenMP and MPI.
|
| General Competences
|
- Data search, analysis and synthesis using Information Technologies
- Decision making
- Project design and implementation
- Working independently
|
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
|
| Activity
|
Semester Workload
|
| Lectures
|
39
|
| Working Independently
|
78
|
| Exercises-Homework
|
33
|
| Course total
|
150
|
|
| Student Performance Evaluation
|
- Using new ICT and metrics of the asynchronous e-learning platform (30%)
- Examination of laboratory exercises (20%)
- Semester written examination (50%)
|
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