2010-08-02 19 views
29

¿Es posible hacer programación de GPU en Java? Es decir, sin usar bibliotecas nativas.Programación de la GPU de Java

¿Y cuánto de una mejora de rendimiento se puede esperar cuando cambiamos a gpu?

Editar:

No estoy buscando en la programación de juegos, quiero hacer número núcleo duro crujido.

+1

¿se refiere a escribir el programa de sombreado en Java? ¿O usar Java para cargar un sombreador escrito en un lenguaje de sombreado (GLSL o HLSL) en la GPU y ejecutarlo? AFAICT, no hay compiladores de códigos de bytes de Java -> GPU (o convertidores de bytecode de Java a bytecode de GPU), por lo que no puede escribir su programa de GPU en Java. –

+0

¡Hola chicos, han arrojado bastantes palabras clave que no conozco! Como si no supiera qué era un lenguaje de sombreado, pero me enteré después de una búsqueda rápida en Google. De acuerdo con sus respuestas voy a hacer una edición –

Respuesta

11

Sí. Compatibilidad con Java3D, LWJGL y JOGL GLSL (Lenguaje de sombreado OpenGL).

Editar:
Puede utilizar OpenCL si usted quiere hacer independiente de la plataforma, la computación de propósito general en la GPU. Este marco le permite escribir código que trata a todas las unidades de procesamiento de manera idéntica, a pesar de la gran variedad de conjuntos de características y entornos de ejecución. Sin embargo, esta es una programación de muy bajo nivel en comparación con Java.

Parece que su ideal sería una JVM escrita con soporte OpenCL. Buscando en línea, encontré un poco de interés en la idea, pero no hay evidencia de ningún respaldo importante.

cuánto de una mejora en el rendimiento se puede esperar

Eso depende del sistema que se está ejecutando en y qué tipo de datos que está procesando (Matrix y matemáticas vector es extremadamente eficiente en la GPU) Es probable que obtenga algunas ganancias importantes en un sistema como el mío con dos poderosas GPU y una modesta CPU de un solo núcleo. Sin embargo, en una computadora con una GPU modesta y una CPU de cuatro núcleos, las ganancias en el rendimiento pueden ser difíciles de superar.

+5

Probablemente esté buscando JOCL. http://www.jocl.org/ –

+1

JOCL tutorial: http://www.codeproject.com/KB/recipes/opencl-part1.aspx – rwong

+1

También vea [rootbear] https://github.com/pcpratts/ rootbeer1/ –

2

Si usted todavía está considerando el número núcleo duro crujido en Java en la GPU sin utilizar bibliotecas nativas, que podría estar interesado por este artículo de blog http://ateji.blogspot.com/2011/02/java-on-gpu-with-ateji-px.html Nosotros (yo soy parte del equipo Ateji) hemos visto un rendimiento de hasta 60x por lo ahora en aplicaciones Java que pueden ser paralelizadas masivamente.

+0

He publicado una pregunta en su blog vinculado. Realmente me gustaría tener esa característica. –

5

Rootbeer1 acaba de ser lanzado en github: https://github.com/pcpratts/rootbeer1

Con Rootbeer se puede programar usando casi cualquier Java, excepto los siguientes:

  1. métodos y campos
  2. reflexión
  3. dinámica invocación de métodos nativos
  4. recolección de basura
  5. sueño dentro de un monitor

Esto significa que puede usar gráficos de objetos arbitrarios con tipos compuestos.

Cuestiones relacionadas