Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Питання (відповіді).doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
129.54 Кб
Скачать
  1. Базові рівні програмного паралелізму.

В наших лекціях ми досліджуємо можливість паралелізму в межах дода­тку (на відміну паралелізму на рівні операційної системи або апаратних засо­бів). Не дивлячись на те що паралелізм на рівні операційної системи або апарат­них засобі підтримує паралелізм додатку, ми все ж будемо орієнтуватися на сам додаток. Отже, паралелізм можливо забезпечити на рівні:

  • інструкції;

  • підпрограми (функції, процедури);

  • об’єктів;

  • додатків.

Паралелізм на рівні інструкцій

П аралелізм на рівні інструкцій виникає, якщо декілька частин однієї інс­трукції можуть виконуватися одночасно. На рис. 4. показано приклад декомпо­зиції однієї інструкції з метою досягнення паралелізму окремих операцій. Ми бачимо що компонент (А + В) можемо обчислювати одночасно з компонентом (C + D). Даний вид паралелізму як правило підтримується компіляторами і не підпадає під керування програміста на мовах високого рівня.

Паралелізм на рівні підпрограм

ДЗС-структуру програми можемо подати у вигляді ряду функцій, тобто сума робіт, з яких складається розв’язок, поділяється на деяку кількість функ­цій. Якщо дані функції розподілити за потоками, то кожну функцію в даному випадку можемо виконати на окремому процесорі, і, якщо у вашому розпоряд­женні буде достатньо процесорів, то всі функції зможуть виконуватися одноча­с­но.

Паралелізм на рівні об’єктів

ДЗС-структуру програмного рішення можемо розподілити між об’єкта­ми. Кожен об’єкт можна призначити окремому потоку або процесу. Використо­вуючи стандарт CORBA (Common Object Request Broker Architecture – техноло­гія створення розподілених об’єктних додатків), всі об’єкти можна призначити різним комп’ютерам однієї мережі або різним комп’ютерам різних мереж. Об’є­кти, реалізовані в різних потоки або процесах, можуть виконувати свої ме­тоди паралельно.

Паралелізм на рівні додатків

Декілька додатків можуть спільно розв’язувати певну проблему. Не див­лячись на те що певний додаток спочатку призначався для виконання окремої задачі, принципи багаторазового використання коду дозволяють додаткам спів­працювати. В таких випадках два окремих випадки ефективно працюють спіль­но подібно єдиному розподіленому додатку. Наприклад буфер обміну (Clip­board) не передбачався для роботи ні з яким конкретним додатком, але його успішно використовують багато додатків робочого столу. Про деякі варіанти застосування буфера обміну його творці в процесі розробки і не мріяли.

Другий та третій рівні – це основні рівні паралелізму, тому методам їх реалізації і приділяється основна увага в курсі лекцій. Рівня операційної систе­ми та апаратних засобів ми торкнемося тільки втому випадку, коли це буде нео­бхідно в контексті проектування додатку. Отримавши відповідну ДЗС-структу­ру для проекту, який передбачає паралельні та розподілені програмування, мо­жемо переходити до наступного етапу – розглянемо можливості його реалізації.

  1. Стандарти мрі.

Інтерфейс МРІ – стандартна специфікація на передачу повідомлень – був розроблений з метою досягнення високої продуктивності на комп’ютерах з масовим паралелізмом та кластерах робочих станцій (робоча станція – це мере­жевий комп’ютер, що використовує ресурси сервера). В лекціях використовує­ться MPICH- реалізація стандарту МРІ. MPICH – це вільно поширювана реалі­зація інтерфейсу МРІ, який переноситься. MPICH надає С++- програмісту коле­к­цію АРІ- функцій та бібліотек, які підтримують паралельне програмування. Інтерфейс МРІ особливо корисний для програмування моделей SPMD (Single-Program, Multiple-Data – одна програма, декілька потоків даних) і MPMD (Multiple- Program, Multiple-Data – багато програм, багато потоків даних). В ле­к­ціях використовується MPICH- реалізацію бібліотеки МРІ для 32-вузлового Linux- орієнтованого кластера і 8- вузлового кластера, який керується операцій­ними системами Linux і Solaris. І хоча в С++ немає вбудованих примітивів пара­лельного програмування, С++- програміст може скористатися засобами забез­пе­чення паралелізму, які надаються бібліотекою MPICH. В цьому і полягає од­на з переваг мови С++, яке міститься в його фантастичній гнучкості.