- Ελληνική Έκδοση
- 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)
School of Science
Department of Mathematics
|Level of Studies||
Parallel Algorithms and Systems
|Independent Teaching Activities||
Lectures-Laboratory (Weekly Teaching Hours: 3, Credits: 6)
Introduction to programming, Introduction to Computers, Database Systems and Web applications development
|Language of Instruction and Examinations||
|Is the Course Offered to Erasmus Students||
|Course Website (URL)||See eCourse, the Learning Management System maintained by the University of Ioannina.|
Students knowledge acquisition of:
- 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
|Use of Information and Communications Technology||Use of Micro-computers Laboratory|
|Student Performance Evaluation||
- 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