HPC Tools and Applications
  • Métodos numéricos sin malla
    Profesor: Dr. Leo Miguel González Gutiérrez (Escuela Técnica Superior de Ingeniería Naval, Universidad Politécnica de Madrid).

    OBJETIVOS: Dar una introducción a los elementos básicos que constituyen el método SPH (Smoothed Particle Hydrodynamics) para la simulación de fluidos y sólidos mediante dinámica de partículas. El modulo parte de las ecuaciones básicas de la Mecánica de Fluidos y proyecta la discretización numérica de las mismas, finalizando con diversos ejemplos y aplicaciones donde esta teoría ha tenido un mayor éxito, esto es, problemas con superficie libre y aplicaciones navales y oceánicas. El curso se desarrollará con un gran énfasis en la parte computacional, ilustrando los problemas con ejemplos experimentales, y con el fin de dar herramientas específicas al ingeniero para estudiar las propiedades de modelos construidos.

    PROGRAMA:

    • Unidad 1: Ecuaciones de la Mecánica de Fluidos
      • Mecánica del continuo y definición de partícula fluida
      • Ecuaciones de conservación
      • Ecuaciones de estado
      • Disipación viscosa
    • Unidad 2: Bases fundamentales del método SPH
      • Convolución SPH y propiedades fundamentales
      • Diferenciación SPH
      • Interpolación SPH
      • Versión SPH de las ecuaciones de Navier-Stokes
    • Unidad 3: Aspectos prácticos de las ecuaciones SPH.
      • Discretización temporal de las ecuaciones
      • Ordenación de las listas de partículas
      • ISPH: Incompressible SPH
      • Condiciones de contorno
      • Tratamiento de la superficie libre
    • Unidad 4: Aplicaciones I
      • Problemas de Pouseuille y Couette
      • Dam break problem
      • Difusión de vórtices
    • Unidad 5: Aplicaciones II navales y oceánicas.
      • Sloshing tanks
      • Inundaciones y presiones de impacto en containers
      • Estabilidad de buques
    • Suplemento Opcional: Extensión del método SPH a la simulación de sólidos.
      • Interacción fluido estructura.
      • Presencia de mamparos en tanques de sloshing.
    • Descargar clase 1, clase 2 y clase 3.

    BIBLIOGRAFÍA:

    1. J.J. Monaghan, “An introduction to SPH”. Computer Physics Communications, vol. 48, pp. 88-96, 1988.
    2. W. G. Hoover, “Smooth Particle Applied Mechanics: The State of the Art”, World Scientific, 2006.
    3. R. F. Stellingwerf and C. A. Wingate,“Impact Modelling with SPH”, Memorie della Societa Astronomia Italiana, Vol. 65, p.1117, 1994.
    4. L. Delorme. “Sloshing Flows. Experimental Investigation and Numerical Simulations with Smoothed Particle Hydrodinamics”, Tesis doctoral. Universidad Politécnica de Madrid, 2007.
    5. P. Español, M.Revenga. “Smoothed dissipative particle dynamics”. Physical Review E, 67. 2003.
    6. A. Colagrossi, “A meshless lagrangian method for free-surface and interface flows with fragmentation”, PhD thesis, Universita di Roma La Sapienza, 2004.
    7. S. Cummins and M. Rudman, “An SPH projection method”, J. Comp. Phys. 152 (2),584-607, 1999.
    8. X. Hu and N. A. Adams, “Angular-momentum conservative smoothed particle hydrodynamics for incompressible viscous flows”, Phys. of Fl. 18, 702-706, 2006
    9. J.J. Monaghan, “Simulating free surface flows with SPH”, J. Comp. Phys. 110 (2),39-406, 1994.

    EVALUACIÓN:

    1. Un ejercicio al final de la tercera sesión que el alumno traerá resuelto para la cuarta sesión
    2. Un problema final que el alumno podrá desarrollar durante las dos siguientes semanas posteriores al curso.

  • Herramientas de HPC en Bioinformática
    Profesores: Dr. Adrián Roitberg (Departamento de Química, Universidad de Florida, EEUU), Dr. Mariano Camilo González Lebrero (Facultad de Farmacia y Bioquímica, Universidad de Buenos Aires), Dr. Adrián Turjanski (coordinador) y Dr. Marcelo Martí (Departamento de Química Biológica, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires, Argentina)

    OBJETIVOS: Brindar los conceptos básicos utilizados en Bioinformática y Simulación de Biomoléculas. En este curso trataremos temas fundamentales de Dinámica Molecular y sistemas QM/MM (Quantum Mechanics/ Molecular Mechanics) relacionados con la computación del alto rendimiento (Algoritmos, escalabilidad, etc) ejemplificando con casos reales como así también técnicas de muestreo avanzadas (Umbrella Sampling, Replica Exchange, Jarzynski).

    PROGRAMA:

    • Unidad 1: Dinámica molecular
      • Escalas de tiempo
      • Hipótesis Ergódica
      • Campos de fuerza
      • Parametrización
      • Condiciones periódicas de borde (PBC)
      • Métodos de energía libre
    • Unidad 2. Dinámica molecular - Aplicación de GPGPU para acelerar el cálculo.
      • Comunicación entre procesos (MPI)
      • Ventajas de utilizar GPGPU
      • Problemas para utilizar GPGPU
      • Modelos de precisión (DP/SP)
      • Performance comparativa con CPU
    • Unidad 3. Reactividad química en sistemas biológicos (QM/MM) y aplicación de GPGPU para la resolución de problemas.
      • Nociones básicas de Mecánica cuántica
      • Métodos QM
      • Métodos QM/MM
      • Implementación de un código en CUDA
    • Unidad 4. Técnicas de muestreo avanzadas para dinámica molecular.
      • El problema del muestreo
      • Energía libre
      • Entropía
      • Umbrella sampling
      • Desigualdad de Jarzynski
      • Replica Exchange
      • Integración termodinámica
    • Descargar clase 1, clase 2, clase 3 y clase 4. Si desean utilizar alguna de estas diapositivas para una publicación/presentación por favor contactar al Dr. Adrián Roitberg (roitberg AT ufl.edu) para solicitar autorización.

    BIBLIOGRAFÍA:

    1. Andrew Leach. “Molecular Modelling: Principles and Applications (2nd Edition)”. Prentice Hall, 2001.

    EVALUACIÓN: La evaluación consistirá en la presentación de un problema en simulación de biomoléculas/bioinformática que requiera HPC para su resolución, justificando la estrategia a utilizar. Tiempo: 2 semanas luego de la finalización del curso.

  • Visualización
    Profesor: Dr. Juan Bautista Hernando Vietes (CeSViMa, Universidad Politécnica de Madrid, Madrid, España)

    OBJETIVOS: Dar al alumno una visión global de en qué consiste la Visualización, enfocándose principalmente en aplicaciones de visualización científica 3D. El objetivo principal es que al final del curso el alumno posea conocimientos básicos acerca del cauce gráfico habitual así como de las técnicas más importantes para la visualización de campos escalares, vectoriales y de tensores, con una mayor profundización en las técnicas de renderizado volumétrico. Para completar, se describirán técnicas para el manejo de datos masivos y, en particular, de renderizado paralelo. El aspecto práctico, se introducirá al alumno en la programación con GLSL y VTK.

    PROGRAMA:

    • Introducción
      • Definición y objectivos de la Visualización
      • Modelo de flujo de datos
      • Clases de visualización
    • Introducción a la Infomática Gráfica 3D
      • Modelo de cámara
      • El cauce gráfico
      • Modelado de objetos y primitivas gráficas
      • Transformaciones lineales y afines en espacios 3D
      • Proyección perspectiva
      • Iluminación local
      • Texturas
      • Aliasing
      • Introducción a la programación de shaders con GLSL
    • Técnicas de visualización
      • Representaciones de datos
      • Campos escalares, isosuperficies
      • Renderizado de volúmenes
      • Campos vectoriales
      • Tensores
    • Renderizado paralelo y de datos masivos
      • Motivaciones
      • Técnicas de visualización de datos masivos
      • Renderizado paralelo: tipos
      • Composición de imágenes en paralelo (direct-send, binary swap)
      • Herramientas: Equalizer
    • Introducción a VTK
      • Modelo programación y ejecución
      • Ejemplos de uso.
    • Descargar: clase 1, clase 2, clase 3, clase 4 y clase 5

    BIBLIOGRAFÍA:

    1. Tomas Akenine-Möller, Eric Haines, Naty Hoffman. A.K. Peters. “Real time rendering (3a edición)”. 2008
    2. Charles D. Hansen, Chris R. Johnson. “The Visualization Handbook”. Elvesier, 2004
    3. Will Schroeder, Ken Martin, Bill Lorensen. “The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics 4th ed”. Kitware, 2006

    EVALUACIÓN: Trabajo práctico a realizar al final del curso con ejercicios de VTK y un ejercicio sobre alguna de las técnicas de visualización vistas en el curso. Descargar ejercicios finales.

  • Otros modelos de paralelismo
    Profesor: Dr. Adrián Cristal (Barcelona Supercomputing Center, Barcelona, España).

    OBJETIVOS: Comprender las dificultades técnicas que enfrentan las herramientas y frameworks de paralelización. Entender las diferencias entre cada una de estas herramientas y el soporte de hardware que puedan necesitar como su forma de emular tal soporte por software. Cuestiones usabilidad de lenguajes y meta-lenguajes de paralelización, tanto asistida como automática. Adicionalmente, se buscará que el alumno experimente en la práctica con las más representativas herramientas de paralelización.

    PROGRAMA:

    • Unidad 1: Introducción a la computación paralela
      • Ley de Moore
      • Problemas tecnológicos
      • Hacia los Chips Multiprocessors
      • Nuevos retos
      • Pthreads/OpenMP, modelos de programación
    • Unidad 2: OmpSs
      • Motivation & goals
      • OmpSs: OpenMP + extensions
      • Execution Model
      • Memory Model
      • Asynchronous calls
      • Dependency clauses
      • Examples
      • GPUs and multiple cores
    • Unidad 3: New parallel programming models
      • Compile-time Tool to support (S)TM
      • Automatic Code Transformation
      • Extensions to OpenMP
      • Correct TM: Liveness
      • Hardware Cache Coherence
      • Transaction Cache
      • Transactional Memory Coherence and Consistency
      • Parallelization Methodology
    • Unidad 4: Otros modelos, CILK++
      • cilk_for
      • Reducers
      • Holders
      • Funciones

    BIBLIOGRAFÍA:

    1. Tim Harris (Author), James Larus (Author), Ravi Rajwar (Author), Mark Hill "Transactional Memory", 2nd Edition. Morgan and Claypool Publishers
    2. Kiyofumi Sugawara. Parallel programming language for Cilk-C has come of / C + + programmer (2011). ToI"kyoI": Kattoshisutemu

    EVALUACIÓN: Trabajo práctico a realizar al final del curso con ejercicios de paralelización a coordinar con el docente.

Foundations of Parallel Programming
  • Programación en memoria distribuida, MPI (pasaje de mensajes)
    Profesor: Dr. Pablo Mininni (Departamento de Física, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires, Argentina).

    OBJETIVOS:

    BIBLIOGRAFÍA:

  • Programación en memoria compartida. OpenMP
    Profesor: Dr. Gonzalo Hernández Oliva (Universidad de Valparaíso, Chile)

    OBJETIVOS:

    • Realizar una breve introducción a los métodos y técnicas de la computación paralela.
    • Estudiar diferentes tipos de modelos de programación paralela.
    • Aprender a construir programas paralelos utilizando la extensión OpenMP para sistemas con memoria compartida.

    PROGRAMA:

    • Unidad 1: Introducción a la Computación Paralela
      • Por qué usar computación paralela?
      • Algunos ejemplos de aplicaciones de cómputo intensivo
      • Introducción a Cluster Computing
      • Algunas tendencias en Cluster Computing
      • Ejemplos de algunas supercomputadoras históricas
      • Evolución de las supercomputadoras
    • Unidad 2: Modelos de Programación Paralela
      • Cluster Computing. Memoria compartida y distribuida
      • Desarrollando programas paralelos Identificación de hotspots y cuellos de botella. Descomposición Funcional y de dominio. Diseñando el esquema de comunicaciones. Evaluación de performance.
      • Modelos de programación paralela. Pasaje de Mensajes (memoria distribuida). Hilos (memoria compartida). Data Parallel. Híbrido. SPMD. MPMD.
    • Unidad 3: OpenMP: una extensión para programación paralela
      • Arquitectura multinúcleo y memoria compartida
      • Threads: un modelo de programación paralela
      • OpenMP: programación multinúcleo.
    • Descargar clase 1, clase 2 y clase 3.

    BIBLIOGRAFÍA:

    • Dongarra, J., I. Foster (Eds.), The Sourcebook of Parallel Computing, Morgan Kaufmann, 2002.
    • Hoffmann, K.H., A. Meyer, Parallel Algorithms and Cluster Computing: Implementations, Algorithms and Applications, Springer, 2006.
    • Pacheco, P., Parallel Programming with MPI, M. Kaufmann, 1997.
    • Quinn, M.J., Parallel Programming in C with MPI and OpenMP, McGraw-Hill, 2004.
    • Tutorial on Parallel Computing and Programming, Lawrence Livermore National Laboratory, 2007.

    EVALUACIÓN:

    1. Grado: examen al final de la última clase.
    2. Posgrado: Un problema final que el alumno podrá desarrollar durante las siguientes semanas posteriores al curso.

  • Programación en memoria compartida. PThreads
    Profesores: Dr. Sergio Nesmachnow e Ing. Gerardo Ares (Facultad de Ingeniería, Universidad de la República, Uruguay)

    OBJETIVOS: Presentar los fundamentos de la programación multithreading y su aplicación en entornos de computación multinúcleo.

    PROGRAMA:

    BIBLIOGRAFÍA:

    1. Pthreads Programming: A POSIX Standard for Better Multiprocessing (O'Reilly Nutshell)

    EVALUACIÓN: Examen escrito al final de la última clase.

  • Utilización de placas de video para cálculo (GPGPU)
    Profesores: Dr. Nicolás Wolovick y Lic. Carlos Bederián (Facultad de Matemática, Astronomía y Física, Universidad Nacional de Córdoba, Argentina).

    OBJETIVOS: Comprender los compromisos y conceptos claves que diferencian las arquitecturas GPU y CPU. Comprender y aprender a utilizar las abstracciones de bloque de hilos y grilla de bloques que propone CUDA. Entender los mecanismos de bajo nivel que planifican hilos y acceden a memoria para lograr el rendimiento máximo. Poner en práctica los conocimientos realizando prácticas de programación.

    PROGRAMA:

    • Arquitectura de una GPU moderna. Intercambio de superficie relacionada a ILP y caché por unidades de ejecución y memoria de contextos. Comparación con CPUs modernas. SIMD implícito. Ocultamiento de latencia con cambios de contexto. Performance pico GFLOPS y GBps.
    • Estructura interna de una GPU. Multiprocesadores escalares, memoria de contextos, memoria compartida. Unidad de ejecución SIMD (warp y lane). Unidades de cálculo de simple y doble precisión. Unidades de cálculo especiales. Unidades de textura. Arreglos de multiprocesadores escalares, escalabilidad automática. Pirámide de memoria invertida. Memoria caché, organización en bancos. Memoria global, estructura. Compute capabilities y la arquitectura del conjunto de instrucciones PTX.
    • Limitaciones de una GPU. Divergencia del flujo de control. Balance entre paralelismo, ocultamiento de latencia y memoria de contexto. Planificación de warps, bloques y grillas; límites del paralelismo. Ancho de banda de la jerarquía de memoria.
    • Programación básica en CUDA. Comunicación host-device. Configuración de ejecución y mapeo de hilos a datos. Buenas prácticas de programación. Manejo de la concurrencia masiva. Instrucciones atómicas. Sincronización intra-bloque. Uso de la memoria compartida local. Análisis de ocupación y performance. Contadores de desempeño. Debugging.
    • Programación avanzada en CUDA. Estrategias básicas para lograr máximo throughput en operaciones de punto flotante y memoria (aumento granularidad de hilo, código sin saltos, doble buffering, reducción de uso de registros, aritmética de precisión mixta, como evitar atomics). Instrucciones especiales a nivel de warp. Inline PTX. Configuraciones de caché. Uso de la jerarquía de memoria invertida para lograr máximo ILP. Comunicación asíncrona. Comunicación directa entre múltiples dispositivos. Uso de clusters de GPUs.
    • Arquitecturas recientes. Arquitectura Kepler. Análisis de la nueva ISA. Instrucciones de mezcla intra-warp. Organización interna de la arquitectura. Desarrollos futuros.
    • Mapeo y reducción: filtros de imágenes. Paralelismo de datos. División en bloques y grillas unidimensionales y bidimensionales. Configuración de ejecución y lanzamiento de kernels. Compilación. Variables de entorno y ejecución. Profiling y debugging básico. Medición de tiempos de computación, ancho de banda de memoria y GFLOPS utilizados. Desensamblado a código intermedio PTX e Tesla/Fermi ISA. Análisis básico de código assembler.
    • Kernels de alta intensidad aritmética: multiplicación de matriz por matriz (sgemm). Paralelización trival, un hilo por celda. Exploración de tamaño de bloque óptimo. Uso de memoria compartida. Análisis de Performance. Algunas estrategias avanzadas de optimización: unrolling, aumento de granularidad, prefetching.
    • Simulaciones de MonteCarlo: distribución estacionaria de fotones con una fuente puntual en un medio infinito con scattering isotrópico. Generación de números aleatorios para paralelismo masivo: MWC y Philox. Estrategias para evitar warps divergentes. Uso de memoria compartida. Disminución de la contención. Mejora de rendimiento por aumento de granularidad de hilos.
    • Stream compaction. Filtro de una secuencia de valores. Uso de operadores intra-warp (ballot, vote, etc.). Versión global con atomics. Versión global paralela. Análisis de performance.
    • Descargar clase 1, clase 2 y clase 3.
    • Descargar práctica 1, programas de ejemplo 1, práctica 2, programas de ejemplo 2, práctica 3 y programas de ejemplo 3.

    BIBLIOGRAFÍA:

    1. David B. Kirk, Wen-mei W. Hwu, Programming Massively Parallel Processors: A Hands-on Approach, Morgan Kaufmann, 2010.
    2. Rob Farber, CUDA Application Design and Development, Morgan Kaufmann, 2011.
    3. John L. Hennessy, David A. Patterson, Computer Architecture: A Quantitative Approach, Fifth Edition, Morgan Kaufmann, 2011.
    4. Sean Baxter, Modern GPU site, 2011.
    5. M. Harris, S. Sengupta, J. D. Owens, Parallel Prefix Sum (Scan) with CUDA, GPU Gems 3, Chapter 39, NVIDIA, 2007.
    6. M. Manssen, M. Weigel, A. K. Hartmann, Random number generators for massively parallel simulations on GPU, 2012.
    7. NVIDIA, CUDA C Programming Guide Version 4.2, 2012.
    8. NVIDIA, CUDA C Best Practices Guide, 2012.
    9. NVIDIA, Parallel Thread Execution ISA Version 3.0, 2012.

    EVALUACIÓN: Un trabajo práctico final que el alumno podrá desarrollar durante las siguientes semanas posteriores al curso.

ORGANIZA
                    
FINANCIAN
                                         

''A network for supporting the coordination of Supercomputing Research between Europe and Latin America''

The RISC Project is funded from the European Community's Seventh Framework Programme [FP7/2007-2013] under grant agreement 288777.
The Summer School is funded under the frame of the European Community's Seventh Framework Programme [FP7/2007-2013].

E-mail de contacto: hpc2012 (at) hpclatam.org