Page 35 - 6571
P. 35
на проведення обчислень. Часто, виникають конфлікти між сту-
пенем розпаралелювання та об’ємом комунікацій, тобто між чим
більшим числом процесорів розподілена задача, тим більший об-
сяг даних необхідно пересилати між ними.
Розглянемо основні моделі паралельного програмування:
1. Процес / канал (Process/Channel). У цій моделі програми
складаються з одного або декількох процесів, розподілених по
процесорах. Процеси виконуються одночасно і їхнє число може
змінитися протягом часу виконання програми. Процеси обміню-
ються даними через канали, що являють собою односпрямовані
комунікаційні лінії, які з’єднують тільки два процеси. При цьому
канали можна створювати і видаляти.
2. Обмін повідомленнями (Message Passing). У цій моделі про-
грами можуть бути написані на традиційній послідовній мові
програмування. Кожна програма повинна мати доступ до пам’яті
виконуючого її процесора. При цьому програми обмінюються
між собою даними, використовуючи для цього підпрограми при-
йому / передачі даних певної комунікаційної системи. Програми,
що використовують обмін повідомленнями, можуть виконувати-
ся тільки на MIMD комп’ютерах.
3. Паралелізм даних(Data Parallel). У даній моделі єдина про-
грама задає розподіл даних між усіма процесорами комп’ютера і
операції над ними. Даними, що розподіляються зазвичай висту-
пають масиви. Як правило, мови програмування, що підтримують
дану модель, допускають операції над масивами і дозволяють ви-
користовувати у виразах цілі масиви та підмасиви. Розпаралелю-
вання операцій над масивами шляхом використання циклів обро-
бки масивів дозволяє збільшити продуктивність такої програми.
Компілятор відповідає за генерацію коду, що здійснює розподіл
елементів масивів і обчислень між процесорами. Кожний проце-
сор відповідає за ту підмножину елементів масиву, що розташо-
вана в його локальній пам’яті. Програми з паралелізмом даних
можуть бути відтрансльовані та виконані як на комп’ютерах з
MIMD, так і на комп’ютерах з SIMD архітектурою.
4. Спільної пам’яті (Shared Memory). У цій моделі всі проце-
си спільно використовують єдиний адресний простір. Процеси
асинхронно звертаються до спільної пам’яті як із запитами на чи-
тання, так і із запитами на запис, що створює проблеми при вибо-
34