CUDA reúne varias cosas:
- hardware masiva en paralelo diseñado para ejecutar código genérico (no gráfica), con controladores adecuados para hacerlo.
- Un lenguaje de programación basado en C para programar dicho hardware y un lenguaje ensamblador que otros lenguajes de programación pueden usar como destino.
- Un kit de desarrollo de software que incluye bibliotecas, varias herramientas de depuración, creación de perfiles y compilación, y enlaces que permiten que los lenguajes de programación del lado de la CPU invoquen el código del lado de la GPU.
El objetivo de CUDA es escribir código que pueda ejecutarse en arquitecturas SIMD paralelas masivas compatibles: esto incluye varios tipos de GPU además de hardware que no es GPU como nVidia Tesla. El hardware masivamente paralelo puede ejecutar un número significativamente mayor de operaciones por segundo que la CPU, a un costo financiero bastante similar, que ofrece mejoras de rendimiento de 50 × o más en situaciones que lo permiten.
Uno de los beneficios de CUDA sobre los métodos anteriores es que hay disponible un lenguaje de propósito general, en lugar de tener que usar pixel y sombreadores de vértices para emular las computadoras de propósito general. Ese lenguaje se basa en C con algunas palabras clave y conceptos adicionales, lo que hace que sea bastante fácil para los programadores que no usan GPU.
También es una señal de que nVidia está dispuesto a soportar la paralelización de uso general en su hardware: ahora suena menos como "piratear con la GPU" y más como "usar una tecnología compatible con proveedores", y eso hace que adopción más fácil en presencia de partes interesadas no técnicas.
para empezar a utilizar CUDA, descargar el SDK, lea el manual (en serio, no es que complicado si ya conoce C) y comprar un hardware compatible con CUDA (que puede usar el emulador en un primer momento, pero el rendimiento siendo el último punto de esto, es mejor si realmente puedes probar tu código)
No olvides que CUDA no puede beneficiar a todos los programas/algoritmos: la CPU es buena para realizar operaciones complejas/diferentes en números relativamente pequeños (es decir, <10 hilos/procesos) mientras que la potencia total de la GPU se desata cuando puede hacer simples/las mismas operaciones en cantidades masivas de hilos/puntos de datos (es decir,> 10.000). Es por eso que es tan bueno en, por ejemplo, decodificación/codificación de video: esas son las mismas operaciones simples en una gran cantidad de píxeles (casi un millón en 720p) – dtech
@dtech: absolutamente. –