Presentación de PowerPoint

Anuncio
Del procesamiento gráfico
a la computación paralela: CUDA
Juliana Leon
Jennifer Dos Reis
Respaso de la Taxonomia de Flynn
• SISD (Single Instructions Single Data):
computadores personales, uniprocesadores
• MISD (Multiple Instructions Single Data): no
existe arquitectura bajo esta clasificación
• SIMD (Single Instructions Multiple Data):
arquitecturas paralelas.
• MIMD (Multiple Instructions Multiple Data):
arquitecturas paralelas, redes y sistemas
distribuidos.
GPU (Graphic Processor Unit)
●
●
Es un coprocesador dedicado a procesamiento de
gráficos para aligerar la carga del CPU cuando se
ejecutan videojuegos o aplicaciones 3D.
Inicialmente se trabajaba en lenguaje ensamblador,
para facilitar el trabajo se desarrollaron APIs como
OpenGL, DirextX.
GPU
GPU vs CPU
Arquitectura de un GPU
●
Más transistores dedicados al procesamiento.
●
No se necesita un control de flujo sofisticado.
●
Los datos se “mapean” a hilos de ejecución. (Ej.
Vertices y pixeles)
Historia
●
En 1999 NVIDIA culminó su primer GPU
Usado por:
●
Desarrolladores de
videojuegos
●
Artistas
●
Investigadores
> operaciones punto flotante
Historia
●
Así nació el movimiento de GPUs de propósito
general GPGPU. Pero no era nada fácil.
Historia
●
●
Un grupo de investigadores de la universidad de
Standford inició la propuesta de reinventar el GPU
como un procesador de flujo de instrucciones.
En el año 2003 un equipo de investigadores liderado
por Ian Buck dió a conocer el primer modelo de
programación que extendía al lenguaje C con
construcciones para paralelismo de datos.
+ fácil
Hasta 7 veces + rápido !
Historia
●
NVIDIA invita a Ian Buck a unirse a la compañía
para desarrollar una solución definitiva en la cual el
código en lenguaje C pudiera correr sin problemas
en un GPU.
CUDA
●
CUDA (Compute Unified Device Architecture)
●
Plataforma paralela
●
Modelo de programación
●
Alto-nivel (C/C++, Fortran, Python, Java)
CUDA
Ventajas
●
Heterogéneos (Mac , Linux, Microsoft)
●
Soporte de enteros y operaciones a nivel de bit
●
Lecturas mas rápidas de y hacia la GPU
●
Baja curva de aprendizaje
Limitaciones
●
No recursividad
●
Cuello de botella entre GPU y CPU
Programación
●
Kernels (granos)
●
Hilos (bloque)
●
●
Virtuales
●
Físicos
●
Los bloques no pueden sincronizarse
Escala transparente
En lenguaje C
●
__global__
●
<<<…>>>
●
●
threadIdx.x
cudaMalloc()
Compilación
●
Usando NVCC
Aplicaciones
●
Desde biología computacional a criptografía
●
Tiempo Real
●
Imagen Ultrasonido
●
Dinámica de Moléculas
●
Simulaciones
●
Astrofísica
Descargar