
Esta semana NVidia ha liberado una nueva versión de su kit de desarrollo, CUDA 4.1 (Compute Unified Device Architecture, Arquitectura de Dispositivos de Cómputo Unificado) que, como ya sabréis, se trata de una plataforma pensada para ejecutar algoritmos sobre las propias GPU de la marca. Quizá en el ámbito doméstico no tenga un uso masivo, pero me consta que a nivel profesional es muy utilizado en ciertos sectores.
La versión 4.1 de CUDA se lanzó ayer con tres novedades reseñables, todas ellas relacionadas con el software: un mejorado visual profiler, depurador de código; un nuevo compilador de bajo nivel LLVM – Low Level Virtual Machine – más rápido y eficiente; y nuevas librerías relacionadas con el procesamiento de imágenes y señales. Desde NVidia prometen grandes mejoras en el rendimiento de las aplicaciones, principalmente debido al nuevo compilador con el que, dicen, mejorarán hasta un 10% el rendimiento de las aplicaciones con simplemente recompilar el código ya existente bajo esta nueva versión.
CUDA está presente desde hace unos años en todas las tarjetas gráficas de NVidia, de forma que cualquier usuario de esta marca podrá beneficiarse de las mejoras proporcionadas por el software específico. Su principal competencia está liderada, cómo no, por AMD y su OpenCL, un software mucho más abierto pero cuya filosofía es la misma: hacer que la GPU actúe como núcleo de proceso para tareas de propósito general.
Lo que sí es cierto es que, al menos bajo mi punto de vista, NVidia está poniendo mucho más empeño en CUDA que AMD en OpenCL, algo que termina repercutiendo en el resultado final. Soy fiel partidario del software abierto y “sin barreras”, y con ello más favorable a OpenCL… pero CUDA está sabiendo hacerse un hueco en un mercado pequeño, muy concreto y profesional, pero con grandes expectativas de crecimiento en el futuro. No olvidemos que al fondo se asoma Microsoft y su alternativa DirectCompute. Al fondo, apenas es conocido… pero es Microsoft.
Por último os dejo con algunos ejemplos en vídeo de plugins para Photoshop CS5 funcionando con y sin CUDA:
Y si habéis llegado al final habréis comprobado que el ordenador de las pruebas no es ninguna bestialidad: Core i5, 2 GB DDR3 y una NVidia GeForce GT240, una gama doméstica básica. ¿Alguien por aquí que le haya metido mano a CUDA y nos pueda contar su experiencia?
Más información | NVidia.


Comentarios
tegra 2 y tegra 3 también usan cuda???
Nvidia dio a entender la intención de que lo soporte en el futuro, y sólo Tegra 3. Por tanto, ningún Tegra usa CUDA (actualemte).
eso quiere decir que el transformer prime si que lo soporta?
El problema de Tegra 2 y 3 es que la GPU que tienen es bastante pobre. Por poner un ejemplo, Tegra 2 no es capaz de usar antialasing y muchos de los efectos se tienen que programar en la CPU.
Lo más potente con diferencia de Tegra 3 es la CPU, CUDA me da que sería mas lento para cualquier tarea.
Tengo una gráfica nVidia medianamente potente, y aún estoy por encontrarle utilidad a esto del CUDA.
Pienso que cuando estas mejoras dejen de necesitar plugins e historias para funcionar entonces de verdad marcarán la diferencia.
Me sigue sorprendiendo que con una grafica de pena como son las integradas en un portatil trabajando autocad no tenga ningun problema, pero trabajando con la dedicada de nvidia GT540m de hasta problemas...
Un saludo ;)
O_O creo que no logro entender lo que dices... Dos gráficas en un portátil? La integrada en... CPU (Intel GMA o AMD ATI), chipset... ¿? Si te da problemas con una gt540m es por que necesitas actualizar algo, ya sea una versión más reciente de Autocad, o el driver de nVidia. Pienso que tienes un portátil que puedes alternar entre las gráficas (es lo que entiendo por tu post). Debería ir mejor con la dedicada, de no ser así hay algún problema de configuración, y deberías asegurarte de que tu Autocad soporte CUDA, notarías la diferencia.
-- editado por última vez a las 21:39
Asi es, has entendido bien, el portatil tiene dos graficas (tecnologia OPTIMUS), para alternar entre ellas para mejorar el consumo de portatil en tareas de baja carga grafica, ya te comento que he actualizado todo lo posible los drivers de la grafica y el autocad que utilizo es el 2012 por lo cual no logro entender como puede pasar eso...
Eso si, tras mi experiencia es que esta grafica en concreto da estos problemas con autocad porque he tenido dos portatiles distintos, con esto me refiero a un Asus de alta gama (1000€) y un Acer de gama media (600€) y en ambos existe el mismo error.
Y el tema de si es compatible el autocad con cuda no creo que esto intervenga en que tenga estos problemas... si me equivoco corrigeme.
Un saludo ;)
-- editado por última vez a las 21:59
Autocad con CUDA no tiene mucho que ver. Autocad si que gana mucho con una nVidia Quadro o una ATI Fire. Son profesionales y valen una pasta. Pero si se tiene que dibujar 8 horas al día, es una buena inversión.
En la web de autodesk hay un listado de gráficas optimizadas para cada versión de autocad. y de paso ¿has revisado las opciones de rendimiento de autocad?
Segun he leido autocad no ofrece compatibilidad con las series 400 y 500 de nvidia... sorprendente...
Vaya panda de guarros...
Un saludo ;)
Aquí uno con algo de experiencia en CUDA. Las conclusiones son que es muy útil en determinados tipos de problemas, no es algo mágico y que acelera cualquier problema que se le ponga por delante. En aquellos problemas que funcionan bien se obtiene en términos medios sobre un 20X de ganancia en la velocidad. Hay unos cuantos puntos a tener en cuenta a la hora de utilizarlo pero sobre todo un buen conocimiento de la arquitectura es un requisito fundamental, aunque día a día nVidia lo pones mas fácil con cada nueva versión.
¿Y si me (nos) explicas de qué va más o menos?
¿Sería posible un navegador web con CUDA? ¿Builds de Chrome o Firefox que aceleren el renderizado de páginas webs y contenidos, de flash y demás?
¿Es de utilidad para los usuarios cotidianos? Es decir, que no se pasen el día foldeando proteínas.
interesante
Pareces un político que dice mucho pero no dice nada xD.
interesante
CUDA no deja de ser un añadido a un lenguaje de programación con el que poder hacer uso del hardware de la tarjeta gráfica. Tiene sus peculiridades, pero es como programar cualquier cosa en C/C++.
Cualquier programa puede hacer uso de CUDA, sea un navegador web para el renderizado o cualquier otra tarea. Photoshop por ejemplo hace usa de CUDA para acelerar procesos del renderizado de las imagenes. Pero no por el hecho de poder usarse en cualquier programa, quiere decir que deba hacerse, pues el rendimiento puede ser inferior a hacerlo como venia siendo habital en CPU. Esto es debido a que para ejecutar algo en la GPU es necesario copiar todos los datos necesarios de RAM a la memoria de la GPU y eso supone un coste temporal, que en ocasiones donde el procesado es pequeño acaba siendo mayor el tiempo de copia/lectura que la propia ejecucion en CPU.
CUDA puede ser utilizado por los usuarios cotidianos, y para nada es necesario instalar plugins ni extensiones ni nada extra. Desde hace tiempo viene integrado en los drivers de las tarjetas de nVidia. Unicamente pudiese ser necesario instalar algo extra a un programa porque por defecto no tenia la opcion de aprovechar la GPU. Me remito al caso del photoshop, para hacer uso de CUDA solamente hay que tener instalados los drivers (es obligacion) y activar su uso, nada mas.
interesante
Toda la razón, hice un poco como un político. Pero tratar de explicar las bondades y debilidades de CUDA sin escribir algo que pareciese una nueva entrada acaba en ese resultado de contar sin contar.
Esto viene a ser más o menos, el cambio (para mi bastante importante) entre winXP y vista/7, en el que el entorno gráfico de windows ya no se procesa a través de la CPU, sinó de la gráfica?
Es decir, esto es utilizar la GPU como una CPU auxiliar, no? Entiendo que más orientado a aplicaciones/usos gráficos, puesto el procesador de la tarjeta está orientado a ello, y no tanto a cálculos matemáticos, a groso modo vaya...
Saludos!
Muchas gracias por la explicación, de verdad, sería interesante ver qué pueden hacer los desarrolladores con esa herramienta entre sus manos. Ahora, poco, muy poco, para los que no usamos photoshop ni aplicaciones aeronáuticas, fotobiocelulares y yo qué sé XD.
Me has aclarado bastante las dudas, aunque quizá me quedo decepcionado, porque cuando le doy buscar cualquier cosa relacionada con "CUDA apps, CUDA software" y demás, no de resultados concretos ni nada que me pueda ser útil.
Un saludo.
Exactamente, volvemos a la epoca de los 386-486 y los coprocesadores matematicos para punto flotante. Puede verse la GPU como un coprocesador de la CPU para quitarle carga y hacerlo mas a lo bestia.
Sin embargo para nada tiene porque ser solamente para usos gráficos, siempre y cuando lo que se quiere resolver se adapte bien a la arquitectura hardware de la GPU se puede aprovechar. Es cierto que en general todo el procesado de imágenes se adapta a la perfección.
Actualmente aun hay poco que haga uso de CUDA y de ese poquito muchos no dicen que hacen uso de la GPU, te das cuenta cuando lo estas usando y el ventilador de la gráfica empieza a darlo todo. Ademas para que una aplicación haga uso de esta tecnologia se necesita a una persona con conocimientos en ello, mas tiempo de desarrollo... resultado final mas coste, pero poco a poco habrá mas aplicaciones por lo bien hacer de nVidia facilitando las tareas mas difíciles de programar para sus gráficas. Si te pasas por la web de nVidia y te descargas la SDK de CUDA tienes muchos ejemplos realizados con ello, pero al fin y al cabo poco utiles.
El tema es que es cierto, que saliendo de aplicaciones de altas prestaciones CUDA no funciona tan bien como debería, el tamaño de los datos a manejar debe ser de cierto tamaño, y con cierto tamaño me refiero a algo mas que un par de MB, mejor un ciento de ellos. Porque sino entre conectar con la GPU, enviarle los datos, ejecutar, leer los datos... acaba no mereciendo la pena el esfuerzo de programar eso para una ganancia que el usuario final no nota.
eaaa esto me gusta mas :)
Repe.
-- editado por última vez a las 21:32
Yo quiero que de una vez saque ATI un sistema como CUDA, que ahora tienen el Stream (no sabia nada del openCL) y solo dejan que lo usen los programas que tienen contrato con ellos, y yo lo que quiero es poder usarlo para comprimir los bluray.
¿Donde estan los hackers y los del software libre para hacer que las ATI hagan todo esto?.
-- editado por última vez a las 22:14
Menos pedir y más hacer :). Es un consejo.
vale, voy a seguir tu sabio consejo y voy a llamar a Kim Dotcom para que me de unas cuantas clases de hackear.
Si, porque Kevin Mitnick, me parece que no está por la labor.
Hace tiempo utilicé CUDA para convertir vídeos. La velocidad se nota mucho! También indirectamente al usar Photoshop.
Con el tema del vídeo me parece que es con lo que mas se nota. También busqué si existia algún motor de render que lo aprovechara. Cómo renderizar es una acción que se puede dividir entre muchas CPUs y el incrementro de rendimiento sería mas que notable.
interesante
Yo vi algo de CUDA en la universidad, en una asignatura de computacion paralela, el lenguaje tiene una API muy muy parecida a C, esta curioso, los bucles por ejemplo no se ejecutan desde 1 hasta X sino que cada thread de la grafica (los famosos shaders, o procesadores graficos), hace su parte y se ejecuta todo un bucle simultaneamente, esto lo podeis comprender muy muy facilmente como este video donde los cazadores de mitos explican la diferencia de como trabaja una CPU y una GPU, muy interesante http://www.youtube.com/watch?v=0k_Tm1Oi8Ws Por cierto AVATAR se hizo en CUDA!!! para que os imagineis la potencia que tiene.
Que grande el vídeo! No lo conocía! Estos tíos son la ostia. Tienen el mejor trabajo del mundo!
Acabo de finalizar mi proyecto final de carrera sobre CUDA comparando el rendimiento del cifrador AES en CPU y en GPU. En ese caso, la implementación es bastante trivial. En cifrar 512MB mi GTX550Ti CUDA tarda poco más de 2 segundos, en cambio mi CPU tarda 4min 47seg aprox. Pero el redimiento depende del diseño del algoritmo.
Realmente CUDA se está usando muy poco, y muchos no notan los beneficios, ya que el software debe sacar ventaja de ello. OpenCL, aún peor. Sólo ciertos programas de ámbito profesional aprovechan CUDA con resultados realmente beneficiosos, como puede ser el caso de la suite Adobe.
Por poner un ejemplo, renderizar un video en After Effects CS5 con la CPU como haría cualquier mortal hasta hace poco, necesita 14 minutos para poder ver el resultado del filtro. Con CUDA, 14 segundos. Esto me hizo decantarme por nVidia sobre ATi, así que tampoco hablamos de una mera chorrada, es muy importante y beneficioso...aunque sólo para unos pocos.
Salu2
Yo soy editor de video. Edito con el Premiere. En las versiones anteriores era necesario renderizar los videos cuando aplicabas efectos y toda la reproducción estaba bajo el potencial del microprocesador. En la última versión CS5 y CS5.5 Adobe sacó el sistema Mercury el cual usa CUDA para la reproducción y efectos de video. Es una gozada el no tener que renderizar videos en alta definición.
Antes tenía una ATI 4870 y ahora tengo una Nvidia GTX470 Overclocked 1280GB de RAM y es una gozada. Puede que ATI se adelante con las características de las tarjetas gráficas y a precios competitivos (Teniendo en cuenta que cuenta con el apoyo de AMD). Nvidia tiene que buscarse las papeletas ella sola y aunque tarde más en sacar sus productos, los productos son siempre más potentes que los de ATI y debido a estar sola sus precios son menos competitivos. Os imagináis la unión entre Nvidia e Intel??
Menuda pelea:
AMD-ATI Vs INTEL-Nvidia
¿Quién ganaría?
Yo votaría por la segunda opción claramente. Tanto CUDA, Tegra y el 3D son tecnologías mucho más eficientes por parte que Nvidia, junto con Intel serían invencibles. Pero bueno, aún estando sola Nvidia presenta productos mucho más elaborados, aunque tardíos y más caros, pero lo importante para mí es la calidad.
Y no me importa pagar un poco sabiendo que estoy adquiriendo un equipo mucho más fiable
Y yo que pensaba que tener 2048MB de GDDR5 ya era mucho...
Dios, dios, dios, ¿te das cuenta de lo que estás comparando? Sólo nvidia factura casi tanto como AMD+ATI y tiene un valor y tamaño cercano a AMD+ATI....... Intel, sólo intel, es varias veces mayor que (AMD+ATI)+NVIDIA.
AMD compró ATI ya por ¿2006?, no puedes hablar de ellas como dos empresas separadas, son una por completo, no es "AMD+ATI", es AMD.
Jejeje perdón!!! ha sido una falta muy muy tonta!!
Me refería a MEGAS!!
jajajaja...
Un lapsus lo tiene cualquiera :P
Bueno, todo el mundo está comentando en diferentes foros y demás sitios webs que AMD o ATI,(como quieras llamarla pero normalmente cuando sacan una nueva tarjeta nadie habla de AMD, todo el mundo habla de ATI), de que está muy por encima de Nvidia.
Siempre sacando productos antes que Nvidia y a precios más competitivos. Y en mi opinión, este tirón se debe a la compra de AMD, debido a que tiene mejores recursos tanto económicos y técnicos.
Es una comparación que he realizado. AMD es un fabricante de microprocosesadores e Intel aunque a un nivel muy superior también lo es.
Por lo cual sería completamente válida la comparación.
Yo estuve un tiempo usando el sencillo programa editor de vídeos que hace uso de CUDA llamado Badaboom 2.0 y lo usaba con una 8800GTS 512 que tiene 128 Cuda Cores o Shaders, es lo mismo, y me iba el doble de rápido que cuando editaba vídeos con el mismo programa usando un C2D E4300 a 3Ghz. Pero luego adquirí un 2500K@ 4,7Ghz y en el mismo programa el 2500K ganaba a la 8800GTS 512MB por bastante, unos 70-80fps en el mismo vídeo. A lo mejor usando el QuickSync en otro programa con el Sandy incluso habría más diferencia.
No probé más cosas por que me deshice de la 8800 al poco tiempo. Imagino que las GTX560/570/580 actuales deberán andar muy bien con este programa por tener 3 y 4 veces más Cuda Cores que mi añorada 8800 XD y también se zamparán al Sandy B.
-- editado por última vez a las 02:06
El compilador llvm está desarrollado bajo los auspicios de apple. Pero cuda es la alternativa a opencl. Me ha sorprendido que envidia usara esta tecnología...
LLVM es un proyecto open source con licensia tipo bsd,es usado por muchas empresas y universidades http://llvm.org/Users.html,fue inicialmente desarrollado por la universidad de illinois en Urbana–Champaign ,despues Apple se intereso en la tecnologia y empezo a colaborar intensivamente en el proyecto,ahora multitud de empresas y universidades colaboran en el proyecto.
Sobre LLVM es una de las tecnologias con mayor potencial actualmente por su poder y capacidad de reutilizar software y crear herramientas de calidad tambien QT en las proximas versiones su ide QT creator se beneficiara de este,drives libres graficos libres en linux,GHC,..etc.
CUDA vs OpenCL aun que ambas ya compartan el uso de LLVM es muy diferente la manera en la que se desarrollan,aunque preferiria que OpenCL ganara la batalla por temas de que tiene compatibilidad fuera de los productos NVIDIA.
Gracias por la info
Nada que no pueda hacerse desde hace tiempo con Direct3D
brillante
Una puntualización. OpenCL no es de AMD, OpenCL al igual que OpenGL es un estandar creado por el grupo Khronos. Que AMD lo apolle es distinto de que sea suyo, como parece mencionar el texto. Con OpenCL también puedes programar una targeta Nvidia, aunque el rendimiento sea menor
-- editado por última vez a las 05:01
Que yo sepa las GPU de nVidia soportan las mismas especificaciones que las de AMD respecto a OpenCL. Yo tengo una GeForce GTX 560 Ti y soporta CUDA, OpenCL 1.1 y DirectCompute.
Si se hicieran las cosas como es debido... el uso de cuda debería de ser transparente para el programador. Si se crean threads o procesos pesados y los procesadores de la grafica estan libres, pues que los use, que se encargue de gestionar ello el sistema operativo. Pero como les interesa tener un sistema cerrado y que te cambies de procesador cada 2x3 pues...Hoy en dia la gráfica debería de ser para el sistema operativo unos nucelos mas, que ejecutaran las instrucciones que pudieran.
Solo se descarga esto o se actualiza los drivers? porque tengo un SLI de GTX 570 y no tengo actualizaciones pendientes..
-- editado por última vez a las 14:19
Escribir un comentario
Para hacer un comentario es necesario que te identifiques: ENTRA o conéctate con FacebookConnect