- •Тема 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
- •Властивості та класифікація процесу.
- •Незалежні та взаємодіючі обчислювальні процеси.
- •Види задач синхронізації паралельних процесів.
- •Синхронізація за допомогою блокування пам’яті.
- •Алгоритм деккера.
- •Команда “перевірка” та “встановлення”.
- •Використання семафорів для синхронізації та впорядкування паралельних процесів.
- •Монітороподібні засоби синхронізації паралельних процесів.
- •Поштові ящики.
- •Конвеєри.
- •Черги повідомлень.
3. Переваги паралельних обчислень
Програми, належна якість проектування яких дозволяє скористатися перевагами паралелізму, можуть виконуватися швидше, ніж їх послідовні еквіваленти, що підвищує їх ринкову вартість. Іноді швидкість може врятувати життя. У таких випадках швидше означає краще. Іноді рішення деяких проблем представляється природнішим у вигляді колекції одночасно виконуваних завдань. Це характерно для таких областей, як наукове програмування, математичне і програмування штучного інтелекту. Це означає, що в деяких ситуаціях технології паралельного програмування знижують трудовитрати розробника ПЗ , дозволяючи йому безпосередньо реалізувати структури даних, алгоритми і евристичні методи, що розробляються ученими. При цьому використовується спеціалізоване устаткування. Наприклад, в мультимедійній програмі з широкими функціональними можливостями з метою отримання вищої продуктивності її логіка може бути розподілена між такими спеціалізованими процесорами, як мікросхеми комп'ютерної графіки, цифрові звукові процесори і математичні спецпроцесори. До таких процесорів звичайно забезпечується одночасний доступ. МРР - комп'ютери (Massively Parallel Processors — процесори з масовим паралелізмом) мають сотні, а іноді і тисячі процесорів, що дозволяє їх використовувати для вирішення проблем, які просто не реально вирішити послідовними методами. Проте при використанні МРР - комп'ютерів (тобто при об'єднанні швидкості і "грубої сили") неможливе стає можливим. До категорії застосування МРР-комп'ютерів можна віднести моделювання екологічної системи (або моделювання впливу різних чинників на навколишнє середовище), дослідження космічного простору і ряд тем з області біологічних досліджень, наприклад проект моделювання генотипу людини. Застосування більш довершених технологій паралельного програмування відкриває двері до архітектури ПЗ , які спеціально розробляються для паралельних середовищ. Наприклад, існують спеціальні мультиагентні архітектури і архітектури, що використовують методологію "класної дошки", розроблена спеціально для середовища з паралельними процесорами.
4. Найпростіша модель розпаралелення
В якості простої моделі, що відображає базові концепції паралельного програмування, розглянемо модель PRAM (Parallel Random Access Machine— паралельна машина з довільним доступом). PRAM— це спрощена теоретична модель з п процесорами, які використовують загальну глобальну пам'ять. Проста модель PRAM зображена на рис. 2.
Рис. 2. Проста модель PRAM
Всі процесори мають доступ для читання і запису до загальної глобальної пам'яті. У PRAM-середовищі можливий одночасний доступ. Припустимо , що всі процесори можуть паралельно виконувати різні арифметичні і логічні операції. Крім того, кожний з теоретичних процесорів (див. рис. 2) може звертатися до загальної пам'яті в одну безперервну одиницю часу. PRAM-модель володіє як паралельними, так і такими, що виключають алгоритмами зчитування даних. Паралельні алгоритми зчитування даних дозволяють одночасно звертатися до однієї і тієї ж області пам'яті без спотворення (псування) даних. Зчитування даних, що виключають алгоритми, використовуються у разі, коли необхідна гарантія того, що ніякі два процеси ніколи не прочитуватимуть дані з однієї і тієї ж області пам'яті одночасно. PRAM-модель також володіє паралельними та виключаючими алгоритмами запису даних. Паралельні алгоритми дозволяють декільком процесам одночасно записувати дані в одну і ту ж область пам'яті, тоді як виключаючи алгоритми гарантують, що ніякі два процеси не записуватимуть дані в одну і ту ж область пам'яті одночасно. Чотири основні алгоритми зчитування і запису даних перераховані в табл. 1.1.
Таблиця 1. Чотири базові алгоритми зчитування і запису даних
Типи алгоритмів |
Опис |
EREW |
Що виключає зчитування/виключаючий запис |
CREW |
Паралельне зчитування/виключаючий запис |
ERCW |
Що виключає зчитування /паралельний запис |
CRCW |
Паралельне зчитування /паралельний запис |
Такі типи алгоритмів часто використовуються для реалізації паралельної архітектури. Архітектура, побудована на основі технології "шкільної дошки", — це одна з важливої архітектури, яку ми реалізуємо за допомогою PRAM-моделі. Необхідно відзначити, що хоча PRAM— це спрощена теоретична модель, вона успішно використовується для розробки практичних програм, і ці програми можуть змагатися по продуктивності з програмами, які були розроблені з використанням складніших моделей паралелізму.
