Явний паралелізм

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Явний та неявний паралелізм

У комп'ютерному програмуванні явний паралелізм — це уявлення паралельних обчислень за допомогою примітивів у вигляді директив спеціального призначення або викликів функцій. Більшість паралельних примітивів пов'язані з процесом синхронізації, зв'язку або завдання ділення. Оскільки вони рідко сприяють фактичному виконуванню наміченої обчислювальної програми, їхня обчислювальна цінність часто розглядається, як розпаралелювання накладних витрат.

Явний паралелізм характеризується наявністю явних конструкцій в мові програмування, спрямованих на опис (до деякої міри деталізації) спосіб, в якому паралельні обчислення матимуть місце. В цих рамках існує широкий спектр рішень. Одна крайність представлена «древнім» використанням основних механізмів, низького рівня, щоб мати справу з паралелізмом - як вилка / приєднатися до примітиви, семафори й т.д. — зрештою додані до існуючих мов програмування. Хоча це дозволяє досягнути найвищого ступеня гнучкості (будь-яка форма паралельного управління може бути реалізована в термінах основного низького рівня), він залишає додатковий тягар складності повністю на плечах програміста, що робить його завдання надзвичайно ускладненим.

Регістр в явному паралелізмі

Складніші підходи були запропоновані, забезпечуючи користувачам засоби для роботи з паралельних обчислень на вищому рівні абстракції. Це йде зі спеціалізованих бібліотек, що забезпечують єдиний набір комунікаційних примітивів, щоб приховати деталі обчислювального середовища.

Переваги та недоліки явного паралелізму[ред. | ред. код]

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

Ще одною перевагою явного паралельного програмування є абсолютний контроль програміста над паралельним виконанням. Досвідчений паралельний програміст використовує переваги явного паралелізму для того, щоб написати ефективний код. Проте програмування з явним паралелізмом часто буває складною, особливо для не обчислювальних фахівців через додаткові роботи, пов'язані з плануванням поділу завдань і синхронізації паралельних процесів. 

У деяких випадках явного паралелізму можна уникнути за використанням оптимізувального компілятора: він автоматично витягує паралелізм, який є властивий обчисленням (див. неявний паралелізм).

Програмування з явним паралелізмом[ред. | ред. код]