2010-08-02 3 views
29

È possibile eseguire la programmazione GPU in Java? Voglio dire senza usare le librerie native.Programmazione GPU Java

E quanto ci si può aspettare da un miglioramento delle prestazioni quando si passa a gpu?

Edit:

io non sto guardando programmazione del gioco, voglio fare numero nocciolo duro macinare.

+1

Vuoi dire scrivere il programma shader in Java? O usare Java per caricare uno shader scritto in un linguaggio shader (GLSL o HLSL) sulla GPU ed eseguirlo? AFAICT, non ci sono compilatori bytecode Java -> GPU (o convertitori da bytecode Java a bytecode GPU), quindi non è possibile scrivere il programma GPU in Java. –

+0

Ehi ragazzi, avete tirato fuori alcune parole chiave che non conosco !! Come se non sapessi cosa fosse una lingua di ombreggiatura, ma l'ho scoperto dopo una rapida ricerca su google. Ok, in base alle tue risposte, effettuerò una modifica –

risposta

11

Sì. Supporto Java3D, LWJGL e JOGL GLSL (linguaggio OpenGL Shading).

Edit:
È possibile utilizzare OpenCL se si vuole fare indipendente dalla piattaforma, general-purpose calcolo su GPU. Questo framework consente di scrivere codice che tratta tutte le unità di elaborazione in modo identico, nonostante i set di funzionalità e gli ambienti di esecuzione estremamente variabili. Tuttavia, questa è una programmazione di livello molto basso rispetto a Java.

Sembra che il tuo ideale sarebbe una JVM scritta con supporto OpenCL. Cercando online, ho trovato un po 'di interesse per l'idea, ma nessuna prova di alcun sostegno importante.

quanto di un miglioramento delle prestazioni ci si può aspettare

Questo dipende dal sistema è in esecuzione su e che tipo di dati che stai elaborazione (Matrix e matematica vettoriale è estremamente efficiente su GPU). Probabilmente otterrai importanti guadagni su un sistema come il mio con due potenti GPU e una modesta CPU single-core. Tuttavia su un computer con una GPU modesta e una CPU quad-core, i guadagni in termini di prestazioni potrebbero avere difficoltà a superare il sovraccarico.

+5

Probabilmente sta cercando JOCL. http://www.jocl.org/ –

+1

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

+1

Guarda anche [rootbear] https://github.com/pcpratts/ rootbeer1/ –

2

Se si sta ancora prendendo in considerazione il numero nocciolo duro macinare in Java su GPU senza usare librerie native, potreste essere interessati da questo articolo del blog http://ateji.blogspot.com/2011/02/java-on-gpu-with-ateji-px.html Noi (io sono parte del team ateji) abbiamo visto prestazioni fino a 60x in modo lontano su applicazioni Java che possono essere massicciamente parallelizzate.

+0

Ho postato una domanda nel tuo blog collegato. Mi piacerebbe davvero avere una tale caratteristica. –

5

Rootbeer1 è stato appena rilasciato su github: https://github.com/pcpratts/rootbeer1

Con Rootbeer è possibile programmare utilizzando praticamente qualsiasi Java tranne i seguenti:

  1. metodi e campi
  2. riflessione
  3. dinamica chiamata di metodo nativo
  4. garbage collection
  5. sleep all'interno di un monitor

Ciò significa che è possibile utilizzare grafici di oggetti arbitrari con tipi compositi.