Явний паралелізм
У комп'ютерному програмуванні явний паралелізм - це уявлення паралельних обчислень за допомогою примітивів у вигляді директив спеціального призначення або викликів функцій. Більшість паралельних примітивів пов'язані з процесом синхронізації, зв'язку або завдання ділення. Оскільки вони рідко сприяють фактичному виконувананню наміченої обчислювальної програми, їх обчислювальна цінність часто розглядається, як розпаралелювання накладних витрат.
![](../I/%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D0%BD%D0%B0_%D0%B0%D1%80%D1%85%D1%96%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0.jpg.webp)
Явний паралелізм характеризується наявністю явних конструкцій в мові програмування, спрямованих на опис (до деякої міри деталізації) спосіб, в якому паралельні обчислення матимуть місце. В цих рамках існує широкий спектр рішень. Одна крайність представлена "древнім" використанням основних механізмів, низького рівня, щоб мати справу з паралелізмом - як вилка / приєднатися до примітиви, семафори і т.д. - в кінцевому рахунку додані до існуючих мов програмування. Хоча це дозволяє досягнути найвищої ступені гнучкості (будь-яка форма паралельного управління може бути реалізована в термінах основного низького рівня), він залишає додатковий тягар складності повністю на плечах програміста, що робить його завдання надзвичайно ускладненим.
![](../I/%D0%A0%D0%B5%D0%B3%D1%96%D1%81%D1%82%D1%80_%D0%B2_%D1%8F%D0%B2%D0%BD%D0%BE%D0%BC%D1%83_%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%B5%D0%BB%D1%96%D0%B7%D0%BC%D1%96.jpg.webp)
Більш складні підходи були запропоновані, забезпечуючи користувачам засоби для роботи з паралельних обчислень на більш високому рівні абстракції. Це йде зі спеціалізованих бібліотек, що забезпечують єдиний набір комунікаційних примітивів, щоб приховати деталі обчислювальної середовища.
Переваги і недоліки явного паралелізму
Явний паралелізм має різні переваги і недоліки. Основною перевагою є його значна гнучкість, що дозволяє кодувати широкий спектр форм виконання, що дає значну свободу у виборі того, що слід опрацьовувати паралельно і як. З іншого боку, управління паралелізмом дуже складне завдання, яке залишається на розсуд програміста. Заходи, як виявлення компонентів паралельного обчислення, гарантують правильну синхронізацію (наприклад, відсутність умов гонки) можуть бути більш-менш складними в залежності від конкретного застосування.
Ще одною перевагою явного паралельного програмування є абсолютний контроль програміста над паралельним виконанням. Досвідчений паралельний програміст використовує переваги явного паралелізму для того, щоб написати ефективний код. Проте програмування з явним паралелізмом часто буває складною, особливо для НЕ обчислювальних фахівців через додаткові роботи, пов'язані з плануванням поділу завдань і синхронізації паралельних процесів.
У деяких випадках явного паралелізму можна уникнути за використанням оптимізувального компілятора: він автоматично витягує паралелізм, який є властивий обчисленням (див. неявний паралелізм).
Програмування з явним паралелізмом
- OCaml
- Erlang
- Message Passing Interface
- Віртуальна машина
- Мова програмування Ada
- Мова програмування Java
- JavaSpaces