Page 36 - 6571
P. 36
рі моменту розташування даних в пам’яті та видалення їх із
пам’яті. Для керування доступом до спільної пам’яті використо-
вуються стандартні механізми синхронізації – семафори і блоку-
вання процесів.
Наведемо існуючі програмні підходи до розробки паралель-
них програм:
1. Бібліотеки передачі повідомлень (MPI – Message Passing
Interface) – інтерфейс передачі повідомлень в якому використову-
ється архітектура SPMD (Single Program Multiple Data – одна про-
грама, багато даних) на розподілених кластерах. Архітектура
SPMD є різновидом архітектури MIMD. SPMD-системи дозволя-
ють виконувати деяку кількість екземплярів однієї і тієї ж про-
грами незалежно один від одного, при цьому кожен екземпляр
опрацьовує різний набір даних.
2. Бібліотеки потоків (POSIX threads (Pthreads)) – стандарт
POSIX реалізації потоків виконання, який визначає API для ство-
рення та керування потоками даних. Використовується для реалі-
зації SPMD архітектури на системах із спільною пам’яттю, що
розподіляється (Shared-Memory System).
3. Набір директив компілятору та бібліотечних процедур
(Open Multi-Processing (OpenMP)) – стандарт розпаралелювання
програм, що описує сукупність директив компілятора, бібліотеч-
них процедур та змінних оточення, які призначені для програму-
вання багатопоточних програмних додатків на багатопроцесор-
них системах із спільною пам’яттю, що розподіляється.
4. Використання програмно-апаратної архітектури CUDA,
фреймворка OpenCL, інтерфейсу програмування застосунків Di-
rectCompute.
5. Розробка паралельних та розподілених програм із викорис-
танням спеціальних бібліотек паралельного програмування у та-
ких мовах як Java, C#, PHP, Python, Ruby і т.д.
Запитання для самоперевірки
1. Назвіть два основних підходи до виконання паралельних
обчислень.
2. Які концепції розподілу (декомпозиції) застосовуються для
вирішення нетривіальних задач?
3. В чому полягає суть розподілу за задачами та за даними?
35