(Disclaimer: io sono l'autore di JavaCL e BridJ)
Oltre alla sua versione JNA-based, JavaCL ha una completamente funzionale Porta BridJ interamente concessa in licenza BSD (dato che BridJ è a sua volta con licenza BSD).
FYI BridJ offre un overhead per chiamata notevolmente inferiore rispetto a JNA, vicino alle prestazioni JNI pur rimanendo molto portabile (è attualmente rilasciato con binari a 32 e 64 bit per Windows, Linux e MacOS X, ma sono previste altre piattaforme).
Le prestazioni dei binding di basso livello non sono tuttavia l'unica cosa da considerare. Mentre le API orientate agli oggetti di JavaCL e JOCL hanno un aspetto simile, è necessario occuparsi degli extra extra. Non so su JOCL, ma le navi JavaCL con:
- #include trasparente dei file dal percorso di classe Java o da qualsiasi URL
- caching automatico e trasparente dei file binari del programma
- utilità di riduzione
- algebra lineare utils
- un generatore di numeri casuali (una libreria, non un demo!)
- un nice GUI to experiment with image transform kernels within seconds
- un plugin Maven che analizza i kernel OpenCL (che si trova in src/main/OpenCL) e genera digitato classi di programma con uno digitato metodo Java per kernel (far rispettare la correttezza della lista argomenti al momento della compilazione)
JavaCL viene utilizzato anche da ScalaCL (raccolte generiche OpenCL-backed + plugin compilatore Scala per ottimizzare il codice), che è un buon modo per evitare di scrivere qualsiasi kernel (anche se ancora in fase di sviluppo al momento della stesura di questo documento).
Un'altra cosa da considerare è la facile disponibilità di file binari per piattaforme standard (Windows, Linux e MacOS X almeno) e integrazione per la creazione di sistemi come Maven. JavaCL era il migliore IMHO, ma le cose potrebbero essere cambiate (e sicuramente cambierà).
Infine, Marco Hutter's JOCL è un altro bind OpenCL, ma senza API di alto livello. Tuttavia, potrebbe rivelarsi più veloce di OpenCL4Java (JavaCL) o JOCL per le chiamate di basso livello.
MODIFICA: JavaCL è ora coperto da un capitolo nel libro OpenCL in Action di Matteo Scarpino.
Ma l'OP non sta chiedendo di JavaCL non di JOCL.org? – Chinasaur
sì. ecco perché ho menzionato jocl.org solo brevemente in una frase poiché non volevo lasciarlo fuori. – mbien
Ma non hai affrontato JavaCL; confusione. Ma buone informazioni, grazie. – Chinasaur