1. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Lenguajes Paralelos
Nestor A. Rojas E.
Facultad Experimental de Ciencias y Tecnolog´ıa
Universidad de Carabobo
8 de julio de 2013
Nestor A. Rojas E. Lenguajes Paralelos
2. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Contenido I
1 Definici´on
Concepto
Peque˜na historia
2 Ventajas y Desventajas
Ventajas
Desventajas
3 An´alisis de Dependencia
An´alisis de Dependencia
Condiciones de Bernstein
4 Caso de Estudio 1: Chapel
Chapel
Revisando Chapel
Tipos de Datos
Estructuras de control
Nestor A. Rojas E. Lenguajes Paralelos
3. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Contenido II
Estructuras de control paralelas
Algunos Ejemplos
5 Caso de Estudio 2: X10
X10
Revisando X10
Tipos de Datos y Clases
Lugares y actividades
Relojes
Arreglos distribuidos
Un Ejemplo
6 Otros lenguajes paralelos
Nestor A. Rojas E. Lenguajes Paralelos
4. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Concepto
Peque˜na historia
Lenguajes Paralelos
Son aquellos lenguajes de programaci´on especialmente dise˜nados
para la programaci´on en paralelo, generalmente trabajan con
memoria compartida. Proveen estructuras de control, sentencias
entre otros que facilitan al programador trabajar con tareas
independientes y variables de memoria compartida; abstraen casi
totalmente (en su mayor´ıa) al programador de los detalles de la
arquitectura del computador en donde trabaja.
Nestor A. Rojas E. Lenguajes Paralelos
5. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Concepto
Peque˜na historia
Peque˜na historia
Muchos lenguajes paralelos han prosperado a lo largo del tiempo
en diferentes etapas de la historia de la programaci´on, pero
ninguno de ellos ha sido universalmente aceptado. El primero de
ellos fue Concurrent Pascal, dise˜nado por Brinch Hansen en 1975
como una extensi´on del lenguaje Pascal, tambi´en daba soporte al
paradigma concurrente.
En estos a˜nos la mayor´ıa de los lenguajes dise˜nados eran
extensiones de lenguajes secuenciales ya existentes. High
Performance Fortran ha sido uno de los pocos lenguajes que ha
prevalecido en el tiempo, del que se ha originado nuevos lenguajes
con este concepto y que se ha mantenido estable en el tiempo.
Nestor A. Rojas E. Lenguajes Paralelos
6. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Ventajas
Desventajas
Ventajas
1 Facilitan la creaci´on de multiples tareas para a su vez ´estas
sean ejecutadas de manera independiente en cada procesador.
2 No requieres de paso de mensajes pues en su mayor´ıa trabajan
con memoria compartida, esto es que cada tarea puede
acceder a las variables del programa pues todas ellas (las
tareas) comparten el mismo espacio de memoria.
Nestor A. Rojas E. Lenguajes Paralelos
7. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Ventajas
Desventajas
Ventajas
1 Facilitan la creaci´on de multiples tareas para a su vez ´estas
sean ejecutadas de manera independiente en cada procesador.
2 No requieres de paso de mensajes pues en su mayor´ıa trabajan
con memoria compartida, esto es que cada tarea puede
acceder a las variables del programa pues todas ellas (las
tareas) comparten el mismo espacio de memoria.
3 Muchas de las operaci´ones con procesos y subprocesos las
maneja internamente el compilador.
Nestor A. Rojas E. Lenguajes Paralelos
8. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Ventajas
Desventajas
Ventajas
1 Facilitan la creaci´on de multiples tareas para a su vez ´estas
sean ejecutadas de manera independiente en cada procesador.
2 No requieres de paso de mensajes pues en su mayor´ıa trabajan
con memoria compartida, esto es que cada tarea puede
acceder a las variables del programa pues todas ellas (las
tareas) comparten el mismo espacio de memoria.
3 Muchas de las operaci´ones con procesos y subprocesos las
maneja internamente el compilador.
Nestor A. Rojas E. Lenguajes Paralelos
9. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Ventajas
Desventajas
Desventajas
1 Requiere por parte del programador el aprendizaje de un
nuevo paradigma, reglas adici´onales para programar, lo cual
en muchos casos los mismos oponen resistencia al cambio.
2 No existe un gran apoyo para popularizar estos lenguajes, esto
causa la discontinuidad del soporte para los mismos; son
mayormente utilizados en plataformas de super computaci´on,
esto se debe que hasta no hace mucho la mayor´ıa de los
ordenadores personales pose´ıan un solo n´ucleo en la CPU.
Nestor A. Rojas E. Lenguajes Paralelos
10. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Ventajas
Desventajas
Desventajas
1 Requiere por parte del programador el aprendizaje de un
nuevo paradigma, reglas adici´onales para programar, lo cual
en muchos casos los mismos oponen resistencia al cambio.
2 No existe un gran apoyo para popularizar estos lenguajes, esto
causa la discontinuidad del soporte para los mismos; son
mayormente utilizados en plataformas de super computaci´on,
esto se debe que hasta no hace mucho la mayor´ıa de los
ordenadores personales pose´ıan un solo n´ucleo en la CPU.
3 Como aplican una capa extra para lo que significa operaciones
con procesos, acceso a memoria compartida entre otras cosas
hace que en ocasiones no siempre el tiempo de ejecuci´on sea
el esperado (Tp ∼= Ts/n).
Nestor A. Rojas E. Lenguajes Paralelos
11. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Ventajas
Desventajas
Desventajas
1 Requiere por parte del programador el aprendizaje de un
nuevo paradigma, reglas adici´onales para programar, lo cual
en muchos casos los mismos oponen resistencia al cambio.
2 No existe un gran apoyo para popularizar estos lenguajes, esto
causa la discontinuidad del soporte para los mismos; son
mayormente utilizados en plataformas de super computaci´on,
esto se debe que hasta no hace mucho la mayor´ıa de los
ordenadores personales pose´ıan un solo n´ucleo en la CPU.
3 Como aplican una capa extra para lo que significa operaciones
con procesos, acceso a memoria compartida entre otras cosas
hace que en ocasiones no siempre el tiempo de ejecuci´on sea
el esperado (Tp ∼= Ts/n).
Nestor A. Rojas E. Lenguajes Paralelos
12. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
An´alisis de Dependencia
Condiciones de Bernstein
An´alisis de Dependencia
Cuando trabajamos con un lenguaje paralelo se espera que el
compilador sea capaz de identificar problemas que evitan la
ejecuci´on concurrente.
Los procesos no pueden ejecutarse juntos si entre ellos existen
alguna dependencia que requiera el estricto orden de ejecuci´on
secuencial.
Para ello el programador debe ser capaz de identificar las
dependencias que hay entre las instrucci´ones en los bloques de las
estructuras de control (ve´ase forall), para garantizar que los
procesos que genera el compilador sean paralelos.
Nestor A. Rojas E. Lenguajes Paralelos
13. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
An´alisis de Dependencia
Condiciones de Bernstein
Condiciones de Bernstein
Tenemos dos conjuntos de posiciones de memoria:
E(las entradas) y S(las salidas).
Y tenemos a los procesos Pi .
Ei : Conjunto de posiciones de memoria le´ıdas por Pi .
Sj : Conjunto de posiciones de memoria le´ıdas por Pj .
Las condiciones son:
1 E1 ∩ S2 = φ.
2 E2 ∩ S1 = φ.
3 S1 ∩ S2 = φ.
Nestor A. Rojas E. Lenguajes Paralelos
14. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Chapel
-
Lenguaje de programaci´on paralela desarrollado en 2010 como
parte del proyecto Cray Cascade de Cray Company en Seattle
Washington, dise˜nado por David Callahan y su equipo de
desarrollo. Influenciado por High Performance Fortran y ZPL.
Nestor A. Rojas E. Lenguajes Paralelos
15. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Revisando Chapel
Tipos de Datos
Chapel ofrece soporte a muchos tipos de datos, pero mostraremos
los mas importantes:
Tipo de Dato Dominio Declaraci´on
Booleano true o false var b: bool;
Entero Int en 64 bits var n: int;
Real Double en C o Java var n: real;
Cadena Tabla ASCII var s: string;
Arreglos El m´aximo a almacenar var A: [l1..l2] (datatype);
Nestor A. Rojas E. Lenguajes Paralelos
16. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Revisando Chapel
Estructuras de control
Chapel ofrece soporte a las estructuras de control tradici´onales,
como if-else, selection (switch en lenguaje C), for-loop, while-loop,
do while-loop, etc. Que con solo revisar el manual son f´aciles de
identificar y utilizar.
Pero Chapel tambi´en ofrece soporte a estructuras de control con
paralelismo impl´ıcito.
Nestor A. Rojas E. Lenguajes Paralelos
17. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Revisando Chapel
Estructuras de control paralelas
Forall-loop:
Similar al for secuencial, cuando el bucle inicia primero se crean
tantos hilos como n´ucleos de procesamiento existan para que cada
uno de ellos ejecute un trozo de la tarea. Cada hilo tiene total
acceso a modificar las variables que en el bucle existan, por tanto
si queremos que estas se modifique una vez por iteraci´on
necesitamos una variable de sincronizaci´on.
-
Nestor A. Rojas E. Lenguajes Paralelos
18. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Revisando Chapel
Estructuras de control paralelas
Coforall-loop:
Similar al forall solo que este crear´a un hilo de ejecuci´on por cada
entrada en el bucle, en caso de que el programador decida hacer
mas hilos que nucleos los hilos se someteran a la planificaci´on de
procesos del sistema operativo.
-
Nestor A. Rojas E. Lenguajes Paralelos
19. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Revisando Chapel
Estructuras de control paralelas
Begin:
Cada vez que llamas a begin este crea un hilo de ejecuci´on para las
instrucci´ones que vienen a continuaci´on de ´el. El orden de
ejecuci´on puede variar.
-
Nestor A. Rojas E. Lenguajes Paralelos
20. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Revisando Chapel
Estructuras de control paralelas
Cobegin:
Similar al begin solo que lo que este dentro de la sentencia se tiene
que ejecutar primero antes de lo que venga a continuaci´on en el
c´odigo.
-
Nestor A. Rojas E. Lenguajes Paralelos
21. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Revisando Chapel
Estructuras de control paralelas
Variables de Sinconizaci´on:
Son variables que bloquean al proceso que las llama hasta que su
valor le es asignado a otra variable del mismo tipo; ellas tienes dos
estados: vac´ıas o llenas, cuando est´an llenas estas bloquean a los
otros procesos que las utilizan, llegan a estar vac´ıas cuando su
valor le es asignado a otra variable de sincronizaci´on.
Nestor A. Rojas E. Lenguajes Paralelos
22. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Revisando Chapel
Estructuras de control paralelas
Reduce:
Esta operaci´on es similar a MPI Reduce, se compone de una
operaci´on elemental, reduce y de un rango, esta rango puede ser
un arreglo o una serie de operaci´ones sobre los elementos de ese
arreglo. Cuando es llamada espera a todos los hilos que tengan
parte de los valores de ese rango para as´ı aplicar la operaci´on
generalizada sobre esos valores.
-
Nestor A. Rojas E. Lenguajes Paralelos
23. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Chapel
Revisando Chapel
Algunos Ejemplos
Algunos Ejemplos
1 http:
//www.dropbox.com/s/1uyy93qa84g466p/primos.chpl
2 http://www.dropbox.com/s/eruglknlvn4h9d2/calculo_
pi.chpl
3 http://www.dropbox.com/s/cetdo6ifbqud5ul/
multiplicacion_matrices.chpl
4 http://www.dropbox.com/s/3k312fuiix324rb/
multiplicacion_matrices2.chpl
Nestor A. Rojas E. Lenguajes Paralelos
24. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
X10
Revisando X10
Un Ejemplo
X10
-
Lenguaje de programaci´on paralela y orientado a objetos
desarrollado en 2004 por IBM en el centro de investigaci´on
Thomas J. Watson, dise˜nado por Kemal Ebcio˘glu y su equipo de
desarrollo, influenciado principalmente por Java.
Nestor A. Rojas E. Lenguajes Paralelos
25. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
X10
Revisando X10
Un Ejemplo
Revisando X10
Tipos de Datos y Clases
X10 da soporte a todos los tipos b´asicos de Java, tales como
arreglos, enteros, reales, etc. E introduce el concepto de
orientaci´on a objetos y jerarqu´ıa de librer´ıas.
Cada vez que escribamos un programa en X10 tenemos que
comenzar definiendo la clase tal y como hacemos en Java, y
definiendo lo que queremos hacer en el public void main[](...).
Nestor A. Rojas E. Lenguajes Paralelos
26. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
X10
Revisando X10
Un Ejemplo
Revisando X10
Lugares y actividades
Un lugar es un repositorio donde interact´uan n hilos con un trozo
de memoria compartida del todo en dicho lugar.
Y una actividad es una sentencia que esta siendo ejecutada,
independientemente, con sus propias variables locales, pudiera ser
pensada como un hilo ligero.
En un lugar pueden haber muchas actividades, y en muchos lugares
pueden haber actividades repetidas haciendo lo mismo con otros
datos.
Nestor A. Rojas E. Lenguajes Paralelos
27. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
X10
Revisando X10
Un Ejemplo
Revisando X10
Relojes
Muchos algoritmos paralelos avanzan en fases, pero cada fase
posee muchas actividades en acci´on, por tanto para garantizar que
dichas actividades se ejecuten en una fase sin que en la fase
siguiente aun no se haya ejecutado todas las actividades de la fase
anterior se utilizan los relojes, los cuales son una clase ya definida
por X10, con sus primitivas y m´etodos propios que avisan cuando
todas las actividades terminan su ejecuci´on para proceder a la
siguiente fase.
Nestor A. Rojas E. Lenguajes Paralelos
28. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
X10
Revisando X10
Un Ejemplo
Revisando X10
Arreglos distribuidos
X10 provee la clase DistArray, los cuales son arreglos que
autom´aticamente son distribuidos a trozos por la clase Dist a
muchos lugares; estos trozos de los DistArrays se les llaman
regiones.
Nestor A. Rojas E. Lenguajes Paralelos
29. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
X10
Revisando X10
Un Ejemplo
Un Ejemplo
http://x10-lang.org/documentation/code-examples/
small-examples.html?id=103
Nestor A. Rojas E. Lenguajes Paralelos
30. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Otros lenguajes paralelos
High Performance Fortran.
Cilk.
ZPL.
Parlog.
NESL.
Linda.
C*.
Nestor A. Rojas E. Lenguajes Paralelos
31. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Otros lenguajes paralelos
SALSA.
Unified Parallel C.
Fortress.
Coarray Fortran (F–).
ParaSail.
Charm++.
Id.
SequenceL.
Ease.
FortranM.
Nestor A. Rojas E. Lenguajes Paralelos
32. Definici´on
Ventajas y Desventajas
An´alisis de Dependencia
Caso de Estudio 1: Chapel
Caso de Estudio 2: X10
Otros lenguajes paralelos
Bibliograf´ıa
Barry Wilkinson and Michael Allen. (1999). Parallel
Programming, Techniques and Applications using Networked
Workstations and Parallel Computers (2nd Edition). New
Jersey: c Prentice Hall.
Chapel: Overview. http://chapel.cray.com/
Chapel Tutorial.
http://faculty.knox.edu/dbunde/teaching/chapel/
X10. http://x10-lang.org/
X10 Language Specification. http://x10.sourceforge.
net/documentation/languagespec/x10-latest.pdf
Nestor A. Rojas E. Lenguajes Paralelos