Распределенная память - Distributed memory

Иллюстрация системы распределенной памяти из трех компьютеров.

В информатике , распределенная память относится к многопроцессорной вычислительной системы , в которой каждый процессор имеет свою собственную память . Вычислительные задачи могут работать только с локальными данными, и если требуются удаленные данные, вычислительная задача должна взаимодействовать с одним или несколькими удаленными процессорами. Напротив, мультипроцессор с общей памятью предлагает единое пространство памяти, используемое всеми процессорами. Процессоры не должны знать, где находятся данные, за исключением того, что это может привести к снижению производительности и что следует избегать условий гонки.

В системе с распределенной памятью обычно есть процессор, память и некоторая форма взаимодействия, которая позволяет программам на каждом процессоре взаимодействовать друг с другом. Межсоединение может быть организовано с использованием каналов точка-точка, или отдельное оборудование может обеспечивать коммутационную сеть. Топология сети является ключевым фактором в определении того, как многопроцессорные машины весов . Связи между узлами могут быть реализованы с использованием некоторого стандартного сетевого протокола (например, Ethernet ), с использованием специализированных сетевых каналов (используемых, например, в транспьютере ) или с использованием двухпортовой памяти .

Программирование машин с распределенной памятью

Ключевой вопрос в программировании систем с распределенной памятью - как распределить данные по памяти. В зависимости от решаемой проблемы данные могут распределяться статически или перемещаться по узлам. Данные могут быть перемещены по запросу, или данные могут быть отправлены на новые узлы заранее.

Например, если проблема может быть описана как конвейер, в котором данные x обрабатываются последовательно с помощью функций f , g , h и т. Д. (Результат h ( g ( f ( x )))), то это можно выразить как проблема распределенной памяти, когда данные передаются сначала узлу, который выполняет f, который передает результат второму узлу, который вычисляет g , и, наконец, третьему узлу, который вычисляет h . Это также известно как систолическое вычисление .

Данные могут храниться в узлах статически, если большинство вычислений происходит локально, и другим узлам необходимо сообщать только изменения на ребрах. Примером этого является моделирование данных с использованием сетки, а каждый узел моделирует небольшую часть большей сетки. На каждой итерации узлы информируют все соседние узлы о новых данных ребра.

Распределенная разделяемая память

Точно так же в распределенной общей памяти каждый узел кластера имеет доступ к большой общей памяти в дополнение к ограниченной частной не разделяемой памяти каждого узла.

Общая память против распределенной памяти против распределенной разделяемой памяти

  • Преимущество (распределенной) общей памяти заключается в том, что она предлагает единое адресное пространство, в котором можно найти все данные.
  • Преимущество распределенной памяти состоит в том, что она исключает условия гонки и заставляет программиста думать о распределении данных.
  • Преимущество распределенной (разделяемой) памяти состоит в том, что легче спроектировать машину, масштабируемую с помощью алгоритма.

Распределенная разделяемая память скрывает механизм связи, она не скрывает задержку связи.

Смотрите также