Распределенная память
Эта статья нуждается в дополнительных цитатах для проверки . ( февраль 2024 г. ) |
В информатике , распределенная память относится к многопроцессорной компьютерной системе в которой каждый процессор имеет свою собственную память . [ 1 ] Вычислительные задачи могут работать только с локальными данными, а если требуются удаленные данные, вычислительная задача должна взаимодействовать с одним или несколькими удаленными процессорами. Напротив, мультипроцессор с общей памятью предлагает единое пространство памяти, используемое всеми процессорами. Процессорам не обязательно знать, где находятся данные, за исключением того, что могут возникнуть потери производительности и следует избегать состояний гонки.
В системе с распределенной памятью обычно имеется процессор, память и некоторая форма взаимосвязи, которая позволяет программам на каждом процессоре взаимодействовать друг с другом. Межсоединение может быть организовано с помощью каналов «точка-точка» или отдельное оборудование может обеспечивать коммутационную сеть. является Топология сети ключевым фактором, определяющим масштабирование многопроцессорной машины . Связи между узлами могут быть реализованы с использованием какого-либо стандартного сетевого протокола (например, Ethernet ), с использованием специальных сетевых каналов (используемых, например, в транспьютере ) или с использованием двухпортовой памяти .
Программирование машин с распределенной памятью
[ редактировать ]Ключевой вопрос в программировании систем с распределенной памятью заключается в том, как распределить данные по памяти. В зависимости от решаемой задачи данные могут распределяться статически, а могут перемещаться по узлам. Данные можно перемещать по требованию или заранее переносить на новые узлы.
Например, если проблему можно описать как конвейер, в котором данные x впоследствии обрабатываются с помощью функций f , g , h и т. д. (результат — h ( g ( f ( x ))), то это можно выразить как задача распределенной памяти, где данные передаются сначала на узел, выполняющий f , который передает результат на второй узел, который вычисляет g , и, наконец, на третий узел, который вычисляет h . Это также известно как систолическое вычисление .
Данные могут храниться статически в узлах, если большинство вычислений происходит локально, и другим узлам необходимо сообщать только об изменениях на ребрах. Примером этого является моделирование, при котором данные моделируются с использованием сетки, а каждый узел моделирует небольшую часть более крупной сетки. На каждой итерации узлы информируют все соседние узлы о новых данных ребра.
Распределенная общая память
[ редактировать ]Аналогично, в распределенной общей памяти каждый узел кластера имеет доступ к большой общей памяти в дополнение к ограниченной неразделяемой частной памяти каждого узла.
Общая память против распределенной памяти против распределенной общей памяти
[ редактировать ]- Преимущество (распределенной) общей памяти заключается в том, что она предлагает единое адресное пространство, в котором можно найти все данные.
- Преимущество распределенной памяти в том, что она исключает условия гонки и заставляет программиста думать о распределении данных.
- Преимущество распределенной (разделяемой) памяти заключается в том, что легче спроектировать машину, масштабируемую с помощью алгоритма.
Распределенная общая память скрывает механизм связи, но не скрывает задержку связи.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Пардо, Дэвид; Матушик, Павел Ю.; Пузырев Владимир; Торрес-Вердин, Карлос; Нам, Мён Джин; Кало, Виктор М. (2021). «Параллельная реализация». Моделирование измерений удельного сопротивления и акустического каротажа скважин методами конечных элементов . Эльзевир. дои : 10.1016/C2019-0-02722-7 . ISBN 978-0-12-821454-1 – через ScienceDirect.
Распределенная память относится к вычислительной системе, в которой каждый процессор имеет свою память. Вычислительные задачи эффективно работают с локальными данными, но когда требуются удаленные данные, задача должна взаимодействовать (с использованием явных сообщений) с удаленными процессорами для передачи данных. Этот тип параллельных вычислений является стандартным для суперкомпьютеров, оснащенных многими тысячами вычислительных узлов.