Organization of Computing Processes in Parallel Systems

Major: Computer Systems and Networks
Code of subject: 7.123.01.E.017
Credits: 4.00
Department: Electronic Computing Machines
Lecturer: PhD, associate professor Botchkaryov Oleksy Yuriyovich
Semester: 2 семестр
Mode of study: денна
Мета вивчення дисципліни: To provide students with a clear and systematic understanding of the organization of computing processes in parallel computer systems, computing processes in such systems, as well as the principles of building appropriate system and application software; to provide skills in creating and organizing parallel computing processes.
Завдання: General competences: ZK6. Ability to identify, pose and solve problems. Professional competences: SK2. Ability to develop algorithmic and software, components of computer systems and networks, Internet applications, cyber-physical systems using modern methods and programming languages, as well as design automation tools and systems. SK5. Ability to build architecture and create system and application software of computer systems and networks. Professional competences of a professional direction. Block 01 "High-performance computer systems": FCS1.1. Possessing in-depth knowledge of hardware and software design of high-performance computer systems.
Learning outcomes: Learning outcomes according to the educational program: PH9. Develop software for embedded and distributed applications, mobile and hybrid systems. The results of training in a special direction according to the educational program: Block 01: "High-performance computer systems" RNS1.3. Skills of mastering hardware and software tools for creating parallel and distributed computer systems, the ability to solve complex specialized problems related to their design and research. The results of studying the discipline: - know the principles of organization of computing processes in parallel computer systems; - know how to use the UNIX/Linux system call interface to organize computing processes in parallel computer systems - know the methods and means of parallel programming at the level of computing processes and program streams; - have practical skills in working with application programming interfaces and parallel programming libraries; - be able to design and implement various schemes for organizing computing processes and program flows in parallel and distributed computer systems using parallel programming interfaces and platforms; - have practical skills in creating and adjusting the work of parallel programs.
Required prior and related subjects: Prerequisites: Computer Architecture, Parallel and Distributed Computing. Corequisites: Design of virtual machines.
Summary of the subject: The discipline "Organization of computational processes in parallel systems" aims to develop in students a clear and systematic understanding of the organization of computational processes in parallel computer systems, computational processes in such systems, as well as the principles of building appropriate system and application software; to provide skills in creating and organizing parallel computing processes. As a result of mastering the study material of the discipline, students should know the general principles of the organization of computing processes in parallel computer systems of different classes, understand the conceptual foundations of the functioning of system software of multitasking, multiprocessor and multi-machine parallel computer systems, be able to work in the operating environment of parallel computer systems systems To master this discipline, knowledge of the following disciplines is necessary: ??"Computer architecture", "Parallel and distributed computing".
Опис: 1. Parallel calculations. Organization of parallel calculations. The main tasks of the organization of parallel computing. Classification of parallel computer systems. Models of parallel computing. Types of parallel computer systems. Parallel programming. Ways of organizing parallel calculations. Parallel computing processes in the Linux OS. Organization of computing processes in the Linux OS. Starting and spawning new processes in the Linux OS (fork, exec, nice). Querying and setting process attributes in Linux. Completion of processes in the Linux OS (exit, wait). 2. Interaction of computing processes in the Linux OS. Anonymous pipes. Creating an unnamed pipe (pipe, pipe2). Working with an unnamed channel. Named pipes (named pipes). Access rights to System V IPC objects. Naming modes for System V IPC objects (IPC_PRIVATE, ftok). Message queues. Shared memory. Mapping files to memory (mmap, munmap, msync). Interaction of processes using memory-mapped files. Semaphores in Linux OS. Ways of using semaphores for synchronizing parallel processes. Program interface for working with semaphores of the POSIX standard. Implementation of the semaphore mechanism using the eventfd() system call. Signals in the Linux OS. Process interaction using Berkeley sockets. 3. Parallel computing at the level of program threads: POSIX Threads. Program threads (threads). Advantages and disadvantages of using program threads. POSIX Threads (Pthreads) application programming interface. Program flow management. Stream attribute management. Synchronization of program flows. Synchronization of program threads using mutexes. Synchronization of program flows using conditional variables. Readers–writer lock. Cpin-blocking (spinlock). Barrier synchronization of program streams. 4. OpenMP and oneTBB parallel programming technologies. Organization of parallel computing using OpenMP. Using OpenMP. Components of OpenMP. Description of parallel parts of the program (directive parallel). Management of the number of program threads. Management of variable classes in OpenMP. Distribution of computational tasks between threads. Distribution of computing load between threads (for directive, schedule expression). Execution of a code block by a subset of threads (single and masked directives). Barrier synchronization of streams (barrier directive). Critical code sections and atomic operations (critical and atomic directives). oneTBB parallel programming library. Organization of parallel calculations using oneTBB. Structure of the parallel programming library oneTBB. Parallel execution of loop iterations using tbb::parallel_for. Distribution of computational load between threads in tbb::parallel_for. 5. Organization of parallel calculations in distributed systems. MPI programming interface: organization of calculations and ombin messages. Organization of calculations in a distributed system using MPI. Main service functions of MPI. Sending and receiving blocked messages. Send and receive messages without blocking. Communicators and collective interaction of processes. Using communicators to work with process groups. Collective interaction of processes in MPI. Barrier synchronization of processes in MPI.
Assessment methods and criteria: Written reports on laboratory work, the verbal questioning (40%). Final assessment (60 %, control method, exam): written-verbal form (60%).
Критерії оцінювання результатів навчання: The semester grade is issued on the condition that the student completes the study plan. The semester grade is formed from the results of current monitoring of laboratory work and semester testing. The result of the semester testing is the product of the result of the semester test in the virtual learning environment and the coefficient of the lecture tests in the virtual learning environment. Maximum score in points - 100. Current control - 40. Examination control: written component - 50, verbal component - 10.
Порядок та критерії виставляння балів та оцінок: 100–88 points – (“excellent”) is awarded for a high level of knowledge (some inaccuracies are allowed) of the educational material of the component contained in the main and additional recommended literary sources, the ability to analyze the phenomena being studied in their interrelationship and development, clearly, succinctly, logically, consistently answer the questions, the ability to apply theoretical provisions when solving practical problems; 87–71 points – (“good”) is awarded for a generally correct understanding of the educational material of the component, including calculations, reasoned answers to the questions posed, which, however, contain certain (insignificant) shortcomings, for the ability to apply theoretical provisions when solving practical tasks; 70 – 50 points – (“satisfactory”) awarded for weak knowledge of the component’s educational material, inaccurate or poorly reasoned answers, with a violation of the sequence of presentation, for weak application of theoretical provisions when solving practical problems; 49-26 points - ("not certified" with the possibility of retaking the semester control) is awarded for ignorance of a significant part of the educational material of the component, significant errors in answering questions, inability to apply theoretical provisions when solving practical problems; 25-00 points - ("unsatisfactory" with mandatory re-study) is awarded for ignorance of a significant part of the educational material of the component, significant errors in answering questions, inability to navigate when solving practical problems, ignorance of the main fundamental provisions.
Recommended books: 1. Peter Pacheco, Matthew Malensek, An Introduction to Parallel Programming, 2nd Edition, Morgan Kaufmann, 2021. - 450 p. 2. Maurice Herlihy, Nir Shavit, Victor Luchangco, Michael Spear, The Art of Multiprocessor Programming, 2nd Edition, Morgan Kaufmann, 2020. - 576 p. 3. W. Stevens, Stephen Rago, Advanced Programming in the UNIX Environment, 3rd Edition, Addison-Wesley Professional, 2013. - 1032 p. 4. Michael Kerrisk, The Linux Programming Interface: A Linux and UNIX System Programming Handbook, 1st Edition, No Starch Press, 2010. – 1553 p. 5. Programming Models for Parallel Computing, ed. by Pavan Balaji, The MIT Press, 2015. - 488 p. 6. Bertil Schmidt Jorge Gonzalez-Dominguez Christian Hundt Moritz Schlarb, Parallel Programming: Concepts and Practice, 1st Edition, Morgan Kaufmann, 2017. – 416 p. 7. David B. Kirk, Wen-mei W. Hwu Programming Massively Parallel Processors, Morgan Kaufmann, 2016. – 576 p. 8. Michael Voss, Rafael Asenjo, James Reinders, Pro TBB: C++ Parallel Programming with Threading Building Blocks, Apress, 2019. – 820 p. 9. Victor Eijkhout, Parallel Programming in MPI and OpenMP, Lulu.com, 2017. – 350 p. 10. Kaiwan N. Billimoria, Hands-On System Programming with Linux, Packt Publishing, 2018. - 794 p. 11. Victor Alessandrini, Shared memory application programming, Morgan Kaufmann, 2016. - 528 p. 12. Victor Eijkhout, Parallel Programming for Science Engineering: Using MPI, OpenMP, and the PETSc library, 2nd ed., Texas Advanced Computing Center, 2020. - 769 p.
Уніфікований додаток: Lviv Polytechnic National University ensures the realization of the right of persons with disabilities to obtain higher education. Inclusive educational services are provided by the Service of accessibility to learning opportunities "Without restrictions", the purpose of which is to provide permanent individual support for the educational process of students with disabilities and chronic diseases. An important tool for the implementation of the inclusive educational policy at the University is the Program for improving the qualifications of scientific and pedagogical workers and educational and support staff in the field of social inclusion and inclusive education. Contact at: St. Karpinsky, 2/4, 1st floor, room 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: The policy regarding the academic integrity of the participants of the educational process is formed on the basis of compliance with the principles of academic integrity, taking into account the norms "Regulations on academic integrity at the Lviv Polytechnic National University" (approved by the academic council of the university on June 20, 2017, protocol No. 35).