Я часто слышу, как люди говорят о параллельных вычислениях и распределенных вычислениях, но у меня сложилось впечатление, что четкой границы между этими двумя понятиями нет, и люди склонны запутывать это довольно легко, хотя я считаю, что это совсем другое:
- Параллельные вычисления более тесно связаны с многопоточностью, или как в полной мере использовать один процессор.
- Распределенные вычисления относятся к понятию «разделяй и властвуй», выполняя подзадачи на разных машинах, а затем объединяя результаты.
Однако, поскольку мы вступили в эру больших данных , кажется, что различие действительно исчезает, и большинство систем сегодня используют комбинацию параллельных и распределенных вычислений.
Примером, который я использую в своей повседневной работе, является Hadoop с парадигмой Map / Reduce, четко распределенная система, в которой работники выполняют задачи на разных машинах, но также используют все преимущества каждой машины с некоторыми параллельными вычислениями.
Я хотел бы получить несколько советов, чтобы понять, как именно провести различие в современном мире, и если мы все еще можем говорить о параллельных вычислениях или более нет четкого различия. Мне кажется, что распределенные вычисления сильно выросли за последние годы, в то время как параллельные вычисления, похоже, застоялись, что, вероятно, могло бы объяснить, почему я слышу гораздо больше разговоров о распределении вычислений, чем о распараллеливании.
источник
Ответы:
Отчасти это вопрос терминологии, и поэтому требуется, чтобы вы и человек, с которым вы разговариваете, уточнить это заранее. Однако есть разные темы, которые более тесно связаны с параллелизмом , параллелизмом или распределенными системами .
Параллелизм обычно связан с тем, чтобы как можно быстрее выполнить конкретное вычисление, используя несколько процессоров. Масштаб процессоров может варьироваться от нескольких арифметических единиц внутри одного процессора до нескольких процессоров, совместно использующих память, до распределения вычислений на многих компьютерах. Что касается моделей вычислений, то параллелизм, как правило, заключается в использовании нескольких внутренних потоков вычислений для вычисления конечного результата. Параллелизм также иногда используется для реактивных систем реального времени , которые содержат много процессоров, которые совместно используют один главный тактовый генератор; такие системы полностью детерминированы .
Параллельность - это изучение вычислений с несколькими потоками вычислений. Параллельность имеет тенденцию исходить из архитектуры программного обеспечения, а не из архитектуры аппаратного обеспечения. Программное обеспечение может быть написано так, чтобы использовать параллелизм для использования аппаратного параллелизма, но часто его поведению присуща необходимость реагировать на различные асинхронные события (например, поток вычислений, который работает независимо от потока пользовательского интерфейса, или программа, которая реагирует аппаратные прерывания путем переключения на поток обработчика прерываний).
Распределенные вычисления изучают отдельные процессоры, связанные линиями связи. В то время как модели параллельной обработки часто (но не всегда) предполагают совместную память, распределенные системы в основном полагаются на передачу сообщений. Распределенные системы по своей сути параллельны. Как и параллелизм, распределение часто является частью цели, а не только частью решения: если ресурсы находятся в географически различных местах, система по своей природе распределена. Системы, в которых возможны частичные сбои (процессорных узлов или линий связи), подпадают под эту область.
источник
Как указывает @Raphael, распределенные вычисления являются подмножеством параллельных вычислений; в свою очередь, параллельные вычисления являются подмножеством параллельных вычислений.
Параллелизм относится к разделениюресурсов в тот же период времени. Например, несколько процессов совместно используют один и тот же ЦП (или ядра ЦП) или разделяют память или устройство ввода-вывода. Операционные системы управляют общими ресурсами. Многопроцессорные машины и распределенные системы - это архитектуры, в которых контроль параллелизма играет важную роль. Параллелизм происходит как на аппаратном, так и на программном уровне. Несколько устройств работают одновременно, процессоры имеют внутренний параллелизм и работают по нескольким инструкциям одновременно, системы имеют несколько процессоров, и системы взаимодействуют через сетевую связь. Параллелизм возникает на уровне приложений при обработке сигналов, при перекрытии операций ввода-вывода и обработки, при обмене данными и при совместном использовании ресурсов между процессами или между потоками в одном и том же процессе.
Два процесса (или потоки), выполняющиеся в одной и той же системе, так что их выполнение чередуется во времени, являются одновременными: процессы (потоки) совместно используют ресурс ЦП. Мне нравится следующее определение: два процесса (потоки), выполняющиеся в одной и той же системе, являются параллельными, если и только если второй процесс (поток) начинает выполнение, когда первый процесс (поток) еще не завершил свое выполнение.
Параллелизм становится параллелизмом, когда процессы (или потоки) выполняются на разных процессорах (или ядрах одного и того же процессора). Параллелизм в этом случае не «виртуальный», а «реальный».
Когда эти процессоры принадлежат одной и той же машине, мы называем вычисления «параллельными»; когда процессоры принадлежат разным машинам , могут быть географически распределены, мы называем вычисления «распределенными».
Следовательно, распределенные вычисления являются подмножеством параллельных вычислений, которое является подмножеством параллельных вычислений.
Конечно, это правда, что в целом параллельные и распределенные вычисления рассматриваются как разные. Параллельные вычисления связаны с тесно связанными приложениями и используются для достижения одной из следующих целей:
В прошлом главной целью параллельных вычислений была первая цель: ускорение решения проблемы. Прямо сейчас и, когда это возможно, ученые в основном используют параллельные вычисления для достижения любой второй цели (например, они готовы тратить столько же времени сколько они потратили в прошлом, на параллельное решение проблемы размера чтобы решить теперь проблему). размером ) или третий (т. е. они готовы тратить столько же времени сколько потратили в прошлом, параллельно решая проблему размера чтобы решить теперь проблему размерах 5 х Т х хT x 5x T x x но с более высокой точностью, используя гораздо более сложную модель, больше уравнений, переменных и ограничений). Параллельные вычисления могут использовать совместно используемую память, передачу сообщений или оба (например, внутриузел совместно используемой памяти, использующий OpenMP, межузел передачи сообщений, использующий MPI); он также может использовать ускорители графических процессоров. Поскольку приложение выполняется на одном параллельном суперкомпьютере, мы обычно не учитываем такие проблемы, как сбои, сетевое разделение и т. Д., Поскольку вероятность этих событий для практических целей близка к нулю. Тем не менее, крупные параллельные приложения, такие как моделирование изменения климата, которые могут выполняться в течение нескольких месяцев, обычно связаны со сбоями и используют механизм контрольной точки / перезапуска, чтобы избежать повторного запуска моделирования с самого начала в случае возникновения проблемы.
Распределенные вычисления связаны со слабосвязанными приложениями, в которых цель (для распределенных суперкомпьютеров ) состоит в том, чтобы решить проблемы, которые слишком велики или выполнение которых может быть разделено на разные компоненты, которые могут выиграть от выполнения на разных архитектурах. Существует несколько моделей, в том числе клиент-сервер, одноранговая сеть и т. Д. Проблемы, возникающие в распределенных вычислениях, такие как безопасность, сбои, сетевое разделение и т. Д., Должны приниматься во внимание во время разработки, поскольку в этом контексте сбои являются правилом и не исключение.
Наконец, Grid и облачные вычисления являются подмножеством распределенных вычислений. Парадигма грид-вычислений возникла как новая область, отличающаяся от традиционных распределенных вычислений, поскольку она сосредоточена на широкомасштабном распределении ресурсов и инновационных высокопроизводительных приложениях. Совместно используемые ресурсы обычно принадлежат нескольким различным административным доменам (так называемые виртуальные организации ). Grid Computing, в то время как интенсивно использовались учеными в последнее десятилетие, традиционно трудны для обычных пользователей. Облачные вычисления пытаются восполнить этот пробел, позволяя обычным пользователям легко эксплуатировать несколько машин, которые расположены в одном центре обработки данных и не географически распределены, за счет использования виртуальных машин.которые могут быть собраны пользователями для запуска своих приложений. Благодаря аппаратному обеспечению, в частности обычному отсутствию высокопроизводительного сетевого соединения (такого как Infiniband и т. Д.), Облака не предназначены для запуска параллельных приложений MPI. Распределенные приложения, работающие в облаках, обычно реализуются для использования парадигмы Map / Reduce. Кстати, многие люди считают Map / Reduction параллельной моделью потока данных.
источник
Я не уверен, что понимаю вопрос. Различие между параллельной и распределенной обработкой все еще существует. Тот факт, что вы можете использовать оба преимущества в одном и том же вычислении, не меняет смысла концепций.
И я не знаю, за какими новостями вы следите, но я вполне уверен, что параллельная обработка не застаивается, тем более, что я думаю, что она полезна гораздо чаще.
Если вам нужно обрабатывать терабайты данных, лучше всего использовать распределенные вычисления (возможно, в сочетании с параллельными вычислениями). Но если вам нужно что-то вычислить на настольном компьютере или смартфоне, параллельные вычисления, вероятно, дадут вам наилучшие результаты, учитывая, что подключение к Интернету может быть доступно не всегда, а когда оно есть, оно может быть медленным.
источник
Вот недавняя статья, которую стоит прочитать:
Мишель Рейнал: «Параллельные вычисления против распределенных вычислений: большая путаница?» , Учеб. Euro-Par 2015 , дои: 10.1007 / 978-3-319-27308-2_4
Абстрактные:
источник
В разделе «Введение» книги [1] авторы предлагают другую точку зрения (отличную от представленных в других ответах) на сравнение между распределенными вычислениями и параллельными вычислениями.
С этой точки зрения парадигма Map / Reduce в основном попадает в контекст параллельных вычислений. Однако, если мы хотим, чтобы задействованные узлы достигли консенсуса по общему лидеру, используя, например, алгоритм Paxos (wiki) , мы рассматриваем типичную проблему в распределенных вычислениях.
[1] Распределенные вычисления. Основы, симуляции и продвинутые темы. Хагит Аттия и Дженнифер Уэлч. 2004.
источник
Есть ответ, который более уместен здесь. В основном
parallel
относится кmemory-shared multiprocessor
тогда какdistributed
относится к своемуprivate-memory multicomputers
. То есть первый - это одноядерный или суперскалярный компьютер, тогда как другой - это географически распределенная сеть компьютеров. Последнее подразумевает меньшую связь и, следовательно, большую доступность и отказоустойчивость за счет меньшей производительности. Производительность страдает, потому что вам нужна (де) сериализация данных в каждом цикле передачи и их доставка на большие расстояния, тогда как вы можете просто ссылаться на объект в памяти, чтобы передать его другому процессору в параллельном процессоре.источник