Методи та технології розподілених та паралельних обчислень

Mandatory discipline
Навчальна дисципліна професійної підготовки
Обсяг освітнього компонента: 
• у кредитах ЄКТС — 6.0; • у навчальних годинах — 180.
Розподіл навчальних годин (аудиторні заняття / самостійна робота): 
• очна форма — 60 / 120; • заочна форма — 10 / 170.
Кількість аудиторних занять за видами (лекції / практичні заняття / лабораторні заняття): 
• очна форма — 15 / 7 / 8; • заочна форма — 2 / 1 / 2.
Індивідуальна робота: 
; • заочна форма — контрольна робота.
Семестровий контроль: 
Exam.
Освітню компоненту забезпечує: 
Анотація: 

Мета вивчення дисципліни – формування комплексу знань, вмінь в галузі використання паралельних обчислювальних систем для вирішення складних прикладних задач, оволодіння концепціями сучасного програмування в рамках парадигм паралельного та розподіленого програмування.
Задачі вивчення дисципліни:
 вивчення основних термінів і понять, математичного апарата й моделей паралельних обчислень;
 опанування теоретичних і практичних основ виявлення паралелізму, розпаралелювання алгоритмів, перетворення послідовних програм у паралельні, організації паралельних обчислювальних процесів;
 здатність використовувати сучасні методи і мови програмування для оволодіння концепціями паралельних та розподілених обчислень;
 вивчення методів і язикових механізмів конструювання паралельних програм;
 вивчення паралельних чисельних алгоритмів для вирішення типових завдань обчислювальної математики;
 здатність створювати програмне забезпечення для паралельних та розподілених обчислень
Дисципліна є обов’язковою.
Дисципліна базується на знаннях, отриманих на попередньому рівні освіти.
Лекційні заняття

СЕМЕСТРОВИЙ МОДУЛЬ 1
ЗМІСТОВИЙ МОДУЛЬ 1.
ВВЕДЕННЯ В ПАРАЛЕЛЬНІ ОБЧИСЛЕННЯ
Лекція 1. Вступ. Основні визначення
[1, c.7-15], [2, c.8-13].
1.1) послідовні та паралельні обчислення;
1.2) поняття про паралельні обчислення;
1.3) стимули розвитку паралельних обчислень;
1.4) загальна термінологія паралельних обчислень;
1.5) класифікація багатопроцесорних систем за організацією доступу до пам'яті;
1.6) ступінь паралелізму алгоритму;
1.7) напрямки, де необхідна паралелізація.
Лекція 2. Моделі паралельного програмування
[1, c. 15-17], [2, c.14-16], [4, с. 8-12].
2.1) моделі паралельного програмування;
2.2) рівні розпаралелювання;
2.3) паралельні операції;
2.4) паралелізм даних;
2.5) паралелізм задач;
2.6) різновиди паралелізму.
Лекція 3. Розпаралелювання операцій в обчислювальних системах.
[1, c. 17-22], [2, c.14-16], [7, c.].
3.1) види паралелізму в архітектурі комп’ютера;
3.2) способи паралельної обробки;
3.3) поняття паралельної, векторної та конвеєрної обробки даних.

ЗМІСТОВИЙ МОДУЛЬ 2.
КЛАСИФІКАЦІЯ ПАРАЛЕЛЬНИХ СИСТЕМ
Лекція 4. Класифікація паралельних комп’ютерів і систем
[1, c. 30-32], [2, с. 20-21], [3, с. 39-45].
4.1) класифікація Флінна;
4.2) MISD,MIMD,SISD,SIMD – архітектури;
4.3) класифікація Хокні.
Лекція 5. Додаткові види класифікації паралельних систем
[1, c. 32-33].
5.1) класифікація Фенга;
5.2) класифікація Скілікорна;
5.3) класифікація Хендлера;
5.4) класифікація Джонсона;
5.5) класифікація Базу;
5.6) класифікація Крішнамарфі;
5.7) класифікація Дункана.
ЗМІСТОВИЙ МОДУЛЬ 3.
ОЦІНКА ПРОДУКТИВНОСТІ ПАРАЛЕЛЬНИХ АЛГОРИТМІВ
Лекція 6. Продуктивність паралельних алгоритмів.
[3, c.45-51].
6.1) рівні паралелізму;
6.2) балансування навантаження;
6.3) характеристики продуктивності паралельних алгоритмів;
6.4) фактори, що необхідно враховувати при оцінці продуктивності;
6.5) оцінка продуктивності;
6.6) стримуючі фактори розвитку паралельних систем.
Лекція 7. Розробка паралельного алгоритму
[1, c. 22-30], [2, c. 34-36], [3, с. 80-94], [4, с. 12-14].
7.1) етапи розробки паралельного алгоритму;
7.2) формальна модель прискорення алгоритму;
7.3) закон Амдала;
7.4) закон Густафсона-Барсиса.

ЗМІСТОВИЙ МОДУЛЬ 4.
ОСНОВИ ПАРАЛЕЛЬНОГО ПРОГРАМУВАННЯ
Лекція 8. Основи паралельного програмування.
[1, c. 49-63], [2, c. 26-32], [3, с. 94-100].
8.1) основні поняття паралельного програмування;
8.2) нотація паралельних операторів та процесів;
8.3) парадигми паралельного програмування;
8.4) приклади використання різних парадигм.

СЕМЕСТРОВИЙ МОДУЛЬ 2
ЗМІСТОВИЙ МОДУЛЬ 5.
ТЕХНОЛОГІЇ ПАРАЛЕЛЬНОГО ПРОГРАМУВАННЯ
Лекція 9. Інтерфейс передачі повідомлень MPI
[3, c.100-111], [4, с. 64-71].
9.1) неможливість автоматичного розпаралелювання;
9.2) переваги та недоліки стандарту MPI;
9.3) перенесення MPI-програм;
9.4) загальні функції MPI;
9.5) опції надсилання повідомлень.
Лекція 10. Групи та комунікатори в MPI.
[3, c.111-152], [4, с. 74-84].
10.1) колективні взаємодії процесів;
10.2) робота з групами процесів;
10.3) віртуальні топології, комунікатори й області зв'язку;
10.4) функції пристроїв керування трафіком;
10.5) побудова топології мережі;
10.6) контроль зв'язку із сусідами.

ЗМІСТОВИЙ МОДУЛЬ 5.
МЕРЕЖІ ПЕТРІ
Лекція 11. Моделювання систем за допомогою мереж Петрі
[11, c.7-30].
11.1) елементи мережі Петрі;
11.2) граф досяжних станів;
11.3) рівняння станів та властивості мереж Петрі;
11.4) основні властивості мереж Петрі.
Лекція 12. Структурний аналіз мереж Петрі
[11, c.79-113].
12.1) фундаментальне рівняння мережі Петрі;
12.2) інваріант позицій мережі;
12.3) інваріант переходів мережі;
12.4) редукція мережі;
12.5) граф покриваючих маркувань.
ЗМІСТОВИЙ МОДУЛЬ 6.
РОЗПОДІЛЕНІ СИСТЕМИ.
Лекція 13. Вимоги до розподілених систем
[9, c. 8-17], [9, c.93-100].
13.1) поняття розподілених обчислень та розподіленої системи;
13.2) ознаки розподіленої системи;
13.3) основні причини зростання значимості розподілених систем;
13.4) вимоги до розподілених систем;
13.5) типи прозорості;
13.6) напрямки масштабованості розподілених систем;
13.7) технології масштабування.
Лекція 14. Особливості часу в розподілених системах.
[9, c.45-53].
14.1) розсинхронізація годинника;
14.2) синхронні та асинхронні розподілені системи;
14.3) упорядкування подій;
14.4) логічний час;
14.5) скалярний час Лемпорта.
Лекція 15. Взаємодія в розподілених системах.
[9, c.53-61].
15.1) базові примітивами взаємодії в розподілених системах;
15.2) блокуючі операції відправлення/одержання без буферизації;
15.3) блокуючі операції буферизованого відправлення/отримання;
15.4) неблокуючі операції відправлення/отримання;
15.5) синхронний та асинхронний обмін повідомленнями;
15.6) складнощі розробки розподілених систем.

Критерії оцінювання підсумкового контролю
Підсумковим контролем з дисципліни є усний екзамен.
Підсумковий контроль з дисципліни складається з двох частин: теоретичної та практичної. Мінімальна кількість балів, що зараховується як позитивний результат, дорівнює 60 (за 100-бальною шкалою).
Бали розподіляються наступним чином: 40 балів – теоретична частина та 60 балів – практична.
Екзаменаційний білет містить 4 теоретичних питання рівної складності, практична – 4 питання рівної складності.
За бездоганну відповідь на кожне теоретичне питання студент отримує – 10 балів. При цьому відповідь вважається бездоганною, якщо студент повністю розкрив суть питання, послідовно і логічно його доповів, навів приклади.

Результати навчання: 

ПРН06 Розробляти і оцінювати стратегії проєктування програмних засобів; обґрунтовувати, аналізувати і оцінювати варіанти проєктних рішень з точки зору якості кінцевого програмного продукту, ресурсних обмежень та інших факторів.
ПРН15 Здійснювати реінжиніринг програмного забезпечення відповідно до вимог замовника.
СК02. Здатність розробляти і реалізовувати наукові та/або прикладні проєкти у сфері інженерії програмного забезпечення.
ПРН07 Аналізувати, оцінювати і застосовувати на системному рівні сучасні програмні та апаратні платформи для розв’язання складних задач інженерії програмного забезпечення.
ПРН08 Розробляти і модифікувати архітектуру програмного забезпечення для реалізації вимог замовника.
ПРН10 Модифікувати існуючі та розробляти нові алгоритмічні рішення детального проєктування програмного забезпечення.
СК05. Здатність розробляти, аналізувати та застосовувати специфікації, стандарти, правила і рекомендації в сфері інженерії програмного забезпечення.
ПРН02 Оцінювати і вибирати ефективні методи і моделі розроблення, впровадження, супроводу програмного забезпечення та управління відповідними процесами на всіх етапах життєвого циклу.
ПРН09 Обґрунтовано вибирати парадигми і мови програмування для розроблення програмного забезпечення; застосовувати на практиці сучасні засоби розроблення програмного забезпечення.
СК09. Здатність забезпечувати якість програмного забезпечення.
ПРН03 Будувати і досліджувати моделі інформаційних процесів у прикладній області.
ПРН13 Конфігурувати програмне забезпечення, керувати його змінами та розробленням програмної документації на всіх етапах життєвого циклу.

m242508 ▪ 2025