fbpx
Wikipedia

SPMD

En computación, SPMD (single program, multiple data o un programa, múltiples datos) es una técnica empleada para lograr paralelismo; considerado una subcategoría de MIMD. Las tareas son separadas y ejecutadas simultáneamente en múltiples procesadores con diferentes entradas para obtener los resultados con mayor rapidez. SPMD es el estilo más común de programación paralela.[1]​ Es también un prerrequisito para las definiciones investigativas tales como mensajes activos y memoria compartida distribuida.

Taxonomía de Flynn
  Una Instrucción Múltiples Instrucciones
Un Dato SISD MISD
Múltiples Datos SIMD MIMD


SPMD vs SIMD

En SPMD, múltiples procesadores autónomos ejecutan simultáneamente el mismo programa en puntos independientes, contrario al lockstep que SIMD impone sobre los diferentes datos. Con SPMD, las tareas pueden ser ejecutadas sobre CPU de propósito general. SIMD requiere un vector de procesadores para manipular el flujo de datos. Note que las dos técnicas no son mutuamente exclusivas.

Memoria Distribuida

SPMD usualmente se refiere a la programación de traspaso de mensajes sobre arquitecturas de computadoras con memoria distribuidas. Una computadora con memoria distribuida consta de una colección de ordenadores independientes llamados nodos. Cada nodo inicia su propio programa y se comunica con los otros nodos, enviando y recibiendo mensajes, utilizando las rutinas enviar/recibir, destinadas a este propósito. También, la sincronización barrera debe ser implementada usando mensajes. Los mensajes pueden ser enviados por un número de mecanismos de comunicación, tales como TCP/IP sobre Ethernet, o específicamente una interconexión de alta velocidad como Myrinet y Supercomputer Interconnect. Las secciones secuenciales de un programa son implementadas por un cálculo idéntico en todos los nodos, contrario a computar un resultado sobre un nodo específico y enviarlo a los restantes. Hoy en día, el programador es aislado de los detalles del traspaso de mensajes a partir del uso de interfaces estándar, como son PVM y MPI. La memoria distribuida es el estilo de programación utilizado en supercomputadoras paralelas de investigación propia en Beowulf clusters destinado a los grupos más grandes de la Teragrid.

Memoria Compartida

En una máquina con memoria compartida (una computadora con muchos CPU que acceden al mismo espacio de memoria), los mensajes pueden ser enviados depositando sus contenidos sobre un área de memoria compartida. Esta es a menudo la forma más eficiente para programar la memoria compartida en una computadora con un gran número de procesadores, especialmente sobre la máquina NUMA, donde la memoria es local para los procesadores y el acceso a la memoria de otro procesador es costoso. SPMD sobre una máquina de memoria compartida es usualmente implementado por procesos estándares (altas prestaciones). A diferencia de SPMD, el multiprocesamiento de memoria compartida, llamado también multiprocesamiento simétrico o SMP, provee al programador un espacio de memoria compartida común y la posibilidad de paralelizar la ejecución de un programa, permitiéndole tomar diferentes caminos en distintos procesadores. El programa inicia ejecutando sobre un procesador y se divide al llegar a una región paralela, la cual comienza cuando las directivas paralelas son encontradas. En una región paralela, los procesadores ejecutan un único programa sobre diferentes datos. Un ejemplo típico es el ciclo DO paralelo, donde diferentes procesadores trabajan sobre distintas partes del array involucrado en el ciclo. Al finalizar el ciclo, la ejecución es sincronizada, solamente un único procesador continúa, y los otros esperan. La actual interfaz para multiprocesamiento de memoria compartida es OpenMP, usualmente implementada por procesos ligeros, llamados hebras.

Combinación de los niveles de paralelismo

Las computadoras actuales permiten la explotación de varios modos paralelos al mismo tiempo para lograr un máximo efecto combinado. Un programa de memoria distribuida usando MPI se puede ejecutar sobre un conjunto de nodos. Cada nodo debe ser un ordenador de memoria compartida que ejecuta en paralelo sobre múltiples CPU usando OpenMP. Dentro de cada CPU, las instrucciones vectoriales SIMD (normalmente generadas automáticamente por el compilador) y la ejecución de instrucciones superescalar (por lo general de forma transparente manejado por el propio CPU), tales como el pipelining y el uso de múltiples unidades funcionales paralelas, se utilizan para lograr la velocidad máxima del único CPU.

Historia

SPMD fue propuesto por primera vez en 1983 por Michel Auguin (Universidad de Niza Sophia- Antipolis) y François Larbey (Thomson / Sintra) en el computador paralelo OPSILA [2]​ y el siguiente en 1984 por Frederica Darema de IBM para máquinas altamente paralelas, como la RP3 (la investigación del prototipo del procesador paralelo de IBM), en una nota inédita de IBM. [3]​ Para finales de 1980, había muchos equipos distribuidos con bibliotecas propias para el traspaso de mensajes. El primer estándar de SPMD fue PVM. El actual estándar es MPI. Las directivas paralelas Cray fueron un antecedente directo de OpenMP.

Referencias

  1. [1]
  2. M. Auguin, F. Larbey, OPSILA : an advanced SIMD for numerical analysis and signal processing, in Microcomputers : developments in industry, business, and education / Ninth EUROMICRO Symposium on Microprocessing and Microprogramming, pp 311-318 Madrid, September 13-16, 1983
  3. F. Darema, SPMD model: past, present and future, Recent Advances in Parallel Virtual Machine and Message Passing Interface: 8th European PVM/MPI Users' Group Meeting, Santorini/Thera, Greece, September 23–26, 2001. Lecture Notes in Computer Science 2131, p. 1, 2001.

Enlaces externos

  • Flujo de Un Programa, Múltiples Datos

Véase también

  •   Datos: Q2289219

spmd, computación, single, program, multiple, data, programa, múltiples, datos, técnica, empleada, para, lograr, paralelismo, considerado, subcategoría, mimd, tareas, separadas, ejecutadas, simultáneamente, múltiples, procesadores, diferentes, entradas, para, . En computacion SPMD single program multiple data o un programa multiples datos es una tecnica empleada para lograr paralelismo considerado una subcategoria de MIMD Las tareas son separadas y ejecutadas simultaneamente en multiples procesadores con diferentes entradas para obtener los resultados con mayor rapidez SPMD es el estilo mas comun de programacion paralela 1 Es tambien un prerrequisito para las definiciones investigativas tales como mensajes activos y memoria compartida distribuida Taxonomia de Flynn Una Instruccion Multiples InstruccionesUn Dato SISD MISDMultiples Datos SIMD MIMD Indice 1 SPMD vs SIMD 2 Memoria Distribuida 3 Memoria Compartida 4 Combinacion de los niveles de paralelismo 5 Historia 6 Referencias 7 Enlaces externos 8 Vease tambienSPMD vs SIMD EditarEn SPMD multiples procesadores autonomos ejecutan simultaneamente el mismo programa en puntos independientes contrario al lockstep que SIMD impone sobre los diferentes datos Con SPMD las tareas pueden ser ejecutadas sobre CPU de proposito general SIMD requiere un vector de procesadores para manipular el flujo de datos Note que las dos tecnicas no son mutuamente exclusivas Memoria Distribuida EditarSPMD usualmente se refiere a la programacion de traspaso de mensajes sobre arquitecturas de computadoras con memoria distribuidas Una computadora con memoria distribuida consta de una coleccion de ordenadores independientes llamados nodos Cada nodo inicia su propio programa y se comunica con los otros nodos enviando y recibiendo mensajes utilizando las rutinas enviar recibir destinadas a este proposito Tambien la sincronizacion barrera debe ser implementada usando mensajes Los mensajes pueden ser enviados por un numero de mecanismos de comunicacion tales como TCP IP sobre Ethernet o especificamente una interconexion de alta velocidad como Myrinet y Supercomputer Interconnect Las secciones secuenciales de un programa son implementadas por un calculo identico en todos los nodos contrario a computar un resultado sobre un nodo especifico y enviarlo a los restantes Hoy en dia el programador es aislado de los detalles del traspaso de mensajes a partir del uso de interfaces estandar como son PVM y MPI La memoria distribuida es el estilo de programacion utilizado en supercomputadoras paralelas de investigacion propia en Beowulf clusters destinado a los grupos mas grandes de la Teragrid Memoria Compartida EditarEn una maquina con memoria compartida una computadora con muchos CPU que acceden al mismo espacio de memoria los mensajes pueden ser enviados depositando sus contenidos sobre un area de memoria compartida Esta es a menudo la forma mas eficiente para programar la memoria compartida en una computadora con un gran numero de procesadores especialmente sobre la maquina NUMA donde la memoria es local para los procesadores y el acceso a la memoria de otro procesador es costoso SPMD sobre una maquina de memoria compartida es usualmente implementado por procesos estandares altas prestaciones A diferencia de SPMD el multiprocesamiento de memoria compartida llamado tambien multiprocesamiento simetrico o SMP provee al programador un espacio de memoria compartida comun y la posibilidad de paralelizar la ejecucion de un programa permitiendole tomar diferentes caminos en distintos procesadores El programa inicia ejecutando sobre un procesador y se divide al llegar a una region paralela la cual comienza cuando las directivas paralelas son encontradas En una region paralela los procesadores ejecutan un unico programa sobre diferentes datos Un ejemplo tipico es el ciclo DO paralelo donde diferentes procesadores trabajan sobre distintas partes del array involucrado en el ciclo Al finalizar el ciclo la ejecucion es sincronizada solamente un unico procesador continua y los otros esperan La actual interfaz para multiprocesamiento de memoria compartida es OpenMP usualmente implementada por procesos ligeros llamados hebras Combinacion de los niveles de paralelismo EditarLas computadoras actuales permiten la explotacion de varios modos paralelos al mismo tiempo para lograr un maximo efecto combinado Un programa de memoria distribuida usando MPI se puede ejecutar sobre un conjunto de nodos Cada nodo debe ser un ordenador de memoria compartida que ejecuta en paralelo sobre multiples CPU usando OpenMP Dentro de cada CPU las instrucciones vectoriales SIMD normalmente generadas automaticamente por el compilador y la ejecucion de instrucciones superescalar por lo general de forma transparente manejado por el propio CPU tales como el pipelining y el uso de multiples unidades funcionales paralelas se utilizan para lograr la velocidad maxima del unico CPU Historia EditarSPMD fue propuesto por primera vez en 1983 por Michel Auguin Universidad de Niza Sophia Antipolis y Francois Larbey Thomson Sintra en el computador paralelo OPSILA 2 y el siguiente en 1984 por Frederica Darema de IBM para maquinas altamente paralelas como la RP3 la investigacion del prototipo del procesador paralelo de IBM en una nota inedita de IBM 3 Para finales de 1980 habia muchos equipos distribuidos con bibliotecas propias para el traspaso de mensajes El primer estandar de SPMD fue PVM El actual estandar es MPI Las directivas paralelas Cray fueron un antecedente directo de OpenMP Referencias Editar 1 M Auguin F Larbey OPSILA an advanced SIMD for numerical analysis and signal processing in Microcomputers developments in industry business and education Ninth EUROMICRO Symposium on Microprocessing and Microprogramming pp 311 318 Madrid September 13 16 1983 F Darema SPMD model past present and future Recent Advances in Parallel Virtual Machine and Message Passing Interface 8th European PVM MPI Users Group Meeting Santorini Thera Greece September 23 26 2001 Lecture Notes in Computer Science 2131 p 1 2001 Enlaces externos EditarAdministracion de trabajo paralelo y traspaso de mensaje Flujo de Un Programa Multiples Datos SPMD Programacion de Memoria DistribuidaVease tambien EditarTaxonomia de Flynn Vease diagrama de comparacion de clasificaciones Datos Q2289219Obtenido de https es wikipedia org w index php title SPMD amp oldid 124793704, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos