2010-12-08 49 views
3

Je suis à la recherche d'une librature Java qui permette de faire des calculs rapides avec des vecteurs (et peut-être aussi des matrices).Existe-t-il une bibliothèque Java pour les calculs vectoriels accélérés?

Par rapide Je veux dire qu'il tire parti du traitement GPU et/ou des instructions SSE. Je me demande s'il est possible de trouver quelque chose de plus portable que possible. Je reconnais que la JVM fournit une couche d'abstraction épaisse du matériel.

Je suis tombé sur JCUDA, mais il y a un inconvénient: sur un ordinateur sans carte graphique Nnvidia, il devrait fonctionner en mode émulation (donc je pense qu'il ne sera pas efficace comme prévu). Quelqu'un a déjà essayé?

+2

Vous pouvez jeter un oeil à OpenCL. – pablosaraiva

+0

+1 Vous pouvez également trouver des liens java ici: http://www.jocl.org –

+0

whops, juste vu vos commentaires .. ma réponse était fondamentalement la même:/ – Jack

Répondre

4

Qu'en est-il de OpenCL? Cela devrait vous fournir un bon point de départ pour ce genre d'opérations optimisées.

Il existe de nombreuses liaisons pour Java, à partir de jocl (mais prendre un butin aussi JavaCL ou LWJGL qui a ajouté le soutien de 2,6)

1

Si rapidement vous voulez dire haute vitesse plutôt que d'avoir besoin de support pour votre matériel particulier, je recommanderais Colt. Les vecteurs sont appelés 1-d matrices dans cette bibliothèque.

+0

Est-ce que Colt vecteur de calcul opérations à la fois ou il cycle à travers tous les éléments à la place? – rano

+1

Comme c'est du Java pur, c'est probablement écrit en boucle. L'implémentation exacte dépendra alors de votre JVM. Mesurez sa performance pour être certain. –

1

Je vous recommande d'utiliser UJMP (enveloppements la plupart sinon tous les haut accélérer les bibliothèques de matrices Java) et attendre qu'une bonne implémentation de GPGPU soit écrite (I started hacking it with JavaCL il y a quelque temps, mais il a besoin d'une réécriture sérieuse, peut-être en utilisant ScalaCLv2 qui est en cours).