Паралельні та розподілені обчислення


15

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

Певним чином, обчислення, здається, завжди паралельні, оскільки існують речі, що працюють одночасно. Але чи розподілені обчислення пов'язані просто з використанням більш ніж однієї машини, чи є якісь інші особливості, що відрізняють ці два види обробки? Чи не було б зайвим сказати, наприклад, що обчислення паралельно І розподіленим ?

Відповіді:


16

Простіше кажучи, "паралельний" означає одночасно працювати на різних ресурсах (процесорах), тоді як "розподілений" означає працювати на різних комп'ютерах, пов'язаних з проблемами, пов'язаними з мережами.

Паралельні обчислення, наприклад, OpenMP , не розподіляються, тоді як паралельні обчислення з передачею повідомлень часто розподіляються.

Перебування в умовах "розподіленого, але не паралельного" означало б недостатнє використання ресурсів, тому воно рідко зустрічається, але це концептуально можливо.


4

Терміни "паралельні обчислення" та "розподілені обчислення", безумовно, мають велике перекриття, але їх можна диференціювати далі. Власне, ви вже робили це у своєму запитанні, пізніше запитуючи про "паралельну обробку" та "розподілену обробку".

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

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

Так можна було сказати це

  • "розподілена обробка" зазвичай (хоча і не обов'язково) означає, що вона також є "паралельною обробкою"
  • "розподілене обчислення" є більш загальним, а також охоплює аспекти, не пов'язані з паралелізмом
  • і очевидно, що "паралельне обчислення" / "паралельна обробка" не означає, що воно "розподілене"

3

Надані відповіді поки дуже приємні, але я також очікував наголоси на певній різниці між паралельною та розподіленою обробкою: код виконаний. Розглядаючи паралельні процеси, виконаний код однаковий, незалежно від рівня паралелізму (інструкція, дані, завдання). Ви пишете один код , і він буде виконуватися різними потоками / процесорами, наприклад, під час обчислення матричних продуктів або генерації перестановок.

З іншого боку, розподілене обчислення передбачає виконання різних алгоритмів / програм одночасно в різних процесорах (з однієї або декількох машин). Пізніше такі обчислення об'єднуються у проміжні / кінцеві результати, використовуючи доступні засоби зв'язку / синхронізації даних (спільна пам'ять, мережа). Крім того, розподілені обчислення дуже привабливі для обробки BigData, оскільки дозволяють використовувати паралелізм диска (як правило, вузьке місце для великих баз даних).

Нарешті, для рівня паралелізму це може сприйматись як обмеження синхронізації. Наприклад, у GPGPU, який є одноінструкційним даними з декількома даними (SIMD), паралелізм відбувається за рахунок різних входів для однієї інструкції, кожна пара (data_i, інструкція) виконується іншим потоком. Така стриманість полягає в тому, що у випадку розбіжних гілок потрібно відкинути безліч непотрібних обчислень, доки нитки не зближаться. Однак для потоків процесора вони зазвичай розходяться; але можна використовувати структури синхронізації для забезпечення одночасного виконання конкретних розділів коду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.