Parallel Programming Technologies

Major: System Programming
Code of subject: 7.123.02.E.018
Credits: 4.00
Department: Electronic Computing Machines
Lecturer: Muliarevych Oleksandr Volodymyrovych
Semester: 2 семестр
Mode of study: денна
Мета вивчення дисципліни: To develop in students a clear and systematic understanding of parallel programming technologies and the organization of computational processes in parallel computer systems, computational processes in such systems, as well as the principles of building the corresponding system software; to provide skills in creating parallel computational processes in the appropriate operating environment. As a result of studying the discipline, the student should be able to demonstrate the following outcomes: - Knowledge of the general principles of organizing computational processes in parallel computer systems of different classes; - Understanding of the conceptual foundations of the functioning of system software in multitasking, multiprocessor, and multimachine parallel computer systems; - Ability to work in the operating environment of parallel computer systems.
Завдання: The study of this discipline aims to form the following competencies in students: Integral Competence: - The ability to solve complex specialized tasks and practical problems during professional activities in the field of information technologies or in the learning process, which involves the application of theories and methods of computer engineering and is characterized by complexity and uncertainty of conditions. General Competencies: - ЗК6. Ability to identify, pose, and solve problems. - СК2. Ability to develop algorithmic and software solutions, components of computer systems and networks, Internet applications, cyber-physical systems using modern methods and programming languages, as well as automation design tools and systems. - СК5. Ability to build architecture and create system and application software for computer systems and networks. - ФКС1.1. Possession of advanced knowledge in the design of system and application software for computer systems using parallel programming technologies.
Learning outcomes: As a result of studying the discipline, the student should be able to demonstrate the following learning outcomes: 1. Knowledge of the general principles of the construction and operation of network operating systems; 2. Knowledge of the main functions of network operating systems and ways of using them; 3. Knowledge of methods for managing computational processes and methods for planning parallel process execution; 4. Knowledge of methods for managing memory, input-output devices, file systems, and the network subsystem; 5. Ability to determine the main parameters of network operating systems, monitor the use of system resources, find and correct errors in the operation of network operating systems; 6. Practical skills in working with the main services, services, and system utilities of network operating systems of the UNIX/Linux family. As a result of studying the discipline, the student should be able to demonstrate the following program learning outcomes: РН9. Develop software for embedded and distributed applications, mobile and hybrid systems. РНС1.1. Ability to develop system software as part of operating systems and their main components using parallel programming technologies.
Required prior and related subjects: Prerequisites: Research and Design of Computer Systems and Networks Network Information Technologies Organization of Computational Processes in Parallel Systems
Summary of the subject: The course "Parallel Programming Technologies" aims to develop in students a clear and systematic understanding of parallel programming technologies, tools, and approaches to writing programs that ensure a high level of parallelism, principles of managing local and distributed resources in parallel computer systems, as well as the principles of building corresponding software for parallel cyber-physical systems; to provide skills in managing and debugging tools for the development and execution of software for parallel cyber-physical systems, their services, and services. As a result of mastering the course material, students should know the general principles of building and executing software for parallel cyber-physical systems, understand the conceptual foundations of ensuring a high level of parallelism when writing software tools that implement parallel execution of computations and data processing in cyber-physical systems, and be able to work with the main services and technologies for building parallel software. Knowledge of the following disciplines is required to master this course: "Research and Design of Computer Systems and Networks", "Network Information Technologies".
Опис: Parallel Computer Systems. Main Tasks of OOP PS / OP PCS. Classification of Multiprocessor Computer Systems. Parallel Computing Models. Types of Parallel Computer Systems. Parallel Computational Processes in UNIX and macOS OS. The structure of the UNIX and macOS systems. Functions of the UNIX and macOS kernels. Process Management. Process Context. Organization of Parallel Process Execution Planning. Control Threads. Process Hierarchy in UNIX and macOS. Launching New Processes (fork, exec, nice). Obtaining Process Information (getpid, getppid, getuid). Process Termination (exit, wait). Inter-process Communication (IPC) in UNIX and macOS OS. IPC and Other Ways of Process Interaction in UNIX and macOS OS. Unnamed Pipes. Named Pipes. Message Queues. Shared Memory. Interaction via Files (mmap, fcntl, lock, lockf). Semaphores and Signals, Context Switching in UNIX and macOS OS. Execution Threads. POSIX Threads Interface (Pthreads). Software Threads. Creating Threads in Unix OS. POSIX Threads Application Programming Interface (Pthreads). Thread Management Functions. Thread Attribute Management Functions. Processes, Threads, and Fibers in Windows OS. Organization and Interaction of Processes in Windows OS. Launching and Terminating Processes. Launching and Terminating Execution Threads. Peculiarities of Fiber Usage in Windows OS. Application Programming Interfaces (OpenMP). Using the OpenMP Programming Technology. Components of the OpenMP Programming Technology. Distribution of Work Among Control Threads in OpenMP. OpenMP Variable Classes. Thread Synchronization Tools in OpenMP. Message Passing Interface (MPI). MPI Parallel Programming Interface. Basic MPI Service Functions. Sending and Receiving Messages in MPI. Collective Interaction and Process Synchronization in MPI. Working with Process Groups in MPI. IntelTBB Parallel Programming Library. Intel Threading Building Blocks Parallel Programming Tools. Features of Implementation and Writing Programs for IntelTBB. Using Graph Representations in tbb::flow::graphdataflow. GPGPU Technology. Basics of GPGPU Technology. Features of Nvidia GPU Architecture. Main Features of Nvidia CUDA Tools. Overview of the OpenACC Interface. Peculiarities of Memory Management for CUDA Programs.
Assessment methods and criteria: Written reports by laboratory works, verbal questioning, control work (30%) Exam: written and verbal form (70%)
Критерії оцінювання результатів навчання: СC (laboratory) - 30 points exam control - 70 points total - 100 points
Порядок та критерії виставляння балів та оцінок: 100–88 points – ("excellent") is given for a high level of knowledge (some inaccuracies are allowed) of the educational material of the component, which is contained in the main and additional recommended literary sources, the ability to analyze the phenomena studied in their interrelation and development, to clearly, concisely, logically, and consistently answer the questions posed, the ability to apply theoretical principles in solving practical problems; 87–71 points – ("good") is given for a generally correct understanding of the educational material of the component, including calculations, reasoned answers to the questions posed, which, however, contain some (insignificant) shortcomings, the ability to apply theoretical principles in solving practical problems; 70–50 points – ("satisfactory") is given for weak knowledge of the educational material of the component, inaccurate or poorly reasoned answers, with a violation of the sequence of presentation, weak application of theoretical principles in solving practical problems; 49–26 points – ("not certified" with the possibility of retaking the semester control) is given for ignorance of a significant part of the educational material of the component, significant errors in answering questions, inability to apply theoretical principles in solving practical problems; 25–00 points – ("unsatisfactory" with mandatory repeated study) is given 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 principles.
Recommended books: Basic 1. А.О. Мельник, І.Д. Яковлєва Структурний аналіз і синтез паралельних алгоритмів. Монографія. Чернівці: Чернівецький нац. ун-т, 2018. – 184 с. 2. Бекон Дж., Харрис Т. Операційні системи (видання 2). К.: ВНУ, 2012. – 800 с. 3. Мельник А. О., Мельник В. А. Персональні суперкомп'ютери: архітектура, проектування, застосування. Монографія. Львів: Видавництво Львівської політехніки, Львів, 2013. — 516 с. 4. Бондаренко М.Ф. Операційні системи. Компанія СМІТ, 2008 - 432 с. 5. Лунтовський А.О., Климаш М.М., Семенко А.І. Розподілені сервіси телекомунікаційних мереж та повсюдний комп'ютинг і Cloud-технології. Монографія. Львів: Видавництво Львівської політехніки, Львів, 2012. — 368 с. 6. Клаус Шваб, Николас Дэвис Технології четвертої промислової революції. – Ексмо. 2018 – 320 с. 7. Ian Foster, Gerhard Robert Joubert, Ludek. Kucera, Wolfgang E. Nagel, Frans Peters Parallel computing technology trends. – IOS Press BV, Amsterdam, 2020. – 785 p. Additional 1. Cloud computing. Principles and Paradigms. / Edited by Rajkumar Buyya, James Broberg, Andrzej Goscinski. — New Jersey: John Wiley & Sons, Inc., 2011. — 641 p. (Матеріал до додаткових тем 11 та 12, включає в себе основні положення та огляд сучасних технологій паралельного програмування в рамках концепцій big data, GRID та cloud computing). 2. Jason Sanders, Edward Kandrot CUDA by Example: An Introduction to General-Purpose GPU Programming. - Boston: Addison-Wesley Professional, 2010. - 312 p. (Матеріал до теми 9 для більш глибоко ознайомлення з технологією CUDA та написання програм для GPU). 3. Rafael Asenjo, James Reinders, Michael Voss Pro "TBB: C++ Parallel Programming with Threading Building Blocks". - Publ.: Apress, 2019. - 972 p. (Допоміжний матеріал до теми 8 для ознайомлення з особливості реалізації та написання програм для IntelTBB). 4. Victor Eijkhout Parallel Programming in MPI and OpenMP (1-st Edition). - Publ.: Lulu.com, 2017. - 319p. (Допоміжний матеріал до тем 6 та 7 для ознайомлення з прикладами написання паралельних програм використовуючи засоби MPI та OpenMP) 5. Камерон Хьюз, Трейси Хьюз, Параллельное и распределенное программирование с использованием С++ 3 Изд.. – М.: Вильямс, 2014. - 712 с. (Допоміжний матеріал до тем 1-5 з практичними прикладами паралельних програм та демонстрацією використання засобів міжпроцесорної комунікації та синхронізації на мові С++). 6. Joey Tate AWS Lambda: 2019 Beginner's Guide to Serverless Microservices, - Independently Published, 2019. - 32 p.
Уніфікований додаток: The National University "Lviv Polytechnic" ensures the realization of the right of persons with special educational needs to obtain higher education. Inclusive educational services are provided by the "No Limits" Accessibility Service, whose purpose is to ensure continuous individual support of the educational process for students with disabilities and chronic diseases. An important tool for implementing the inclusive education policy at the University is the Program for Advanced Training of Academic Staff and Teaching Support Personnel in the field of social inclusion and inclusive education. Contact address: 2/4 Karpinsky St., 1st building, room 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits, https://lpnu.ua/integration
Академічна доброчесність: The policy regarding the academic integrity of participants in the educational process is formed based on adherence to the principles of academic integrity, considering the norms of the "Regulations on Academic Integrity at the National University 'Lviv Polytechnic'" (approved by the University Academic Council on June 20, 2017, Protocol No. 35).