stringtranslate.com

Memoria distribuida

Una ilustración de un sistema de memoria distribuida de tres computadoras.

En informática , la memoria distribuida se refiere a un sistema informático multiprocesador en el que cada procesador tiene su propia memoria privada . [1] Las tareas computacionales solo pueden operar con datos locales y, si se requieren datos remotos, la tarea computacional debe comunicarse con uno o más procesadores remotos. Por el contrario, un multiprocesador de memoria compartida ofrece un único espacio de memoria utilizado por todos los procesadores. Los procesadores no tienen que saber dónde residen los datos, excepto que puede haber penalizaciones de rendimiento y que deben evitarse las condiciones de carrera.

En un sistema de memoria distribuida suele haber un procesador, una memoria y alguna forma de interconexión que permite que los programas de cada procesador interactúen entre sí. La interconexión se puede organizar con enlaces punto a punto o hardware separado puede proporcionar una red de conmutación. La topología de la red es un factor clave para determinar cómo escala la máquina multiprocesador . Los enlaces entre nodos se pueden implementar utilizando algún protocolo de red estándar (por ejemplo, Ethernet ), utilizando enlaces de red personalizados (utilizados, por ejemplo, en el transputador ) o utilizando memorias de doble puerto .

Programación de máquinas de memoria distribuida.

La cuestión clave en la programación de sistemas de memoria distribuida es cómo distribuir los datos entre las memorias. Dependiendo del problema resuelto, los datos se pueden distribuir estáticamente o se pueden mover a través de los nodos. Los datos se pueden mover según demanda o se pueden enviar a los nuevos nodos con antelación.

Como ejemplo, si un problema se puede describir como una tubería donde los datos x se procesan posteriormente a través de funciones f , g , h , etc. (el resultado es h ( g ( f ( x )))), entonces esto se puede expresar como un problema de memoria distribuida donde los datos se transmiten primero al nodo que realiza f que pasa el resultado al segundo nodo que calcula g y finalmente al tercer nodo que calcula h . Esto también se conoce como cálculo sistólico .

Los datos se pueden mantener estáticamente en los nodos si la mayoría de los cálculos se realizan localmente y solo se deben informar a otros nodos los cambios en los bordes. Un ejemplo de esto es la simulación en la que los datos se modelan utilizando una cuadrícula y cada nodo simula una pequeña parte de la cuadrícula más grande. En cada iteración, los nodos informan a todos los nodos vecinos de los nuevos datos del borde.

Memoria compartida distribuida

De manera similar, en la memoria compartida distribuida, cada nodo de un clúster tiene acceso a una gran memoria compartida además de la limitada memoria privada no compartida de cada nodo.

Memoria compartida versus memoria distribuida versus memoria compartida distribuida

La memoria compartida distribuida oculta el mecanismo de comunicación, no oculta la latencia de la comunicación.

Ver también

Referencias

  1. ^ Pardo, David; Matuszyk, Paweł J.; Puzyrev, Vladimir; Torres-Verdín, Carlos; Nam, Myung Jin; Caló, Víctor M. (2021). "Implementación paralela". Modelado de mediciones de registro acústico de pozos y resistividad utilizando métodos de elementos finitos . Elsevier. doi :10.1016/C2019-0-02722-7. ISBN 978-0-12-821454-1- vía ScienceDirect. La memoria distribuida se refiere a un sistema informático en el que cada procesador tiene su memoria. Las tareas computacionales operan eficientemente con datos locales, pero cuando se requieren datos remotos, la tarea debe comunicarse (mediante mensajes explícitos) con procesadores remotos para transferir datos. Este tipo de computación paralela es estándar en las supercomputadoras equipadas con miles de nodos informáticos.