¿Se puede usar la GPU para optimizar los algoritmos gráficos?

¿Se puede usar la GPU para optimizar los algoritmos gráficos?

Sí, de hecho, la mayoría del algoritmo gráfico se ha implementado para optimizaciones de rendimiento en GPU. Mucha investigación ha proporcionado evidencia de una mejora significativa en el rendimiento de los algoritmos gráficos utilizando GPU en comparación con la CPU. Algunos de los trabajos de investigación recientes que utilizan el poder computacional de la GPU para diferentes algoritmos de gráficos son

  • Empresa: Breveth-First Graph Traversal en GPU [1]
  • iBFS: búsqueda simultánea de amplitud primero en GPU [2]
  • Métodos de GPU paralelos eficientes en el trabajo para rutas más cortas de fuente única [3]
  • Todos los pares de rutas más cortas para gráficos grandes en la GPU [4]
  • Descomposición eficiente de componentes fuertemente conectados en GPU [5]
  • Coincidencia rápida de subgráficos en gráficos grandes utilizando procesadores gráficos [6]
  • Triángulo rápido contando con la GPU [7]
  • Cálculo de PageRank paralelo usando GPU [8]

¿La GPU es naturalmente adecuada para optimizar algoritmos de gráficos?

NO, por varias razones

  • Desequilibrio de carga : la mayor parte del gráfico del mundo real sigue la distribución de la ley de potencia, lo que significa que hay algunos nodos muy conectados y muchos nodos de grado pequeño. Eso hace que la mayoría de los algoritmos de gráficos paralelos sean muy difíciles de utilizar recursos máximos no solo en la GPU sino también en cualquier otro marco paralelo
  • Algoritmos estrictamente en serie: algunos algoritmos, como la primera búsqueda en profundidad, deben seguir el estricto enfoque en serie, lo que significa que no hay forma de utilizar múltiples recursos informáticos.
  • Grandes tamaños de gráficos: la mayor parte del gráfico del mundo real surge de la web y las redes sociales, que son de alrededor de mil millones a billones de bordes, lo que significa que la mayoría de las GPU actuales no son capaces de mantener el gráfico en sí, y mucho menos resultados intermedios súper lineales y en ocasiones exponenciales.

¡¡Espero eso ayude!!

Notas al pie

[1] http://delivery.acm.org/10.1145/…

[2] http://hang-liu.com/publication/…

[3] Métodos de GPU paralelos eficientes en el trabajo para rutas más cortas de una sola fuente

[4] http://repository.upenn.edu/cgi/…

[5] Descomposición eficiente de componentes fuertemente conectados en GPU

[6] Coincidencia rápida de subgráficos en gráficos grandes utilizando procesadores gráficos

[7] http://delivery.acm.org/10.1145/…

[8] http://delivery.acm.org/10.1145/…

Respuesta corta: en general no, las GPU no son buenas para los algoritmos gráficos.

Una GPU es un dispositivo SIMT (una sola instrucción con múltiples hilos) . Funciona mejor en problemas que tienen subproblemas ingeniosos que no están relacionados y tienen ramas limitadas o nulas. Muchos algoritmos de gráficos navegan por el gráfico y no se descomponen de esta manera. Un problema gráfico que funcionaría bien en una GPU sería una transformación en un gráfico denso representado como una matriz de adyacencia .

[ Editar : hay algo que parece estar en desacuerdo: GPU para gráficos y análisis predictivos]

¿Hay algún problema específico que desee optimizar?

More Interesting

¿Estaría de acuerdo en que el aprendizaje profundo es el único algoritmo que rige sobre todos los demás algoritmos en el aprendizaje automático?

Si quiero resolver problemas del mundo real, ¿qué debo hacer, encontrar esos problemas y luego aprender las estructuras de datos y algoritmos requeridos o viceversa?

¿Cómo funcionan los algoritmos de Quora para las respuestas?

Después de que termina el programa de programación (estructuras de datos y algoritmo), ¿qué se les enseña a los estudiantes en CSE después de eso?

¿Cuáles son los algoritmos importantes que todo desarrollador de software graduado debe saber?

Cómo aprender los pesos de las características de un modelo mediante el aprendizaje automático

Si solo quiero escribir algoritmos y lógica, y no quiero molestarme con la interfaz de usuario y la codificación frontal, ¿qué tipo de posición de software me conviene más?

¿Ha habido algún trabajo teórico que delinee qué clase de algoritmos pueden y no pueden mapearse para mapear / reducir?

¿Cómo uso cualquier biblioteca en Java que implemente la selección de funciones del algoritmo RELEIFF?

Cómo acceder a la raíz de un árbol binario si está almacenado en una estructura

¿Qué significa importar en Python? ¿Puedo hacer mi propio algoritmo sin usar importar?

¿Cuál es el tipo de algoritmo utilizado para resolver el problema de 8 reinas?

¿Hay números irracionales de distribución uniforme no repetitivos para los cuales el dígito n puede calcularse en O (1) tiempo?

¿Cuáles son algunos buenos libros para aprender algoritmos y estructuras de datos usando Java?

¿Cuál es la diferencia entre binario, algoritmo y lenguaje de programación?