Objetivo:
Se dará una introducción a la nueva técnica de cómputo en paralelo con las tarjetas gráficas.
Se enfatizará el proceso de implementar distintos algoritmos computacionales en la computadora y
las diferencias entre la programación en serie y la programación en paralelo.
Se enseñará la extensión "C para CUDA" de NVIDIA que se usa para programar tarjetas gráficas NVIDIA.
Se darán sesiones teóricas y prácticas con tarjetas de gráficas NVIDIA.
Requisitos:
- Física Computacional
- Conocimientos de programación básicos (con cualquier lenguaje de programación)
Temario:
1. Los lenguajes C y C++ (repaso) (6 horas)
- Sintaxis básica
- Memoria dinámica
- Apuntadores
- Scripts
2. Métodos computacionales básicos (repaso) (6 horas)
- Ecuaciones diferenciales ordinarias (métodos de Euler y Runge--Kutta)
- Diferencias finitas para ecuaciones diferenciales parciales
- Ecuaciones de difusión, ondas, y Poisson
3. Programación en paralelo con tarjetas gráficas NVIDIA (6 horas)
- Arquitectura del hardware de las tarjetas gráficas
- Introducción a la programación en paralelo
- Introducción al lenguaje de programación CUDA
4. Implementación de algoritmos computacionales en paralelo con CUDA (12 horas)
- Procesos independientes
- Ecuación de calor como ejemplo
- Uso de distintos tipos de memoria de las tarjetas gráficas (global, texturas, compartida)
5. Métodos avanzados (18 horas)
Sugerencias de temas que tratar, según intereses de los asistentes:
- Problema de N cuerpos
- Método de Monte Carlo para simular el modelo de Ising
- Método de Lattice Boltzmann para simular flujo de fluidos
Bibliografía:
- CUDA by Example: An Introduction to General-Purpose GPU Programming. J. Sanders & E. Kandrot, Addison-Wesley (2010)
- Programming Massively Parallel Processors: A Hands-on Approach (Applications of GPU Computing Series) . David B. Kirk & Wen-mei W. Hwu, Morgan Kaufmann (2010)
- Introduction to High Performance Computing for Scientists and Engineers (Chapman & Hall/CRC Computational Science) . Georg Hager & Gerhard Wellein, CRC Press (2010)
- Finite difference methods for ordinary and partial differential equations. R.J. LeVeque. SIAM 2007.
- A first course in the numerical analysis of differential equations. A. Iserles. CUP 1996