Parallel Algorithms and Systems (MAE840)
Από Wiki Τμήματος Μαθηματικών
- Ελληνική Έκδοση
- Undergraduate Courses Outlines
- Outline Modification (available only for faculty members)
- Department of Mathematics
- Save as PDF or Print (to save as PDF, pick the corresponding option from the list of printers, located in the window which will popup)
General
School |
School of Science |
---|---|
Academic Unit |
Department of Mathematics |
Level of Studies |
Undergraduate |
Course Code |
MAE840 |
Semester |
8 |
Course Title |
Parallel Algorithms and Systems |
Independent Teaching Activities |
Lectures-Laboratory (Weekly Teaching Hours: 3, Credits: 6) |
Course Type |
Special Background |
Prerequisite Courses |
Introduction to programming, Introduction to Computers, Database Systems and Web applications development |
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 or the local repository of Eudoxus lists per academic year, which is maintained by the Department of Mathematics. 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