Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Quincena                     Ingeniería 2012                              Concurrencia o                             “Hard...
Índice             Historia de la Concurrencia             Paralelismo, Sincronización y Máximo Rendimiento             ”T...
I. Historia de la                                                                 Historia                         Concurr...
Historia               Procesadores Multinúcleo       El computador puede obtener con varias tareas a        la vez la mi...
Historia               Procesadores Multinúcleo II      Ley Amdahl no sirve para arquitecturas masivas-       paralelas s...
Paralelismo, Sincron.. II. Paralelismo, Sincronización y Máximo Rendimiento     ¿Se puede     obtener el          Reducci...
Multithreading                         El esfuerzo del programador                          tendría que centrarse más     ...
Memoria, mensajes…          IV.Memoria Compartida, Paso de Mensaj          y Coordinación Comunicación a través de la mem...
Memoria, mensajes…                      “message passing is harmful to                     parallel programming as the got...
Memoria, Solución…                                                         Una mensajes…               V. Una Solución de ...
Memoria, Solución…                                                           Una mensajes…                 Transacciones v...
Memoria, Solución…                                                             Una mensajes…                 Problema de l...
Memoria, Solución…                                                               Una mensajes…               Problema de l...
Memoria, Solución…                                                                Una mensajes…                Problema de...
Memoria, Solución…                                                           Una mensajes…                 Transacciones v...
Computación                                                      Alta Product.                 VI. Computación de Alta    ...
Computación                                                        Alta Product.                   Nuevos Lenguajes para H...
Computación                                                                     Alta Product.                 Paralelismo ...
Computación                                                      Alta Product.                 “Mapeando” Dominios       ...
Dirigido por Tareas             VII. Paralelismo Dirigido por             Tareas          Propicia la óptima paralelizaci...
Agrega capacidades de                           Dirigido por Tareas     Arquitectura de programación         consulta a C#...
Dirigido por Tareas                Task Parallel Library      Creación y cancelación implícita de tareas         Invocac...
Dirigido por Tareas                Delegados y lambda                expresiones Las lambda expresiones proporcionan el s...
Dirigido por Tareas                Creación-inicio de tareas Capturan sólo el valor final de las variables en los bucles....
Dirigido por Tareas                Colecciones y estructuras                para coordinación      Clases de colección se...
Dirigido por Tareas                Programación asíncrona                en .NET framework 4      Utiliza operaciones así...
Dirigido por Tareas                     Comparativa lenguajes para                     HPCS  Lenguaje                     ...
Decálogo             VIII. Decálogo para Programar             multinúcleos      Pensarás en Paralelo      Programarás c...
Conclusiones                  IX. Conclusiones La programación multihebra está en decadencia, se usa sólo para  controlar...
Referencias -The Chapel Parallel Programming Language ( http://chapel.cray.com/ ) -X10: Performance and Productivity at Sc...
Gracias por la atención !                           ¿Preguntas?U.Cádiz 23.03.2012   Concurrencia o "Hardcomputing"   31
Upcoming SlideShare
Loading in …5
×

Concurrency or "Hard Computing"

801 views

Published on

New addresses to HPCS programming. Threads and locks are "dead". Conferencia.uca.23.03.2012.
Concurrency or Hard Computing of today meets High Productivity Computing Systems.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Concurrency or "Hard Computing"

  1. 1. Quincena Ingeniería 2012 Concurrencia o “Hardcomputing” Manuel I. Capel TuñónDepartmento Lenguajes y Sistemas, Universidad de Granada, ETSIIT - Aynadamar Campus, 18071 Granada. manuelcapel@ugr.esU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 1
  2. 2. Índice Historia de la Concurrencia Paralelismo, Sincronización y Máximo Rendimiento ”To Thread or Not to Thread” Memoria Compartida, Paso de Mensajes y Coordinación Una Solución de Compromiso Computación de Alta Productividad Paralelismo Dirigido por Tareas Decálogo para programar multinúcleos ConclusionesU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 2
  3. 3. I. Historia de la Historia Concurrencia Objetos y Concurrencia Modelos de “Monitores” Mezcla de paradigmas: funcional, concurrente, 2001 Orca (Easdown, 1995 ) Época dorada de los 1993 Python (Tanembaum A 2001) B “programadores de sistemas” Amoeba (Tanembaum, S …1985 WWW (Berners-Lee, 2000) T Caillau, 1991) R Java (Goslin et al. 1994) A Diseño sistemas Erlang (Eriksson 1986) C operativos Occam (May 1983) Cmultiprogramación …1980 I Ada (DoD 1980, 1995) Ó … 1970 Concurrent Pascal (Brinch-Hansen 1982) N Mesa (Lampson, Redell 1980) Modula 2, Modula 3 (Wirth 1980) Actor Model (Hewitt 1970) RC4000 (Brinch-Hansen 1970) Evolución de los 196 8 “Proceso” (Wulf 1969) lenguajes de la THE (Dijkstra 1968) Prog. Concurrente U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 3
  4. 4. Historia Procesadores Multinúcleo  El computador puede obtener con varias tareas a la vez la misma eficiencia que con 1 tarea  Ley Amdahl (1967): 1 A( f , S) = (1 − f ) + ( f ) SU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 4
  5. 5. Historia Procesadores Multinúcleo II  Ley Amdahl no sirve para arquitecturas masivas- paralelas sobre grandes conjuntos de datos  Ley Gustafson-Barsis: A ( f , S ) = s + ( p × n)U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 5
  6. 6. Paralelismo, Sincron.. II. Paralelismo, Sincronización y Máximo Rendimiento ¿Se puede obtener el  Reducción de latencia: creación dinámica máximo rendimiento paralelo sin de hebras de ejecución en servidores utilizar hebras ni paso de mensajes?  Impedir condiciones de carrera en acceso a datos comunes: paso de mensajes  “We cannot longer count on the speed of processors increasing exponentially…we have to find ways to take advantage of increasingly abundant number of cores”U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 6
  7. 7. Multithreading El esfuerzo del programador tendría que centrarse más III. “To Thread or Not to Thread” en identificar el potencial de paralelización del programa que en programar un Programación paralela con múltiples hebras complejo protocolo para no escala con el número degestionar los hebras, núcleos equilibrar la carga de los Se puede adoptar un estilo SPMD o SIMD, que núcleos, etc. escala mejor Problemas adicionales:  No siempre el código susceptible de paralelización posee la misma granularidad  Difícil programación: crear pools de hebras, asignarles tareas, equilibrar la carga … U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 7
  8. 8. Memoria, mensajes… IV.Memoria Compartida, Paso de Mensaj y Coordinación Comunicación a través de la memoria de los procesos produce “condiciones de carrera” Se pueden sincronizar los accesos (semáforos…), pero aparecen bloqueos vivos e interbloqueos Resultado previsible: muy baja productividad Sustituir secciones críticas y sus protocolos por colas de mensajes (fifos, ...) Tipo de comunicación que escala bien en multinúcleosU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 8
  9. 9. Memoria, mensajes… “message passing is harmful to parallel programming as the goto ¿Considerando el paso de mensajes is harmful to sequential programming” (Gorlatch) pernicioso para PP?  Comunicación con Paso de Mensajes (CPM) , inadecuada con paralelismo dirigido por los datos y puede producir inversión de control  El programa puede degenerar en un conjunto de manejadores de hebras de activación imprevisible  Similar a programar con saltos incondicionales de control: el flujo de mensajes deviene incontrolable!  El esfuerzo de escribir un programa es muy altoU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 9
  10. 10. Memoria, Solución… Una mensajes… V. Una Solución de Compromiso  Software Transactional Memory (TSM), nuevo modelo de comunicación/sincronización de Haskell  Concepto de bloque atómico:  Similar a las RCC del lenguaje Edison,  Sin condiciones de carrera entre hebras  STM escala bien con núcleos  No más “locks” (cerrojos)U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 10
  11. 11. Memoria, Solución… Una mensajes… Transacciones vs cerrojos Series de operaciones sobre memoria compartida, de principio a fin, valores intermedios vars. no son visibles STM es una primitiva concurrente optimista  No se comprueba la consistencia antes de escribir  Sino, si van a comprometer los cambios realizados  Siempre se puede abortar una transición, antes de comprometer los cambios  Aumentan la concurrencia: diferentes tareas pueden modificar simultáneamente regiones de memoria U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 11
  12. 12. Memoria, Solución… Una mensajes… Problema de las Transacciones Bancarias Thread P2:: var Suma=0; i=1; Error:= false;int a[1..n]; {Suma= a[1]+a[2]+ ... a[i-1]}{TOT==a[1]+...+a[n]== while (i <= n) { cte} B1 : {Suma== a[1]+...a[i−1],i< n}Thread P1:: S2 : Suma = Suma + a[i];A1:{a[x]==X,a[y]== Y} B2 : {Suma== a[1]+...a[i−1]+a[i]} i= i+1;S1:< a[x] = a[x] − K; B3 : {Suma== a[1]+ ...a[i−1]} a[y] = a[y] + K > }A2:{a[x]== X − K, {Suma ==a[1] + a[2] + ...a[n]} a[y]==y+K} if S<>TOT then Error=true El estado intermedio no debe ser visible a P2 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 12
  13. 13. Memoria, Solución… Una mensajes… Problema de las Transacciones Bancarias II Solución con cerrojos : a[] 1 2 x y y+1 N Parte con posibles problemas Lock() de lectura no consistente Unlock()U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 13
  14. 14. Memoria, Solución… Una mensajes… Problema de las Transacciones Bancarias II La sobrecarga se reduce a copiar el array original, pero  Solución con transacciones (Haskell) : ahora las tareas pueden acceder simultáneamente a[] 1 2 x y y+1 NLog fileprevio atomic{ if ( ∀ a[i]≠ a[x], a[y] “consistent(log_file)==true”){ a[x] = a[x] − K;a[y] = a[y] + K } else retry U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 14 }
  15. 15. Memoria, Solución… Una mensajes… Transacciones vs cerrojos II Evitan la inversión de prioridad que que los cerrojos causan en las hebras: siempre se puede abortar una transacción menos prioritaria Es compatible programarlas con los objetos Interbloqueos y bloqueos vivos evitados externamente Tablas hash con operaciones transaccionables: inimplementables con cerrojos salvo que el proveedeor de la tabla hash prevea métodos específicos U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 15
  16. 16. Computación Alta Product. VI. Computación de Alta Productividad  “Los supercomputadores de ayer son los computadores de sobremesa de hoy y serán los teléfonos de mañana”  HPCS es un programa DARPA para los futuros Sistemas Concurrentes:  Cray propone Chapel como lenguaje de HPCS  IBM con el lenguaje X10  Sun está desarrollando FortressU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 16
  17. 17. Computación Alta Product. Nuevos Lenguajes para HPCS Chapel, X10 y Fortress son muy parecidos:  Abstracción de Espacio Direcciones Compartido (PGAS)  Libera al programador de escribir protocolos tediosos  Aplicaciones para un amplio rango de configuraciones: desde 1 multinúcleo hasta granjas de servidores  Configuración adaptable basada en locales  Sólo descripción local de los algoritmos  Simplificación programando, ganancia de productividad. U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 17
  18. 18. Computación Alta Product. Paralelismo de Datos vs Control Problema de la configuración de un multicomputador: D2 Dortmund Köln Paralelización dirigida por D1 D4 D7 control : Asignación Koblenz D3 Kasel automática en bucles D6 D5 Frankfurt Paralelización dirigida por Global work queue BS datos: Distribución de Best solution datos globales a “locales” found La configuración no es completamente automatizable!U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 18
  19. 19. Computación Alta Product. “Mapeando” Dominios  Distribución 1 bloque de datos entre “locales”: const Dist = new dmap(new Block(boundingBox=[1..4,1..8]));  Se pasa como argumento a un constructor de dominio: var Dom: domain(2) dmapped Dist=[1..4,1..8];  “Mapped Domain”: conjunto 2D de índices en correspondencia con Dist  Si hay 8 “locales”, cada uno se encargará de procesar una región 2x2U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 19
  20. 20. Dirigido por Tareas VII. Paralelismo Dirigido por Tareas  Propicia la óptima paralelización de código del tipo dirigida por control  El sistema de tiempo de ejecución es quien se encarga de hacer corresponder tareas a hebras:  Grupos tareas con poca carga, asignados a 1 hebra  Los hebras se ocultan a los programadores, pero no la definición de las tareas  Ahora las estructuras de datos y los flujos de control se programan de forma monolíticaU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 20
  21. 21. Agrega capacidades de Dirigido por Tareas Arquitectura de programación consulta a C# y VB. Divide el origen de datos en paralela en .NET Framework 4 segmentos y lanza consultas en cada segmento por hebras independientes Asignar tareas a las hebras , administrar detalle Incluye clases colección de bajo nivel, evita que lasimultáneas, primitivas de paralelización sea sincronización ligeras y tipos ineficiente de incialización diferidaU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 21
  22. 22. Dirigido por Tareas Task Parallel Library  Creación y cancelación implícita de tareas  Invocación paralela mediante delegados definidos como lambda expresiones  El número de tareas que se crea en 2do plano con Parallel.invoke()≠ num. hebras  Creación y ejecución explícita de tareas:  Los objetos-tareas exponen su estado a los usuarios  Se pasan en el constructor delegados de usuario: métodos, anónimos y expresiones lambdaU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 22
  23. 23. Dirigido por Tareas Delegados y lambda expresiones Las lambda expresiones proporcionan el soporte formal para definir funciones anónimas Sintaxis de lambda expresión que devuelve resultado: Objeto de estado [captura](argumentos)->devuelve-tipo{cuerpo} Función que calcula una suma de 5 términos: std::vector<int> una_lista; int total=0; for(int i=0;i<5;i++)una_lista.push.back(i); std::for_each(begin(una_lista), end(una_lista), [&total](int x){total += x;});U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 23
  24. 24. Dirigido por Tareas Creación-inicio de tareas Capturan sólo el valor final de las variables en los bucles. Se soluciona definiendo 1 objeto de estado a en el constructor:for(int= i=0;i<arrayTareas.Length;i++){ arrayTareas[i]= new Task((obj)=> { DatosUsuario misDatos (DatosUsuario) obj; misDatos.N_Hebra=Thread.Current.Thread.ManagerThreadId; Console.Write(misDatos.Nombre,misDatos.Tiempo, misDatos.N_Hebra);}//lambda expresión new DatosUsuario(){Nombre=i,Tiempo=DateTime.Ticks();} );//tarea creadaarrayTareas[i].start();}U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 24
  25. 25. Dirigido por Tareas Colecciones y estructuras para coordinación  Clases de colección seguras, tipos de sincronización ligeros y tipos para la inicialización diferida:  Clases contenedores con acceso sin bloqueos y escalables en multinúcleos: System.Collections.Concurrent.XXX  Nuevos tipos de sincronización evitan los bloqueos indiscriminados de las primitivas para hebras:  SemaphoreSlim, Barriers, EventSlim, SpinLock, SpinWait..U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 25
  26. 26. Dirigido por Tareas Programación asíncrona en .NET framework 4  Utiliza operaciones asíncronas estructuradas (APM): FileStream.BeginRead, FileStream.EndRead …  Modelos basados en pares método/evento (EAP): WebClient.DownloadString.Async, WebClient.Download.Completed, …  Las operaciones APM y EAP pueden hacerse accesibles a los usuarios de TPL o bien se pueden implementar con objetos tarea  Instrucción FromAsync:crea un objeto tarea para representar un par Begin/EndU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 26
  27. 27. Dirigido por Tareas Comparativa lenguajes para HPCS Lenguaje Modelo de Concurrencia Propietario Memoria para HPCS multiresolución Fortress Sun Systems Transaccional NO SI Chapel CRAY Transaccional (forall, Begin/End) SI X10 IBM Transaccional (Async)U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 27
  28. 28. Decálogo VIII. Decálogo para Programar multinúcleos  Pensarás en Paralelo  Programarás con tareas, no con hebras  Depurarás lo secuencial antes  No utilizarás cerrojos  Tendrás el control de tu memoria  En lo antiguo no hay “salvación”  Diseñarás deseando tener más núcleosU.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 28
  29. 29. Conclusiones IX. Conclusiones La programación multihebra está en decadencia, se usa sólo para controlar la latencia en la respuesta a peticiones en servidores La programación paralela dirigida por tareas y el paralelismo semi- implícito concitan actualmente la máxima atención El paso de mensajes (MPI, etc.) también ha entrado en decadencia, debido a que propicia un estilo de programación demasiado tedioso El espacio de direcciones compartido (PGAS) es considerado de máxima actualidad Programar con cerrojos (locks) tiende a la obsolescencia, debido a que suponen un estilo de programación de demasiado bajo nivel La memoria transaccional (STM) , de actualidad en HPCS U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 29
  30. 30. Referencias -The Chapel Parallel Programming Language ( http://chapel.cray.com/ ) -X10: Performance and Productivity at Scale ( http://x10-lang.org/ ) -Project Fortress ( http://projectfortress.sun.com/ ) -“Unified Parallel C”. The High Performance Computing Laboratory – George Washington University ( http://upc.gwu.edu/ ) -“Task Parallel Library”. Microsoft ( http://msdn.microsoft.com/es-es/library/dd460717.aspx ) -Intel Threading Building Blocks for Open Source ( http://threadingbuildingblocks.org/ ) -“Scalable Software Transactional Memory for Global Address Space Architectures”. Sridharan,S.,Vetter,J.S.,Kogge,P.M. Future Technologies Group (2009) -“Designing an Effective Hybrid Transactional Memory System” PhD Dissertation, Stanford (USA), Chí Chao Minh (2008) -“Concurrency in the D Programming Language”. A. Alexandrescu (2010)U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 30
  31. 31. Gracias por la atención ! ¿Preguntas?U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 31

×