Concurrency or "Hard Computing"
-
Upload
manuel-capel-tunon -
Category
Education
-
view
553 -
download
0
description
Transcript of Concurrency or "Hard Computing"
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 11
Manuel I. Capel TuñónManuel I. Capel TuñónDepartmento Lenguajes y Departmento Lenguajes y Sistemas, Universidad de Sistemas, Universidad de
Granada,Granada,ETSIIT - Aynadamar Campus, ETSIIT - Aynadamar Campus,
18071 Granada.18071 Granada.
[email protected]@ugr.es
Quincena Quincena Ingeniería 2012Ingeniería 2012
Concurrencia o Concurrencia o “Hardcomputing”“Hardcomputing”
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 22
Historia de la ConcurrenciaHistoria de la Concurrencia
””To Thread or Not to Thread”To Thread or Not to Thread”
Decálogo para programar multinúcleosDecálogo para programar multinúcleos
Paralelismo, Sincronización y Máximo Rendimiento Paralelismo, Sincronización y Máximo Rendimiento
ConclusionesConclusiones
Memoria Compartida, Paso de Mensajes y CoordinaciónMemoria Compartida, Paso de Mensajes y Coordinación
Una Solución de CompromisoUna Solución de Compromiso
Computación de Alta ProductividadComputación de Alta Productividad
Paralelismo Dirigido por TareasParalelismo Dirigido por Tareas
ÍndiceÍndice
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 33
I. Historia de la I. Historia de la ConcurrenciaConcurrencia
HistoriaHistoria
ABSTRACCIÓN
1993
WWW (Berners-Lee, Caillau, 1991)
Java (Goslin et al. 1994)
Objetos y Concurrencia
1968
THE (Dijkstra 1968)
Diseño sistemas operativos
multiprogramación
“Proceso” (Wulf 1969)
RC4000 (Brinch-Hansen 1970)
…1980
Modelos de “Monitores”
Concurrent Pascal (Brinch-Hansen 1982)Mesa (Lampson, Redell 1980)Modula 2, Modula 3 (Wirth 1980)
… 1970
Época dorada de los “programadores de
sistemas”
Actor Model (Hewitt 1970)
Erlang (Eriksson 1986)Occam (May 1983)Ada (DoD 1980, 1995)
…1985
Mezcla de paradigmas: funcional, concurrente,
Evolución de los lenguajes de la
Prog. Concurrente
Evolución de los lenguajes de la
Prog. Concurrente
2001Orca (Easdown, 1995 )
Python (Tanembaum 2001)
Amoeba (Tanembaum, 2000)
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 44
Procesadores Procesadores MultinúcleoMultinúcleoEl computador puede obtener con varias El computador puede obtener con varias
tareas a la vez la misma eficiencia que con tareas a la vez la misma eficiencia que con 1 tarea 1 tarea
Ley Amdahl (1967):Ley Amdahl (1967):
HistoriaHistoria
)()1(
1),(
Sff
SfA
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 55
Procesadores Procesadores Multinúcleo IIMultinúcleo IILey Amdahl no sirve para arquitecturas Ley Amdahl no sirve para arquitecturas
masivas- paralelas sobre grandes masivas- paralelas sobre grandes conjuntos de datosconjuntos de datos
Ley Gustafson-Barsis:Ley Gustafson-Barsis:
HistoriaHistoria
)'('),( npsSfA
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 66
II. Paralelismo, Sincronización y II. Paralelismo, Sincronización y Máximo RendimientoMáximo Rendimiento
Reducción de latencia: creación Reducción de latencia: creación
dinámica de hebras de ejecución en dinámica de hebras de ejecución en
servidores servidores
Impedir condiciones de carrera en Impedir condiciones de carrera en
acceso a datos comunes: paso de acceso a datos comunes: paso de
mensajesmensajes““We cannot longer count on the We cannot longer count on the
speed of processors increasing speed of processors increasing exponentially…we have to find ways exponentially…we have to find ways to take advantage of increasingly to take advantage of increasingly abundant number of cores”abundant number of cores”
Paralelismo, Sincron..Paralelismo, Sincron..
¿Se puede obtener el máximo
rendimiento paralelo sin
utilizar hebras ni paso de
mensajes?
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 77
Programación paralela con múltiples Programación paralela con múltiples hebras no escala con el número de hebras no escala con el número de núcleosnúcleos
Se puede adoptar un estilo SPMD o Se puede adoptar un estilo SPMD o SIMD, que escala mejor SIMD, que escala mejor
Problemas adicionales:Problemas adicionales:No siempre el código susceptible de No siempre el código susceptible de
paralelización posee la misma granularidadparalelización posee la misma granularidadDifícil programación: crear Difícil programación: crear poolpools de s de
hebras, asignarles tareas, equilibrar la hebras, asignarles tareas, equilibrar la carga … carga …
III. III. “To Thread or Not to Thread”“To Thread or Not to Thread”
MultithreadingMultithreading
El esfuerzo del programador tendría que
centrarse más en identificar el potencial de paralelización del
programa que en programar un complejo
protocolo para gestionar los hebras, equilibrar la
carga de los núcleos, etc.
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 88
IV.Memoria Compartida, Paso de Mensajes IV.Memoria Compartida, Paso de Mensajes y Coordinacióny Coordinación
Comunicación a través de la memoria de los procesos Comunicación a través de la memoria de los procesos produce “condiciones de carrera”produce “condiciones de carrera”
Se pueden sincronizar los accesos (semáforos…), pero Se pueden sincronizar los accesos (semáforos…), pero aparecen bloqueos vivos e interbloqueosaparecen bloqueos vivos e interbloqueos
Resultado previsible: muy baja productividadResultado previsible: muy baja productividadSustituir secciones críticas y sus protocolos por colas Sustituir secciones críticas y sus protocolos por colas
de mensajes (fifos, ...)de mensajes (fifos, ...)Tipo de comunicación que escala bien en Tipo de comunicación que escala bien en
multinúcleosmultinúcleos
Memoria, mensajes…Memoria, mensajes…
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 99
¿Considerando el paso de mensajes ¿Considerando el paso de mensajes pernicioso para PP? pernicioso para PP?
Comunicación con Paso de Mensajes (CPM) , Comunicación con Paso de Mensajes (CPM) , inadecuada con paralelismo dirigido por los datos y inadecuada con paralelismo dirigido por los datos y puede producir inversión de controlpuede producir inversión de control
El programa puede degenerar en un conjunto de El programa puede degenerar en un conjunto de manejadores de hebras de activación imprevisiblemanejadores de hebras de activación imprevisible
Similar a programar con saltos incondicionales de Similar a programar con saltos incondicionales de control: el flujo de mensajes deviene incontrolable!control: el flujo de mensajes deviene incontrolable!
El esfuerzo de escribir un programa es muy altoEl esfuerzo de escribir un programa es muy alto
“message passing is harmful to parallel programming as
the goto is harmful to sequential programming”
(Gorlatch)
Memoria, mensajes…Memoria, mensajes…
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1010
V. Una Solución de CompromisoV. Una Solución de Compromiso
Una Solución…Una Solución…
Software Transactional Memory (TSM), Software Transactional Memory (TSM), nuevo modelo de nuevo modelo de comunicación/sincronización de Haskellcomunicación/sincronización de Haskell
Concepto de bloque atómico:Concepto de bloque atómico:Similar a las RCC del lenguaje Edison, Similar a las RCC del lenguaje Edison, Sin condiciones de carrera entre hebrasSin condiciones de carrera entre hebrasSTM escala bien con núcleosSTM escala bien con núcleosNo más “locks” (cerrojos)No más “locks” (cerrojos)
Memoria, mensajes…Memoria, mensajes…
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1111
Transacciones vs cerrojosTransacciones vs cerrojos
Una Solución…Una Solución…
Series de operaciones sobre memoria Series de operaciones sobre memoria compartida, de principio a fin, valores compartida, de principio a fin, valores intermedios vars. no son visibles intermedios vars. no son visibles
STM es una primitiva concurrente STM es una primitiva concurrente optimistaoptimistaNo se comprueba la consistencia antes de No se comprueba la consistencia antes de
escribirescribirSino, si van a Sino, si van a comprometer comprometer los cambios los cambios
realizadosrealizadosSiempre se puede abortar una transición, Siempre se puede abortar una transición,
antes de comprometer los cambiosantes de comprometer los cambiosAumentan la concurrencia: diferentes tareas Aumentan la concurrencia: diferentes tareas
pueden modificar simultáneamente regiones pueden modificar simultáneamente regiones de memoriade memoria
Memoria, mensajes…Memoria, mensajes…
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1212
Problema de las Transacciones Problema de las Transacciones BancariasBancarias
Una Solución…Una Solución…
int a[1..n];
{TOT==a[1]+...+a[n]== cte}
Thread P1::
A1:{a[x]==X,a[y]== Y}
S1:< a[x] = a[x] − K;
a[y] = a[y] + K >
A2:{a[x]== X − K, a[y]==y+K}
Memoria, mensajes…Memoria, mensajes…
Thread P2::var Suma=0; i=1; Error:= false;{Suma= a[1]+a[2]+ ... a[i-1]}while (i <= n) {B1 : {Suma== a[1]+...a[i−1],i< n}S2 : Suma = Suma + a[i]; B2 : {Suma== a[1]+...a[i−1]+a[i]} i= i+1;B3 : {Suma== a[1]+ ...a[i−1]}}{Suma ==a[1] + a[2] + ...a[n]}if S<>TOT then Error=true
El estado intermedio no debe ser visible a
P2
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1313
Problema de las Transacciones Problema de las Transacciones Bancarias IIBancarias II
Una Solución…Una Solución…Memoria, mensajes…Memoria, mensajes…
Solución con Solución con cerrojos :cerrojos :
x
a[]
y1 2 y+1 NParte con posibles
problemas de lectura no consistente
Lock() Unlock()
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1414
Problema de las Transacciones Problema de las Transacciones Bancarias IIBancarias II
Una Solución…Una Solución…Memoria, mensajes…Memoria, mensajes…
Solución con Solución con transacciones transacciones (Haskell)(Haskell) : :
x
a[]
y1 2 y+1 N
Log file
previo atomic{ if ( a[i]≠ a[x], a[y] “consistent(log_file)==true”){
a[x] = a[x] − K;a[y] = a[y] + K
} else retry
}
La sobrecarga se reduce a copiar el array original,
pero ahora las tareas pueden acceder
simultáneamente
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1515
Transacciones vs cerrojos IITransacciones vs cerrojos II
Una Solución…Una Solución…
Evitan la Evitan la inversión de prioridadinversión de prioridad que que los que que los cerrojos causan en las hebras: siempre se puede cerrojos causan en las hebras: siempre se puede abortar una transacción menos prioritaria abortar una transacción menos prioritaria
Es compatible programarlas con los Es compatible programarlas con los objetosobjetos Interbloqueos y bloqueos vivos evitados Interbloqueos y bloqueos vivos evitados
externamenteexternamenteTablas hash con operaciones Tablas hash con operaciones transaccionables: transaccionables:
inimplementables con cerrojos salvo que el inimplementables con cerrojos salvo que el proveedeor de la tabla hash prevea métodos proveedeor de la tabla hash prevea métodos específicos específicos
Memoria, mensajes…Memoria, mensajes…
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1616
VI. Computación de Alta VI. Computación de Alta ProductividadProductividad
Computación Computación Alta Product.Alta Product.
““Los supercomputadores de ayer son los Los supercomputadores de ayer son los computadores de sobremesa de hoy y computadores de sobremesa de hoy y serán los teléfonos de mañana”serán los teléfonos de mañana”
HPCS es un programa DARPA para los HPCS es un programa DARPA para los futuros Sistemas Concurrentes:futuros Sistemas Concurrentes:Cray propone Cray propone ChapelChapel como lenguaje de como lenguaje de
HPCSHPCSIBM con el lenguaje IBM con el lenguaje X10 X10 Sun está desarrollando Sun está desarrollando FortressFortress
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1717
Nuevos Lenguajes para HPCSNuevos Lenguajes para HPCS
Computación Computación Alta Product.Alta Product.
ChapelChapel, , X10X10 y y FortressFortress son muy parecidos: son muy parecidos:Abstracción de Espacio Direcciones Compartido Abstracción de Espacio Direcciones Compartido
(PGAS)(PGAS)Libera al programador de escribir protocolos Libera al programador de escribir protocolos
tediosostediososAplicaciones para un amplio rango de Aplicaciones para un amplio rango de
configuraciones: desde 1 multinúcleo hasta configuraciones: desde 1 multinúcleo hasta granjas de servidoresgranjas de servidores
Configuración adaptable basada en localesConfiguración adaptable basada en localesSólo descripción local de los algoritmosSólo descripción local de los algoritmosSimplificación programando, ganancia de Simplificación programando, ganancia de
productividadproductividad..
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1818
Paralelismo de Datos vs Paralelismo de Datos vs ControlControl
Computación Computación Alta Product.Alta Product.
Problema de la configuración de un Problema de la configuración de un multicomputador:multicomputador:
Global work queue
Koblenz
Köln Dortmund
Kasel
Frankfurt
D1
D2
D3
D4
D5D6
D7
BSBest solution
found
Global work queue
Koblenz
Köln Dortmund
Kasel
Frankfurt
D1
D2
D3
D4
D5D6
D7
BSBest solution
found
Paralelización Paralelización dirigida dirigida por controlpor control : : Asignación Asignación automática en buclesautomática en bucles
Paralelización dirigida Paralelización dirigida por datos: por datos: Distribución de datos Distribución de datos globales a “locales”globales a “locales”
La configuración no La configuración no es completamente es completamente automatizable!automatizable!
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 1919
““Mapeando” DominiosMapeando” Dominios
Computación Computación Alta Product.Alta Product.
Distribución 1 bloque de datos entre Distribución 1 bloque de datos entre “locales”:“locales”:
const Dist = new dmap(new const Dist = new dmap(new Block(boundingBox=[1..4,1..8]));Block(boundingBox=[1..4,1..8]));
Se pasa como argumento a un Se pasa como argumento a un constructor de dominio:constructor de dominio:
var Dom: domain(2) dmapped var Dom: domain(2) dmapped Dist=[1..4,1..8];Dist=[1..4,1..8];
““Mapped Domain”: conjunto 2D de índices Mapped Domain”: conjunto 2D de índices en correspondencia con Dist en correspondencia con Dist
Si hay 8 “locales”, cada uno se encargará Si hay 8 “locales”, cada uno se encargará de procesar una región 2x2de procesar una región 2x2
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2020
VII. Paralelismo Dirigido por VII. Paralelismo Dirigido por TareasTareas
Propicia la óptima paralelización Propicia la óptima paralelización de código del tipo de código del tipo dirigida por dirigida por controlcontrol
El sistema de tiempo de ejecución es quien El sistema de tiempo de ejecución es quien se encarga de hacer corresponder tareas a se encarga de hacer corresponder tareas a hebras:hebras:Grupos tareas con poca carga, asignados a 1 Grupos tareas con poca carga, asignados a 1
hebrahebraLos hebras se ocultan a los programadores, Los hebras se ocultan a los programadores,
pero no la definición de las tareaspero no la definición de las tareas Ahora las estructuras de datos y los flujos Ahora las estructuras de datos y los flujos
de control se programan de forma de control se programan de forma monolíticamonolítica
Dirigido por TareasDirigido por Tareas
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2121
Arquitectura de programación Arquitectura de programación paralela en .NET Framework 4paralela en .NET Framework 4
Dirigido por TareasDirigido por TareasAgrega capacidades de consulta a C# y VB.
Divide el origen de datos en segmentos y lanza
consultas en cada segmento por hebras
independientesAsignar tareas a las hebras , administrar detalle de bajo nivel,
evita que la paralelización sea
ineficiente
Incluye clases colección simultáneas, primitivas de
sincronización ligeras y tipos de incialización
diferida
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2222
Task Parallel Library Task Parallel Library
Dirigido por TareasDirigido por Tareas
Creación y cancelación implícita de tareasCreación y cancelación implícita de tareasInvocación paralela mediante Invocación paralela mediante delegadosdelegados
definidos como definidos como lambda expresioneslambda expresionesEl número de tareas que se crea en 2do El número de tareas que se crea en 2do
plano con plano con Parallel.invoke()≠ num. Parallel.invoke()≠ num. hebrashebras
Creación y ejecución explícita de tareas:Creación y ejecución explícita de tareas:Los objetos-tareas exponen su estado a los Los objetos-tareas exponen su estado a los
usuariosusuariosSe pasan en el constructor Se pasan en el constructor delegados de delegados de
usuariousuario: métodos, anónimos y expresiones : métodos, anónimos y expresiones lambda lambda
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2323
Delegados y lambda Delegados y lambda expresiones expresiones
Dirigido por TareasDirigido por Tareas
Las lambda expresiones proporcionan el soporte Las lambda expresiones proporcionan el soporte formal para definir funciones anónimasformal para definir funciones anónimas
Sintaxis de lambda expresión que devuelve Sintaxis de lambda expresión que devuelve resultado:resultado:[captura](argumentos)->devuelve-tipo{cuerpo}[captura](argumentos)->devuelve-tipo{cuerpo}
Función que calcula una suma de 5 términos:Función que calcula una suma de 5 términos:std::vector<int> una_lista;std::vector<int> una_lista;int total=0;int total=0;for(int i=0;i<5;i++)una_lista.push.back(i);for(int i=0;i<5;i++)una_lista.push.back(i);std::for_each(begin(una_lista),std::for_each(begin(una_lista), end(una_lista),end(una_lista), [&total](int x){total += x;}[&total](int x){total += x;}););
Objeto de estado
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2424
Creación-inicio de tareas Creación-inicio de tareas
Dirigido por TareasDirigido por Tareas
Capturan sólo el valor final de las variables en los Capturan sólo el valor final de las variables en los bucles. Se soluciona definiendo 1 bucles. Se soluciona definiendo 1 objeto de estadoobjeto de estado a a en el constructor:en el constructor:
for(int= for(int= ii=0;i<arrayTareas.Length;i++){=0;i<arrayTareas.Length;i++){
arrayTareas[arrayTareas[ii]= new Task]= new Task((obj)=>((obj)=>
{ { DatosUsuarioDatosUsuario misDatos ( misDatos (DatosUsuarioDatosUsuario) obj;) obj;
misDatos.N_Hebra=Thread.Current.Thread.ManagerThreadId;misDatos.N_Hebra=Thread.Current.Thread.ManagerThreadId;
Console.Write(misDatos.Nombre,misDatos.Tiempo, Console.Write(misDatos.Nombre,misDatos.Tiempo, misDatos.N_Hebra);}//lambda expresiónmisDatos.N_Hebra);}//lambda expresión
new new DatosUsuarioDatosUsuario(){Nombre=(){Nombre=ii,Tiempo=DateTime.Ticks();},Tiempo=DateTime.Ticks();}
);//tarea creada);//tarea creada
arrayTareas[i].start();arrayTareas[i].start();
}}
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2525
Colecciones y estructuras Colecciones y estructuras para coordinaciónpara coordinación
Dirigido por TareasDirigido por Tareas
Clases de colección seguras, tipos de Clases de colección seguras, tipos de sincronización ligeros y tipos para la sincronización ligeros y tipos para la inicialización diferida:inicialización diferida:Clases Clases contenedorescontenedores con acceso sin bloqueos y con acceso sin bloqueos y
escalables en multinúcleos:escalables en multinúcleos: System.Collections.Concurrent.XXXSystem.Collections.Concurrent.XXX
Nuevos tipos de sincronización evitan los Nuevos tipos de sincronización evitan los bloqueos indiscriminados de las primitivas bloqueos indiscriminados de las primitivas para hebras:para hebras:SemaphoreSlim, Barriers, EventSlim, SemaphoreSlim, Barriers, EventSlim, SpinLock, SpinWait..SpinLock, SpinWait..
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2626
Programación asíncrona Programación asíncrona en .NET framework 4en .NET framework 4
Dirigido por TareasDirigido por Tareas
Utiliza operaciones asíncronas estructuradas Utiliza operaciones asíncronas estructuradas (APM):(APM): FileStream.BeginRead, FileStream.BeginRead, FileStream.EndRead …FileStream.EndRead …
Modelos basados en pares método/evento Modelos basados en pares método/evento (EAP):(EAP):WebClient.DownloadString.Async, WebClient.DownloadString.Async, WebClient.Download.Completed, …WebClient.Download.Completed, …
Las operaciones APM y EAP pueden hacerse Las operaciones APM y EAP pueden hacerse accesibles a los usuarios de TPL o bien se accesibles a los usuarios de TPL o bien se pueden implementar con objetos tareapueden implementar con objetos tarea
InstrucciónInstrucción FromAsync:FromAsync:crea un objeto tarea crea un objeto tarea para representar un parpara representar un par Begin/EndBegin/End
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2727
Comparativa lenguajes para Comparativa lenguajes para HPCSHPCS
Lenguaje
para HPCSPropietario
Modelo de Memoria
Concurrencia
multiresolución
Fortress Sun Systems Transaccional NO
Chapel CRAY TransaccionalSI
(forall, Begin/End)
X10 IBM TransaccionalSI
(Async)
Dirigido por TareasDirigido por Tareas
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2828
VIII. Decálogo para Programar VIII. Decálogo para Programar multinúcleosmultinúcleos
DecálogoDecálogo
Pensarás en ParaleloPensarás en ParaleloProgramarás con tareas, Programarás con tareas,
no con hebras no con hebrasDepurarás lo secuencial antesDepurarás lo secuencial antesNo utilizarás cerrojosNo utilizarás cerrojosTendrás el control de tu memoriaTendrás el control de tu memoriaEn lo antiguo no hay “salvación” En lo antiguo no hay “salvación” Diseñarás deseando tener más Diseñarás deseando tener más
núcleosnúcleos
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 2929
La programación multihebra está en decadencia, se usa La programación multihebra está en decadencia, se usa sólo para controlar la latencia en la respuesta a peticiones sólo para controlar la latencia en la respuesta a peticiones en servidoresen servidores
La programación paralela dirigida por tareas y el La programación paralela dirigida por tareas y el paralelismo semi-implícito concitan actualmente la paralelismo semi-implícito concitan actualmente la máxima atenciónmáxima atención
El paso de mensajes (MPI, etc.) también ha entrado en El paso de mensajes (MPI, etc.) también ha entrado en decadencia, debido a que propicia un estilo de decadencia, debido a que propicia un estilo de programación demasiado tediosoprogramación demasiado tedioso
El espacio de direcciones compartido (PGAS) es El espacio de direcciones compartido (PGAS) es considerado de máxima actualidadconsiderado de máxima actualidad
Programar con cerrojos (locks) tiende a la obsolescencia, Programar con cerrojos (locks) tiende a la obsolescencia, debido a que suponen un estilo de programación de debido a que suponen un estilo de programación de demasiado bajo niveldemasiado bajo nivel
La memoria transaccional (STM) , de actualidad en HPCSLa memoria transaccional (STM) , de actualidad en HPCS
IX. ConclusionesIX. Conclusiones
ConclusionesConclusiones
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 3030
-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)
ReferenciasReferencias
U.Cádiz 23.03.2012 U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing"Concurrencia o "Hardcomputing" 3131
Gracias por la atención !
¿Preguntas?