Parallel Programming Technologies

Major: System Programming
Code of subject: 7.123.02.E.027
Credits: 4.00
Department: Electronic Computing Machines
Lecturer: Muliarevych Oleksandr Volodymyrovych
Semester: 2 семестр
Mode of study: денна
Learning outcomes: understand functioning software of multitask, multiprocessor and multicomputer parallel computer systems; know general principles of programming parallel computer systems of various classes; be able to work in the operating environment of parallel computer systems and use POSIX Threads and Windows API for parallel programming using threads operating system; be able to use IntelTBB, OpenMP and MPI for programming parallel computer systems different types; understand basics GPGPU technology and be able to use CUDA and OpenACC for programming parallel computer systems by GPGPU technology. know the basic programming library for parallel computer systems and be able to use them.
Required prior and related subjects: пререквізити: Дослідження та проектування комп’ютерних систем та мереж Мережні інформаційні технології Організація обчислювальних процесів у паралельних системах
Summary of the subject: Parallel computer systems and methods of parallel programming. Parallel computing processes in Unix-like OS. Inter-process communication in Unix-like OS. Concurrency in C++ and the new Standard C++ 17. Application programming interface POSIX Threads (Pthreads). Processes, threads and fibers in OS Windows. Library for parallel programming IntelTBB. Application programming interface OpenMP. Technology GPGPU. Application programming interface OpenACC. The message passing interface MPI.
Assessment methods and criteria: Written reports by laboratory works, verbal questioning, control work (30%) Exam: written and verbal form (70%)
Recommended books: Базова 1. А.О. Мельник, І.Д. Яковлєва Структурний аналіз і синтез паралельних алгоритмів. Монографія. Чернівці: Чернівецький нац. ун-т, 2018. – 184 с. 2. Бекон Дж., Харрис Т. Операційні системи (видання 2). К.: ВНУ, 2012. – 800 с. 3. Мельник А. О., Мельник В. А. Персональні суперкомп'ютери: архітектура, проектування, застосування. Монографія. Львів: Видавництво Львівської політехніки, Львів, 2013. — 516 с. 4. Бондаренко М.Ф. Операційні системи. Компанія СМІТ, 2008 - 432 с. 5. Лунтовський А.О., Климаш М.М., Семенко А.І. Розподілені сервіси телекомунікаційних мереж та повсюдний комп'ютинг і Cloud-технології. Монографія. Львів: Видавництво Львівської політехніки, Львів, 2012. — 368 с. 6. Клаус Шваб, Николас Дэвис Технології четвертої промислової революції. – Ексмо. 2018 – 320 с. Допоміжна 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 з практичними прикладами паралельних програм та демонстрацією використання засобів міжпроцесорної комунікації та синхронізації на мові С++).