Page 36 - 4868
P. 36
Ошибка! Стиль не определен. 34
Рисунок 1.13 – Синхронізація на рівні команд
Наступний рівень паралелізму, що проявляється в ітеративних
програмах –це цикл. Не усі цикли піддаються паралельному виконанню.
Рішення про це приймає, як правило, програміст, наприклад, за допомогою
директив компіляції (ця технологія реалізована в OpenMP).
Подальше використання паралелізму проводиться на рівні підпрограм
(функцій). Рішення підзадач може бути оформлене у вигляді окремих
функцій, кожна з яких виконується в іншому потоці. За наявності декількох
процесорів виконання декількох потоків може відбуватися паралельно. Цей
рівень вимагає ретельного проектування синхронізації і взаємодії між
процесами, які в свою чергу багато в чому визначаються архітектурою
обчислювальної системи.
Ще одним рівнем паралелізму виступаютьоб’єктитапроцеси, що є
характерними для розподілених програмних систем.
Наступний етап проектування – це планування зв’язків або комунікацій
між частинами програми. Методи зв’язування, як правило, визначаються
архітектурою обчислювальної системи (спільні змінні, канали і т.д.), а їх
конкретна програмна реалізація задається обраним інструментом
програмування – мовою або бібліотекою.
Оскільки,під час розпаралелювання декілька потоків програми
працюють в межах однієїзадачі, то їх функціонування потребує
координування, тому важливим моментом проектування таких систем є
синхронізація. Необхідно передбачити, які із завданьповинні виконуватися
паралельно, а які послідовно; якщо деякі частини програми були виконані
раніше, то чи варто процесору зайнятися виконанням інших частин
програми.
При некоректній організації зв’язків і синхронізації зазвичай
з’являються наступні проблеми:
1. «Гонка даних» виникає через те, що декілька задач одночасно
намагаються обновити та використовувати спільні дані. Ця проблема
найчастіше виникає у випадку, якщо відбувається одночасна модифікація
даних. Однак проблема «гонки даних» також часто виникає і у випадку, коли
одна задача повинна неодноразово використовувати дані, що оновлюються
іншоюзадачею. При відсутності узгодженості процесу,«задача-споживач»
може використовувати застарілі дані (при випереджувальномузчитуванні)
або втратити дані («задача-виробник» може при записі затерти ще
невикористані дані).