[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