ventajas activar cuda nvidia gpu-programming

activar - cuda wikipedia



¿Cómo es CUDA? ¿Para qué sirve? ¿Cuales son los beneficios? ¿Y cómo empezar? (2)

Estoy interesado en desarrollar bajo alguna nueva tecnología y estaba pensando en probar CUDA. Ahora ... su documentación es demasiado técnica y no proporciona las respuestas que estoy buscando. Además, me gustaría escuchar esas respuestas de personas que ya han tenido alguna experiencia con CUDA.

Básicamente mis preguntas son las del título:

¿Qué es exactamente CUDA? (¿Es un marco o una API? ¿Qué?)

¿Para qué sirve? (¿Hay algo más que solo programar a la GPU?)

¿A qué se parece?

¿Cuáles son los beneficios de la programación contra CUDA en lugar de la programación a la CPU?

¿Cuál es un buen lugar para comenzar a programar con CUDA?


(Descargo de responsabilidad: solo he usado CUDA para un proyecto semestral en 2008, por lo que las cosas podrían haber cambiado desde entonces.) CUDA es una cadena de herramientas de desarrollo para crear programas que pueden ejecutarse en las GPU nVidia, así como una API para controlar dichos programas desde el UPC.

Los beneficios de la programación de GPU frente a la programación de la CPU es que, para algunos problemas altamente paralelizables, puede obtener aceleraciones masivas (aproximadamente dos órdenes de magnitud más rápido). Sin embargo, muchos problemas son difíciles o imposibles de formular de una manera que los hace adecuados para la paralelización.

En cierto sentido, CUDA es bastante sencillo, porque puede usar C regular para crear los programas. Sin embargo, para lograr un buen rendimiento, se deben tener en cuenta muchas cosas, incluidos muchos detalles de bajo nivel de la arquitectura de GPU de Tesla.


CUDA reúne varias cosas:

  • Hardware masivamente paralelo diseñado para ejecutar código genérico (no gráfico), con los 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 a los lenguajes de programación del lado de la CPU invocar 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, así como hardware no 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, lo que produce mejoras en el 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 un lenguaje de propósito general disponible, en lugar de tener que usar sombreadores de píxeles y 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 son GPU.

También es una señal de que nVidia está dispuesta a admitir la paralelización de propósito general en su hardware: ahora suena menos como "piratear con la GPU" y más como "usar una tecnología respaldada por un proveedor", y eso facilita su adopción en presencia de actores no técnicos.

Para comenzar a usar CUDA, descargue el SDK, lea el manual (en serio, no es tan complicado si ya conoce C) y compre hardware compatible con CUDA ( puede usar el emulador al principio, pero el rendimiento es el punto final de esto, es mejor si realmente puedes probar tu código)