Організація обчислювальних процесів у паралельних системах
Спеціальність: Комп'ютерні системи та мережі
Код дисципліни: 7.123.01.E.017
Кількість кредитів: 4.00
Кафедра: Електронні обчислювальні машини
Лектор: к.т.н., доц. каф. ЕОМ Бочкарьов Олексій Юрійович
Семестр: 2 семестр
Форма навчання: денна
Завдання: Загальні компетентності:
ЗК6. Здатність виявляти, ставити та вирішувати проблеми.
Фахові компетентності:
СК2. Здатність розробляти алгоритмічне та програмне забезпечення, компоненти комп’ютерних систем та мереж, Інтернет додатків, кіберфізичних систем з використанням сучасних методів і мов програмування, а також засобів і систем автоматизації проектування.
СК5. Здатність будувати архітектуру та створювати системне і прикладне програмне забезпечення комп’ютерних систем та мереж.
Фахові компетентності професійного спрямування.
Блок 01 «Високопродуктивні комп’ютерні системи»:
ФКС1.1. Володіння поглибленими знаннями про проектування апаратного та програмного забезпечення високопродуктивних комп’ютерних систем.
Результати навчання: Результати навчання відповідно до освітньої програми:
РН9. Розробляти програмне забезпечення для вбудованих і розподілених застосувань, мобільних і гібридних систем.
Результати навчання спеціального спрямування відповідно до освітньої програми:
Блок 01 : «Високопродуктивні комп’ютерні системи»
РНС1.3. Навички володіння апаратно-програмними засобами створення паралельних ра розподілених комп’ютерних систем, здатність розв’язувати складні спеціалізовані задачі щодо їх проектування та дослідження.
Результати вивчення дисципліни:
- знати принципи організації обчислювальних процесів в паралельних комп’ютерних системах;
- знати способи використання інтерфейсу системних викликів UNIX/Linux для організації обчислювальних процесів в паралельних комп’ютерних системах
- знати методи та засоби паралельного програмування на рівні обчислювальних процесів та програмних потоків;
- мати практичні навички по роботі з прикладними програмними інтерфейсами та бібліотеками паралельного програмування;
- вміти проектувати та реалізувати різні схеми організації обчислювальних процесів та програмних потоків в паралельних та розподілених комп’ютерних системах за допомогою інтерфейсів та платформ паралельного програмування;
- мати практичні навички по створенню та налагодженню роботи паралельних програм.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: Попередні: Архітектура комп’ютерів, Паралельні та розподілені обчислення.
Супутні: Проектування віртуальних машин.
Короткий зміст навчальної програми: Дисципліна “Організація обчислювальних процесів у паралельних системах” ставить на меті виробити у студентів чітке та систематизоване уявлення про організацію обчислювальних процесів в паралельних комп’ютерних системах, обчислювальні процеси у таких системах, а також принципи побудови відповідного системного та прикладного програмного забезпечення; надати навички в створенні та організації паралельних обчислювальних процесів. В результаті освоєння учбового матеріалу дисципліни студенти повинні знати загальні принципи організації обчислювальних процесів в паралельних комп’ютерних системах різних класів, розуміти концептуальні основи функціонування системного програмного забезпечення багатозадачних, багатопроцесорних та багатомашинних паралельних комп’ютерних систем, вміти працювати в операційному середовищі паралельних комп’ютерних систем. Для освоєння даної дисципліни необхідне знання таких дисциплін: “Архітектура комп’ютерів”, “Паралельні та розподілені обчислення”.
Опис: 1. Паралельні обчислення. Організація паралельних обчислень. Основні задачі організації паралельних обчислень. Класифікація паралельних комп’ютерних систем. Моделі паралельних обчислень. Типи паралельних комп’ютерних систем. Паралельне програмування. Способи організації паралельних обчислень. Паралельні обчислювальні процеси в ОС Linux. Органіазація обчислювальних процесів в ОС Linux. Запуск та породження нових процесів в ОС Linux (fork, exec, nice). Запит та встановлення атрибутів процесу в ОС Linux. Завершення виконання процесів в ОС Linux (exit, wait).
2. Взаємодія обчислювальних процесів в ОС Linux. Неіменовані канали (anonymous pipes). Створення неіменованого каналу (pipe, pipe2). Робота з неіменованим каналом. Іменовані канали (named pipes). Права доступу до об’єктів System V IPC. Режими іменування об’єктів System V IPC (IPC_PRIVATE, ftok). Черги повідомлень (message queues). Спільна пам’ять (shared memory). Відображення файлів у пам’ять (mmap, munmap, msync). Взаємодія процесів за допомогою файлів відображених у пам’ять. Семафори в ОС Linux. Способи використання семафорів для синхронiзацiї паралельних процесів. Програмний інтерфейс для роботи з семафорами стандарту POSIX. Реалізація механізму семафорів за допомогою системного виклику eventfd(). Сигнали в ОС Linux. Взаємодія процесів за допомогою сокетів Берклі.
3. Паралельні обчислення на рівні програмних потоків: POSIX Threads. Програмні потоки (threads). Переваги та недоліки використання програмних потоків. Інтерфейс прикладного програмування POSIX Threads (Pthreads). Управління програмними потоками. Управління атрибутами потоків. Синхронізація програмних потоків. Синхронізація програмних потоків за допомогою м’ютексів. Синхронізація програмних потоків за допомогою умовних змінних. Блокування читання-запису (readers–writer lock). Cпін-блокування (spinlock). Бар’єрна синхронізація програмних потоків.
4. Технології паралельного програмування OpenMP та oneTBB. Організація паралельних обчислень за допомогою OpenMP. Використання OpenMP. Складові компоненти OpenMP. Опис паралельних частин програми (директива parallel). Управління кількістю програмних потоків. Управління класами змінних в OpenMP. Розподіл обчислювальних завдань між потоками. Розподіл обчислювального навантаження між потоками (директива for, вираз schedule). Виконання блоку коду підмножиною потоків (директиви single та masked). Бар’єрна синхронізація потоків (директива barrier). Критичні секції коду та атомарні операції (директиви critical та atomic). Бібліотека паралельного програмування oneTBB. Організація паралельних обчислень за допомогою oneTBB. Структура бібліотеки паралельного програмування oneTBB. Паралельне виконання ітерацій циклу за допомогою tbb::parallel_for. Розподіл обчислювального навантаження між потоками у tbb::parallel_for.
5. Організація паралельних обчислень в розподілених системах. Програмний інтерфейс MPI: організація обчислень та омбін повідомленнями. Організація обчислень в розподіленій системі за допомогою MPI. Основні службові функції MPI. Відправка та отримання повідомлень з блокуванням. Відправка та отримання повідомлень без блокування. Комунікатори та колективна взаємодія процесів. Використання комунікаторів для роботи з групами процесів. Колективна взаємодія процесів в MPI. Бар'єрна синхронізація процесів в MPI.
Методи та критерії оцінювання: Письмові звіти з лабораторних робіт, усне опитування (40%). Підсумковий контроль (60 %, контрольних захід, екзамен): письмово-усна форма (60%).
Критерії оцінювання результатів навчання: Семестрова оцінка виставляється за умови виконання студентом навчального плану. Семестрова оцінка формується з результатів поточного контролю виконання лабораторних робіт і семестрового тестування. Результат семестрового тестування є добутком результату семестрового тесту у віртуальному навчальному середовищі та коефіцієнта лекційних тестів у віртуальному навчальному середовищі. Максимальна оцінка в балах - 100. Поточний контроль (лаб. Роботи) - 40. Екзаменаційний контроль:
письмова компонента - 50, усна компонента - 10.
Порядок та критерії виставляння балів та оцінок: 100-88 балів - атестований з оцінкою «відмінно» - Високий рівень: здобувач освіти демонструє поглиблене володіння поняттєвим та категорійним апаратом навчальної дисципліни, системні знання, вміння і навички їх практичного застосування. Освоєні знання, вміння і навички забезпечують можливість самостійного формулювання цілей та організації навчальної діяльності, пошуку та знаходження рішень у нестандартних, нетипових навчальних і професійних ситуаціях. Здобувач освіти демонструє здатність робити узагальнення на основі критичного аналізу фактичного матеріалу, ідей, теорій і концепцій, формулювати на їх основі висновки. Його діяльності ґрунтується на зацікавленості та мотивації до саморозвитку, неперервного професійного розвитку, самостійної науково-дослідної діяльності, що реалізується за підтримки та під керівництвом викладача. 87-71 балів - атестований з оцінкою «добре» - Достатній рівень: передбачає володіння поняттєвим та категорійним апаратом навчальної дисципліни на підвищеному рівні, усвідомлене використання знань, умінь і навичок з метою розкриття суті питання. Володіння частково-структурованим комплексом знань забезпечує можливість їх застосування у знайомих ситуаціях освітнього та професійного характеру. Усвідомлюючи специфіку задач та навчальних ситуацій, здобувач освіти демонструє здатність здійснювати пошук та вибір їх розв’язання за поданим зразком, аргументувати застосування певного способу розв’язання задачі. Його діяльності ґрунтується на зацікавленості та мотивації до саморозвитку, неперервного професійного розвитку. 70-50 балів - атестований з оцінкою «задовільно» - Задовільний рівень: окреслює володіння поняттєвим та категорійним апаратом навчальної дисципліни на середньому рівні, часткове усвідомлення навчальних і професійних задач, завдань і ситуацій, знання про способи розв’язання типових задач і завдань. Здобувач освіти демонструє середній рівень умінь і навичок застосування знань на практиці, а розв’язання задач потребує допомоги, опори на зразок. В основу навчальної діяльності покладено ситуативність та евристичність, домінування мотивів обов’язку, неусвідомлене застосування можливостей для саморозвитку. 49-00 балів - атестований з оцінкою «незадовільно» - Незадовільний рівень: свідчить про елементарне володіння поняттєвим та категорійним апаратом навчальної дисципліни, загальне уявлення про зміст навчального матеріалу, часткове використання знань, умінь і навичок. В основу навчальної діяльності покладено ситуативно-прагматичний інтерес.
Рекомендована література: 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.
Уніфікований додаток: Національний університет «Львівська політехніка» забезпечує реалізацію права осіб з інвалідністю на здобуття вищої освіти. Інклюзивні освітні послуги надає Служба доступності до можливостей навчання «Без обмежень», метою діяльності якої є забезпечення постійного індивідуального супроводу навчального процесу студентів з інвалідністю та хронічними захворюваннями. Важливим інструментом імплементації інклюзивної освітньої політики в Університеті є Програма підвищення кваліфікації науково-педагогічних працівників та навчально-допоміжного персоналу у сфері соціальної інклюзії та інклюзивної освіти. Звертатися за адресою:
вул. Карпінського, 2/4, І-й н.к., кімн. 112
E-mail: nolimits@lpnu.ua
Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: Політика щодо академічної доброчесності учасників освітнього процесу формується на основі дотримання принципів академічної доброчесності з урахуванням норм «Положення про академічну доброчесність у Національному університеті «Львівська політехніка» (затверджене вченою радою університету від 20.06.2017 р., протокол № 35).