martes 4 de enero de 2011

La GPU no sirve para todo (aún)

Las GPU son claramente más rápidas en cálculo que las CPU, no un poco más rápidas sino un orden de magnitud más, esto es, decenas de veces. Sin embargo no podemos pensar por ello que son la mejor solución para todo, al menos de momento.

Cuando se comenzó a intentar usar las GPU para aplicaciones de propósito general (GPGPU) su programación era muy complicada. También carecían de operaciones en coma flotante de doble precisión, lo que cerraba las puertas a muchas aplicaciones de cálculo científico, donde su potencia podía marcar la diferencia.

Con sus nuevas arquitecturas y herramientas de apoyo Nvidia ha logrado paliar esas carencias, ofreciendo mayor velocidad también en doble precisión y permitiendo utilizar lenguajes de programación de alto nivel ya conocidos. Entonces ¿Dónde está aún el invonveniente?

Para encontrarlo hay que tener en cuenta que un sistema acelerado por GPU se basa en un sistema como los habituales, con su CPU, su memoria y sus buses de expansión a los que están conectadas una o más tarjetas a las que el usuario puede decidir enviar los cálculos más pesados.

Una vez cargados los datos en la memoria de la aceleradora se comienzan a ejecutar operaciones sobre ellos. El acceso a la memoria GDDR3 de las tarjetas aceleradoras es muy rápido. Sin embargo la cantidad de memoria que integran es del orden de 6 o 12GB. Esto, que podría parecer suficiente en aplicaciones domésticas o empresariales, no lo es en cálculo científico, donde se usan servidores con memorias a partir de 24GB en algunos casos hasta más de 100 en otros.

Por tanto, para calcular un campo de datos mayor que la memoria de la aceleradora es necesario apoyarse en la memoria principal DDR3 del servidor y transmitir datos a la memoria de la aceleradora cuando sea necesario. Esto se hace actualmente a través de un PCI-e de 16 canales, que da un ancho de banda de 4GB/s, un orden de magnitud por debajo del ancho de banda de acceso a la memoria DDR3.

La conclusión es que para justificar el uso de una aceleradora debes necesitar hacer varias operaciones con cada unidad de información. Esto es así en muchas aplicaciones, para las que las GPU en este momento son un avance importante.

Linpack, que se usa como prueba para el Top500, es uno de esos casos. Por eso si lo que necesitas es publicidad no tienes más que pagar un cierto número de tarjetas Nvidia y saldrás en la lista. Otra cosa es que te sirva para algo, eso depende de lo que quieras hacer con ello.

Para el resto de aplicaciones habrá que esperar a tener más memoria a un precio razonable dentro de la aceleradora o una tecnología de inteconexión más avanzada.

4 comentarios:

Capitán Chu dijo...

Lo que dicen los demás :

http://www.nvidia.es/object/cuda_people_saying_es.html


PD : Mi otro orinal es un CRAY

Pumy dijo...

a ver capitán, yo no estoy en contra de cuda, yo vendo Nvidia si me lo piden, pero digo las cosas como son

Pumy dijo...

http://www.cray.com/Assets/PDF/products/cx1/TeslaGPUBlade_CT5601.pdf

Capitán Chu dijo...

No te ofendas , pero pensamientos como ese pueden llevarte a que te metan uno de esos chismes en el culo