Introducción a la Computación Heterogénea

Dr. Nicolás Wolovick - FaMAF - UNC

Lic. Carlos Bederián - FaMAF - UNC


Obtener un nivel de programación básico en CUDA y MPI y su interoperabilidad. Programar aplicaciones sencillas que escalen a varios nodos de cómputo. Utilizar tecnologías de punta (Direct Access, Direct Transfer y GPUDirect2),  para mitigar la latencia y aumentar el ancho de banda de la comunicación entre placas intranodo y extranodo. Plantear problemas actuales del HPC, como la utilización simultánea de GPUs y CPUs para la resolución de un único problema.


Contenidos:

Teóricos

GPU Computing y CUDA. CUDA Básico. 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. Contadores de desempeño. Debugging. Arquitectura de GPUs y comparación con CPUs. Ocultamiento de latencia. SIMD implícito. Streaming multiprocessors. Límites del hardware para el manejo de la concurrencia. Ocultamiento de latencia y tamaño de contexto. Funcionamiento del planificador de warps y bloques. Cálculo de ocupación, concurrencia teórica y concurrencia real. Distributed computing y MPI. Computación distribuída. Comunicación síncrona y asíncrona. Deadlocks. Primitivas de comunicación punto a punto. Tipos de datos MPI. Algunos ejemplos sencillos. Paradigma master-slave. Comunicación colectiva: gather, scatter, reduce. Tipos de datos definidos por el usuario. Superposición de computación y comunicación. Análisis de escalabilidad. Computación Híbrida. Interoperabilidad CUDA-MPI. Comunicación indirecta. Tecnologías de comunicación directa: GPUDirect2. Otras tecnologías relacionadas: Direct Access y Direct Transfer. Ejemplos. Análisis de desempeño y pruebas de escalabilidad.



Laboratorios

CUDA Básico. Grillas y bloques. Manejo de memoria. Configuración de ejecución con mapeos de hilos a datos 1-a-1 y 1-a-muchos en una y dos dimensiones. Compilación y ejecución de programas CUDA. Ejemplos de mapeo. Reducciones y las diferentes opciones para el manejo de la concurrencia. Optimizaciones CUDA. Uso de memoria compartida (carga, operación, descarga). Estrategias generales de optimización. Ejemplos. Interoperabilidad CUDA-MPI. Obtención del tamaño y rango del comunicador. Ejemplo básico del paradigma master-slave. Compilación y ejecución de programas MPI. Interoperabilidad con CUDA. Ejemplos. Análisis de escalabilidad en clusters modernos.


 

Este curso es financiado por el SISTEMA NACIONAL DE COMPUTACION DE ALTO DESEMPEÑO (SNCAD) de la Secretaria de Articulacion Cientifica-Tecnologica del Ministerio de Ciencia y Tecnologia.

Ayuda Financiera

Gracias al apoyo del SNCAD  se cuenta con ayuda financiera para viáticos y/o pasajes para alumnos con lugar de residencia mayor a 100 km.

Destinatarios: Cualquier persona afín a la temática tanto en la dimensión de la investigación, como de la innovación y el desarrollo. Se priorizarán doctorandos, investigadores jóvenes, y alumnos del último año de diferentes carreras afines al uso intensivo de cálculo numérico.

Cantidad de ayudas: ayudas económicas para 20 alumnos (ayudas parciales para pasajes y/o viáticos).

Costo: este curso no esta arancelado.

Inscripción: Los interesados deben completar la Ficha de Solicitud de Ayuda Económica antes del jueves 24 de enero de 2013 y una comisión evaluadora seleccionará los beneficiados. Los seleccionados serán informados el viernes 1 de febrero de 2013 y deberán confirmar su asistencia antes del martes 5 de febrero de 2013.

Dirección de correo de contacto: becas.comp.heterogenea@dc.exa.unrc.edu.ar