(Gp:) Paralelismo de Datos
(Gp:) Paralelismo de Tareas
Tipos de Paralelismo
Paralelismo de datos: cada procesador ejecuta la misma tarea sobre diferentes conjuntos o subregiones de datos
Paralelismo de tareas: cada procesador ejecuta una diferente tarea
La mayoría de las aplicaciones están entre estos dos extremos
Paralelismo Maestro-Esclavo
Una común forma de usar paralelismo en el desarrollo de aplicaciones desde hace años (especialmente en PVM) fue el paralelismo Maestro-Esclavo:
un simple procesador es responsable de distribuir los datos y recolectar los resultados (paralelismo de tarea)
todos los otros procesadores ejecutan la misma tarea sobre su porción de datos (paralelismo de datos)
Modelos de Programación Paralela
Los modelos de programación que se usan actualmente son:
Paralelismo de datos – las operaciones son ejecutadas en paralelo sobre colecciones de datos estructurados.
Paso de mansajes – procesos colocados en memoria local se comunican con otros procesos enviando y recibiendo mensajes.
Memoria compartida – cada procesador tiene acceso a un conjunto de memoria compartida
Modelos de Programación Paralela
La mayoría de los esfuerzos en paralelización están dentro de las siguientes categorias:
Códigos pueden ser paralelizados usando librerías de paso de mensaje tal como MPI.
Códigos pueden ser paralelizados usando directivas de compilación tal como OpenMP.
Códigos pueden ser escritos en nuevos lenguajes paralelos.
Modelos de Programación ? Arquitecturas
Correspondecia natural
Paralelismo de datos ? CM-2 (máquina SIMD)
Paso de mensaje ? IBM SP (MPP)
Memoria compartida ? SGI Origin, Sun E10000
Correspondencia implementada
HPF (un lenguaje paralelo de datos) y MPI (una librería de paso de mensaje) -> sobre la mayoría de los computadores paralelos
OpenMP (un conjunto de directivas, etc. para programación de memoria compartida) -> sobre mayoría de máquinas de memoria compartida.
SPMD
Todas las máquinas actuales son MIMD (Multiple Instruction, Multiple Data) y pueden explotar paralelismo de datos o paralelismo de tareas.
El primer paradigma de programación paralela es el SPMD: Single Program, Multiple Data
Cada procesador ejecuta una copia del código fuente
Paralelismo de datos (a través de la descomposición de los datos) y paralelismo de tareas (a través de funciones que retornan al procesador ID)
OpenMP Estandar para SM
OpenMP es un nuevo estandar para programación en memoria compartida: SMPs y cc-NUMAs.
OpenMP provee un conjunto estandar de directivas, rutinas de librerías run-time
Ambiente de variables para paralelizar códigos bajo el modelo de memoria compartida.
Ver http://www.openmp.org para más información
program add_arrays
parameter (n=1000)
real x(n),y(n),z(n)
read(10) x,y,z
do i=1,n
x(i) = y(i) + z(i)
enddo
…
end
Fortran 77
program add_arrays
parameter (n=1000)
real x(n),y(n),z(n)
read(10) x,y,z
!$OMP PARALLEL DO
do i=1,n
x(i) = y(i) + z(i)
enddo
…
end
Fortran 77 + OpenMP
La directiva resaltada especifica que el bucle es ejecutado en paralelo. Cada procesador ejecuta un subconjunto de iteraciones del bucle.
OpenMP Ejemplo
Página siguiente |