Явний паралелізм
У комп'ютерному програмуванні явний паралелізм — це уявлення паралельних обчислень за допомогою примітивів у вигляді директив спеціального призначення або викликів функцій. Більшість паралельних примітивів пов'язані з процесом синхронізації, зв'язку або завдання ділення. Оскільки вони рідко сприяють фактичному виконуванню наміченої обчислювальної програми, їхня обчислювальна цінність часто розглядається, як розпаралелювання накладних витрат.
Явний паралелізм характеризується наявністю явних конструкцій в мові програмування, спрямованих на опис (до деякої міри деталізації) спосіб, в якому паралельні обчислення матимуть місце. В цих рамках існує широкий спектр рішень. Одна крайність представлена «древнім» використанням основних механізмів, низького рівня, щоб мати справу з паралелізмом - як вилка / приєднатися до примітиви, семафори й т.д. — зрештою додані до існуючих мов програмування. Хоча це дозволяє досягнути найвищого ступеня гнучкості (будь-яка форма паралельного управління може бути реалізована в термінах основного низького рівня), він залишає додатковий тягар складності повністю на плечах програміста, що робить його завдання надзвичайно ускладненим.
Складніші підходи були запропоновані, забезпечуючи користувачам засоби для роботи з паралельних обчислень на вищому рівні абстракції. Це йде зі спеціалізованих бібліотек, що забезпечують єдиний набір комунікаційних примітивів, щоб приховати деталі обчислювального середовища.
Переваги та недоліки явного паралелізму[ред. | ред. код]
Явний паралелізм має різні переваги та недоліки. Основною перевагою є його значна гнучкість, що дозволяє кодувати широкий спектр форм виконання, що дає значну свободу у виборі того, що слід опрацьовувати паралельно і як. З іншого боку, управління паралелізмом дуже складне завдання, яке залишається на розсуд програміста. Заходи, як виявлення компонентів паралельного обчислення, гарантують правильну синхронізацію (наприклад, відсутність умов гонки) можуть бути більш-менш складними в залежності від конкретного застосування.
Ще одною перевагою явного паралельного програмування є абсолютний контроль програміста над паралельним виконанням. Досвідчений паралельний програміст використовує переваги явного паралелізму для того, щоб написати ефективний код. Проте програмування з явним паралелізмом часто буває складною, особливо для не обчислювальних фахівців через додаткові роботи, пов'язані з плануванням поділу завдань і синхронізації паралельних процесів.
У деяких випадках явного паралелізму можна уникнути за використанням оптимізувального компілятора: він автоматично витягує паралелізм, який є властивий обчисленням (див. неявний паралелізм).
Програмування з явним паралелізмом[ред. | ред. код]
- OCaml
- Erlang
- Message Passing Interface
- Віртуальна машина
- Мова програмування Ada
- Мова програмування Java
- JavaSpaces
|
Це незавершена стаття про алгоритми. Ви можете допомогти проєкту, виправивши або дописавши її. |