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

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

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

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

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

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

Переваги і недоліки явного паралелізмуРедагувати

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

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

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

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