You are on page 1of 19

CUDA

Por: Ernesto Y. Soto Rivas

G00387821

Qu es CUDA?
CUDA es un lenguaje de programacin que utiliza el Graphical Processing Unit (GPU)
Permite que se pueda hacer calculos de forma paralela dndole una aceleracin significativa. Se utiliza con programas en C.

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 despus de la generacin G80 (lanzada en el 2006) pueden ser utilizados para programar bajo CUDA.

CUDA fue desarrollado en el 2007.

Ejemplos de hardware para CUDA:

Nvidia GTX 8800 (G80) lanzada en el 2006 fue una de las tarjetas ms innovadoras, rpidas en la historia de la industria grfica.

Nvidia Titan, lanzada en el 2013 es una de las tarjetas de un slo ncleo ms rpida y ms cara ($1000+) jams lanzada en la historia del mercado grfico.

Por qu CUDA?
Las tarjetas grficas o GPUs estn diseadas para realizar clculos paralelos de alta velocidad para la visualizacin de grficos, como juegos por ejemplo.

Utilizar los recursos disponibles ms de 100 millones gpu ya estn desplegados.


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

GPU vs CPU
A diferencia del cpu gpu tiene un montn de pequeas unidades lgicas aritmticas. Esto permite que para muchos clculos paralelos, como el clculo de un color para cada pxel en la pantalla.

Imagen utilizada de la gua de programacin CUDA

Cmo trabaja CUDA?


GPUs ejecutan un kernel (grupo de trabajo) a la vez. Cada ncleo tiene bloques, que son grupos independientes de ALUs.

Cada bloque se ve comprometida de hilos, que son el nivel de cmputo.


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

Memoria GPU
Hilos dentro del mismo bloque pueden compartir memoria. En CUDA, el envo de informacin desde el CPU a la GPU es a menudo la parte ms costosa del clculo.

Para cada hilo, la memoria local es el ms rpido, seguido de la memoria compartida, memoria global, constante y textura son todos ms lento.

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.

Ventajas
Proporciona memoria compartida
Costo efectivo La demanda de la industria de juegos en tarjetas grficas ha obligado a un gran trabajo de investigacin y el dinero en la mejora de la GPU Escalabilidad transparente

Desventajas

A pesar de tener cientos de ncleos CUDA no es tan flexible como los CPUs.

No es tan eficaz para el ordenador personal

Consideraciones importantes de programacin


Todos los hilos en un bloque se ejecutarn en paralelo si el todos estn siguiendo el mismo cdigo, y su importante eliminar ramas lgicas, para mantener todos los subprocesos que se ejecutan al mismo tiempo. Hilos slo pueden hacer referencia a la memoria local y memoria compartida, por lo que cualquier informacin necesaria se deben poner en la memoria compartida.

Ejemplos de Aplicaciones CUDA


Aplicaciones CUDA deben ejecutarse en operaciones paralelas de gran cantidad de datos, y se procese intensiva. Ejemplos: Simulacin Dinmica Molecular Manipulacin de Vdeo / Codificacin de audio Imgenes en 3D y Visualizacin Operaciones de la Matriz

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 tambin:
Demo 1 Demo 2 Demo 3

CUDA & RCL


Existen ms de 170 herramientas CUDA prefabricados, y seran bloques de construccin tiles para aplicaciones
Las reas incluyen proyeccin de imagen, video y procesamiento de audio, dinmica molecular, procesamiento de seales

CUDA tambin puede ayudar a una aplicacin existente a cumplir con su necesidad de velocidad
Procesar grandes conjuntos de datos ms rpido Puede alcanzar cerca de procesamiento de datos reales

Trabaja bien con otros

Nvidia cre un MATLAB plug-in para la aceleracin estndar de FFT MATLAB 2D. CUDA tiene caja de herramientas de grficos para matlab. Ms de MATLAB plug-ins por estn por venir.

En Conclusin
Nvidia he logrado implementar un lenguaje para poder utilizar la potencia mxima de sus GPUs. Hoy en da el mercado de las GPU ha evolucionado mucho ms rpido que el CPU. Con el tiempo el CPU ya no ser necesario ya que todo se podra implementar desde el mismo GPU con todos los dispositivos cada vez lo que buscan mejorar es el aspecto grfico 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 sera ms dominante de lo que es hoy en da. CUDA representa muchas ventajas de programacin pero an no ha sido completamente aceptada por los codificadores.

Referencias

http://www.nvidia.com/content/cudazone/download/Ope nCL/NVIDIA_OpenCL_ProgrammingGuide.pdf http://www.youtube.com/watch?v=RqduA7myZok

https://developer.nvidia.com/what-cuda
http://blogs.nvidia.com/blog/2012/09/10/what-is-cuda2/

FIN

You might also like