Модель паралельного програмування
В обчисленнях, Модель паралельного програмування є абстракцією архітектури паралельного комп'ютера, з допомогою якої зручно виражати алгоритми і їх компонування в програмах. Значення моделі програмування можна судити про його спільні ознаки : наскільки добре цілий ряд різних проблем може бути виражений для безлічі різних архітектур, і його продуктивність. Наскільки ефективно скомпільовані програми можуть виконуватись.[1] Реалізація паралельної програми, модель може набувати форми бібліотеки, яка викликається з послідовної мови, як доповнення до наявної мови, або як абсолютно нова мова.[2] Класифікація паралельних моделей програмуванняКласифікації паралельних моделей програмування можна в цілому розділити на дві області : Процес взаємодії і розкладання проблеми.[3] [4] [5] Взаємодія процесівПроцеси взаємодії відносяться до механізмів, за допомогою яких паралельні процеси можуть з'єднуватися одне з одним. Найбільш поширеними формами взаємодії є загальними для пам'яті і передачі повідомлень, але взаємодія також може бути неявною (невидимими для програміста). Спільна пам'ятьСпільна пам'ять є ефективним засобом передачі даних між процесами. У моделі з пам'яттю, паралельні процеси спільно використовують глобальне адресний простір ,що вони читають і пишуть в асинхронному режимі. Асинхронний паралельний доступ може привести до умов перегонів і механізмів, таких як замки, семафори і монітори можуть бути використані , щоб уникнути таких випадків. Традиційні багатоядерні процесори безпосередньо підтримують загальну пам'ять, яка багато паралельних мов і програмні бібліотеки, такі як Cilk, OpenMP і Threading Building Blocks, призначені для використання. Message PassingУ передачі повідомлень моделі, обмінні процеси паралельні дані через передачі повідомлень один одному. Ці зв'язки можуть бути асинхронними, коли повідомлення може бути відправлено до того, як приймач готовий, або синхронний, де приймач повинен бути готовий. Сполучені послідовні процеси (СКП) Формалізація передачі повідомлень використовує синхронні канали зв'язку для підключення процесів, а також привели до важливих мов, таких як Оккама, Лімбо і Go. На противагу цьому, модель актор використовує асинхронний передачі повідомлень і був використаний при розробці мов, таких як D, Scala і SALSA . Неявна взаємодіяУ неявній моделі, ніякої взаємодії процесу не видно програмісту, і замість того, щоб компілятор і / або під час виконання відповідав за його виконання. Два приклади неявного паралелізму з предметно-орієнтованих мов, де наказано паралелізм в рамках операцій на високому рівні, а також з функціональними мовами програмування, так як відсутність побічних ефектів дозволяє не-залежні функції, які будуть виконуватися паралельно.[6] Тим НЕ менше, цей вид паралельності важко управляти[7] і функціональні мови, такі як Concurrent Haskell і Concurrent ML надають можливості для управління паралелізмом в явному вигляді. Розкладання завданняПаралельна програма складається з одночасного виконання процесів. Розкладання проблеми відноситься до способу, в якому сформульовані складові процеси.[8] [9] Завдання паралелізмуЗавдання-паралельної моделі фокусується на процесах, або нитках виконання. Ці процеси часто відрізняються поведінкою, що підкреслює потребу в обміні інформацією. Завдання паралелізм є природним способом виразити передачі повідомлень зв'язку. У систематиці Флінна , паралелізм завдань, як правило, класифікується як MIMD / MPMD або MISD . Паралелізм данихМодель даних паралельно фокусується на виконанні операцій на наборі даних, як правило, регулярно структурованим масивом. Набір завдань буде працювати на цих даних, але незалежно один від одного на непересічних перегородками. У систематиці Флінна, паралельність дані зазвичай класифікуються як MIMD / SPMD або SIMD. Неявні паралелізмиЯк і в випадку неявного взаємодії процесів, неявне модель паралельності не вказує нічого для програміста, як компілятор, Виконавча або апаратне забезпечення несе відповідальність. Наприклад, в трансляторів, автоматичне розпаралелювання є процес перетворення послідовного коду в паралельний код, і в комп'ютерній архітектурі, суперскалярне виконання являє собою механізм , за допомогою якого паралелізм на рівні команд, експлуатується для виконання операцій паралельно. ТермінологіяПаралельні моделі програмування тісно пов'язані з моделями обчислень. Модель паралельних обчислень є абстракцією, використовуваний для аналізу витрат обчислювальних процесів, але це не обов'язково повинні бути практичними, в тому, що він може бути реалізований ефективно в апаратних засобах і / або програмному забезпеченні. Модель програмування, на відміну від цього, в зокрема, це означає, практичні міркування, апаратного та програмного забезпечення реалізації.[10] Паралельний мову програмування може бути заснована на одній або комбінації моделей програмування. Наприклад, High Performance Fortran заснований на взаємодії з загальною пам'яттю і декомпозиції проблеми даних Паралельне, і Go забезпечує механізм пам'яттю і взаємодії передачі повідомлень. Див. такожПримітки
|
Portal di Ensiklopedia Dunia