460-2028/03 – Parallel and Distributed Systems (PDS)
Gurantor department | Department of Computer Science | Credits | 4 |
Subject guarantor | prof. Ing. Pavel Krömer, Ph.D. | Subject version guarantor | prof. Ing. Pavel Krömer, Ph.D. |
Study level | undergraduate or graduate | Requirement | Optional |
Year | 3 | Semester | summer |
| | Study language | Czech |
Year of introduction | 2019/2020 | Year of cancellation | |
Intended for the faculties | FEI | Intended for study types | Bachelor |
Subject aims expressed by acquired skills and competences
The objective of the course is to provide the students with a survey in parallel and distributed architectures, to teach them basic methods of problem decomposition, to master selected techniques necessary for the development of parallel applications and to get acquainted with the current technologies for the design of applications based on distributed objects.
Teaching methods
Lectures
Individual consultations
Tutorials
Project work
Other activities
Summary
The course provides basic orientation in the field of parallel and distributed systems. Both the multiprocessor architectures and the
distributed computing frameworks are introduced, together with techniques of their utilization from the programmer's perspective. Moreover the subject gives an overview of modern object-oriented distributed systems, their applications and interoperatibility, and it introduces the latest trends in the field of parallel and distributed systems.
Compulsory literature:
Foster, I.: Designing and Building Parallel Programs. Addisson-Wesley, 1995
Colouris, G., Dollimore, J., Kindberg, T.: Distributed Systems. Addison-Wesley, 2005
Recommended literature:
Wilkinson, B., Allen, M.: Parallel Programming. Prentice Hall, 1999
Hughes, C., Hughes, T.: Parallel and Distributed Programming Using C++. Addison-Wesley, 2004
Object Management Group: The Common Object Request Broker: Architecture and Specification. Object Management Group (http://www.omg.org)
Additional study materials
Way of continuous check of knowledge in the course of semester
Průběžná kontrola studia:
Příklady řešené průběžně na cvičeních.
Podmínky udělení zápočtu:
Včasné odevzdání semestrálního projektu.
E-learning
Other requirements
No additional requirements are placed on the student.
Prerequisities
Subject has no prerequisities.
Co-requisities
Subject has no co-requisities.
Subject syllabus:
1. Introduction into parallel and distributed computing. Parallelism and pseudoparallelism, processes, threads.
2. Classification of parallel and distributed systems. Flynn's taxonomy. Shared and distributed memory systems.
3. Programming for shared memory systems. OpenMP, C++11, Thread Building Blocks.
4. Other up-to-date parallel processing models for shared memory systems. Programming languages Go, Rust. Parallelism in Python.
5. Distributed memory systems. Interconnect networks and their properties.
6. Message passing interface (MPI). Point-2-point and collective communication.
7. Task/channel model of parallel computing. Message queues, Message Oriented Middleware (MOM). Posix queues.
8. Distributed shared memory, Partitioned Global Address Space (PGAS) model. Programming languages Unified Parallel C (UPC) and UPC++.
9. General purpose graphic cards for parallelization/acceleration of computing.
10. Cloud computing. Map-Reduce model and frameworks Hadoop, Spark, and Flink.
11. Web services and their use for distributed computing. Remote procedure call. Architectural style Representational State Transfer (REST).
12. TensorFlow and its use. Application framework Caffe2.
13. Parallel and distributed methods for Big Data processing.
Conditions for subject completion
Occurrence in study plans
Occurrence in special blocks
Assessment of instruction