[cuda] ¿Has utilizado con éxito una GPGPU?


Answers

He escrito aplicaciones triviales, realmente ayuda si puede paralizar cálculos de coma flotante.

Encontré el siguiente curso de un profesor de Urbana Champaign de la Universidad de Illinois y un ingeniero de NVIDIA muy útil cuando comencé: http://courses.ece.illinois.edu/ece498/al/Archive/Spring2007/Syllabus.html ( incluye grabaciones de todas las conferencias).

Question

Me interesa saber si alguien ha escrito una aplicación que aproveche una GPGPU utilizando, por ejemplo, nVidia CUDA . Si es así, ¿qué problemas encontraste y qué mejoras de rendimiento lograste en comparación con una CPU estándar?




Implementé un cálculo de Monte Carlo en CUDA para algún uso financiero. El código CUDA optimizado es aproximadamente 500 veces más rápido que una implementación de CPU de múltiples subprocesos "podría haber intentado más, pero no realmente". (Comparando un GeForce 8800GT con un Q6600 aquí). Sin embargo, es bien sabido que los problemas de Monte Carlo son embarazosamente paralelos.

Los principales problemas encontrados implican la pérdida de precisión debido a la limitación del chip G8x y G9x a los números de punto flotante de precisión simple IEEE. Con el lanzamiento de los chips GT200, esto podría mitigarse en cierta medida utilizando la unidad de doble precisión, a costa de algún rendimiento. No lo he probado todavía

Además, dado que CUDA es una extensión C, la integración en otra aplicación puede ser no trivial.




He estado usando GPGPU para detección de movimiento (Originalmente usando CG y ahora CUDA) y estabilización (usando CUDA) con procesamiento de imagen. He estado recibiendo una aceleración de 10 a 20 veces en estas situaciones.

Por lo que he leído, esto es bastante típico para los algoritmos de datos paralelos.




Sí. Implementé el Filtro de Difusión Anisotrópico No Lineal usando la API CUDA.

Es bastante fácil, ya que es un filtro que debe ejecutarse en paralelo dada una imagen de entrada. No he encontrado muchas dificultades en esto, ya que solo requería un kernel simple. La aceleración fue de aproximadamente 300x. Este fue mi proyecto final en CS. El proyecto se puede encontrar aquí (está escrito en portugués).

También traté de escribir el algoritmo de segmentación de Mumford & Shah , pero ha sido una tarea difícil de escribir, ya que CUDA todavía está en el principio y ocurren muchas cosas extrañas. Incluso he visto una mejora en el rendimiento agregando un if (false){} en el código O_O.

Los resultados para este algoritmo de segmentación no fueron buenos. Tuve una pérdida de rendimiento de 20x en comparación con un enfoque de CPU (sin embargo, dado que es una CPU, se podría tomar un enfoque diferente que dijera los mismos resultados). Todavía es un trabajo en progreso, pero desafortunadamente dejé el laboratorio en el que estaba trabajando, así que tal vez algún día podría terminarlo.




Escribí un kernel complejo de multiplicación de matrices que superó la implementación cuBLAS en aproximadamente un 30% para la aplicación para la que lo estaba usando, y una especie de función de vector producto externo que corrió varios órdenes de magnitud que una solución de seguimiento múltiple para el resto de el problema.

Fue un proyecto de último año. Me tomó un año completo.

http://www.maths.tcd.ie/~oconbhup/Maths_Project.pdf




Links



Tags

cuda   gpgpu   hpc