[Todos] Curso intensivo Paralelismo "no tan estándard "

Esteban Mocskos emocskos en dc.uba.ar
Mie Mayo 18 18:03:45 ART 2011


Hola a todos. En la semana del 23 al 27 de Mayo (es decir la semana que 
viene!!!) nos visita el Dr Adrián Cristal, quien trabaja en el Barcelona 
Supercomputing Center.

Vamos a aprovechar su visita para que dicte un curso sobre programación 
paralela en el horario tentativo de 13hs a 17hs (que podríamos cambiar en el 
caso de recibir una oleada de contra-propuestas).
El curso posee una evaluación final (lo más probable es que sea un trabajo 
final) y da un punto como materia optativa.

La forma de inscripción es responder este mail (solo a mí, por favor!) 
indicando preferencia de horario (puede decir "prefiero noche", "prefiero 
mañana").

El temario de curso no está cubierto por ninguna materia del depto y es 
realmente interesante y ataca una problematica de alto interes hoy en día.

Contenido:
=========
En este curso se dará una introducción a la programación paralela, el curso 
esta centrado en tres modelos sencillos de programación paralela, memoria 
transaccional, la extensión openSS de openMP y CILK.
Es un curso, teórico-practico, basado en la experimentación en clase, 
utilizando los distintos modelos.

Objetivos:
=========
Que los estudiantes experimenten con diferentes modelos de programación.
Que los estudiantes diferencien cuando es mas fácil aplicar un modelo de 
acuerdo al problema a paralelizar.
Que los estudiantes utilicen herramientas de bajo nivel (contadores hardware) 
para la optimización de los algoritmos.
Que los estudiantes tengan en cuenta la arquitectura subyacente y las 
limitaciones de los modelos a la hora de programar.


Requerimientos y requisitos: conocimientos de programación en C.

Introducción: 
¿Porque es necesario un cambio de paradigma? 
Problemas tecnológicos: Principalmente Power Wall.
Arquitecturas Paralelas.
 
Memoria Transaccional Teoría:
	Arquitecturas de memoria compartida.
	El concepto: Regiones Atómicas.
	Clasificación y funcionamiento de los sistemas de memoria transaccional:
		Read/Write sets
		Detección de Conflictos
		Resolución de Conflictos
		Manejo de las versiones
		Manejo de la contención
	Tipos de sistemas de memoria transaccional, Software, Hardware e 
Híbridos:
		TinySTM, 
		LogTM, TCC and Eager-Lazy TM,
		ADF, FlexTM
	Un poquito de semantica:
		Linearizacion
		Serializacion
		Opacidad
	Grandes problemas de la memoria transaccional
		Input/Output
		Nesting
		Privatización

Memoria Transaccional Práctica:
	
	Esta se va a basar en ejercicios de programación, el sistema que se 
utilizará será el desarrollando en el proyecto VELOX (DTMC).
	En una primera parte, se explicará la bibliotecas "pthreads" y en una 
segunda el Framework.
	A partir de ahí, se utilizarán programas secuenciales o estructuras de 
datos que tendrán que paralelizar utilizando TM (Tablas de hash, Red/Black 
Trees).
	Se enseñará a utilizar contadores hardware y funciones puras para obtener 
estadísticas de la ejecución para poder optimizar los programas.

OmpSs Teoría:
	OmpSs como extensión de openMP
	El modelo openMP
	Los primeros modelos de openMP (paralelizar bucles y secciones)
	Extensiones a Task
	El modelo de StarSs, una extensión de las arquitecturas superescalares a 
Tasks
	Un solo programa para diferentes arquitecturas (OmpSs)

OmpSs Práctica:
	Se paralelizaran algoritmos de algebra lineal hacer las practicas, tanto 
en openMP como en OmpSs. Se utilizaran maquinas con memoria compartida y se 
harán ejecuciones sobre maquinas con GPGPUs.

CILK Teoría:
	CILK, un modelo muy sencillo (basado en la recursión) y con muy buenas 
prestaciones.
	Las primitivas basicas: cilk, spawn, sync.
	El scheduler, los stacks.
	Operaciones avanzadas: inlet, abort.

CILK Práctica: 
	Se utilizarán los mismos algoritmos que para OmpSs.



Más información sobre la lista de distribución Todos