Estoy buscando ejemplos de algoritmos de propósito general (es decir, no relacionados con gráficos) que se ha demostrado que funcionan un orden de magnitud más rápido en una GPU que en una CPU. Usaré estos ejemplos para pensar creativamente sobre otros algoritmos que podría implementar en una GPU.
algorithms
performance
gpu
David
fuente
fuente
Respuestas:
Algunas cosas me vienen a la mente de inmediato:
Se escribió un cliente especializado de Bitcoin para usar la GPU para realizar los hashes criptográficos. El cliente de GPU generalmente funciona más de 10 veces mejor que el cliente de CPU SMP en un sistema típico de 4 núcleos. Bitcoin depende del cálculo de un gran número de hashes criptográficos no relacionados, que se pueden calcular en paralelo.
El proyecto Folding @ Home ofrece un cliente de GPU para sus simulaciones de dinámica molecular. Estos cálculos se realizan en los enlaces individuales entre átomos en diversos entornos y condiciones. La matemática es relativamente simple, pero debe calcularse miles de millones de veces para que cada enlace simule meros nanosegundos de actividad.
El popular ejemplo de "juguete" utilizado por los defensores de la computación GPU es el problema del cuerpo n .
Lo que estas cosas tienen en común es que son vergonzosamente paralelas . Es decir, el problema puede descomponerse en una pequeña cantidad de cálculos discretos que se realizan muchas veces en un conjunto de datos grande. Ese es el tipo de cálculo en el que la GPU es buena.
Los cálculos complejos que dependen de los resultados de cálculos anteriores no son adecuados para la GPU.
fuente
La transcodificación de video y audio es un gran ejemplo. Es la conversión de un formato de archivo a otro. Un ejemplo es MPEG-2 a H.264.
Tenga en cuenta que la transcodificación de video no está relacionada con los gráficos 3D. No puede codificar un video usando un sombreador de vértices y píxeles.
fuente
La minería de Bitcoins usando una GPU se ha vuelto muy popular.
Otra aplicación está en los mercados financieros para el comercio en tiempo real utilizando modelos como Black-Scholes .
fuente
El juego de la vida de Conway es un buen ejemplo académico.
fuente
Problemas que requieren muchas matemáticas que se pueden hacer al mismo tiempo. Donde solía trabajar, queríamos jugar con GPU para sumar / restar / multiplicar 2 matrices para resolver la corrilación genética. La primera vez que oí hablar de las GPU fue que estaban siendo utilizadas por una casa de software financiera para hacer algunos de sus modelos (monte carlo, etc.). Sería útil para descifrar códigos.
Las GPU probablemente no le ayudarán mucho con sus problemas de programación más regulares, donde un par de núcleos de CPU son suficientes porque la mayoría de los programas regulares solo necesitan ejecutar algunos procesos concurrentes. (Podría ser diferente con la memoria / disco que es mucho más rápido de lo que tenemos actualmente)
fuente
Tal vez estoy siendo muy específico en computación matemática / ciencia / ingeniería, pero uno que viene a la mente es el algoritmo FFT.
He visto este punto de referencia de FFT antes, y aunque tiene algunos años, creo que fue bien hecho por lo que es: http://www.sharcnet.ca/~merz/CUDA_benchFFT
fuente