Як вказував @Raphael, розподілене обчислення - це підмножина паралельних обчислень; у свою чергу, паралельні обчислення - це підмножина паралельних обчислень.
Паралельність відноситься до обмінуресурсів у ті ж часові рамки. Наприклад, кілька процесів поділяють один і той же процесор (або ядра процесора) або ділять пам'ять або пристрій вводу / виводу. Операційні системи управляють спільними ресурсами. Багатопроцесорні машини та розподілені системи - це архітектура, в якій контроль сумісності грає важливу роль. Паралельність відбувається як на апаратному, так і на програмному рівні. Кілька пристроїв працюють одночасно, процесори мають внутрішній паралелізм і працюють над декількома інструкціями одночасно, системи мають кілька процесорів, а системи взаємодіють через мережевий зв’язок. Паралельність виникає на рівні додатків в обробці сигналів, перекритті вводу-виводу та обробці, комунікації та спільному використанні ресурсів між процесами або між потоками в тому ж процесі.
Два процеси (або потоки), що виконуються в одній і тій же системі, щоб їх виконання впорядковано в часі, є одночасними: процеси (потоки) діляться ресурсом процесора. Мені подобається таке визначення: два процеси (потоки), що виконуються в одній і тій же системі, є одночасними, якщо і лише тоді, коли другий процес (потік) починає виконання, коли перший процес (потік) ще не завершив його виконання.
Паралельність стає паралелізмом, коли процеси (або потоки) виконуються на різних процесорах (або ядрах одного і того ж процесора). Паралелізм в даному випадку є не "віртуальним", а "реальним".
Коли ці процесори належать одній машині, ми називаємо обчислення як "паралельні"; коли ЦП належать до різних машин , можуть бути географічно розповсюджені, ми називаємо обчислення "розподіленими".
Тому розподілене обчислення - це підмножина паралельних обчислень, що є підмножиною одночасних обчислень.
Звичайно, правда, що загалом паралельні та розподілені обчислення розглядаються як різні. Паралельні обчислення пов'язані з щільно пов'язаними додатками і використовуються для досягнення однієї з наступних цілей:
- Швидше вирішувати обчислювальні задачі;
- Вирішуйте більші проблеми за стільки ж часу;
- Вирішуйте проблеми однакового розміру з більшою точністю за однаковий час.
Tx5xTxxале з більшою точністю, використовуючи значно складнішу модель, більше рівнянь, змінних і обмежень). Паралельні обчислення можуть використовувати спільну пам’ять, передачу повідомлень або те і інше (наприклад, внутрішньовузло спільної пам'яті з використанням OpenMP, міжвузло, що передає повідомлення, використовуючи MPI); він також може використовувати прискорювачі графічних процесорів. Оскільки програма працює на одному паралельному суперкомп'ютері, ми зазвичай не враховуємо такі проблеми, як збої, мережевий розділ тощо, оскільки ймовірність цих подій практичних цілей близька до нуля. Однак великі паралельні програми, такі як симуляція зміни клімату, які можуть працювати протягом декількох місяців, зазвичай пов'язані з відмовами, і використовуйте механізм контрольної точки / перезавантаження, щоб уникнути запуску моделювання з самого початку, якщо виникає проблема.
Розподілене обчислення пов'язане із слабко з'єднаними програмами, в яких мета (для розподілених суперкомп'ютерів ) - вирішити проблеми, інакше занадто великі або виконання яких може бути розділене на різні компоненти, які могли б отримати користь від виконання в різних архітектурах. Існує кілька моделей, включаючи клієнт-сервер, одноранговий тощо. Питання, що виникають при розподілених обчисленнях, таких як безпека, збої, мережевий розділ тощо, повинні враховуватися під час проектування, оскільки в цьому контексті збої є правилом і не виняток.
Нарешті, Grid та Cloud computing - обидва підмножини розподілених обчислень. Парадигма мережевих обчислень виникла як нове поле, що відрізняється від традиційних розподілених обчислень через його спрямованість на широкомасштабний обмін ресурсами та інноваційні високопродуктивні програми. Ресурси, якими ділиться, зазвичай належать до декількох різних адміністративних доменів (так званих віртуальних організацій ). Сіткові обчислення, хоча вчені широко використовуються в останнє десятиліття, звичайно користувачі традиційно важкі. Хмарні обчислення намагаються усунути прогалину, дозволяючи звичайним користувачам легко використовувати декілька машин, які розташовані в одному центрі обробки даних і не розподіляються географічно за допомогою використання віртуальної машиниякі можуть бути зібрані користувачами для запуску своїх додатків. Через апаратне забезпечення, зокрема звичайну відсутність високоефективного мережевого взаємозв'язку (наприклад, Infiniband тощо), хмари не орієнтовані на запуск паралельних програм MPI. Розподілені програми, що працюють на хмарах, зазвичай реалізуються для використання парадигми Map / Reduce. До речі, багато хто думає про Map / Reduction як паралельну модель потоку даних.