У информатици, расподељена меморија се односи на мултипроцесорске рачунарске системе, у којима сваки процесор има своју приватну меморију. Рачунарски задаци могу да раде само на локалним подацима, а ако су потребни удаљени подаци, рачунски задатак мора да комуницира са једним или више удаљених процесора. Насупрот томе, дељена меморија са више процесора нуди један мемориски простор који се користи од стране свих процесора. Процесори не морају да буду свесни где борави податак, осим да могу постојати казне за перформансе, као и да трку услова треба избегавати.[1]
Архихектура
У систему расподељене меморије обично има процесор, меморија, и неки облик повезивања који омогућава програмима на сваком процесору да комуницирају једни са другима. Повезивање се може организовати са мрежном топологијом или посебан хардвер може да обезбеди пребацивање мреже. Мрежне топологије су кључни фактор у одређивању како су више-процесорске машине прилагодљиве. Везе између чворова могу бити имплементиране применом неких стандардних мрежних протокола (на пример Етернет), користећи неговештене мрежне везе (користи се, на пример у енгл.Transputer), или користећи DPRAM.
Програмирање машине за расподељену меморију
Кључно питање у програмским системима расподељене меморије је како расподелити податке преко меморија. У зависности од решења проблема, подаци се могу расподелити статички, или се могу померити кроз чворове. Подаци могу бити премештени на захтев, или подаци могу да се ставе у нове чворове, унапред.
Као пример, ако се проблем може описати као pipeline, где се X подаци накнадно прерађују кроз функције F, G, H, итд. (резултат је H(G(F(X)))), онда то може бити изражено као проблем расподељене меморије, где се подаци преносе на први чвор који обавља F, који пролази резултат на другом чвору, који рачуна G, и коначно до трећег чвора који рачуна H. Ово је такође познато као статичко израчунавање.
Подаци се могу статички чувати у чворовима, ако се већина прорачуна деси локално, а само промене на ивицама морају да буду пријављене на другим чворовима. Пример за ово је симулација у којој се подаци моделују помоћу матрице, а сваки чвор симулира мали део веће матрице. На свакој итерацији, чворови обавештавају све суседне чворове о новим подацима ивице.
Расподељена општа меморија
Слично томе, у расподељеној општој меморији сваки чвор кластера има приступ великој дељеној меморији као додатак сваком чвору ограничене не-дељене приватне меморије.
Дељена меморија насупрот расподељене меморије насупрот расподељене опште меморије
Предност (расподељене) дељене меморије је тај што нуди јединствени адресни простор у којем се могу наћи сви подаци.
Предност расподељене меморије је тај што она искључује трку услова, и тај што приморава програмера да размишља о расподели података.
Предност расподељене (опште) меморије је та што је лакше да направимо машину која скалира са алгоритмом
Расподељена општа меморија крије механизам комуникације - она не крије кашњење комуникације.