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
   31   32   33   34   35   36   37   38   39   40   41