Как указывает @Raphael, распределенные вычисления являются подмножеством параллельных вычислений; в свою очередь, параллельные вычисления являются подмножеством параллельных вычислений.
Параллелизм относится к разделениюресурсов в тот же период времени. Например, несколько процессов совместно используют один и тот же ЦП (или ядра ЦП) или разделяют память или устройство ввода-вывода. Операционные системы управляют общими ресурсами. Многопроцессорные машины и распределенные системы - это архитектуры, в которых контроль параллелизма играет важную роль. Параллелизм происходит как на аппаратном, так и на программном уровне. Несколько устройств работают одновременно, процессоры имеют внутренний параллелизм и работают по нескольким инструкциям одновременно, системы имеют несколько процессоров, и системы взаимодействуют через сетевую связь. Параллелизм возникает на уровне приложений при обработке сигналов, при перекрытии операций ввода-вывода и обработки, при обмене данными и при совместном использовании ресурсов между процессами или между потоками в одном и том же процессе.
Два процесса (или потоки), выполняющиеся в одной и той же системе, так что их выполнение чередуется во времени, являются одновременными: процессы (потоки) совместно используют ресурс ЦП. Мне нравится следующее определение: два процесса (потоки), выполняющиеся в одной и той же системе, являются параллельными, если и только если второй процесс (поток) начинает выполнение, когда первый процесс (поток) еще не завершил свое выполнение.
Параллелизм становится параллелизмом, когда процессы (или потоки) выполняются на разных процессорах (или ядрах одного и того же процессора). Параллелизм в этом случае не «виртуальный», а «реальный».
Когда эти процессоры принадлежат одной и той же машине, мы называем вычисления «параллельными»; когда процессоры принадлежат разным машинам , могут быть географически распределены, мы называем вычисления «распределенными».
Следовательно, распределенные вычисления являются подмножеством параллельных вычислений, которое является подмножеством параллельных вычислений.
Конечно, это правда, что в целом параллельные и распределенные вычисления рассматриваются как разные. Параллельные вычисления связаны с тесно связанными приложениями и используются для достижения одной из следующих целей:
- Быстрее решать вычислительные проблемы;
- Решите большие проблемы за то же время;
- Решайте проблемы одинакового размера с более высокой точностью за одно и то же время.
В прошлом главной целью параллельных вычислений была первая цель: ускорение решения проблемы. Прямо сейчас и, когда это возможно, ученые в основном используют параллельные вычисления для достижения любой второй цели (например, они готовы тратить столько же времени сколько они потратили в прошлом, на параллельное решение проблемы размера чтобы решить теперь проблему). размером ) или третий (т. е. они готовы тратить столько же времени сколько потратили в прошлом, параллельно решая проблему размера чтобы решить теперь проблему размерах 5 х Т х хTx5xTxxно с более высокой точностью, используя гораздо более сложную модель, больше уравнений, переменных и ограничений). Параллельные вычисления могут использовать совместно используемую память, передачу сообщений или оба (например, внутриузел совместно используемой памяти, использующий OpenMP, межузел передачи сообщений, использующий MPI); он также может использовать ускорители графических процессоров. Поскольку приложение выполняется на одном параллельном суперкомпьютере, мы обычно не учитываем такие проблемы, как сбои, сетевое разделение и т. Д., Поскольку вероятность этих событий для практических целей близка к нулю. Тем не менее, крупные параллельные приложения, такие как моделирование изменения климата, которые могут выполняться в течение нескольких месяцев, обычно связаны со сбоями и используют механизм контрольной точки / перезапуска, чтобы избежать повторного запуска моделирования с самого начала в случае возникновения проблемы.
Распределенные вычисления связаны со слабосвязанными приложениями, в которых цель (для распределенных суперкомпьютеров ) состоит в том, чтобы решить проблемы, которые слишком велики или выполнение которых может быть разделено на разные компоненты, которые могут выиграть от выполнения на разных архитектурах. Существует несколько моделей, в том числе клиент-сервер, одноранговая сеть и т. Д. Проблемы, возникающие в распределенных вычислениях, такие как безопасность, сбои, сетевое разделение и т. Д., Должны приниматься во внимание во время разработки, поскольку в этом контексте сбои являются правилом и не исключение.
Наконец, Grid и облачные вычисления являются подмножеством распределенных вычислений. Парадигма грид-вычислений возникла как новая область, отличающаяся от традиционных распределенных вычислений, поскольку она сосредоточена на широкомасштабном распределении ресурсов и инновационных высокопроизводительных приложениях. Совместно используемые ресурсы обычно принадлежат нескольким различным административным доменам (так называемые виртуальные организации ). Grid Computing, в то время как интенсивно использовались учеными в последнее десятилетие, традиционно трудны для обычных пользователей. Облачные вычисления пытаются восполнить этот пробел, позволяя обычным пользователям легко эксплуатировать несколько машин, которые расположены в одном центре обработки данных и не географически распределены, за счет использования виртуальных машин.которые могут быть собраны пользователями для запуска своих приложений. Благодаря аппаратному обеспечению, в частности обычному отсутствию высокопроизводительного сетевого соединения (такого как Infiniband и т. Д.), Облака не предназначены для запуска параллельных приложений MPI. Распределенные приложения, работающие в облаках, обычно реализуются для использования парадигмы Map / Reduce. Кстати, многие люди считают Map / Reduction параллельной моделью потока данных.