Технології паралельного програмування

Спеціальність: Системне програмування
Код дисципліни: 7.123.02.E.020
Кількість кредитів: 4.00
Кафедра: Електронні обчислювальні машини
Лектор: Муляревич Олександр Володимирович
Семестр: 2 семестр
Форма навчання: денна
Мета вивчення дисципліни: Виробити у студентів чітке та систематизоване уявлення про технології паралельного програмування та організацію обчислювальних процесів в паралельних комп’ютерних системах, обчислювальні процеси у таких системах, а також принципи побудови відповідного системного програмного забезпечення; надати навички в створенні паралельних обчислювальних процесів у відповідному операційному середовищі. Внаслідок вивчення навчальної дисципліни студент повинен бути здатним продемонструвати такі результати: - знати загальні принципи організації обчислювальних процесів в паралельних комп’ютерних системах різних класів; - розуміти концептуальні основи функціонування системного програмного забезпечення багатозадачних, багатопроцесорних та багатомашинних паралельних комп’ютерних систем; - вміти працювати в операційному середовищі паралельних комп’ютерних систем.
Завдання: Вивчення навчальної дисципліни передбачає формування у здобувачів освіти компетентностей: інтегральна компетентність: - Здатність розв’язувати складні спеціалізовані задачі та практичні проблеми під час професійної діяльності у галузі інформаційних технологій або у процесі навчання, що передбачає застосування теорій та методів комп’ютерної інженерії і характеризуються комплексністю та невизначеністю умов. загальні компетентності: - ЗК6. Здатність виявляти, ставити та вирішувати проблеми. спеціальні (фахові, предметні) компетентності: - СК2. Здатність розробляти алгоритмічне та програмне забезпечення, компоненти комп’ютерних систем та мереж, Інтернет додатків, кіберфізичних систем з використанням сучасних методів і мов програмування, а також засобів і систем автоматизації проектування; - СК5. Здатність будувати архітектуру та створювати системне і прикладне програмне забезпечення комп’ютерних систем та мереж. фахові компетентності професійного спрямування: - ФКС1.1. Володіння поглибленими знаннями про проектування системного та прикладного програмного забезпечення комп’ютерних систем з використанням технологій паралельного програмування.
Результати навчання: У результаті вивчення навчальної дисципліни здобувач освіти повинен бути здатним продемонструвати такі результати навчання: 1. знати загальні принципи побудови та функціонування мережних операційних систем; 2. знати основні функції мережних операційних систем та способи їх використання; 3. знати способи управління обчислювальними процесами та методи планування паралельного виконання процесів; 4. знати способи управління пам’яттю, пристроями вводу-виводу, файловими системами та мережною підсистемою; 5. вміти визначати основні параметри роботи мережних операційних систем, здійснювати моніторинг використання системних ресурсів, знаходити та виправляти помилки в роботі мережних операційних систем; 6. мати практичні навички роботи з основними службами, сервісами та системними утилітами мережних операційних систем сімейства UNIX/Linux. У результаті вивчення навчальної дисципліни здобувач освіти повинен бути здатним продемонструвати такі програмні результати навчання: РН9. Розробляти програмне забезпечення для вбудованих і розподілених застосувань, мобільних і гібридних систем. РНС1.1. Вміти розробляти системне програмне забезпечення у складі операційних систем та їх основних компонент з використанням технологій паралельного програмування.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: пререквізити: Дослідження та проектування комп’ютерних систем та мереж Мережні інформаційні технології Організація обчислювальних процесів у паралельних системах
Короткий зміст навчальної програми: Дисципліна “Технології паралельного програмування” ставить на меті виробити у студентів чітке та систематизоване уявлення про технології паралельного програмування, засоби та підходи до написання програм із забезпеченням високого рівня паралелізму, принципи управління локальними та розподіленими ресурсами в паралельних комп’ютерних системах, а також про принципи побудови відповідного програмного забезпечення для паралельних кіберфізичних систем; надати навички управління та налагодження засобів розробки та виконання програмного забезпечення для паралельних кіберфізичних систем, їх служб та сервісів. В результаті освоєння учбового матеріалу дисципліни студенти повинні знати загальні принципи побудови та виконання програмного забезпечення паралельних кіберфізичних систем, розуміти концептуальні основи забезпечення високого рівня паралелізму при написанні програмних засобів, що реалізують паралельне виконання обчислень та обробку даних в кіберфізичних системах, вміти працювати з основними службами та технологіями побудови паралельного програмного забезпечення. Для освоєння даної дисципліни необхідне знання таких дисциплін: “Дослідження та проектування комп’ютерних систем та мереж”, “Мережні інформаційні технології”.
Опис: Паралельні комп’ютерні системи. Основні задачі ООП ПС / ОФ ПКС. Класифікація багатопроцесорних комп’ютерних систем. Моделі паралельних обчислень. Типи паралельних комп’ютерних систем. Паралельні обчислювальні процеси в ОС UNIX та macOs. Структура системи UNIX та macOs. Функції ядра ОС UNIX та macOs. Управління процесами. Контекст процесу. Організація планування паралельного виконання процесів. Потоки управління (threads). Ієрархія процесів в ОС UNIX та в macOs. Запуск нових процесів (fork, exec, nice). Отримання інформації про процес (getpid, getppid, getuid). Завершення виконання процесів (exit, wait). Взаємодія обчислювальних процесів (IPC) в ОС UNIX та macOs. IPC та інші способи взаємодії процесів в ОС UNIX та macOs. Неіменовані канали (pipes). Іменовані канали (named pipes). Черги повідомлень (message queues). Спільна пам’ять (shared memory). Взаємодія за допомогою файлів (mmap, fcntl, lock, lockf). Семафори та сигнали, переключення контекстів в ОС UNIX та macOs. Потоки виконання. Інтерфейс POSIX Threads (Pthreads). Програмні потоки (threads). Створення потоків в Unix OC. Інтерфейс прикладного програмування POSIX Threads (Pthreads). Функції управління потоками. Функції управління атрибутами потоків. Процеси, потоки і волокна виконання в ОС Windows. Організація та взаємодія процесів в ОС Windows. Запуск та завершення виконання процесів. Запуск та завершення потоків виконання. Особливості використання волокон в ОС Windows. Інтерфейси прикладного програмування (OpenMP). Використання технології програмування OpenMP. Складові елементи технології програмування OpenMP. Розподіл роботи між потоками управління в OpenMP. Класи змінних OpenMP. Засоби синхронізації потоків в OpenMP. Інтерфейс передачі повідомлень (MPI). Інтерфейс прикладного паралельного програмування MPI. Основні службові функції MPI. Відправка та прийом повідомлень в MPI. Колективна взаємодія та синхронізація процесів в MPI. Робота з групами процесів в MPI. Бібліотека паралельного програмування IntelTBB. Засоби паралельного програмування Intel Threading Building Blocks. Особливості реалізації та написання програм для IntelTBB. Використання репрезентацій у вигляді графу застосування засобів tbb::flow::graphdataflow. Технологія GPGPU. Основи технології GPGPU. Особливості архітектури GPU від Nvidia. Основні особливості засобів NVidia CUDA. Огляд інтерфейсу OpenACC. Особливості роботи з пам’яттю програм для CUDA.
Методи та критерії оцінювання: письмові звіти з лабораторних робіт, усне опитування, контрольні робота (30%); іспит: письмово-усна форма (70 %).
Критерії оцінювання результатів навчання: ПК (лабораторні) - 30 балів екзаменаційний контроль - 70 балів сумарно - 100 балів
Порядок та критерії виставляння балів та оцінок: 1. Розподіл балів при умові виконання навчального плану, виконання усіх контрольних робіт і календарного плану виконання лабораторних робіт, інакше за результатами проведення семестрового контролю студент вважається не атестованим. 2. Максимальна кількість балів для оцінки поточного контролю (ПК) знань за семестр – 30 балів. 3. Екзаменаційний контроль проводиться в письмово-усній формі. 4. Максимальна кількість балів для оцінки екзаменаційного контролю – 70 балів. 5. Іспит перед комісією студент складає також в письмово-усній формі з фіксацією запитань та оцінок відповідей на екзаменаційному листі. 6. До іспиту студенти допускаються при умові виконання навчального плану (в тому числі усіх лабораторних робіт).
Рекомендована література: Базова 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. Допоміжна 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.
Уніфікований додаток: Національний університет «Львівська політехніка» забезпечує реалізацію права осіб з особливими освітніми потребами на здобуття вищої освіти. Інклюзивні освітні послуги надає Служба доступності до можливостей навчання «Без обмежень», метою діяльності якої є забезпечення постійного індивідуального супроводу навчального процесу здобувачів освіти з інвалідністю та хронічними захворюваннями. Важливим інструментом імплементації інклюзивної освітньої політики в Університеті є Програма підвищення кваліфікації науково-педагогічних працівників та навчально-допоміжного персоналу у сфері соціальної інклюзії та інклюзивної освіти. Звертатися за адресою: вул. Карпінського, 2/4, І-й н.к., кімн. 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits, https://lpnu.ua/integration
Академічна доброчесність: Політика щодо академічної доброчесності учасників освітнього процесу формується на основі дотримання принципів академічної доброчесності з урахуванням норм «Положення про академічну доброчесність у Національному університеті «Львівська політехніка» (затверджене вченою радою університету від 20.06.2017 р., протокол № 35).