CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA? CUDA es un lenguaje de programación que...

19
CUDA Por: Ernesto Y. Soto Rivas G00387821

Transcript of CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA? CUDA es un lenguaje de programación que...

Page 1: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

CUDAPor: Ernesto Y. Soto Rivas

G00387821

Page 2: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

¿Qué es CUDA?

CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)

Permite que se pueda hacer calculos de forma paralela dándole una aceleración significativa.

Se utiliza con programas en C.

Page 3: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

¿Qué dispositivos pueden aprovechar CUDA?

CUDA es un lenguaje implementado por Nvidia uno de los lideres en Tarjetas de Video.

Solo puede ser utilizado en tarjetas de video Nvidia.

Cualquier GPU después de la generación G80 (lanzada en el 2006) pueden ser utilizados para programar bajo CUDA.

CUDA fue desarrollado en el 2007.

Page 4: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

Ejemplos de hardware para CUDA:

Nvidia GTX 8800 (G80) lanzada en el 2006 fue una de las tarjetas más innovadoras, rápidas en la historia de la industria gráfica.

Nvidia Titan, lanzada en el 2013 es una de las tarjetas de un sólo núcleo más rápida y más cara ($1000+) jamás lanzada en la historia del mercado gráfico.

Page 5: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

¿Por qué CUDA?

Las tarjetas gráficas o GPU’s están diseñadas para realizar cálculos paralelos de alta velocidad para la visualización de gráficos, como juegos por ejemplo.

Utilizar los recursos disponibles más de 100 millones gpu ya están desplegados.

30-100x de velocidad a lo largo de otros microprocesadores para algunas aplicaciones.

Page 6: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

GPU vs CPU• A diferencia del cpu gpu

tiene un montón de pequeñas unidades lógicas aritméticas.

• Esto permite que para muchos cálculos paralelos, como el cálculo de un color para cada píxel en la pantalla.

Imagen utilizada de la guía de programación CUDA

Page 7: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

¿Cómo trabaja CUDA?• GPUs ejecutan un kernel (grupo

de trabajo) a la vez.

• Cada núcleo tiene bloques, que son grupos independientes de ALUs.

• Cada bloque se ve comprometida de hilos, que son el nivel de cómputo.

• Los hilos en cada bloque suelen trabajar juntos para calcular un valor.

Page 8: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

Memoria GPU• Hilos dentro del mismo bloque

pueden compartir memoria.

• En CUDA, el envío de información desde el CPU a la GPU es a menudo la parte más costosa del cálculo.

• Para cada hilo, la memoria local es el más rápido, seguido de la memoria compartida, memoria global, constante y textura son todos más lento.

Page 9: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

Como el trabajo es distribuido…

Cada hilo conoce las coordenadas X e Y del bloque que se encuentra, y las coordenadas de donde se encuentra en el bloque.

Estas posiciones se pueden usar para calcular un ID de hilo único para cada subproceso.

El trabajo computacional hecho dependerá del valor de este ID de hilo.

Ejemplo: el ID del hilo corresponde a un grupo de elementos de matriz.

Page 10: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

Ventajas

Proporciona memoria compartida

Costo efectivo

La demanda de la industria de juegos en tarjetas gráficas ha obligado a un gran trabajo de investigación y el dinero en la mejora de la GPU

Escalabilidad transparente

Page 11: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

Desventajas

A pesar de tener cientos de núcleos CUDA no es tan flexible como los CPUs.

No es tan eficaz para el ordenador personal

Page 12: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

Consideraciones importantes de programación…

Todos los hilos en un bloque se ejecutarán en paralelo si el todos están siguiendo el mismo código, y su importante eliminar ramas lógicas, para mantener todos los subprocesos que se ejecutan al mismo tiempo.

Hilos sólo pueden hacer referencia a la memoria local y memoria compartida, por lo que cualquier información necesaria se deben poner en la memoria compartida.

Page 13: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

Ejemplos de Aplicaciones CUDA…

Aplicaciones CUDA deben ejecutarse en operaciones paralelas de gran cantidad de datos, y se procese intensiva.

Ejemplos:

Simulación Dinámica Molecular

Manipulación de Vídeo / Codificación de audio

Imágenes en 3D y Visualización

Operaciones de la Matriz

Page 14: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

Demostraciones del CUDA…

Una ventaja de CUDA es que se puede hacer estos demos en tiempo real en una computadora de escritorio y se ven mucho mejor también: Demo 1

Demo 2

Demo 3

Page 15: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

CUDA & RCL

Existen más de 170 herramientas CUDA prefabricados, y serían bloques de construcción útiles para aplicaciones Las áreas incluyen proyección de imagen, video y

procesamiento de audio, dinámica molecular, procesamiento de señales

CUDA también puede ayudar a una aplicación existente a cumplir con su necesidad de velocidad Procesar grandes conjuntos de datos más rápido

Puede alcanzar cerca de procesamiento de datos reales

Page 16: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

Trabaja bien con otros…

Nvidia creó un MATLAB plug-in para la aceleración estándar de FFT MATLAB 2D.

CUDA tiene caja de herramientas de gráficos para matlab.

Más de MATLAB plug-ins por están por venir.

Page 17: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

En Conclusión…

Nvidia he logrado implementar un lenguaje para poder utilizar la potencia máxima de sus GPU’s. Hoy en día el mercado de las GPU ha evolucionado mucho más rápido que el CPU. Con el tiempo el CPU ya no será necesario ya que todo se podría implementar desde el mismo GPU con todos los dispositivos cada vez lo que buscan mejorar es el aspecto gráfico el GPU tiene muchas cosas a favor que el CPU, lo único que tiene a Nvidia aguantado es no poder poseer la licencia de Intel x86 de lo contrario sería más dominante de lo que es hoy en día. CUDA representa muchas ventajas de programación pero aún no ha sido completamente aceptada por los codificadores.

Page 19: CUDA Por: Ernesto Y. Soto Rivas G00387821. ¿Qué es CUDA?  CUDA es un lenguaje de programación que utiliza el Graphical Processing Unit (GPU)  Permite.

FIN