Il miglior approccio per GPGPU / CUDA / OpenCL in Java?


Answers

Si può anche considerare Aparapi . Consente di scrivere il codice in Java e tenterà di convertire bytecode in OpenCL in fase di runtime.

Piena divulgazione Sono lo sviluppatore di Aparapi.

Question

Il calcolo generico su unità di elaborazione grafica ( GPGPU ) è un concetto molto interessante per sfruttare la potenza della GPU per qualsiasi tipo di calcolo.

Mi piacerebbe utilizzare GPGPU per l'elaborazione di immagini, particelle e operazioni geometriche veloci.

In questo momento, sembra che i due contendenti in questo spazio siano CUDA e OpenCL. Mi piacerebbe sapere:

  • OpenCL è ancora utilizzabile da Java su Windows / Mac?
  • Quali sono i modi in cui le librerie possono interfacciarsi con OpenCL / CUDA?
  • Sta usando JNA direttamente un'opzione?
  • Sto dimenticando qualcosa?

Ogni esperienza / esempi / storie di guerra del mondo reale sono apprezzate.




Seguendo gli ultimi risultati di Google, suppongo che tensorflow sia il miglior approccio al calcolo su GPU, non solo OpenCL. Tensorflow supporta i calcoli OpenCL e CUDA con la stessa API.




Posso anche raccomandare JOCL di jogamp.org , funziona su Linux, Mac e Windows. CONRAD , ad esempio, utilizza pesantemente OpenCL in combinazione con JOCL.




Ho usato JOCL e ne sono molto felice.

Il principale svantaggio di OpenCL rispetto a CUDA (almeno per me) è la mancanza di librerie disponibili (Thrust, CUDPP, ecc.). Tuttavia CUDA può essere facilmente portato su OpenCL, e osservando come funzionano queste librerie (algoritmi, strategie, ecc.) È davvero molto bello, dato che si impara molto con esso.