Modelos y Lenguajes Para Computación Paralela

4,602
-1

Published on

Published in: Education, Technology
2 Comments
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
4,602
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
110
Comments
2
Likes
0
Embeds 0
No embeds

No notes for slide

Modelos y Lenguajes Para Computación Paralela

  1. 1. Modelos y Lenguajes para Computación Paralela Trabajo sobre el documento de David B. Skillicorn y Domenico Talia “ Models and languages for parallel computation”, ACM Computing Surveys, Vol 3, No 2, Junio 1.988 Septiembre - 2006
  2. 2. Contenido. <ul><li>Modelos y sus propiedades. </li></ul><ul><li>Descripción de modelos. </li></ul><ul><li>Clasificación de modelos. </li></ul><ul><li>Conclusión. </li></ul>
  3. 3. 1 Modelos y sus propiedades <ul><li>Definición: “Un modelo de computación paralela es una máquina virtual que provee ciertas operaciones a nivel de programación y que requiere que estas operaciones se implementen en cada una de las arquitecturas subyacentes.” </li></ul><ul><li>Propiedades: </li></ul><ul><ul><ul><li>Fácil de Programar. </li></ul></ul></ul><ul><ul><ul><li>Metodología de desarrollo de software. </li></ul></ul></ul><ul><ul><ul><li>Independiente de la arquitectura. </li></ul></ul></ul><ul><ul><ul><li>Fácil de comprender. </li></ul></ul></ul><ul><ul><ul><li>Rendimiento garantizado. </li></ul></ul></ul><ul><ul><ul><li>Medidas de coste. </li></ul></ul></ul>
  4. 4. 1.1. Fácil de Programar <ul><li>El modelo debe permitir al programador abstraerse de las características físicas del entorno de ejecución. Lo que implica que el modelo debe ocultar lo siguiente: </li></ul><ul><ul><ul><li>Descomposición. </li></ul></ul></ul><ul><ul><ul><li>Asignación a procesadores. </li></ul></ul></ul><ul><ul><ul><li>Comunicación. </li></ul></ul></ul><ul><ul><ul><li>Sincronización (interbloqueos).. </li></ul></ul></ul>
  5. 5. 1.2. Metodología de desarrollo de software. <ul><li>Se requieren unos fundamentos semánticos firmes para conciliar la información proporcionada por el programador sobre la estructura semántica del programa y la estructura requerida para la ejecución del mismo. </li></ul>
  6. 6. 1.3. Independiente de la arquitectura. <ul><li>El modelo debe ser independiente de la arquitectura en la que se ejecute, de esta forma los programas realizados sobre ella pueden ser migrados sin tener que ser re-desarrollados ni modificados de manera significativa. </li></ul>
  7. 7. 1.4. Fácil de comprender. <ul><li>El modelo debe ser fácil de comprender, lo que implica que también será fácil de enseñar, ya que de otro modo será imposible formar a los programadores actuales para su uso. </li></ul><ul><li>Si los modelos de programación paralela son capaces de ocultar la complejidad y ofrecer una interfaz sencilla, tienen una oportunidad mayor de ser aceptados y utilizados. </li></ul>
  8. 8. 1.5. Rendimiento garantizado <ul><li>Un modelo debería tener un rendimiento garantizado sobre una variedad de arquitecturas paralelas. </li></ul><ul><li>Esto no significa que las implementaciones deban extraer todo el rendimiento disponible en cada una de las arquitecturas. </li></ul><ul><li>Sobre todo si ese incremento en el rendimiento sobre una arquitectura requiere un coste de desarrollo y mantenimiento considerables. </li></ul>
  9. 9. 1.6. Medidas de coste. <ul><li>Cualquier diseño de programas está condicionado más o menos explícitamente por cuestiones de rendimiento. El tiempo de ejecución es la más importante de estas cuestiones pero otras como la utilización del procesador o el coste de desarrollo también son importantes. </li></ul><ul><li>Se dice que un modelo tiene medidas de coste si es posible determinar el coste de un programa a partir del fuente, características mínimas sobre el diseño del computador e información sobre el tamaño de la información de entrada. </li></ul>
  10. 10. 1.6. Medidas de coste. <ul><li>Este concepto de coste es el mismo que se utiliza en modelos teóricos paralelos de complejidad como el PRAM [Karp & Ramachandran 1990]. </li></ul><ul><li>Este requerimiento es el más conflictivo ya que requiere que los modelos provean costes predecibles y que los compiladores no optimicen el código. Aunque esta no es la forma en la que actualmente se considera el software paralelo, hay que decir que el diseño no es posible sin él. </li></ul><ul><li>Sin diseño, la construcción de software paralelo quedará como un arte oscuro en vez de como una disciplina de ingeniería. </li></ul>
  11. 11. 2. Descripción de Modelos. <ul><li>El objetivo de este apartado es dar a conocer los diferentes modelos actuales (1.998) y evaluar cuánto paralelismo de carácter general suministran, desde la perspectiva del cumplimiento de las propiedades descritas anteriormente. </li></ul>
  12. 12. Descripción de Modelos <ul><li>Los modelos serán presentados en orden decreciente de abstracción en las siguientes categorías: </li></ul><ul><ul><ul><li>Abstracción completa del paralelismo. </li></ul></ul></ul><ul><ul><ul><li>Paralelismo explícito, pero descomposición en hilos implícita y por ende la asignación a procesadores, comunicación y sincronización. </li></ul></ul></ul><ul><ul><ul><li>Paralelismo y descomposición explícitos, pero asignación, comunicación y sincronización implícita. </li></ul></ul></ul><ul><ul><ul><li>Paralelismo, descomposición y asignación explícitos pero comunicación y sincronización implícita. </li></ul></ul></ul><ul><ul><ul><li>Paralelismo, descomposición, asignación y comunicación explícitos y sincronización implícita. </li></ul></ul></ul><ul><ul><ul><li>Todo explícito. </li></ul></ul></ul>
  13. 13. Descripción de Modelos <ul><li>Dentro de cada categoría se presentan modelos de acuerdo a su grado de control sobre la estructura y comunicación, en estas subcategorías: </li></ul><ul><ul><ul><li>Modelos en los que la estructura de hilos es dinámica. </li></ul></ul></ul><ul><ul><ul><li>Modelos en los que la estructura de hilos es estática pero las comunicaciones no están limitadas. </li></ul></ul></ul><ul><ul><ul><li>Modelos en los que la estructura de hilos es estática y las comunicaciones están limitadas. </li></ul></ul></ul>
  14. 14. 2.1 Nada Explícito. <ul><li>Ocultar todas las actividades requeridas para ejecutar una aplicación paralela significa que el desarrollador puede utilizar todo su conocimiento y pericia en el desarrollo de un software secuencial. </li></ul><ul><li>Por otro lado esto significa que el trabajo del desarrollador de compiladores sea mucho más duro ya que estas herramientas deben inferir toda la estructura de cada programa. </li></ul>
  15. 15. 2.2 Paralelísmo explícito. <ul><li>Los desarrolladores de software no necesitan explicar de forma explícita cómo el cálculo va a ser troceado, cómo esos trozos van a ser asignados a distintas cpus y cómo se van a comunicar entre sí. </li></ul><ul><li>Las estrategias para implementar la descomposición se basa en utilizar algoritmos que calculen los cambios de contexto de menor coste. </li></ul><ul><li>La asignación a procesadores se realiza mediante estructuras de asignación predefinidas ( skeletons ) que se ajusten a la topología de procesadores. </li></ul>
  16. 16. 2.3 Descomposición explícita. <ul><li>Los modelos de este tipo requieren que los programas especifiquen las piezas en las que han de ser divididos, aunque la asignación de estas piezas a los procesadores de la arquitectura subyacente serán realizados por el propio modelo. </li></ul>
  17. 17. 2.4 Asignación explícita. <ul><li>Estos modelos requieren que la descomposición y asignación a procesadores venga hecha, pero proveen de cierta abstracción para las comunicaciones entre procesos. </li></ul><ul><li>La tarea más dura del desarrollador es identificar el origen y destino de cada comunicación; debido al alto número de comunicaciones que han de tener lugar, este proceso es largo y tedioso. </li></ul><ul><li>Todos los modelos de esta clase tratan de establecer una abstracción de más alto nivel para facilitar esta tarea al programador. </li></ul>
  18. 18. 2.5 Comunicación explícita. <ul><li>Los modelos de esta clase requieren que la comunicación se realice de forma explícita, aunque reducen la carga de sincronización que se requiere para llevarla a cabo. </li></ul><ul><li>Normalmente esto se realiza mediante una semántica asíncrona: los mensajes son entregados pero el emisor no puede esperar tener un tiempo de entrega predefinido, además la entrega de múltiples mensajes puede realizarse en otro orden que el de emisión. </li></ul>
  19. 19. 2.6 Todo explícito. <ul><li>En esta categoría de modelos no se oculta el detalle de descomposición y comunicación. </li></ul><ul><li>La mayoría de los modelos de computación paralela de primera generación están en este nivel, diseñados para un estilo de arquitectura concreta y gestionados de forma explícita por el desarrollador de aplicaciones. </li></ul>
  20. 20. 2.7 PRAM <ul><li>Es el modelo básico para muchos análisis teóricos de computación paralela. </li></ul><ul><li>La máquina abstracta PRAM está compuesta de un conjunto de procesadores ejecutando programas independientes pero conectados de forma síncrona a una memoria compartida. </li></ul><ul><li>Cualquier procesador puede acceder a cualquier posición de memoria en una unidad de tiempo, pero no pueden acceder de forma simultánea a la misma posición. </li></ul>
  21. 21. 2.7 PRAM <ul><li>Este modelo requiere un nivel de detalle muy grande, especificando el código para cada procesador y asegurándose que no habrá conflictos de memoria. </li></ul><ul><li>La parte de acceso a memoria en una unidad de tiempo es inasumible para cualquier máquina escalable real, por lo que las medidas de este modelo no son muy precisas. </li></ul><ul><li>El lenguaje FORK [Kessler & Seidl 1995] es un intento de proporcionar un cierto nivel de abstracción sobre PRAM. </li></ul>
  22. 22. 3. Clasificación de modelos. <ul><li>A continuación se citan los modelos actuales de paralelismo, junto con sus lenguajes asociados, clasificados según los criterios expuestos en los anteriores apartados. </li></ul>
  23. 23. 3.1. Abstracción completa del paralelismo. <ul><li>Estructura Dinámica </li></ul><ul><ul><li>Higher-order Functional-Haskell </li></ul></ul><ul><ul><li>Concurrent Rewriting—OBJ, Maude </li></ul></ul><ul><ul><li>Interleaving—Unity </li></ul></ul><ul><ul><li>Implicit Logic Languages—PPP, AND/OR, REDUCE/OR, Opera, Palm, concurrent </li></ul></ul><ul><ul><li>constraint languages </li></ul></ul><ul><li>Estructura Estática </li></ul><ul><ul><li>Algorithmic Skeletons—P3L, Cole, Darlington </li></ul></ul><ul><li>Estática y Comunicaciones limitadas </li></ul><ul><ul><li>Homomorphic Skeletons—Bird-Meertens Formalism </li></ul></ul><ul><ul><li>Cellular Processing Languages—Cellang, Carpet, CDL, Ceprol </li></ul></ul><ul><ul><li>Crystal </li></ul></ul>
  24. 24. 3.2 Paralelismo explícito, pero descomposición en hilos implícita <ul><li>Estructura Dinámica </li></ul><ul><ul><li>Dataflow—Sisal, Id </li></ul></ul><ul><ul><li>Explicit Logic Languages—Concurrent Prolog, PARLOG, GHC, Delta-Prolog, Strand </li></ul></ul><ul><ul><li>Multilisp </li></ul></ul><ul><li>Estructura Estática </li></ul><ul><ul><li>Data Parallelism Using Loops—Fortran variants, Modula 3* </li></ul></ul><ul><ul><li>Data Parallelism on Types—pSETL, parallel sets, match and move, Gamma, PEI, APL, MOA, Nial and AT </li></ul></ul><ul><li>Estática y Comunicaciones limitadas </li></ul><ul><ul><li>Data-Specific Skeletons—scan, multiprefix, paralations, dataparallel C, NESL, CamlFlight </li></ul></ul>
  25. 25. 3.3 Paralelismo y descomposición explícitos, pero asignación, comunicación y sincronización implícita. <ul><li>Estructura Dinámica </li></ul><ul><li>Estructura Estática </li></ul><ul><ul><li>BSP, LogP </li></ul></ul><ul><li>Estática y Comunicaciones limitadas </li></ul>
  26. 26. 3.4 Paralelismo, descomposición y asignación explícitos pero comunicación y sincronización implícita. <ul><li>Estructura Dinámica </li></ul><ul><ul><li>Coordination Languages—Linda, SDL </li></ul></ul><ul><ul><li>Non-message Communication Languages— ALMS, PCN, Compositional C++ </li></ul></ul><ul><ul><li>Virtual Shared Memory </li></ul></ul><ul><ul><li>Annotated Functional Languages—Paralf RPC—DP, Cedar, Concurrent CLU, DP </li></ul></ul><ul><li>Estructura Estática </li></ul><ul><ul><li>Graphical Languages—Enterprise, Parsec, Code </li></ul></ul><ul><ul><li>Contextual Coordination Languages—Ease, ISETL-Linda, Opus </li></ul></ul><ul><li>Estática y Comunicaciones limitadas </li></ul><ul><ul><li>Communication Skeletons </li></ul></ul>
  27. 27. 3.5 Paralelismo, descomposición, asignación y comunicación explícitos y sincronización implícita. <ul><li>Estructura Dinámica </li></ul><ul><ul><li>Process Networks—Actors, Concurrent Aggregates, ActorSpace, Darwin </li></ul></ul><ul><ul><li>External OO—ABCL/1, ABCL/R, POOL-T, EPL, Emerald, Concurrent Smalltalk </li></ul></ul><ul><ul><li>Objects and Processes—Argus, Presto, Nexus </li></ul></ul><ul><ul><li>Active Messages—Movie </li></ul></ul><ul><li>Estructura Estática </li></ul><ul><ul><li>Process Networks—static dataflow </li></ul></ul><ul><ul><li>Internal OO—Mentat </li></ul></ul><ul><li>Estática y Comunicaciones limitadas </li></ul><ul><ul><li>Systolic Arrays—Alpha </li></ul></ul>
  28. 28. 3.6 Todo explícito <ul><li>Estructura Dinámica </li></ul><ul><ul><li>Message Passing—PVM, MPI </li></ul></ul><ul><ul><li>Shared Memory—FORK, Java, thread packages </li></ul></ul><ul><ul><li>Rendezvous—Ada, SR, Concurrent C </li></ul></ul><ul><li>Estructura Estática </li></ul><ul><ul><li>Occam </li></ul></ul><ul><li>PRAM </li></ul>
  29. 29. 4. Conclusiónes <ul><li>Se ha presentado un resumen de modelos de computación paralela utilizando un conjunto de seis criterios que un modelo ideal debería cumplir. </li></ul><ul><li>Cuatro de los criterios establecen la necesidad de utilizar un modelo como objetivo para el desarrollo de software, estos son: facilidad de programación y la existencia de una metodología para la construcción de software que se encargue de los temas de corrección, independencia de arquitectura, simplicidad y abstracción. </li></ul>
  30. 30. 4. Conclusiones <ul><li>Los restantes criterios responden a la necesidad de la ejecución del modelo en máquinas paralelas reales, garantizando rendimiento y la existencia de medidas de coste que puedan ser aplicadas al software. Juntos aseguran un rendimiento predecible para los programas </li></ul><ul><li>Los modelos que se han descrito representan una amplia variedad de aproximaciones a diferentes niveles. </li></ul>
  31. 31. 4. Conclusiones <ul><li>Las tendencias que se observan en estos modelos son las siguientes: </li></ul><ul><ul><li>El trabajo en modelos de bajo nivel en los cuales la descripción del proceso es totalmente explícita, ha disminuido considerablemente. </li></ul></ul><ul><ul><li>Existe una gran concentración de modelos en el nivel medio de abstracción. Presumiblemente porque se aplica una mezcla de análisis teórico y experimentación lo que parece el mejor camino al éxito. </li></ul></ul><ul><ul><li>Existen algunos modelos de alto nivel de abstracción que también proveen un nivel predecible de rendimiento en una gama de arquitecturas paralelas. Su existencia aumenta la esperanza, de que los modelos que satisfagan todos los requerimientos aquí expuestos, pueden ser construidos. </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×