HPC (principalement sur Java)

Je cherche un moyen d’utiliser la capacité de traitement numérique d’un GPU (avec Java peut-être?) En plus d’utiliser les multiples cœurs de la machine cible. Je travaillerai sur la mise en œuvre (actuellement) de l’algorithme A *, mais j’espère le remplacer par un algorithme génétique. J’ai examiné Project Fortress, mais comme je construis mon interface graphique en JavaFX, je préférerais ne pas m’éloigner trop d’une JVM.

Bien entendu, si aucune solution réalisable n’était disponible, je passerais à la solution la plus simple à mettre en œuvre.

Colt parallèle pourrait être intéressant.

Si HPC avec GPU vous intéresse, vous pouvez peut-être regarder jCuda . Cela fournit des liaisons Java pour CUDA, ainsi qu’un access à CUDA FFT, CUDA BLAS et CUDA DPP. Je n’ai vu aucun rapport de performance sur cette bibliothèque, donc je ne peux pas garantir que ce sera très bien.

Au-delà de ça, je ne suis pas vraiment sûr. Si vous êtes intéressé par ce genre de travail en tant qu’exercice éducatif, alors Java devrait suffire, mais si vous avez un besoin sérieux en HPC, vous allez probablement vouloir l’implémenter en C et utiliser l’interface native de Java pour: communiquer avec elle.

Morten Nobel Joergensen a publié un article sur son blog expliquant comment créer un ensemble Mandelbrot à l’aide de JOGL – Java Bindings for OpenGL

Toutefois, si vous souhaitez un traitement informatique générique plutôt que graphique, vous devez suivre les liaisons Java pour OpenCL , à partir desquelles vous pouvez choisir JOCL , JOCL ou JavaCL .

La page de Wikipedia montre comment OpenCL peut être utilisé pour calculer une transformation de Fourier rapide.

Jetez un coup d’œil à JPPF , c’est un environnement informatique en grid Java open source très agréable et bien développé.