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

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

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

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

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

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

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

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

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

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

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