2010-05-11 14 views
7

Estoy buscando alguna forma de utilizar la capacidad de procesamiento de números de una GPU (¿con Java quizás?) Además de usar los múltiples núcleos que tiene la máquina objetivo. Trabajaré en la implementación (en la actualidad) del algoritmo A *, pero en el futuro espero reemplazarlo por un algoritmo genético. Miré Project Fortress pero mientras construyo mi GUI en JavaFX, preferiría no alejarme demasiado de una JVM.HPC (principalmente en Java)

Por supuesto, si no hay una solución viable disponible, migraré a la solución más fácil de implementar.

Respuesta

3

Parallel Colt podría ser de su interés.

+0

¿Se necesita paralelismo implícito? Estoy leyendo la sección de simultaneidad, pero no parece haber nada sobre las ventajas específicas del hardware. – Insectatorious

+0

La página web sugiere que utilizará automáticamente múltiples núcleos de CPU siempre que sea posible. No he usado esta versión de Colt solo la biblioteca original en la que está basada. – Mark

5

Si está interesado en HPC con GPU, entonces quizás pueda mirar jCuda. Esto proporciona enlaces Java para CUDA, junto con acceso a CUDA FFT, CUDA BLAS y CUDA DPP. No he visto ningún informe de rendimiento en esta biblioteca, así que no puedo garantizar que será muy bueno.

Más allá de eso, no estoy muy seguro. Si estás interesado en hacer este tipo de cosas como un ejercicio educativo, entonces Java debería ser lo suficientemente bueno, pero si tienes una necesidad seria de HPC, entonces probablemente quieras implementar en C y usar la interfaz nativa de Java para comunicarse con eso

+0

Salud! Echaré un vistazo al enlace CUANTO ANTES. – Insectatorious

4

Morten Joergensen Nobel tiene una blog post que muestra cómo crear un conjunto de Mandelbrot utilizando JOGL - Java enlaces para OpenGL

Sin embargo, si usted quiere cómputo genérico, en lugar de gráficos, entonces sería después de que los enlaces Java para OpenCL , desde donde puede elegir entre JOCL o JOCL o JavaCL.

Wikipedia's page muestra cómo se puede utilizar OpenCL para calcular una transformación rápida de Fourier.

+0

Dulce. En este ejemplo, está renderizando una imagen 3D como 2D usando una cámara sin perspectiva. ¿Sería posible lograr el procesamiento en bruto 'umph!' usando JOGL entonces? Lo pregunto porque nunca antes había usado OpenGL y no quiero dar el paso a menos que sirva a mis necesidades. – Insectatorious

+0

¿Tiene alguna recomendación sobre qué enlace de OpenCL usar? –

+0

@Insectatorious - No, así que actualicé mi respuesta para ser más útil. –

2

Tenga una mirada en JPPF, es un entorno de computación distribuida de Java de código abierto muy agradable y madurar

Cuestiones relacionadas