Programación de GPU Java [cerrado]


¿Es posible hacer programación GPU en Java ? Quiero decir sin usar bibliotecas nativas.

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

Editar:

No estoy viendo programación de juegos, quiero hacer crunching de números de núcleo duro.

Author: Anand Sunderraman, 2010-08-02

4 answers

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

Editar:
Puede usar OpenCL si desea realizar cálculos de propósito general neutrales para la plataforma en GPU. Este marco le permite escribir código que trata todas las unidades de procesamiento de manera idéntica, a pesar de los conjuntos de características y entornos de ejecución muy variables. Sin embargo, esta es una programación de muy bajo nivel en comparación con Java.

Parece que tu ideal sería una JVM escrita con OpenCL apoyo. 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 del rendimiento se puede esperar

Eso depende del sistema en el que se esté ejecutando y del tipo de datos que esté procesando (la matemática de matriz y vector es extremadamente eficiente en las GPU). Es probable que obtenga algunas ganancias importantes en un sistema como el mío con dos potentes GPU y una modesta CPU de un solo núcleo. Sin embargo, en un ordenador con una modesta GPU y una CPU de cuatro núcleos, las ganancias de rendimiento podrían tener dificultades para superar la sobrecarga.

 11
Author: Gunslinger47,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-21 16:29:07

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

Con Rootbeer puedes programar usando casi cualquier Java excepto lo siguiente:

  1. métodos y campos nativos
  2. reflexión
  3. invocación del método dinámico
  4. recolección de basura
  5. durmiendo dentro de un monitor

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

 6
Author: pcpratts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-14 09:22:56

Si todavía está considerando el procesamiento de números de núcleo duro en Java en GPU sin usar bibliotecas nativas, puede que le interese este artículo de blog http://ateji.blogspot.com/2011/02/java-on-gpu-with-ateji-px.html Nosotros (yo soy parte del equipo de Ateji) hemos visto un rendimiento de hasta 60 veces hasta ahora en aplicaciones Java que pueden ser masivamente paralelizadas.

 2
Author: user619318,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-16 09:33:49

Def echa un vistazo a rootbeer1, pero primero debes asegurarte de tener una tarjeta GFX aceptada por CUDA antes de comenzar con ella y haber hecho toda la configuración de NVIDIA, etc

Enlace de descarga: google CUDA descargar

Guía de introducción http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Getting_Started_Windows.pdf

 1
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-20 18:01:40