IF I CUDA…
Como estaba la cosa muy mala con el tema de NVIDIA y su nuevo software CUDA que va a venir a revolucionar el mundo mundial pero ninguno de los señores de colores estabamos lo suficientemente preparados para atender a una charla de este estilo dado nuestro alto grado etílico pero bajo grado de conocimiento, decidimos que lo mejor que podíamos hacer era seguir tocándonos los huevos y enviar a nuestro gato favorito. Lo que tampoco sabíamos es que el gran Mixu, se iba a cascar este pedazo de artículo.
If I CUDA run Crysis a 120fps a 1920×1200… If I CUDA verle las venas a las tetas de Lara Croft… If I CUDA…
NVIDIA está haciendo su gira europea de la presentación de su nueva tecnología llamada CUDA. Que, para los desinformados de la faz de la tierra, es la nueva herramienta que nos proporciona usar cálculos de muy varios tipos sobre nuestra GPU, así acelerando mucho el rendimiento de las aplicaciones adaptadas. La conferencia española se realizó en el salón de actos de la FIB (Facultat d’Informàtica de Barcelona) y allá estuvimos a pie de letra. ¿Qué ventajas nos depara esta tecnología? ¿Nos ayudará a acelerar aún más los juegos? Sigan leyendo ávidos lectores…
A eso de las 3 de la tarde, previo paso por el pipi-room, llegué al punto de extracción donde había un montón de gente esperando en la puerta, a lo cual yo me quedé a la cola pero rápido vi que eran marujas que no se habían inscrito con tiempo y los dejaban para los últimos. Así que seguí la cola de los apuntados y una muy maja señorita (de las pocas que había… ya se conoce la fama de la FIB) después de preguntarme por mi nombre me dió un bonito «Scholarship Kit», vamos… un CD de Spam de Nvidia para los mundanos, y un bonito bolígrafo del BSC (Barcelona Supercomputing Center, el centro que organiza la conferencia).
Acto seguido penetré en la sala y me posicioné en un lugar cerca donde no perderme ningún detalle. Preparé mis bártulos, algunos conocidos como mepetrés, cámara de jafotos, y el inseparable y famoso dúo boli+papel. Al cabo de un tiempo un señor llamado Nacho (que no Vidal, que seguro que las pocas usuarias que hay se estaban poniendo a tono) dió presentación a David Kirk, el jefe científico de Nvidia desde 1997. Una vez éste se acomodó empezó con su powerpoint (R).
Primero empezó por hablarnos del nombre de su nueva tecnología. El nombre es CUDA, que viene de “Compute Unified Device Architecture”, y no de otras obscenidades que podáis estar pensando. Mr. Kirk juró y perjuró por Son Gokuh, por la cobertura de su móvil, y por snoopy que el nombre no tenía que ver con ninguna religión aunque el Papa (jai paaaallooo) hubiese creado propaganda con tal nombre…
David explicando el por qué del nombre elegido, o el por qué no, o el por qué sí pero no…
Por lo visto algún “polaquito” de por aquí comentó que CUDA en polaco significava «milagros». Qué ingeniosos estos de NVIDIA… como si no quisieran incitar a la gente a que sus productos son fruto de un milagro! Oh bueno… igual es fruto del duro trabajo que llevan.
Acto seguido y sin entretenerse demasiado pasó a comentar sobre los distintos campos de computación existentes para luego más tarde explicar qué significa un incremento en rendimiento. Básicamente la idea con la que tenéis que quedaros es que de 2 a 3 veces más rápido es un «pues no veo diferencia», de 5 a 10 veces es un «bueno va, si que vale la pena el esfuerzo», y de 100 veces es un «con eso ves un nuevo mundo inimaginable de orgasmos múltiples». Una vez tenemos claro este temita nos
comenta la evolución de las tarjetas gráficas de la historia y de cómo han ido evolucionando éstas hasta ser programables 100% y de ir en conjunción con su CPU de turno.
Luego dió el paso hasta mostrarnos los beneficios del uso de su tecnología en distintos campos de aplicaciones computacionales. En una aplicación de computación biológica obtenemos un incremento de rendimiento de unas 240 veces el original, en una simulación de los circuitos neuronales obtenemos un 130x, en una investigación astrofísica se obtiene más de un 300x, y con MATLAB (ese proprama que todo teleco detesta, y si no preguntádselo a alguien…) se obtuvo un 17x. Vamos, que pinta que es la invención del siglo (informáticamente hablando… será de este año vaya), ¿o quizás un milagro?… CUDA CUDA CUDA!
Una vez acabó de mostrar lo bonito que quedan sus resultados (no va a decir que es una mierda, está claro…) nos pasó a explicar el modelo de programación de esta nueva tecnología y las diferencias de usar ésta contra una CPU o contra GPGPU (programación usando API’s gráficas, o dicho de otra manera, hacer calculos usando la GPU mediante OpengGL o DirectX).
Mr. Kirk explicandonos las diferencias de los diferentes tipos de métodos de cálculo
Principalmente los calculos de una CPU corriente, como tu último Intel Core Octo Duo Quetecagasderapidoqueva, necesita una ristra de instrucciones secuenciales para irse ejecutando y ha de soportar saltos entre éstos según las condiciones que se aporten. Por otro lado una GPU dispone de muchas unidades de cálculo que se pueden aprovechar paralelamente y están especializadas en hacer un tipo de cálculos. Si el tipo de cálculos que se necesita hacer no requiere ser secuencial se puede aprovechar a usar la tarjeta gráfica para que procese todo el montón de cálculos en varios grupos del tirón, y además de que la gráfica esta preparada para hacer esos cálculos, pues obtenemos que nos hemos hecho los mismos cálculos en mucho menos tiempo.
Entonces usemos la gráfica para hacer esos cálculos, ¿no? Pero también tenemos esa otra tecnología llamada GPGPU, pero ¿por qué CUDA y no GPGPU? Pues la explicación es que con CUDA te ahorras muchos overheads del procesamiento usando las API’s 3D para la gráfica, es programable en C y no necesitas tener conocimientos de programación de gráficos 3D, los threads de ejecución pueden compartir datos y sincronizarse, y se puede leer y escribir en cualquier posición de la memoria tanto como se quiera.
Ahora es cuando cualquiera viene y dice… ¿pero qué me estás contando? ¡A mi me hablas en ejpañó! Y a mi me lo explicas con manzanas y naranjas… Bueno… pues vamos a explicarlo para quien no esté metido en mundo hardware.
Supongamos que vamos a comprar a una frutería, cogemos nuestras bolsas con sus diferentes kilos de manzanas, naranjas, peras, pomelos, melones, nabos y coles (viciosetesssss 😉 ). Entonces si somos gente educada y no vamos en contra de la sociedad por lo general te vas al dependiente a que te pese las bolsas, las ponga precio, las sume y te diga el total para así pagarle y salir por la puerta sin que te venga detras con un cuchillo jamonero. Imagenen, señores y alguna que otra señora/ita, que el dependiente es una CPU de toda la vida, él solito tendría que coger la primera bolsa, pesarla, marcar el importe por kilo del tipo de producto, coger el resultado de lo que vale la bolsa, guardarlo… luego coger la otra bolsa y lo mismo, y luego otra bolsa, y otra, y otras más, y que alegría (que alboroto otro perrito piloto!) otra bolsa más! Y al final haría la suma de todo el camión de frutas que te llevas para casa, con lo que se tiraría un rato hasta que te largas por fin a tu casa a comerte medio kilo de peras porque te ha entrado hambre de haber estado esperando 80 años para que te cobre.
Ahora por otra parte imaginemos que el dependiente tienea una ristra de chinorris sin contrato y mal pagados (como viene siendo habitual en esta sociedad… ) que son unos expertos en pesar bolsas de frutas y calcular el importe y sumarlo todos juntitos. Ahora es cuando tu te vas con todas las bolsas al dependiente y el susodicho se las da a sus chinitos que en menos que Paris Hilton se baja las bragas tu ya tienes el importe a pagar y el dependiente esperandote a que le pagues. Éste último sería el caso de usar CUDA y el grupo de chinorris sería tu GPU instalada en tu ordenador.
Después de todo ésto el señor nvidioso pasó a darnos unos cuantos ejemplos de lo fácil que era modificar y/o crear una aplicación usando CUDA para beneficiarse de la potencia de nuestra tarjeta gráfica. Una vez concluyó la presentación pasamos a la ronda de preguntas, que no comentaré porque la mayoría eran sobre problemas de programación y dudas de arquitectura de la implementación del modelo en que se basa CUDA, cosa que dudo que os interese y como no me he enrollado ya…
Mateo Valero dándole el regalo a David Kirk.
Para finalizar la conferencia el señor Mateo Valero, el director del BSC, le hizo un regalito a David para que recordase su paso por Barcelona. El regalo si más no, como que al chico le gustan los gráficos y tal, fue una libro sobre las vistas de Barcelona.
Y ya acabando… hemos visto la nueva tecnología y sus mejoras, que por las pruebas tienen muy buena pinta y mejoran mucho el rendimiento. En relación a los videojuegos es muy posible que ésto nos ayude a usar una configuración bastante extendida de GPU’s para así usarlas como aceleradoras para la física, la AI, gráficos, y demás cálculos, pero todo ello dependerá de los programadores detrás del juego si lo programan para aprovechar las GPU’s o no.
Mixu
Pd: Si a alguien le interesa el audio de la charla, que lo diga y haremos magia.
Mientras Intel (y AMD un poquito) extienden sus garras hacia los sistemas integrados placa-procesador-gráfica, Nvidia sólo se puede extender en dirección contraria y tomar control sobre el procesado, ya lo han demostrado con movimientos como la compra de Ageia o sus estaciones de trabajo Quadro Plex usando tarjetones de alta gama (GPUs Tesla) como meros procesadores de cálculo. Échadle un vistazo a esta gráfica a ver si notáis qué le falta «algo»:
http://www.nvidia.es/page/tesla_gpu_processor.html
AMD ya hizo su movimiento comprando ATI y el socket AM2+ sólo va con sus chipsets, no me extrañaría ver a Nvidia en los próximos años sacar al mercado una CPU.
Y tendremos a los nvidiers, amders, y los pobres intelers casuales :taliban
:nooo No entiendo nada, ¿esto es real? ¿existe vida depues de la muerte?… ¿se podrá jugar a Crysis a 120fps?, tendré que llamar a Iker Jimenez que aclare esta respuestas y sobre toro porque el gato Mixu se trago dicho certamen.
Saludos.
Ahora es cuando cualquiera viene y dice… ¿pero qué me estás contando? ¡A mi me hablas en ejpañó! Y a mi me lo explicas con manzanas y naranjas… Bueno… pues vamos a explicarlo para quien no esté metido en mundo hardware.
———————————————————
Me has leido la mente :nooo
Vamos que en resumen, los cuderos apoyaremos la esclavitud
;;) Siervos mios agarrar el jabon del sueloooo :depende
Pero amos a ver… si usamos la potencia de la GPU pa acelerar la IA o lo que sea en juegos… que coño vamos a usar pa acelerar los graficos? la tarjeta de sonido??? :posno
Txintxe, por lo que he entendido, la tecnolgia CUDA permite optimizar la aceleración gráfica de tal forma que libera de trabajo a la GPU pudiendo usar esa potencia restante en campos como la física, la IA, etc.
Pues yo sigo sin verlo muy claro, pq las configuraciones de los PCs son como copos de nieve: nunca hay dos iguales, y a ver como van a programar el juego para que las instrucciones se distribuyan por todos los centros de procesado del ordenata. A mi solo se me ocurre que empiecen a estandarizar un poco las configuraciones o los interfaces, pq si no solo se puede delegar en que el reparto lo haga el SO, y ese siempre va por detras de la tecnología puntera en hardware.
Además que todo esto solo beneficia a calculos paralelizables y aunque no tengo ni idea de programación de juegos, no creo que sea el comun de los casos y de ahi viene directamente el que la PS3 todavía no haya mostrado mejores gráficos que la XBOX. Esí sí en un PC con taeas totalmente diferenciadas: navegador, excel, emule,compilador, winamp, todo ello abierto a la vez, ahi quizas si que se pueda ganar algo. aunque a mi ya me va todo eso muy rapido.
Creo que la idea de CUDA no es optimizar los juegos, eso ya se hace con las directx etc, la idea es que ofrecen una API de programación para hacer cálculos matemáticos en la GPU, sin ella, había que usar funciones de imágenes (filtros, texturas…) para multiplicar matrices y demás, gracias a CUDA el programador no tiene que saber nada de procesamiento de imágenes, solo usa funciones matemáticas para hacer sus cálculos.
Total, que si tu tienes un ordenador para resolver plegados de moléculas, o calcular si hay vida en otros planetas a través de cálculos super complejos, puedes comprar una 8800 GT y mandarle trabajo a ella, que lo hará bastante más rápido que el pentium IV.
No se si me he explicado :fiu
Un señó que no era de nvidia pero habia dedicado su carrera desde los inicios de la computación con las gráficas y que se fue a las americas y to con otros pirraos por el mismo tema de cuyo nombre no me acuerdo >< también dio una charla en la Universidad de Murcia. Enefeto parece mu bonito el asunto, pero en la ronda de preguntas en la que como siempre acaban preguntando solo los profesores le pillaron la pega: no sirve para procesamiento general. Como muy bien ha puesto Mixu es bueno cuando puedes hacer muchas cosas en paralelo y el trasto tira de muerte entonces (procesamiento de imágenes médicas por ej) pero tiene una restricción más. Para que salga rentable usar la gráfica, sobre cada dato que se trae tiene que aplicar en torno a 5 operaciones, cosa que no entra en «procesamiento general». Es muy bueno para cierto tipos de programas, pero para otros es una castaña. De hecho lo que hacian era dejar la parte que a la gráfica le cuesta procesar a la CPU.
Para la IA puede que valga… pero como dice Paco, y los graficos que? Como la grafica va taaaan sobrada en el Crysis :posno
Toma ladrillaco! :gne
Pueeee… no sé si me he explicado bien… :nooo pero a ver si ahora va la buena xD
Es como dice siner.
La cosa está en que hay cálculos que actualmente se hacen con la CPU y que con una GPU se podrían hacer mucho más rápido porque está preparada para estos cálculos.
CUDA no es que acelere los gráficos, lo que hace es dar al programador una herramienta muy sencilla para poder programar la tarjeta gráfica y poder enviar esos cálculos a ella. Se pueden simultanear operaciones, es decir, que puedes calcular gráficos, física, IA, o lo que sea al mismo tiempo, pero tienes unos recursos limitados y lo que uses para procesar físicas eso que no tienes para procesar gráficos.
Luego está que si usas SLI pues puedes aprovechar todas las otras tarjetas que tienes disponibles.
Un pequeño apunte es que yo lo enfoco en torno a los videojuegos, que es el tema que nos atañe, pero en ningún momento hicieron referencia a este mundillo y siempre hablaban de computación pura y dura.
Si tenéis más dudas ya sabéis, preguntad, e intentaré responder lo mejor que pueda. 🙂
Amos, que estamos como estabamos, ¿no?
:nooo
¿Se resume en un tarjeton grafico que te cagas a precio de oro o a unas instrucciones de las tarjetas que ya existen?
Por que me huelo otra carrera de ratas:
Primero que si el procesador
Aluego que la grafica
A luego que dos graficas con SLI
A ver si pican con la Ageia y las fisicas
¿ahora CUDA y sus milagros?
Me suena a pastinaca gansa y el crysis 2 a paso burra.
:nooo Sus estais poniendo mu’ tesnicos ultimamentes…
Estabamos como estabamos… pero con la posibilidad de aprovechar la GPU para otras cosas que no son gráficos.
Lydon5: pues no es realmente así, las tarjetas no es que las vendan a más precio que ahora… espero xD, y no es que sean instrucciones que ya existen, es que las instrucciones las «subes» tú a la GPU para que las procese.
Una vez concluyó la presentación pasamos a la ronda de preguntas, que no comentaré porque la mayoría eran sobre problemas de programación y dudas de arquitectura de la implementación del modelo en que se basa CUDA, cosa que dudo que os interese y como no me he enrollado ya…
Comenta las preguntas y rula el audio, a mi me interesa mucho.
NOnonO Nadie se acuerda para que era estO ????
Para mejorar la física del movimiento de las :tits
Winu… pos el audio lo he colgao aquí:
http://rapidshare.com/files/109616045/audioCUDA.rar.html
Las preguntas están para el final xD
Y así resumiendo… pues no me acuerdo bien de las preguntas que hicieron, pero una era sobre la arquitectura de memoria que tenía CUDA y la respuesta fue algo así como que tenías un gran rango de memoria para usar y tal; luego otra fue de un problema que tenía uno para hacer una aplicación; otra fue que si implementarían algo en un futuro a lo que contestó que era muy probable; y ahora no me vienen más a la cabeza, pero están ara el final :p
Ok Gracias. Le echare un vistazo/orejazo.