2008-09-04 9 views
5

Recientemente comencé a trabajar en un proyecto para establecer la mejor forma de aprovechar la potencia de procesamiento disponible en las tarjetas gráficas modernas para la programación general. Parece que la programación GPU de propósito general de campo tiene un gran sesgo hacia aplicaciones científicas con mucha matemática pesada, ya que encaja bien con el modelo computacional de la GPU. Todo esto está bien y bien, pero la mayoría de las personas no dedican todo su tiempo a ejecutar software de simulación y similares, así que pensamos que sería posible crear una base común para construir fácilmente software habilitado para GPU para las masas.¿Qué tan bien las tareas de programación comunes se traducen en GPU?

Esto lleva a la pregunta que me gustaría plantear; ¿Cuáles son los tipos de trabajo más comunes realizados por los programas? No es un requisito que el trabajo se traduzca muy bien a la programación de GPU, ya que estamos dispuestos a aceptar mejoras modestas en el rendimiento (mejor que nada, ¿no?).

Hay un par de temas que tenemos en mente ya:

  • gestión de datos - La manipulación de grandes cantidades de datos de bases de datos y de otro tipo.
  • Programas del tipo de hoja de cálculo (Está relacionado de alguna manera con el anterior).
  • Programación de GUI (aunque podría ser imposible acceder al código relevante ).
  • Algoritmos comunes como clasificación y búsqueda.
  • colecciones común (y su integración con la manipulación de datos algoritmos)

¿Qué otras tareas de codificación son muy comunes? Sospecho que gran parte del código que se está escribiendo pertenece a la categoría de gestión de inventario y de otro modo al seguimiento de 'objetos' reales.

Como no tengo experiencia en la industria, pensé que podría haber una cantidad de tipos básicos de código que se realiza con más frecuencia de lo que creo pero que simplemente no se materializa como productos externos.

Se apreciarán tanto las tareas de programación de alto nivel como las operaciones específicas de bajo nivel.

Respuesta

0

simplifico mucho la configuración. Es decir, envuelvo la generación/gestión de valores de configuración dentro de una UI. El principal beneficio es que puedo controlar el flujo de trabajo y la presentación para simplificar la configuración de aplicaciones/sitios/servicios para usuarios no expertos en tecnología.

3

La programación general se traduce terriblemente en las GPU. Las GPU están dedicadas a realizar tareas bastante simples en flujos de datos a un ritmo masivo, con un paralelismo masivo. No manejan bien los ricos datos y las estructuras de control de la programación general, y no tiene sentido tratar de calzar eso en ellos.

+0

No pude evitar añadir un poco de teoría a la discusión: los problemas que funcionan bien con GPGPU suelen ser en la clase de complejidad NC: http://en.wikipedia.org/wiki/NC_(complexity) – pg1989

3

la programación general se traduce terriblemente a las GPU. Las GPU están dedicadas a realizar tareas bastante simples en flujos de datos a un ritmo masivo, con un paralelismo masivo. No manejan bien los ricos datos y las estructuras de control de la programación general, y no tiene sentido tratar de calzar eso en ellos.

Esto no está muy lejos de mi impresión de la situación, pero en este momento no nos preocupamos demasiado por eso. Estamos empezando por obtener una visión general de las opciones en las que debemos enfocarnos. Una vez hecho esto, los analizaremos un poco más y descubriremos cuáles opciones, si las hay, son plausibles.Si terminamos determinando que es imposible hacer algo dentro del campo, y solo estamos aumentando la factura de electricidad de todos, ese también es un resultado válido.

1

Es posible que desee echar un vistazo a la March/April issue de la revista Queue de ACM, que tiene varios artículos sobre GPU y la mejor manera de usarlos (además de hacer gráficos, por supuesto).

+0

Enlace ya no funciona –

+0

Enlace reparado, gracias. –

2

Cosas que hacen las computadoras modernas, donde un pequeño beneficio podría ser de gran ayuda. Veamos ...

  • Gestión de datos: la gestión de bases de datos relacionales podría beneficiarse de uniones relacionales más rápidas (especialmente uniones que implican un gran número de relaciones). Implica conjuntos de datos homogéneos masivos.
  • Tokenising, lexing, parsing text.
  • Compilación, generación de código.
  • Optimización (de consultas, gráficos, etc.).
  • Cifrado, descifrado, generación de claves.
  • Diseño de página, composición tipográfica.
  • Indización de texto completo.
  • Recolección de basura.
0

Otro aspecto a tener en cuenta cuando se utiliza una GPU es la velocidad del bus. La mayoría de las tarjetas gráficas están diseñadas para tener un mayor ancho de banda cuando transfieren datos de la CPU a la GPU ya que es lo que hacen la mayoría del tiempo. El ancho de banda desde la GPU hasta la CPU, que es necesario para devolver los resultados, etc., no es tan rápido. Entonces funcionan mejor en un modo segmentado.

Cuestiones relacionadas