- •Тема 1. Вступ в паралельні та розподілені обчислення.
- •Поняття паралелізму.
- •Два узагальнені підходи до досягнення паралельності.
- •3. Переваги паралельних обчислень
- •4. Найпростіша модель розпаралелення
- •Переваги розподілених обчислень.
- •6. Найпростіші моделі розподілених обчислень.
- •7. Мульти-агентні розподілені обчислення.
- •8. Основні етапи проектування паралельних та розподілених алгоритмів.
- •8.1. Декомпозиція
- •8.2. Зв'язок
- •8.3. Синхронізація
- •9. Базові рівні програмного паралелізму
- •9.1. Паралелізм на рівні інструкцій
- •9.2. Паралелізм на рівні підпрограм
- •9.3. Паралелізм на рівні об'єктів
- •9.4. Паралелізм на рівні програм
- •Тема 2. Архітектура паралельних обчислювальних систем.
- •Класифікація паралельних комп’ютерів та систем
- •Векторно-конвеєрні комп’ютери
- •Паралельні комп’ютери з спільною пам’яттю
- •Паралельні комп’ютери з розподіленою пам’яттю
- •Концепція grid або метакомп’ютеринг
- •Тема 3. Основні моделі паралельних та розподілених обчислень.
- •Основні типи паралельних програм.
- •Ітеративний паралелізм.
- •3. Рекурсивний паралелізм
- •4. Модель „виробники-споживачі"
- •5. Паралельна парадигма „клієнт - сервер"
- •6. Паралельна модель „взаємодіючі рівні"
- •Тема 4: Засоби розробки паралельних програм.
- •1.Основні підходи до розробки паралельних програм
- •2.Використання бібліотеки паралельного програмування pthreads
- •Навчальний приклад: Pthreads
- •3. Бібліотека паралельного програмування OpenMp
- •4. Бібліотека паралельного програмування мрі
- •Система програмування mpi
- •Властивості та класифікація процесу.
- •Незалежні та взаємодіючі обчислювальні процеси.
- •Види задач синхронізації паралельних процесів.
- •Синхронізація за допомогою блокування пам’яті.
- •Алгоритм деккера.
- •Команда “перевірка” та “встановлення”.
- •Використання семафорів для синхронізації та впорядкування паралельних процесів.
- •Монітороподібні засоби синхронізації паралельних процесів.
- •Поштові ящики.
- •Конвеєри.
- •Черги повідомлень.
Тема 4: Засоби розробки паралельних програм.
Основні підходи до розробки паралельних програм.
Використання бібліотеки паралельного програмування Pthreads.
Бібліотека паралельного програмування ОрепМР.
Бібліотека паралельного програмування МРІ.
Мови паралельного програмування.
Інструментальні засоби паралельного та розподіленого програмування.
1.Основні підходи до розробки паралельних програм
До цього часу, основна увага приділялася створенню імперативних програм з явно заданими процесами, взаємодією і синхронізацією. Ці програми найбільш поширені і є тим, що виконує апаратура. Для ясності і компактності програми записувалися за допомогою нотації високого рівня. Способи опису паралельності в ній схожі на механізми мови SR, а нотація послідовних процесів аналогічна мовіС. У даному розділі розглядаються додаткові підходи і інструментальні засоби для організації високопродуктивних обчислень.
При написанні паралельних програм найчастіше береться яка-небудь послідовна мова і відповідна бібліотека підпрограм. Тіла процесів записуються на послідовній мові, наприклад, С або Фортрані. Потім за допомогою викликів бібліотечних функцій програмується створення процесів, їх взаємодія і синхронізація. Нам вже знайомі бібліотека Pthread, призначена для машин з пам'яттю, що розділяється, і бібліотека MPI для обміну повідомленнями. У розділі 1 показано, як за допомогою цих бібліотек запрограмувати метод ітерацій Якобі. Потім розглядається технологія ОреnМР — новий стандарт програмування із змінними, що розділяються. Використання ОреnМР проілюстроване також на прикладі ітерацій Якобі.
Абсолютно інший підхід до розробки паралельних програм полягає у використанні розпаралелюючого компілятора. Такий компілятор сам знаходить паралельність в послідовній програмі і створює коректно синхронізовану паралельну програму, яка містить послідовний код і бібліотечні виклики. У розділі 2 приводиться огляд розпаралелюючих компіляторів. Там описаний аналіз залежностей, на основі якого визначається, які частини програми можуть виконуватися паралельно. Потім розглянуті різні перетворення програм, найбільш часто вживані для конвертації послідовних циклів в паралельні. Перевага розпаралелюючих компіляторів полягає в тому, що вони звільняють програміста від вивчення правил написання паралельних програм і можуть бути використані для розпаралелювання вже наявних програм. Проте з їх допомогою часто неможливо розпаралелювати складні алгоритми і, як правило, важко добитися оптимальної продуктивності.
Третій спосіб розробки паралельних програм — використовувати мови високого рівня, в яких паралельність (вся або її частина), взаємодія і синхронізація показані неявно. У розділі 3 описано декілька класів мов високого рівня і проаналізовані основні мови з кожного класу. Для ілюстрації використання кожної з мов і їх порівняння як приклади використовуються метод ітерацій Якобі і інші програми з попередніх глав. Також описані три абстрактні моделі, які можна використовувати для характеристики часу роботи паралельних алгоритмів. Розділ закінчується учбовим прикладом по швидкодіючому Фортрану (High Performance Fortran — HPF), самому останньому в сімействі мов на основі Фортрану, призначених для наукових обчислень. Компілятори мов, подібних HPF, спираються на методи розпаралелювання і створюють програми, що містять послідовний код і бібліотечні виклики.
У розділі 4 представлені програмні інструменти, що допомагають в розробці, оцінці і використанні паралельних програм. Спочатку розглянуті інструментальні засоби для вимірювання продуктивності, візуалізації і так званого управління обчисленнями. Потім описані метаобчислення — новий підхід, що дозволяє об'єднувати обчислювальну потужність різнотипних машин, сполучених високошвидкісними мережами. Наприклад, що моделює частину наукових обчислень може виконуватися на віддаленому суперкомп'ютері, а частини, що управляють і графічна, — на локальній графічній робочій станції. Як конкретний приклад в кінцірозділу 4 описаний новий інфраструктурний набір програмних інструментів Globus для підтримкиметаобчислень.
