Académique Documents
Professionnel Documents
Culture Documents
Memoria compartida
Programacin Paralela
Paradigmas de programacin paralela
Tipos de paralelismo
Las variaciones entre los paradigmas estn motivadas por
varios factores:
Diferencia de esfuerzo invertido en escribir programas
paralelos. Algunos lenguajes requieren menos esfuerzo
para el programador, mientras que otros requieren menos
trabajo pero generan un cdigo menos eficiente.
Un determinado paradigma de programacin puede ser
ms eficiente que otros al programar sobre determinadas
arquitecturas paralelas.
Distintas aplicaciones tienen diferentes tipos de
paralelismo y por tanto se han desarrollado diferentes
lenguajes de programacin para explotarlos.
Programacin Paralela
Paradigmas de programacin paralela
Paralelismo implcito/explcito
Explcito :
El
algoritmo
paralelo
debe
especificar
explcitamente cmo cooperan los procesadores
para resolver un problema especfico.
La tarea del compilador es sencilla, en cambio la
del programador es bastante difcil.
Implcito:
Se usa un lenguaje de programacin secuencial y
el compilador inserta las instrucciones necesarias
para ejecutar el programa en un computador
paralelo.
El compilador tiene que analizar y comprender las
dependencias para asegurar un mapeo eficiente
en el computador paralelo.
Programacin Paralela
Paradigmas de programacin paralela
Programacin Paralela
Paradigmas de programacin paralela
Programacin Paralela
Paradigmas de programacin paralela
Paralelismo de control:
Ejecucin
simultnea
de
cadenas
de
instrucciones diferentes. Las instrucciones se
pueden aplicar sobre la misma cadena de datos
aunque normalmente se aplican a cadenas de
datos diferentes.
Adecuados para mapear en MIMD ya que el
paralelismo de control requiere mltiples
cadenas de instrucciones.
Programacin Paralela
Paradigmas de programacin paralela
Paso de mensajes
Extensiones bsicas: Son extensiones en los lenguajes secuenciales
para soportar el paso de mensajes.
Existen dos primitivas bsicas de comunicacin: SEND y
RECEIVE.
La forma general de send es:
SEND (message, messagesize, target, type, flag)
message contiene los datos que se envan,
messagesize indica el tamao en bytes,
target es la etiqueta del procesador o procesadores destino,
type es una constante con la que se distingue entre varios
tipos de mensajes, y
flag indica si la operacin del SEND es bloqueante o nobloqueante.
Programacin Paralela
Paradigmas de programacin paralela
Paso de mensajes
La primitiva RECEIVE lee un mensaje del buffer de comunicacin
en la memoria.
Su forma general es:
RECEIVE (message, messagesize, source, type, flag)
messsage indica el lugar donde se almacenan los datos,
messagesize indica el nmero mximo de bytes a poner en
mensaje,
source indica la etiqueta del procesador cuyo mensaje se va a
leer,
type especifica el tipo de mensaje que se va a leer. Puede
haber ms de un mensaje en el buffer de comunicacin de los
procesadores fuente. El parmetro type selecciona un
determinado mensaje para leer,
flag especifica si la operacin de recibir es bloqueante o no
bloqueante.
Programacin Paralela
Paradigmas de programacin paralela
10
Paralelismo de datos
Lenguajes de paralelismo de datos: facilitar al programador
la tarea de expresar el paralelismo disponible en un
programa de manera independiente de la arquitectura.
Caractersticas:
Se genera una sola cadena de instrucciones.
Ejecucin sncrona de instrucciones. Ms fcil escribir y depurar
programas de paralelismo de datos puesto que los bloqueos son
imposibles.
El programador especifica el paralelismo en el cdigo.
Asocia un procesador virtual con una unidad fundamental de
paralelismo. El programador expresa la computacin en trminos de
las operaciones realizadas por los procesadores virtuales.
Permite que cada procesador tenga acceso a las posiciones de
memoria de otros procesadores.
Programacin Paralela
Paradigmas de programacin paralela
11
Paralelismo de datos
Los compiladores para los lenguajes de paralelismo de datos deben
mapear los procesadores virtuales en procesadores fsicos, generar
cdigo para comunicar datos y esforzarse para la ejecucin sncrona
de instrucciones.
Los procesadores virtuales son emulados por procesadores fsicos.
Si el nmero de procesadores virtuales es mayor que el nmero de
procesadores fsicos, cada procesador fsico emula varios
procesadores virtuales.
Algunos lenguajes de paralelismo de datos contienen primitivas que
permiten al programador especificar el mapeo deseado de los
procesadores virtuales en los fsicos.
Programacin Paralela
Paradigmas de programacin paralela
12
Paralelismo de datos
Ejemplo: C*
Lenguaje de programacin para paralelismo de datos.
Extensin del lenguaje C, diseado por Thinking Machines
Corporation para el computador CM-2.
Incluye un mtodo para describir el tamao y la forma de los
datos paralelos y crear variables paralelas. Incluye
operadores y expresiones para los datos paralelos.
Programacin Paralela
Paradigmas de programacin paralela
13
Paralelismo de datos
Variables:
variables escalares: idntica a una variable ordinaria. Se asignan
en el host.
variables paralelas:
Se asignan en todos los nodos.
Tienen tantos elementos como nmero de procesadores.
Una variable paralela tiene una "forma" adems de un tipo.
Una "forma" es una plantilla para los datos paralelos, o sea una
forma de configurar los datos lgicamente.
Define cuntos elementos paralelos existen y cmo estn
organizados.
Una "forma" tiene un nmero de dimensiones, rango, con un
nmero de procesadores o posiciones en cada dimensin.
Programacin Paralela
Paradigmas de programacin paralela
14
Paralelismo de datos
shape [1024] ring
shape [1024][1024] mesh
int flag
int ring:a
int mesh:b
flag
a
b
Programacin Paralela
Paradigmas de programacin paralela
15
Paralelismo de datos
C* no permite que el programador especifique
explcitamente el mapeo virtual a fsico. C* mapea los
procesadores virtuales en procesadores fsicos de
forma que los procesadores virtuales vecinos se
mapean en procesadores fsicos vecinos.
C* permite especificar a travs de qu dimensiones de
la "forma" se hacen comunicaciones ms a menudo. El
compilador usa esta informacin para reducir costos de
comunicacin.
Despus de que se ha especificado una forma, se
pueden declarar variables paralelas de esa "forma".
Las variables paralelas tienen un tipo, una clase de
almacenamiento, y una forma.
Programacin Paralela
Paradigmas de programacin paralela
16
Paralelismo de datos
Operaciones paralelas
Si los operandos de una operacin son escalares, el cdigo C* es
igual que el cdigo C y la operacin se realiza en el host.
Si los operandos son variables paralelas,
x+=y donde x e y son variables paralelas. Esta asignacin aade
el valor de y en cada posicin de la "forma" al valor de x en la
posicin correspondiente de la forma. Todas las sumas tienen
lugar en paralelo. x e y deben ser de la misma "forma".
x=a, donde a es una variable escalar, el valor de a se almacena en
cada posicin de x. Esto es similar a una operacin de broadcast.
a =[4]x es vlida y asigna a a el valor de x de la cuarta posicin de
la forma.
a+=x suma todos los valores de x y los almacena en a.
Programacin Paralela
Paradigmas de programacin paralela
17
Paralelismo de datos
Comunicacin. C*
soporta
comunicacin interprocesador:
dos
mtodos
de
Programacin Paralela
Paradigmas de programacin paralela
18
19
20
Compiladores paralelizantes
Programa secuencial. El compilador se encarga de
paralelizarlo.
Normalmente en sistemas de memoria compartida.
Paralelizan bucles: dividen el trabajo en los bucles entre los
distintos procesadores
Si puede haber dependencia de datos no paraleliza:
para i=1 to n
a[i]=b[i]+a[i-1]
finpara
21
22