CUDA
 
 
CUDA PROGRAMACIÓN PARALELA FACILITADA
¿QUÉ ES CUDA?
CUDA™ es una plataforma de computación paralela y un modelo de programación inventado por NVIDIA. Permite aumentos impresionantes en el rendimiento de la computación al aprovechar la potencia de la unidad de procesamiento de gráficos (GPU).

Con millones de GPU aptas para CUDA vendidas hasta la fecha, los desarrolladores de software, científicos e investigadores cada vez encuentran usos más amplios para la computación de la GPU con CUDA. Aquí hay algunos ejemplos:

Identificar la placa oculta en las arterias: Los infartos son la principal causa de muerte en todo el mundo. Harvard Engineering, Harvard Medical School y Brigham & Women's Hospital se han unido para usar las GPU para simular el flujo sanguíneo e identificar la placa arterial oculta sin las técnicas invasivas de diagnóstico por imágenes o la cirugía exploratoria.

Analizar el flujo del tráfico aéreo: El National Airspace System administra la coordinación del flujo del tráfico aéreo en todo el país. Los modelos de computación ayudan a identificar nuevas formar de mejorar la congestión y mantener el movimiento del tráfico aéreo eficiente. Usando la potencia computacional de las GPU, un equipo de la NASA obtuvo un enorme aumento en el rendimiento y redujo el tiempo del análisis de diez minutos a tres segundos.

Visualizar moléculas: Una simulación molecular llamada NAMD (dinámica molecular a nanoescala) obtiene un gran aumento en el rendimiento con las GPU. La aceleración es resultado de la arquitectura paralela de las GPU, que les permite a los desarrolladores de NAMD llevar a la GPU partes de la aplicación con uso intensivo de la computación usando el kit de herramientas CUDA.

ANTECEDENTES

Computación de la GPU: la revolución

Usted enfrenta varias exigencias: Mejorar el rendimiento: Resolver un problema con más rapidez. El procesamiento paralelo sería más rápido, pero la curva de aprendizaje es empinada, ¿verdad?

Eso ya es historia. Con CUDA, usted puede enviar el código C, C++ y Fortran directamente a la GPU, sin la necesidad de un lenguaje de montaje.

Los desarrolladores en empresas como Adobe, ANSYS, Autodesk, MathWorks y Wolfram Research están despertando al gigante dormido (la GPU) para aplicar la computación con fines específicos científicos y de ingeniería en una amplia gama de plataformas.

Usando lenguajes de alto nivel, las aplicaciones aceleradas por la GPU ejecutan la parte secuencial de su carga de trabajo en la CPU (que, a su vez, está optimizada para el rendimiento de threads únicos) mientras se acelera el procesamiento paralelo en la GPU. Esto se llama "computación de la GPU".

La computación de la GPU es posible debido a que la GPU actualmente realiza mucho más que renderizar gráficos: actúa con un teraflop de rendimiento de punto flotante y resuelve las tareas de aplicaciones diseñadas para cosas tan diversas como las finanzas o la medicina.

CUDA se ha implementado ampliamente a través de miles de aplicaciones e informes de investigación publicados, además de ser compatible con una base instalada de más de 375 millones de GPU aptas para CUDA en PC portátiles, estaciones de trabajo, clústeres de computación y supercomputadoras.

Visite CUDA Zone para ver ejemplos de aplicaciones en diversos mercados verticales… y despierte al gigante de su GPU.

Historia de la computación de la GPU

Las primeras GPU fueron diseñadas como aceleradoras de gráficos y admitían apenas procesos específicos de funcionamiento fijo. Desde finales de los noventas, el hardware cada vez se volvió más programable, lo que culminó con la primera GPU de NVIDIA en 1999. Menos de un año después de que NVIDIA acuñara el término GPU, otros profesionales se aliaron a los artistas y desarrolladores de juegos para hacer trabajos revolucionarios con la tecnología: los investigadores empezaron a aprovechar su excelente rendimiento de punto flotante. Surgía de esta forma el movimiento de la GPU para fines generales (GPGPU).

Pero en ese entonces, la GPGPU estaba lejos de ser fácil, incluso para quienes conocían los lenguajes de programación de gráficos como OpenGL. Los desarrolladores tenían que mapear cálculos científicos en problemas que podían representarse por triángulos y polígonos. La GPGPU era prácticamente inalcanzable para los no hubieran memorizado las últimas API gráficas, hasta que un grupo de investigadores en la Universidad de Stanford se propuso reimaginar la GPU como un "procesador de flujos."

En 2003, un equipo de investigadores dirigidos por Ian Buck lanzó "Brook", el primer modelo de programación ampliamente adoptado para extender C con constructos con datos paralelos. Usando conceptos como los flujos, los kernels y los operadores de reducción, el compilador Brook y el sistema de tiempo de ejecución expusieron la GPU como un procesador con fines generales en un lenguaje de alto nivel. Y lo más importante es que los programas de Brook no sólo eran más fáciles de escribir que el código de la GPU ajustado a mano, sino que eran siete veces más rápidos que el código similar existente.

NVIDIA sabía que un hardware impresionantemente rápido tenía que combinarse con herramientas de hardware y software intuitivas e invitó a Ian Buck a unirse a la compañía y a empezar a hacer evolucionar una solución que ejecutara C a la perfección en la GPU. Al reunir el software y el hardware, NVIDIA lanzó CUDA en 2006, la primera solución del mundo para computación general en las GPU.

ECOSISTEMA

Herramientas y capacitación

Actualmente, el ecosistema de CUDA crece rápidamente a medida en que cada vez más compañías brindan herramientas, servicios y soluciones de clase mundial.

Si desea escribir su propio código, la forma más fácil de aprovechar el rendimiento de las GPU es por medio del kit de herramientas de CUDA, que brinda un entorno de desarrollo integral para los desarrolladores de C y C++.

El kit de herramientas de CUDA incluye un compilador, bibliotecas de matemáticas y herramientas para corregir y optimizar el rendimiento de sus aplicaciones. También encontrará muestras de códigos, guías de programación, manuales de usuarios, referencias de API y otra documentación para ayudarle a dar los primeros pasos.

NVIDIA ofrece todo esto de forma gratuita, incluyendo NVIDIA Parallel Nsight for Visual Studio, el primer entorno de desarrollo del sector para las aplicaciones masivas paralelas que usan tanto GPU como CPU.

Es práctico aprender a usar CUDA, con capacitación en línea completa disponible, así como otros recursos, por ejemplo seminarios en la Web y libros. Más de 400 universidades y facultades enseñan la programación de CUDA, incluyendo docenas de Centros de Excelencia de CUDA y Centros de capacitación e investigación de CUDA.

También hay disponibles soluciones para Fortran, C#, Python y otros lenguajes. Explore el Ecosistema de computación de la GPU en CUDA Zone para obtener más información.

 
Para los desarrolladores
Visite CUDA Zone para empezar a programar en paralelo y a ver CUDA en acción

Ir a CUDA Zone
LO QUE DICE LA GENTE
"Las GPU han evolucionado al punto que muchas aplicaciones del mundo real se están implementando fácilmente en ellas y se ejecutan muchísimo más rápido que en sistemas con múltiples núcleos. Las arquitecturas de computación del futuro serán sistemas híbridos con GPU de núcleos paralelos trabajando en tándem con CPU de múltiples núcleos".

-- Jack Dongarra
Profesor, Universidad de Tennessee

"CUDA es una plataforma de computación completa para C/C++/Fortran en la GPU. Cuando empezamos a crear CUDA, teníamos muchas opciones con relación a lo que podríamos construir. El punto clave, según afirmaron los clientes, fue que no tenían que aprender un lenguaje o API completamente nuevos. Algunos de ellos estaban contratando desarrolladores de juegos porque sabían que las GPU eran rápidas pero no sabían cómo llegar a ellas. Era esencial brindar una solución que fuera fácil, que se pudiera aprender en una sesión y que pudiera superar el código de su CPU."

-- Ian Buck
Gerente General, NVIDIA

 


 
 
TwitterFacebookLinkedInGoogle+Reddit