- •Тема 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
- •Властивості та класифікація процесу.
- •Незалежні та взаємодіючі обчислювальні процеси.
- •Види задач синхронізації паралельних процесів.
- •Синхронізація за допомогою блокування пам’яті.
- •Алгоритм деккера.
- •Команда “перевірка” та “встановлення”.
- •Використання семафорів для синхронізації та впорядкування паралельних процесів.
- •Монітороподібні засоби синхронізації паралельних процесів.
- •Поштові ящики.
- •Конвеєри.
- •Черги повідомлень.
9.3. Паралелізм на рівні об'єктів
ДЗС-структуру програмного рішення можна розподілити між об'єктами. Кожен об'єкт можна призначити окремому потоку або процесу. Використовуючи стандарт CORBA (Common Object Request Broker Architecture - технологія побудови розподілених об'єктних програм), всі об'єкти можна призначити різним комп'ютерам одній мережі або різним комп'ютерам різних мереж. Об'єкти, реалізовані в різних потоках або процесах, можуть виконувати свої методи паралельно.
9.4. Паралелізм на рівні програм
Декілька програм можуть спільно вирішувати деяку проблему. Не дивлячись на те що якась програма первинно призначалась для виконання окремого завдання , принципи багатократного використання коду дозволяють програмам співпрацювати. У таких випадках дві окремі програми ефективно працюють разом подібно до єдиної розподіленої програми. Наприклад, буфер обміну (Clipboard) не призначався для роботи ні з яким конкретним програмами, але його успішно використовує безліч програм робочого столу. Про деякі варіанти застосування буфера обміну його творці в процесі розробки навіть і не мріяли.
Другий і третій рівні — це основні рівні паралелізму, тому методам їх реалізації і приділяється основна увага в цій книзі. Рівня операційної системи і апаратних засобів ми торкнемося тільки у тому випадку, коли це буде необхідно в контексті проектування програм. Одержавши відповідну ДЗС-структуру для проекту, що передбачає паралельне або розподілене програмування, можна переходити до наступного етапу - розгляду можливості його реалізації в C++.
Тема 2. Архітектура паралельних обчислювальних систем.
Класифікація паралельних комп’ютерів та систем.
Векторно-конвеєрні комп’ютери.
Паралельні комп’ютери з паралельною пам’яттю.
Паралельні комп’ютери з розподіленою пам’яттю.
Концепція GRID або метакомп’ютеринг.
Класифікація паралельних комп’ютерів та систем
Однією з перших і найбільших відомих класифікацій архітектур обчислювальних систем є класифікація МФлінн, яка була запрограмована в 1966 р. Ця класифікація базується на терміні «потік», під яким розуміння команд або даних, що обробляються процесором. На основі цього терміну Флінт виділяє чотири типи архітектури обчислювальних систем.
1. SISD
Single Instruction. Single Data
Одиночний потік команд – одиночний потік даних
ПК – пристрій керування
ПЕ – процесорний елемент
ПД. – пам’ять даних
Так як машина дає потік команд. Тільки 1-н потік команд і тільки один потік даних. Всі команди обробляють послідовно одна за одною. Кожна команда ініціює тільки одну скалярну операцію. До машин цього класу відносяться звичайні послідовні машини РDР 11, VAX 17, IBM – перші сумісні комп’ютери.
2. SIMD.
Single instruction Multiple Data – множинний одиночний потік команд – множинний потік даних
В цій архітектурі зберігається один потік команд, який має на відміну від попереднього класу векторні команди. Це дозволяє виконати один ариф, операцій відразу над багатьма даними, наприклад над елементами вектора. До цих машин відносяться машини ILLIAC -4, KRAY -1
3. MISD
Myltiple instruction Single date – множинний потік інструкцій, одиночний потік даних
Це визначення обумовлює наявність в архітектурі комп’ютера багатьох процесорів, які здійснюють операції обчислення над одним і тим самим потоком даних. Хоча теоретично такий клас машин існує, на практиці практично не було створено жодної машини з такою архітектурою. Окремі дослідники відносять векторно-конвеєрні машини до цього класу. Однак це не підтримується більшістю науковців виробників в даній предметній області.
4.MIMD
Myltiple instraktion Multiple Date – множинний потік команд – множинний потік даних
Це клас обчислювальних машин має декілька пристроїв обробки даних (декілька процесорів), які з’єднані в один комплекс, і які працюють кожен в свій потік команд з своїм потоком даних. Як видно під визначення цього класу попадає більшість паралель них машин, що створені і створюються зараз в світі.
Ця класифікація є одною з широко вживаних і використовується при початковій характеристиці того чи іншого комп’ютера. Однак в неї є певні недоліки:
деякі класи машин важко підвести під одну із цих чотирьох груп, зокрема векторно конвеєрні комп’ютери.
практично всі машини відносяться до класу MIMD. Тому існують декілька інших класифікацій, які:
а) додатково класифікується клас МІМD (класифікація Р. Хокні)
б) класифікація по критеріях кількості біт в машинному слові комп’ютера і кількості слів, які паралельна машина здатна обробити за одиницю часу (класифікація Т. Фена)
в) класифікують і описують в якому вигляді можливості паралельної і конвеєрної обробки даних (класифікація В. Хендлера)
г) розділяють етапи вибірки і виконання в потоках команди даних (класифікація Л. Шнайдера)
д) розглядають архітектуру любого комп’ютера, як абстрактну структуру, що складається з чотирьох компонентів:
- процесор команд
- процесор даних
- ієрархія пам’яті
- перемикач для зв’язку між процесорами і пам’яттю(класифікація Скілікорна)
