Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VPKS_v2_UKR_new.doc
Скачиваний:
21
Добавлен:
11.09.2019
Размер:
2.31 Mб
Скачать

1) Язикові розширення.

Цей підхід вимагає рішення ряду питань:

  • підтримка повторного входу;

  • утворення й завершення паралельних процесів;

  • синхронізація паралельних процесів;

  • підрозділ даних на локальні й поділювані дані процесів;

Переваги такого підходу полягають у наступному. У багатьох випадках розширення можуть бути зроблені тільки за рахунок додавання нових бібліотечних програм. При цьому вхідна мова й відповідний компілятор залишаються незмінними. Це відносно недорого для експериментів з альтернативними розширеннями. Ті з них, які виявляться вдалими для певного класу завдань, можуть бути збережені.

Недолік. У компілятора відсутні знання, як розпаралелити програму. Це унеможливлює аналіз розподілу даних між процесами, що не дозволяє виконати оптимізацію, компілятор може виконати неприпустимі переміщення частин програми, не звертаючи уваги на критичну секцію, що може привести до порушень і некоректності.

2) Розширення компіляторів.

Цей підхід вимагає дуже складного компілятора. У цей час всі роботи в цьому напрямку орієнтовані на аналіз циклів з метою виявлення можливості максимального їх розпаралелення.

Однак залишаються невирішеними два питання:

  1. Якщо зусилля компілятора концентруються на циклах як джерелах розпаралелення, то який ступінь розпаралелення може бути досягнутий?

  2. Якщо компілятор повинен звертатися до викликів підпрограм, то наскільки ефективно вони можуть визначати й використати можливості розпаралелення і її реалізацію. Адже розпаралелення пов'язане з усуненням залежності від даних. Але в підпрограмах залежності даних важкі для визначення, оскільки при статичному аналізі програми не завжди вдається встановити, які змінні будуть передаватися в різні підпрограми.

3) Додавання нового язикового рівня.

Цей підхід пов'язаний з тим, що більшість помилок у паралельних програмах пов'язані з паралельною структурою, тобто з каркасом програми, а не із внутрішніми деталями обчислень. Звідси вихід - для опису каркаса програми використати нові язикові форми, а специфікацію внутрішніх частин програми зберегти на існуючих мовах (Фортран, Паскаль, Сі).

Такий дворівневий підхід може бути реалізований з використанням препроцесора до компілятора об'єктної мови, що підтримує паралельне програмування.

Недоліки:

  1. Специфікується тільки синхронізація взаємодії процесів, але не розподіл даних;

  2. Утрудняється налагодження.

4) Нова мова.

Найбільш радикальний підхід.

Недолік: ця стратегія пов'язана з дуже великими витратами й інтенсивною працею. Існуючі прикладні програми повинні бути переписані. Однак для нових розробок такий підхід може виявитися найбільш перспективним.

3.Архітектура паралельної обробки.

Процесори можуть з'єднуватися один з одним різними способами, створюючи розмаїтість архітектури паралельної обробки.

Також існують різноманітні методи або парадигми програмування цих машин.

Паралельні архітектури звичайно класифікуються відповідно до таксономії Фліна:

  1. Множинний потік команд - одиночний потік даних (МКОД)

Кілька процесорів одночасно виконують різні потоки команд над одним потоком даних.

Типовим прикладом такої архітектури є конвеєрні системи.

2. Одиночний потік команд - множинний потік даних (ОКМД) або SIMD (Single Instruction Multiple Data).

Кілька процесорів одночасно виконують ту саму команду над різними потоками даних.

3. Множинний потік команд - множинний потік даних (МКМД ) або MIMD (Multiple Instruction Multiple Data).

Кожний процесор може виконувати різні команди над різними потоками даних.

1. Машини класу МКОД, або конвеєрні машини, засновані на поділі всього алгоритму на елементарні завдання, які можуть виконуватися послідовно. Такі машини складаються з елементарних процесорів, видимих для кожного завдання й працюючих паралельно.

Дані вводяться в конвеєр по кроках обробки. На кожному кроці одна операція виконується над кожним елементом даних, у той час як різні кроки по обробці даних виконуються послідовно.

Як тільки конвеєр заповнений, після кожного циклу видається новий результат поза залежністю від типу кроків у цьому ланцюжку.

Швидкість таких машин визначається швидкістю самого повільного процесора й тому істотним є поділ алгоритму на елементарні завдання.

Перевагою машини класу МКОД є регулярні зв'язки між елементами конвеєра й простота програмування; однак такі машини погано працюють там, де алгоритм обробки істотно залежить від даних.

2. Машини ОКМД.

Складаються з масиву ідентичних обробних елементів (ОЕ), керованим одним пристроєм керування. Всі ОЕ виконують синхронно ту саму програму синхронно пошагово над різними даними.

Звичайно ОЕ утворять двомірний масив, причому кожний ОЕ має власну локальну пам'ять.

ОЕ в машинах класу ОКМД звичайно є однобітовими арифметичними пристроями й дані мають довжини 1 біт.

3. Машини класу МКМД.

Незалежні процесори виконують різні програми й процесори взаємодіють один з одним. Процесори завжди мають локальну пам'ять, а також мають доступ до загальної поділюваної пам'яті або до пам'яті всіх інших процесорів. Схема зв'язку може бути або фіксованою, або перемикальною.

На базі цих машин можна створювати дуже гнучкі архітектури, однак є труднощі із програмуванням.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]