(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 |